From d7825bca1b3e0ed21c766da3b86c69f1da98917f Mon Sep 17 00:00:00 2001 From: DS Date: Tue, 31 Mar 2020 19:34:42 +0200 Subject: [PATCH 001/424] Fix GUI element click-through by changing visibility (#9534) This adds a vector that holds pointers to elements that should only be visible while being drawn. In the guifsmenu's draw func, all elements in this vector are made visible and invisible again. Apart from there, they are always invisible. (Well they are still visible before the first drawn, does this matter? If yes, it could be fixed easily with some lines of code everywhere.) --- src/gui/guiFormSpecMenu.cpp | 30 +++++++++++++++++++++++++++++- src/gui/guiFormSpecMenu.h | 1 + 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index 012ac953f..59cd130ef 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -141,6 +141,8 @@ GUIFormSpecMenu::~GUIFormSpecMenu() background_it->drop(); for (auto &tooltip_rect_it : m_tooltip_rects) tooltip_rect_it.first->drop(); + for (auto &clickthrough_it : m_clickthrough_elements) + clickthrough_it->drop(); delete m_selected_item; delete m_form_src; @@ -742,6 +744,9 @@ void GUIFormSpecMenu::parseImage(parserData* data, const std::string &element) e->setNotClipped(style.getBool(StyleSpec::NOCLIP, m_formspec_version < 3)); m_fields.push_back(spec); + // images should let events through + e->grab(); + m_clickthrough_elements.push_back(e); return; } @@ -775,6 +780,9 @@ void GUIFormSpecMenu::parseImage(parserData* data, const std::string &element) e->setNotClipped(style.getBool(StyleSpec::NOCLIP, m_formspec_version < 3)); m_fields.push_back(spec); + // images should let events through + e->grab(); + m_clickthrough_elements.push_back(e); return; } errorstream<< "Invalid image element(" << parts.size() << "): '" << element << "'" << std::endl; @@ -882,7 +890,9 @@ void GUIFormSpecMenu::parseItemImage(parserData* data, const std::string &elemen core::rect(pos, pos + geom), name, m_font, m_client); auto style = getStyleForElement("item_image", spec.fname); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); - e->drop(); + + // item images should let events through + m_clickthrough_elements.push_back(e); m_fields.push_back(spec); return; @@ -1747,6 +1757,10 @@ void GUIFormSpecMenu::parseLabel(parserData* data, const std::string &element) e->setOverrideColor(style.getColor(StyleSpec::TEXTCOLOR, video::SColor(0xFFFFFFFF))); m_fields.push_back(spec); + + // labels should let events through + e->grab(); + m_clickthrough_elements.push_back(e); } return; @@ -1823,6 +1837,10 @@ void GUIFormSpecMenu::parseVertLabel(parserData* data, const std::string &elemen e->setOverrideColor(style.getColor(StyleSpec::TEXTCOLOR, video::SColor(0xFFFFFFFF))); m_fields.push_back(spec); + + // vertlabels should let events through + e->grab(); + m_clickthrough_elements.push_back(e); return; } errorstream<< "Invalid vertlabel element(" << parts.size() << "): '" << element << "'" << std::endl; @@ -2745,6 +2763,8 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize) background_it->drop(); for (auto &tooltip_rect_it : m_tooltip_rects) tooltip_rect_it.first->drop(); + for (auto &clickthrough_it : m_clickthrough_elements) + clickthrough_it->drop(); mydata.size= v2s32(100,100); mydata.screensize = screensize; @@ -2767,6 +2787,7 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize) m_dropdowns.clear(); theme_by_name.clear(); theme_by_type.clear(); + m_clickthrough_elements.clear(); m_bgnonfullscreen = true; m_bgfullscreen = false; @@ -3248,12 +3269,19 @@ void GUIFormSpecMenu::drawMenu() e->setVisible(false); } + // Some elements are only visible while being drawn + for (gui::IGUIElement *e : m_clickthrough_elements) + e->setVisible(true); + /* Call base class (This is where all the drawing happens.) */ gui::IGUIElement::draw(); + for (gui::IGUIElement *e : m_clickthrough_elements) + e->setVisible(false); + // Draw hovered item tooltips for (const std::string &tooltip : m_hovered_item_tooltips) { showTooltip(utf8_to_wide(tooltip), m_default_tooltip_color, diff --git a/src/gui/guiFormSpecMenu.h b/src/gui/guiFormSpecMenu.h index 184b26f3c..17bfef205 100644 --- a/src/gui/guiFormSpecMenu.h +++ b/src/gui/guiFormSpecMenu.h @@ -307,6 +307,7 @@ protected: std::vector> m_tooltip_rects; std::vector> m_scrollbars; std::vector>> m_dropdowns; + std::vector m_clickthrough_elements; GUIInventoryList::ItemSpec *m_selected_item = nullptr; u16 m_selected_amount = 0; From 3d6b55d3e9b91e6afdbfdcea0268dfb88c69c1c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Thu, 2 Apr 2020 19:24:35 +0200 Subject: [PATCH 002/424] Fix texture distortion for flowing liquids (#9561) Previously textures of the side faces on flowing liquid nodes would become distorted on different axis depending on the liquid level. This is because the nodes always had the same texture coordinates, even when the generated face could have different sizes. This solves that problem by adjusting the texture coordinates for the vertices making up the top of the faces, so the textures will not look compressed for smaller faces. --- src/client/content_mapblock.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/client/content_mapblock.cpp b/src/client/content_mapblock.cpp index 5be0caf19..9b4fd221e 100644 --- a/src/client/content_mapblock.cpp +++ b/src/client/content_mapblock.cpp @@ -556,17 +556,24 @@ void MapblockMeshGenerator::drawLiquidSides() for (int j = 0; j < 4; j++) { const UV &vertex = base_vertices[j]; const v3s16 &base = face.p[vertex.u]; + float v = vertex.v; + v3f pos; - pos.X = (base.X - 0.5) * BS; - pos.Z = (base.Z - 0.5) * BS; - if (vertex.v) - pos.Y = neighbor.is_same_liquid ? corner_levels[base.Z][base.X] : -0.5 * BS; - else - pos.Y = !top_is_same_liquid ? corner_levels[base.Z][base.X] : 0.5 * BS; + pos.X = (base.X - 0.5f) * BS; + pos.Z = (base.Z - 0.5f) * BS; + if (vertex.v) { + pos.Y = neighbor.is_same_liquid ? corner_levels[base.Z][base.X] : -0.5f * BS; + } else if (top_is_same_liquid) { + pos.Y = 0.5f * BS; + } else { + pos.Y = corner_levels[base.Z][base.X]; + v += (0.5f * BS - corner_levels[base.Z][base.X]) / BS; + } + if (data->m_smooth_lighting) color = blendLightColor(pos); pos += origin; - vertices[j] = video::S3DVertex(pos.X, pos.Y, pos.Z, 0, 0, 0, color, vertex.u, vertex.v); + vertices[j] = video::S3DVertex(pos.X, pos.Y, pos.Z, 0, 0, 0, color, vertex.u, v); }; collector->append(tile_liquid, vertices, 4, quad_indices, 6); } From 45a2ca0af2285ab32003bd0d07690551b895b480 Mon Sep 17 00:00:00 2001 From: Paramat Date: Fri, 3 Apr 2020 02:57:15 +0100 Subject: [PATCH 003/424] Add warning to set_sky() docs about unstable dawn and night sky colours (#9578) Also clean up confusing double meaning usage of the word 'skybox'. --- doc/lua_api.txt | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 86e8d6575..bd95062a5 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -5991,19 +5991,27 @@ object you are working with still exists. * `clouds`: Boolean for whether clouds appear. (default: `true`) * `sky_color`: A table containing the following values, alpha is ignored: * `day_sky`: ColorSpec, for the top half of the `"regular"` - skybox during the day. (default: `#8cbafa`) + sky during the day. (default: `#8cbafa`) * `day_horizon`: ColorSpec, for the bottom half of the - `"regular"` skybox during the day. (default: `#9bc1f0`) + `"regular"` sky during the day. (default: `#9bc1f0`) * `dawn_sky`: ColorSpec, for the top half of the `"regular"` - skybox during dawn/sunset. (default: `#b4bafa`) + sky during dawn/sunset. (default: `#b4bafa`) + The resulting sky color will be a darkened version of the ColorSpec. + Warning: The darkening of the ColorSpec is subject to change. * `dawn_horizon`: ColorSpec, for the bottom half of the `"regular"` - skybox during dawn/sunset. (default: `#bac1f0`) + sky during dawn/sunset. (default: `#bac1f0`) + The resulting sky color will be a darkened version of the ColorSpec. + Warning: The darkening of the ColorSpec is subject to change. * `night_sky`: ColorSpec, for the top half of the `"regular"` - skybox during the night. (default: `#006aff`) + sky during the night. (default: `#006aff`) + The resulting sky color will be a dark version of the ColorSpec. + Warning: The darkening of the ColorSpec is subject to change. * `night_horizon`: ColorSpec, for the bottom half of the `"regular"` - skybox during the night. (default: `#4090ff`) + sky during the night. (default: `#4090ff`) + The resulting sky color will be a dark version of the ColorSpec. + Warning: The darkening of the ColorSpec is subject to change. * `indoors`: ColorSpec, for when you're either indoors or - underground. Only applies to the `"regular"` skybox. + underground. Only applies to the `"regular"` sky. (default: `#646464`) * `fog_sun_tint`: ColorSpec, changes the fog tinting for the sun at sunrise and sunset. @@ -6047,7 +6055,7 @@ object you are working with still exists. * `visible`: Boolean for whether the stars are visible. (default: `true`) * `count`: Integer number to set the number of stars in - the skybox. Only applies to `"skybox"` and `"regular"` skyboxes. + the skybox. Only applies to `"skybox"` and `"regular"` sky types. (default: `1000`) * `star_color`: ColorSpec, sets the colors of the stars, alpha channel is used to set overall star brightness. From f055e9bdc3398454260b434789d18ed4d87924fc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 24 Jan 2020 18:47:04 +0000 Subject: [PATCH 004/424] Translated using Weblate (German) Currently translated at 100.0% (1288 of 1288 strings) --- po/de/minetest.po | 238 ++++++++++++++++++++++++++-------------------- 1 file changed, 136 insertions(+), 102 deletions(-) diff --git a/po/de/minetest.po b/po/de/minetest.po index 162fcbbbf..72b2b9d92 100644 --- a/po/de/minetest.po +++ b/po/de/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: German (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-12-26 12:21+0000\n" -"Last-Translator: Stas Kies \n" +"PO-Revision-Date: 2020-03-06 05:32+0000\n" +"Last-Translator: Wuzzy \n" "Language-Team: German \n" "Language: de\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -20,7 +20,7 @@ msgstr "Wiederbeleben" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" -msgstr "Du bist gestorben!" +msgstr "Sie sind gestorben" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -216,7 +216,7 @@ msgstr "Aktualisieren" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" -msgstr "Eine Welt Namens „$1“ existiert bereits" +msgstr "Eine Welt namens „$1“ existiert bereits" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" @@ -782,7 +782,7 @@ msgstr "Wehende Blätter" #: builtin/mainmenu/tab_settings.lua msgid "Waving Liquids" -msgstr "Wasserwellen" +msgstr "Flüssigkeitswellen" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" @@ -1750,7 +1750,6 @@ msgstr "" "drücken, wenn er sich außerhalb des Hauptkreises befindet." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1767,7 +1766,8 @@ msgstr "" "um es zu ermöglichen, in einen gewünschten Punkt „hereinzuoomen“,\n" "indem man „scale“ erhöht.\n" "Die Standardeinstellung ist brauchbar für Mandelbrotmengen mit\n" -"Standardparametern.\n" +"Standardparametern, sie könnte jedoch Anpassungen für andere\n" +"Situationen benötigen.\n" "Die Reichweite liegt grob zwischen -2 und 2. Mit „scale“ multiplizieren,\n" "um einen Versatz in Blöcken zu erhalten." @@ -1981,6 +1981,13 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Passt die Lichtkurve an, indem eine sog. Gammakorrektur\n" +"an ihr vorgenommen wird. Höhere Werte können mittlere\n" +"und niedrigere Lichtstufen heller machen. Der Wert „1.0“\n" +"lässt die Lichtkurve unverändert.\n" +"Das hat nur einen merkliche Wirkung auf das Tageslicht und\n" +"dem künstlichem Licht, es hat sehr geringe Auswirkungen\n" +"auf natürliches Licht bei Nacht." #: src/settings_translation_file.cpp msgid "Altitude chill" @@ -2141,24 +2148,20 @@ msgid "Block send optimize distance" msgstr "Distanz für Sendeoptimierungen von Kartenblöcken" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "Pfad der Festbreitenschrift" +msgstr "Pfad der Fett- und Kursivschrift" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" -msgstr "Pfad der Festbreitenschrift" +msgstr "Pfad der fetten und kursiven Festbreitenschrift" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "Schriftpfad" +msgstr "Pfad der Fettschrift" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" -msgstr "Pfad der Festbreitenschrift" +msgstr "Pfad der fetten Festbreitenschrift" #: src/settings_translation_file.cpp msgid "Build inside player" @@ -2246,6 +2249,8 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Mittelpunkt des Lichtkurvenverstärkungsintervalls.\n" +"Wobei 0.0 die minimale Lichtstufe und 1.0 die höchste Lichtstufe ist." #: src/settings_translation_file.cpp msgid "" @@ -2472,6 +2477,9 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"Passt die Breite von Tunneln an. Ein kleinerer Wert erzeugt breitere\n" +"Tunnel. Ein Wert >= 10.0 deaktiviert die Erzeugung von Tunneln vollständig\n" +"und verhindert rechenintensive Rauschberechnungen." #: src/settings_translation_file.cpp msgid "Crash message" @@ -2522,7 +2530,6 @@ msgid "Dec. volume key" msgstr "Leiser-Taste" #: src/settings_translation_file.cpp -#, fuzzy msgid "Decrease this to increase liquid resistance to movement." msgstr "" "Dies verringern, um den Bewegungswiderstand in Flüssigkeiten zu erhöhen." @@ -2736,6 +2743,8 @@ msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"IPv6-Unterstützung aktivieren (sowohl für Client als auch Server).\n" +"Benötigt, damit IPv6-Verbindungen funktionieren." #: src/settings_translation_file.cpp msgid "" @@ -2827,6 +2836,8 @@ msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"Aktiviert Vertex Buffer Objects.\n" +"Dies sollte die Grafikperformanz beträchtlich verbessern." #: src/settings_translation_file.cpp msgid "" @@ -2840,14 +2851,14 @@ msgstr "" "1.0 für den Standardwert, 2.0 für doppelte Geschwindigkeit." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable/disable running an IPv6 server.\n" "Ignored if bind_address is set.\n" "Needs enable_ipv6 to be enabled." msgstr "" "Server als IPv6 laufen lassen (oder nicht).\n" -"Wird ignoriert, falls bind_address gesetzt ist." +"Wird ignoriert, falls bind_address gesetzt ist.\n" +"Dafür muss außerdem enable_ipv6 aktiviert sein." #: src/settings_translation_file.cpp msgid "" @@ -2856,6 +2867,10 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"Aktiviert filmisches Tone-Mapping wie in Hables „Uncharted 2“.\n" +"Simuliert die Tonkurve von fotografischem Film und wie dies das Aussehen\n" +"von „High Dynamic Range“-Bildern annähert. Mittlerer Kontrast wird leicht\n" +"verstärkt, aufleuchtende Bereiche und Schatten werden graduell komprimiert." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." @@ -2907,6 +2922,10 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"Aktiviert das Tonsystem.\n" +"Falls deaktiviert, wird es alle Geräusche überall abschalten und\n" +"die Tonsteuerung im Spiel wird funktionslos sein.\n" +"Die Änderung dieser Einstellung benötigt einen Neustart." #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" @@ -2941,9 +2960,8 @@ msgid "Fall bobbing factor" msgstr "Kameraschütteln beim Sturz" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "Ersatzschrift" +msgstr "Ersatzschriftpfad" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -3067,11 +3085,11 @@ msgstr "Taste für Nebel umschalten" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Schrift standardmäßig fett" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Schrift standardmäßig kursiv" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3087,15 +3105,15 @@ msgstr "Schriftgröße" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "Schriftgröße der Standardschrift in Punkt (pt)." #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "Schriftgröße der Ersatzschrift in Punkt (pt)." #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "Schriftgröße der Festbreitenschrift in Punkt (pt)." #: src/settings_translation_file.cpp msgid "" @@ -3248,18 +3266,20 @@ msgstr "" "wird es alle Dekorationen beinflussen." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." -msgstr "Steigung der Lichtkurve an der maximalen Lichtstufe." +msgstr "" +"Steigung der Lichtkurve an der maximalen Lichtstufe.\n" +"Regelt den Kontrast der höchsten Lichtstufen." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." -msgstr "Steigung der Lichtkurve an der minimalen Lichtstufe." +msgstr "" +"Steigung der Lichtkurve an der minimalen Lichtstufe.\n" +"Regelt den Kontrast der niedrigsten Lichtstufen." #: src/settings_translation_file.cpp msgid "Graphics" @@ -3290,7 +3310,6 @@ msgid "HUD toggle key" msgstr "Taste zum Umschalten des HUD" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- legacy: (try to) mimic old behaviour (default for release).\n" @@ -3542,6 +3561,9 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" +"Wie schnell sich Flüssigkeitswellen bewegen werden. Höher = schneller.\n" +"Falls negativ, werden sich die Wellen rückwärts bewegen.\n" +"Hierfür müssen Flüssigkeitswellen aktiviert sein." #: src/settings_translation_file.cpp msgid "" @@ -3806,14 +3828,12 @@ msgid "Invert vertical mouse movement." msgstr "Kehrt die vertikale Mausbewegung um." #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic font path" -msgstr "Pfad der Festbreitenschrift" +msgstr "Pfad der Kursivschrift" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic monospace font path" -msgstr "Pfad der Festbreitenschrift" +msgstr "Pfad der kursiven Festbreitenschrift" #: src/settings_translation_file.cpp msgid "Item entity TTL" @@ -4647,15 +4667,15 @@ msgstr "Tiefe für große Höhlen" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "Max. Anzahl großer Höhlen" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "Min. Anzahl großer Höhlen" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" -msgstr "" +msgstr "Anteil gefluteter großer Höhlen" #: src/settings_translation_file.cpp msgid "Large chat console key" @@ -4693,13 +4713,12 @@ msgstr "" "üblicherweise aktualisiert werden." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Length of liquid waves.\n" "Requires waving liquids to be enabled." msgstr "" -"Auf „wahr“ setzen, um sich im Wind wehende Blätter zu aktivieren.\n" -"Dafür müssen Shader aktiviert sein." +"Länge von Flüssigkeitswellen.\n" +"Dafür müssen Flüssigkeitswellen aktiviert sein." #: src/settings_translation_file.cpp msgid "Length of time between Active Block Modifier (ABM) execution cycles" @@ -4735,34 +4754,28 @@ msgstr "" "- verbose (Ausführlich)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost" -msgstr "Lichtkurven-Mittenverstärkung" +msgstr "Lichtkurvenverstärkung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost center" -msgstr "Lichtkurven-Mittenverstärkung Mitte" +msgstr "Lichtkurvenverstärkung: Mitte" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost spread" -msgstr "Lichtkurven-Mittenverstärkungs-Ausbreitung" +msgstr "Lichtkurvenverstärkung: Ausbreitung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve gamma" -msgstr "Lichtkurven-Mittenverstärkung" +msgstr "Lichtkurven-Gammawert" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve high gradient" -msgstr "Lichtkurven-Mittenverstärkung" +msgstr "Lichtkurve: Hoher Gradient" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve low gradient" -msgstr "Lichtkurven-Mittenverstärkung Mitte" +msgstr "Lichtkurve: Niedriger Gradient" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" @@ -4883,7 +4896,6 @@ msgstr "" "Kartengenerierungsattribute speziell für den Carpathian-Kartengenerator." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Flat.\n" "Occasional lakes and hills can be added to the flat world." @@ -4892,13 +4904,12 @@ msgstr "" "Zu einer flachen Welt können gelegentliche Seen und Hügel hinzugefügt werden." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Fractal.\n" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" -"Kartengenerierungsattribute speziell für den flachen Kartengenerator.\n" +"Kartengenerierungsattribute speziell für den Fraktale-Kartengenerator.\n" "„terrain“ aktiviert die Erzeugung von nicht-fraktalem Gelände:\n" "Ozean, Inseln und der Untergrund." @@ -5073,20 +5084,19 @@ msgstr "Maximale Breite der Schnellleiste" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "Obergrenze der zufälligen Anzahl großer Höhlen je Mapchunk." #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Obergrenze Anzahl der zufälligen Anzahl kleiner Höhlen je Mapchunk." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." msgstr "" -"Maximaler Flüssigkeitswiderstand. Regelt die Abbremsung beim Eintauchen in " -"eine Flüssigkeit bei hoher Geschwindigkeit." +"Maximaler Flüssigkeitswiderstand. Regelt die Abbremsung beim\n" +"Eintauchen in eine Flüssigkeit bei hoher Geschwindigkeit." #: src/settings_translation_file.cpp msgid "" @@ -5235,13 +5245,12 @@ msgid "Minimap scan height" msgstr "Abtasthöhe der Übersichtskarte" #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "3-D-Rauschen, welches die Anzahl der Verliese je Mapchunk festlegt." +msgstr "Untergrenze der zufälligen Anzahl großer Höhlen je Mapchunk." #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Untergrenze der zufälligen Anzahl kleiner Höhlen je Mapchunk." #: src/settings_translation_file.cpp msgid "Minimum texture size" @@ -5455,11 +5464,15 @@ msgstr "Undurchsichtige Flüssigkeiten" msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." msgstr "" +"Undurchsichtigkeit (Alpha) des Schattens hinter der Standardschrift, " +"zwischen 0 und 255." #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." msgstr "" +"Undurchsichtigkeit (Alpha) des Schattens hinter der Ersatzschrift, zwischen " +"0 und 255." #: src/settings_translation_file.cpp msgid "" @@ -5512,6 +5525,13 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" +"Pfad der Ersatzschrift.\n" +"Falls die „freetype“-Einstellung aktiviert ist: Muss eine TrueType-Schrift " +"sein.\n" +"Falls die „freetype“-Einstellung deaktiviert ist: Muss eine Bitmap- oder XML-" +"Vektor-Schrift sein.\n" +"Diese Schrift wird für bestimmte Sprachen benutzt, oder, wenn die " +"Standardschrift nicht verfügbar ist." #: src/settings_translation_file.cpp msgid "Path to save screenshots at." @@ -5538,6 +5558,13 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "The fallback font will be used if the font cannot be loaded." msgstr "" +"Pfad der Standardschrift.\n" +"Falls die „freetype“-Einstellung aktiviert ist: Muss eine TrueType-Schrift " +"sein.\n" +"Falls die „freetype“-Einstellung deaktiviert ist: Muss eine Bitmap- oder XML-" +"Vektor-Schrift sein.\n" +"Die Ersatzschrift wird benutzt, falls diese Schrift nicht geladen werden " +"kann." #: src/settings_translation_file.cpp msgid "" @@ -5546,6 +5573,12 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "This font is used for e.g. the console and profiler screen." msgstr "" +"Pfad der Festbreitenschrift.\n" +"Falls die „freetype“-Einstellung aktiviert ist: Muss eine TrueType-Schrift " +"sein.\n" +"Falls die „freetype“-Einstellung deaktiviert ist: Muss eine Bitmap- oder XML-" +"Vektor-Schrift sein.\n" +"Diese Schrift wird z.B. für die Konsole und die Profiler-Anzeige benutzt." #: src/settings_translation_file.cpp msgid "Pause on lost window focus" @@ -5634,7 +5667,7 @@ msgstr "Profiling" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." -msgstr "" +msgstr "Anteil der großen Höhlen, die eine Flüssigkeit enthalten." #: src/settings_translation_file.cpp msgid "" @@ -5663,9 +5696,8 @@ msgid "Recent Chat Messages" msgstr "Letzte Chatnachrichten" #: src/settings_translation_file.cpp -#, fuzzy msgid "Regular font path" -msgstr "Berichtspfad" +msgstr "Normalschriftpfad" #: src/settings_translation_file.cpp msgid "Remote media" @@ -5880,7 +5912,6 @@ msgid "Selection box width" msgstr "Auswahlboxbreite" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Selects one of 18 fractal types.\n" "1 = 4D \"Roundy\" Mandelbrot set.\n" @@ -5973,30 +6004,27 @@ msgstr "" "gesendet wurde." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving leaves.\n" "Requires shaders to be enabled." msgstr "" -"Auf „wahr“ setzen, um sich im Wind wehende Blätter zu aktivieren.\n" +"Auf „wahr“ setzen, um wehende Blätter zu aktivieren.\n" "Dafür müssen Shader aktiviert sein." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving liquids (like water).\n" "Requires shaders to be enabled." msgstr "" -"Auf „wahr“ setzen, um Wasserwogen zu aktivieren.\n" +"Auf „wahr“ setzen, um Flüssigkeitswellen (wie bei Wasser) zu aktivieren.\n" "Dafür müssen Shader aktiviert sein." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving plants.\n" "Requires shaders to be enabled." msgstr "" -"Auf „wahr“ setzen, um sich im Wind wehende Pflanzen zu aktivieren.\n" +"Auf „wahr“ setzen, um wehende Pflanzen zu aktivieren.\n" "Dafür müssen Shader aktiviert sein." #: src/settings_translation_file.cpp @@ -6016,22 +6044,20 @@ msgstr "" "Das funktioniert nur mit dem OpenGL-Grafik-Backend." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the default font. If 0, then shadow will not be " "drawn." msgstr "" -"Abstand des Schattens hinter der Schrift. Wenn 0, wird der Schatten nicht " -"gezeichnet." +"Versatz des Schattens hinter der Standardschrift (in Pixeln). Falls 0, wird " +"der Schatten nicht gezeichnet." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " "be drawn." msgstr "" -"Abstand des Schattens hinter der Schrift. Wenn 0, wird der Schatten nicht " -"gezeichnet." +"Versatz des Schattens hinter der Ersatzschrift (in Pixeln). Falls 0, wird " +"der Schatten nicht gezeichnet." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." @@ -6088,11 +6114,11 @@ msgstr "Hänge und Füllungen arbeiten zusammen, um die Höhen zu verändern." #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "" +msgstr "Max. Anzahl kleiner Höhlen" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "" +msgstr "Min. Anzahl kleiner Höhlen" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." @@ -6163,14 +6189,14 @@ msgstr "" "üblichen Weg heruntergeladen (UDP)." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Spread of light curve boost range.\n" "Controls the width of the range to be boosted.\n" "Standard deviation of the light curve boost Gaussian." msgstr "" -"Ausbreitung der Lichtkurven-Mittenverstärkung.\n" -"Standardabweichung der Mittenverstärkungs-Gaußfunktion." +"Ausbreitung des Lichtkurvenverstärkungsintervalls.\n" +"Regelt die Breite des Intervalls, das verstärkt werden soll.\n" +"Standardabweichung der Lichtkurvenverstärkungs-Gaußfunktion." #: src/settings_translation_file.cpp msgid "Static spawnpoint" @@ -6198,6 +6224,9 @@ msgid "" "The 3 'boost' parameters define a range of the light\n" "curve that is boosted in brightness." msgstr "" +"Stärke der Lichtkurvenverstärkung.\n" +"Die 3 Verstärkungsparameter („boost“) definieren ein Intervall der\n" +"Lichtkurve, die in ihrer Helligkeit verstärkt wird." #: src/settings_translation_file.cpp msgid "Strength of parallax." @@ -6265,7 +6294,7 @@ msgstr "Geländepersistenzrauschen" #: src/settings_translation_file.cpp msgid "Texture path" -msgstr "Texturpfad" +msgstr "Texturenpfad" #: src/settings_translation_file.cpp msgid "" @@ -6326,6 +6355,11 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" +"Die maximale Höhe der Oberfläche von Flüssigkeitswellen.\n" +"4.0 = Wellenhöhe ist zwei Blöcke.\n" +"0.0 = Wellen bewegen sich gar nicht.\n" +"Standard ist 1.0 (1/2 Block).\n" +"Dafür müssen Flüssigkeitswellen aktiviert sein." #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -6511,7 +6545,6 @@ msgid "Trilinear filtering" msgstr "Trilinearer Filter" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "True = 256\n" "False = 128\n" @@ -6519,7 +6552,7 @@ msgid "" msgstr "" "Wahr = 256\n" "Falsch = 128\n" -"Nützlich, um die Übersichtskarte performanter auf langsamen Maschinen zu " +"Nützlich, um die Übersichtskarte ruckelfrei auf langsamen Maschinen zu " "machen." #: src/settings_translation_file.cpp @@ -6702,13 +6735,12 @@ msgid "Volume" msgstr "Tonlautstärke" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Volume of all sounds.\n" "Requires the sound system to be enabled." msgstr "" -"Aktiviert Parralax-Occlusion-Mapping.\n" -"Hierfür müssen Shader aktiviert sein." +"Lautstärke aller Töne.\n" +"Dafür muss das Tonsystem aktiviert sein." #: src/settings_translation_file.cpp msgid "" @@ -6755,24 +6787,20 @@ msgid "Waving leaves" msgstr "Wehende Blätter" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids" -msgstr "Wasserwellen" +msgstr "Flüssigkeitswellen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave height" -msgstr "Wasserwellen: Wellenhöhe" +msgstr "Flüssigkeitswellen: Wellenhöhe" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave speed" -msgstr "Wasserwellen: Wellengeschwindigkeit" +msgstr "Flüssigkeitswellen: Wellengeschwindigkeit" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wavelength" -msgstr "Wasserwellen: Wellenlänge" +msgstr "Flüssigkeitswellen: Wellenlänge" #: src/settings_translation_file.cpp msgid "Waving plants" @@ -6829,14 +6857,15 @@ msgstr "" "welt-ausgerichtete automatische Texturenskalierung." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Whether FreeType fonts are used, requires FreeType support to be compiled " "in.\n" "If disabled, bitmap and XML vectors fonts are used instead." msgstr "" -"Ob FreeType-Schriften benutzt werden.\n" -"Dafür muss Minetest mit FreeType-Unterstüzung kompiliert worden sein." +"Ob FreeType-Schriften benutzt werden. Dafür muss FreeType-Unterstüzung " +"einkompiliert worden sein.\n" +"Falls deaktiviert, werden stattdessen Bitmap- und XML-Vektor-Schriften " +"benutzt." #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." @@ -6876,6 +6905,11 @@ msgid "" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" +"Ob die Töne stummgeschaltet werden. Man kann die Töne jederzeit " +"stummschalten,\n" +"außer, wenn das Tonsystem ausgeschaltet wurde (enable_sound=false).\n" +"Im Spiel können die Töne mit der Stummtaste oder mit Hilfe des\n" +"Pausemenüs stummgeschaltet werden." #: src/settings_translation_file.cpp msgid "" From af076ba7479085e6e8ab23c7201fc1064444f69b Mon Sep 17 00:00:00 2001 From: BreadW Date: Sat, 25 Jan 2020 13:11:03 +0000 Subject: [PATCH 005/424] Translated using Weblate (Japanese) Currently translated at 100.0% (1288 of 1288 strings) --- po/ja/minetest.po | 233 +++++++++++++++++++++++++--------------------- 1 file changed, 127 insertions(+), 106 deletions(-) diff --git a/po/ja/minetest.po b/po/ja/minetest.po index db981bb4b..b1b76593b 100644 --- a/po/ja/minetest.po +++ b/po/ja/minetest.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Japanese (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-10-29 11:53+0000\n" +"PO-Revision-Date: 2020-01-27 13:21+0000\n" "Last-Translator: BreadW \n" "Language-Team: Japanese \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.9.1\n" +"X-Generator: Weblate 3.11-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1742,7 +1742,6 @@ msgstr "" "\"aux\"ボタンをタップします。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1753,14 +1752,13 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" -"(X,Y,Z)'スケール'単位でのワールドの中心からのフラクタルのオフセット。\n" -"望みの点を (0,0) に移動して適切なスポーンポイントを作成したり、\n" -"'スケール'を増やして望みの点に'ズームイン'できるようにするために\n" +"(X,Y,Z)ワールドの中心からのフラクタルの「スケール」単位のオフセット。\n" +"目的のポイントを(0,0)に移動して適切なスポーンポイントを作成したり、\n" +"「スケール」を増やして目的のポイントに「ズームイン」したりするために\n" "使用できます。\n" -"既定では既定のパラメータを持つマンデルブロー集合のための適切な\n" -"スポーンポイントに合わせて調整されます、他の状況で変更を必要とする\n" -"かもしれません。\n" -"範囲はおよそ -2~2 です。ノードのオフセットに 'scale' を掛けます。" +"既定のパラメータを使用してマンデルブロ集合の適切なスポーンポイントに\n" +"合わせて調整されていますが、他の状況では変更が必要になる場合があります。\n" +"範囲は約-2〜2です。ノードのオフセットに「スケール」を掛けます。" #: src/settings_translation_file.cpp msgid "" @@ -1957,6 +1955,11 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"「ガンマ補正」を適用して、光度曲線を変更します。\n" +"値を大きくすると、中間光と低光レベルが明るくなります。\n" +"値が「1.0」の場合、光度曲線は変更されません。\n" +"これは、日光と人工光にのみ大きな影響を与え、\n" +"自然な夜の光にはほとんど影響を与えません。" #: src/settings_translation_file.cpp msgid "Altitude chill" @@ -2114,24 +2117,20 @@ msgid "Block send optimize distance" msgstr "ブロック送信最適化距離" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "固定幅フォントのパス" +msgstr "太字と斜体のフォントのパス" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" -msgstr "固定幅フォントのパス" +msgstr "太字と斜体の固定幅フォントのパス" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "フォントパス" +msgstr "太字フォントのパス" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" -msgstr "固定幅フォントのパス" +msgstr "太字の固定幅フォントのパス" #: src/settings_translation_file.cpp msgid "Build inside player" @@ -2218,6 +2217,8 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"光度曲線ブースト範囲の中心。\n" +"0.0は最小光レベル、1.0は最大光レベルです。" #: src/settings_translation_file.cpp msgid "" @@ -2437,6 +2438,9 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"トンネルの幅を制御し、小さい値ほど広いトンネルを作成します。\n" +"値 >= 10.0 の場合、トンネルの生成が完全に無効になり、集中的な\n" +"ノイズ計算が回避されます。" #: src/settings_translation_file.cpp msgid "Crash message" @@ -2487,7 +2491,6 @@ msgid "Dec. volume key" msgstr "音量を下げるキー" #: src/settings_translation_file.cpp -#, fuzzy msgid "Decrease this to increase liquid resistance to movement." msgstr "この値を小さくすると、移動時の液体抵抗が増加します。" @@ -2690,6 +2693,8 @@ msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"IPv6サポートを有効にします(クライアントとサーバーの両方に対して)。\n" +"機能するためにはIPv6接続が必要です。" #: src/settings_translation_file.cpp msgid "" @@ -2777,6 +2782,8 @@ msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"頂点バッファオブジェクトを有効にします。\n" +"これにより、グラフィックスのパフォーマンスが大幅に向上します。" #: src/settings_translation_file.cpp msgid "" @@ -2787,14 +2794,14 @@ msgstr "" "例: 0 揺れなし; 1.0 標準の揺れ; 2.0 標準の倍の揺れ。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable/disable running an IPv6 server.\n" "Ignored if bind_address is set.\n" "Needs enable_ipv6 to be enabled." msgstr "" -"IPv6 サーバの実行を有効/無効にします。\n" -"bind_address が設定されている場合は無視されます。" +"IPv6サーバーの実行を有効/無効にします。\n" +"bind_addressが設定されている場合は無視されます。\n" +"enable_ipv6を有効にする必要があります。" #: src/settings_translation_file.cpp msgid "" @@ -2803,6 +2810,10 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"Hableの「アンチャーテッド2」フィルムトーンマッピングを有効にします。\n" +"写真フィルムのトーンカーブと、これがハイダイナミックレンジイメージの外観に\n" +"どのように近似するかをシミュレートします。ミッドレンジのコントラストが\n" +"わずかに強化され、ハイライトとシャドウが徐々に圧縮されます。" #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." @@ -2850,6 +2861,10 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"サウンドシステムを有効にします。\n" +"無効にすると、すべてのサウンドが完全に無効になり、\n" +"ゲーム内の音の制御は機能しなくなります。\n" +"この設定を変更するには再起動が必要です。" #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" @@ -2884,9 +2899,8 @@ msgid "Fall bobbing factor" msgstr "落下時の上下の揺れ係数" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "フォールバックフォント" +msgstr "フォールバックフォントのパス" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -3007,11 +3021,11 @@ msgstr "霧表示切り替えキー" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "既定で太字のフォント" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "既定で斜体のフォント" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3027,15 +3041,15 @@ msgstr "フォントの大きさ" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "既定のフォントのフォント サイズ (pt)。" #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "フォールバックフォントのフォント サイズ (pt)。" #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "固定幅フォントのフォントサイズ (pt)。" #: src/settings_translation_file.cpp msgid "" @@ -3178,18 +3192,20 @@ msgstr "" "このフラグがすべての装飾を制御します。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." -msgstr "最大光レベルでの光度曲線の勾配。" +msgstr "" +"最大光レベルでの光度曲線の勾配。\n" +"最も高い光レベルのコントラストを制御します。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." -msgstr "最小光レベルでの光度曲線の勾配。" +msgstr "" +"最小光レベルでの光度曲線の勾配。\n" +"最も低い光レベルのコントラストを制御します。" #: src/settings_translation_file.cpp msgid "Graphics" @@ -3220,7 +3236,6 @@ msgid "HUD toggle key" msgstr "HUD表示切り替えキー" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- legacy: (try to) mimic old behaviour (default for release).\n" @@ -3228,10 +3243,9 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" "廃止予定のLua API呼び出しの処理:\n" -"- legacy: 古い振る舞いを模倣する(試みる) (リリースの既定値)。\n" -"- log: 廃止予定の呼び出しを模倣してバックトレースを記録 (デバッグの既定" -"値)。\n" -"- error: 廃止予定の呼び出しの使用を中止する (Mod開発者に推奨)。" +"- legacy: 古い振る舞いを模倣する(試みる) (リリース版の既定値)。\n" +"- log: 廃止予定の呼び出しを模倣してバックトレースを記録 (デバッグ版の既定値)。\n" +"- error: 廃止予定の呼び出しの使用を中止する (Mod開発者向けに推奨)。" #: src/settings_translation_file.cpp msgid "" @@ -3469,6 +3483,9 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" +"液体波の移動速度。高い値=より速い。\n" +"負の値の場合、液体波は逆方向に移動します。\n" +"揺れる液体 を有効にする必要があります。" #: src/settings_translation_file.cpp msgid "" @@ -3714,14 +3731,12 @@ msgid "Invert vertical mouse movement." msgstr "マウスの上下の動きを反転させます。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic font path" -msgstr "固定幅フォントのパス" +msgstr "斜体フォントのパス" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic monospace font path" -msgstr "固定幅フォントのパス" +msgstr "斜体の固定幅フォントのパス" #: src/settings_translation_file.cpp msgid "Item entity TTL" @@ -4551,15 +4566,15 @@ msgstr "大きな洞窟の深さ" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "大きな洞窟の最大数" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "大きな洞窟の最小数" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" -msgstr "" +msgstr "大きな洞窟の浸水割合" #: src/settings_translation_file.cpp msgid "Large chat console key" @@ -4593,13 +4608,12 @@ msgid "" msgstr "サーバの間隔の長さとオブジェクトが通常ネットワーク上で更新される間隔。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Length of liquid waves.\n" "Requires waving liquids to be enabled." msgstr "" -"有効にすると葉を揺らせます。\n" -"シェーダーが有効である必要があります。" +"液体波の長さ。\n" +"揺れる液体 を有効にする必要があります。" #: src/settings_translation_file.cpp msgid "Length of time between Active Block Modifier (ABM) execution cycles" @@ -4634,34 +4648,28 @@ msgstr "" "- verbose" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost" -msgstr "光度曲線ミッドブースト" +msgstr "光度曲線ブースト" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost center" -msgstr "光度曲線ミッドブーストの中心" +msgstr "光度曲線ブーストの中心" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost spread" -msgstr "光度曲線ミッドブーストの広がり" +msgstr "光度曲線ブーストの広がり" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve gamma" -msgstr "光度曲線ミッドブースト" +msgstr "光度曲線のガンマ" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve high gradient" -msgstr "光度曲線ミッドブースト" +msgstr "光度曲線の高勾配" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve low gradient" -msgstr "光度曲線ミッドブーストの中心" +msgstr "光度曲線の低勾配" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" @@ -4775,7 +4783,6 @@ msgid "Map generation attributes specific to Mapgen Carpathian." msgstr "マップジェネレータ Carpathian に固有のマップ生成属性。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Flat.\n" "Occasional lakes and hills can be added to the flat world." @@ -4784,14 +4791,13 @@ msgstr "" "時折、湖や丘を平らなワールドに追加することができます。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Fractal.\n" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" "マップジェネレータ fractal に固有のマップ生成属性。\n" -"'terrain' は非フラクタルな地形ができるようにします:\n" +"'terrain' は非フラクタルな地形の生成を可能にします:\n" "海、島そして地下。" #: src/settings_translation_file.cpp @@ -4964,14 +4970,13 @@ msgstr "ホットバー最大幅" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "マップチャンクあたりの大きな洞窟の乱数の最大値。" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "マップチャンクあたりの小さな洞窟の乱数の最大値。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." @@ -5110,13 +5115,12 @@ msgid "Minimap scan height" msgstr "ミニマップのスキャン高さ" #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "マップチャンクごとのダンジョンの数を決定する3Dノイズ。" +msgstr "マップチャンクあたりの大きな洞窟の乱数の最小値。" #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "マップチャンクあたりの小さな洞窟の乱数の最小値。" #: src/settings_translation_file.cpp msgid "Minimum texture size" @@ -5322,12 +5326,12 @@ msgstr "不透明な液体" #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." -msgstr "" +msgstr "既定のフォントの影の不透明度(透過)は0から255の間です。" #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." -msgstr "" +msgstr "フォールバックフォントの影の不透明度(透過)は0から255の間です。" #: src/settings_translation_file.cpp msgid "" @@ -5378,6 +5382,12 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" +"フォールバックフォントのパス。\n" +"「フリータイプフォント」が有効な場合:TrueTypeフォントでなければなりません。\n" +"「フリータイプフォント」が無効な場合:ビットマップまたはXMLベクターフォント\n" +"でなければなりません。\n" +"このフォントは特定の言語で使用されるか、規定のフォントが使用できない\n" +"ときに使用されます。" #: src/settings_translation_file.cpp msgid "Path to save screenshots at." @@ -5404,6 +5414,11 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "The fallback font will be used if the font cannot be loaded." msgstr "" +"既定のフォントのパス。\n" +"「フリータイプフォント」が有効な場合:TrueTypeフォントでなければなりません。\n" +"「フリータイプフォント」が無効な場合:ビットマップまたはXMLベクターフォント\n" +"でなければなりません。\n" +"このフォールバックフォントはフォントが読み込めないときに使用されます。" #: src/settings_translation_file.cpp msgid "" @@ -5412,6 +5427,11 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "This font is used for e.g. the console and profiler screen." msgstr "" +"固定幅フォントのパス。\n" +"「フリータイプフォント」が有効な場合:TrueTypeフォントでなければなりません。\n" +"「フリータイプフォント」が無効な場合:ビットマップまたはXMLベクターフォント\n" +"でなければなりません。\n" +"このフォントはコンソールや観測記録画面などで使用されます。" #: src/settings_translation_file.cpp msgid "Pause on lost window focus" @@ -5495,7 +5515,7 @@ msgstr "プロファイリング" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." -msgstr "" +msgstr "大きな洞窟の液体を含む割合です。" #: src/settings_translation_file.cpp msgid "" @@ -5523,9 +5543,8 @@ msgid "Recent Chat Messages" msgstr "最近のチャットメッセージ" #: src/settings_translation_file.cpp -#, fuzzy msgid "Regular font path" -msgstr "レポートパス" +msgstr "通常フォントのパス" #: src/settings_translation_file.cpp msgid "Remote media" @@ -5737,7 +5756,6 @@ msgid "Selection box width" msgstr "選択ボックスの幅" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Selects one of 18 fractal types.\n" "1 = 4D \"Roundy\" Mandelbrot set.\n" @@ -5828,30 +5846,27 @@ msgid "Set the maximum character length of a chat message sent by clients." msgstr "クライアントから送信されるチャットメッセージの最大文字数を設定します。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving leaves.\n" "Requires shaders to be enabled." msgstr "" -"有効にすると葉を揺らせます。\n" +"有効にすると葉が揺れます。\n" "シェーダーが有効である必要があります。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving liquids (like water).\n" "Requires shaders to be enabled." msgstr "" -"有効にすると水を揺らせます。\n" +"有効にすると液体が揺れます(水のような)。\n" "シェーダーが有効である必要があります。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving plants.\n" "Requires shaders to be enabled." msgstr "" -"有効にすると草花を揺らせます。\n" +"有効にすると草花が揺れます。\n" "シェーダーが有効である必要があります。" #: src/settings_translation_file.cpp @@ -5870,18 +5885,18 @@ msgstr "" "これはOpenGLビデオバックエンドでのみ機能します。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the default font. If 0, then shadow will not be " "drawn." -msgstr "フォントの影のオフセット、0 ならば影は描画されません。" +msgstr "既定のフォントの影のオフセット(ピクセル単位)。 0の場合、影は描画されません。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " "be drawn." -msgstr "フォントの影のオフセット、0 ならば影は描画されません。" +msgstr "" +"フォールバックフォントの影のオフセット(ピクセル単位)。 \n" +"0の場合、影は描画されません。" #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." @@ -5935,11 +5950,11 @@ msgstr "傾斜と堆積物は高さを変えるために連携します。" #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "" +msgstr "小さな洞窟の最大数" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "" +msgstr "小さな洞窟の最小数" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." @@ -6007,14 +6022,14 @@ msgstr "" "存在しないファイルは通常の方法で取得されます。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Spread of light curve boost range.\n" "Controls the width of the range to be boosted.\n" "Standard deviation of the light curve boost Gaussian." msgstr "" -"光度曲線ミッドブーストの広がり。\n" -"ミッドブーストガウス分布の標準偏差。" +"光度曲線ブースト範囲の広がり。\n" +"ブーストする範囲の幅を制御します。\n" +"光度曲線ブーストガウス分布の標準偏差。" #: src/settings_translation_file.cpp msgid "Static spawnpoint" @@ -6042,6 +6057,9 @@ msgid "" "The 3 'boost' parameters define a range of the light\n" "curve that is boosted in brightness." msgstr "" +"光度曲線ブーストの強度。\n" +"3つの「ブースト」パラメーターは、明るさをブーストする\n" +"光度曲線の範囲を定義します。" #: src/settings_translation_file.cpp msgid "Strength of parallax." @@ -6165,6 +6183,11 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" +"揺れる液体の表面の最大高さ。\n" +"4.0 =波高は2ノードです。\n" +"0.0 =波はまったく動きません。\n" +"既定は1.0(1/2ノード)です。\n" +"揺れる液体 を有効にする必要があります。" #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -6327,14 +6350,13 @@ msgid "Trilinear filtering" msgstr "トライリニアフィルタリング" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "True = 256\n" "False = 128\n" "Usable to make minimap smoother on slower machines." msgstr "" -"有効 = 256\n" -"無効 = 128\n" +"True = 256\n" +"False = 128\n" "より遅いマシンでミニマップを滑らかにするために使用できます。" #: src/settings_translation_file.cpp @@ -6510,13 +6532,12 @@ msgid "Volume" msgstr "音量" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Volume of all sounds.\n" "Requires the sound system to be enabled." msgstr "" -"視差遮蔽マッピングを有効にします。\n" -"シェーダーが有効である必要があります。" +"すべての音の音量。\n" +"サウンド システムを有効にする必要があります。" #: src/settings_translation_file.cpp msgid "" @@ -6561,24 +6582,20 @@ msgid "Waving leaves" msgstr "揺れる葉" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids" msgstr "揺れる液体" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave height" -msgstr "揺れる水の波の高さ" +msgstr "揺れる液体の波の高さ" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave speed" -msgstr "揺れる水の波の速度" +msgstr "揺れる液体の波の速度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wavelength" -msgstr "揺れる水の波長" +msgstr "揺れる液体の波長" #: src/settings_translation_file.cpp msgid "Waving plants" @@ -6631,14 +6648,14 @@ msgstr "" "しても使用されます。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Whether FreeType fonts are used, requires FreeType support to be compiled " "in.\n" "If disabled, bitmap and XML vectors fonts are used instead." msgstr "" -"フリータイプフォントを使用するには、フリータイプをサポートして\n" -"コンパイルされている必要があります。" +"フリータイプフォントを使用するかどうかは、フリータイプをサポートして\n" +"コンパイルされている必要があります。 \n" +"無効にした場合、代わりにビットマップおよび XML ベクターフォントが使用されます。" #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." @@ -6679,6 +6696,10 @@ msgid "" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" +"音をミュートするかどうか。サウンドシステムが無効になっていない限り\n" +"(enable_sound = false)、いつでもミュートを解除できます。\n" +"ゲーム内ではミュートキーを使用するかポーズメニューを使用して、\n" +"ミュート状態を切り替えることができます。" #: src/settings_translation_file.cpp msgid "" From 2048377c78427c3eb333df4cf81e72a79f12d2c8 Mon Sep 17 00:00:00 2001 From: monolifed Date: Sat, 25 Jan 2020 17:19:36 +0000 Subject: [PATCH 006/424] Translated using Weblate (Turkish) Currently translated at 100.0% (1288 of 1288 strings) --- po/tr/minetest.po | 256 +++++++++++++++++++++++++--------------------- 1 file changed, 141 insertions(+), 115 deletions(-) diff --git a/po/tr/minetest.po b/po/tr/minetest.po index 617b58db4..b6402dfc8 100644 --- a/po/tr/minetest.po +++ b/po/tr/minetest.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Turkish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-10-29 11:53+0000\n" +"PO-Revision-Date: 2020-01-27 13:21+0000\n" "Last-Translator: monolifed \n" "Language-Team: Turkish \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.9.1\n" +"X-Generator: Weblate 3.11-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1741,7 +1741,6 @@ msgstr "" "düğmesini de dinler." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1752,11 +1751,11 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" -"Fraktalın dünya merkezinden 'scale' birimi cinsinden (X,Y,Z)\n" -"kaydırması. Uygun canlanma noktası yaratmak için istenen \n" -"noktayı (0,0)'a taşımada veya 'scale'ı artırarak istenen bir\n" +"Fraktalın dünya merkezinden 'scale' biriminde (X,Y,Z) kaydırması.\n" +"Uygun canlanma noktası yaratmak için istenen noktayı (0,0)'a\n" +"taşımada veya 'scale'ı artırarak istenen bir\n" "noktaya yakınlaşmaya izin vermede kullanılabilir.\n" -"Öntanımlı olan öntanımlı parametreli mandelbrot setleri için\n" +"Öntanımlı olan öntanımlı parametreli Mandelbrot setleri için\n" "uygun bir canlanma noktası için ayarlanmıştır, diğer durumlar\n" "için değiştirme gerektirebilir.\n" "Kabaca -2 ile 2 arası . Nodlardaki kaydırmalar için 'scale' ile çarpın." @@ -1959,6 +1958,11 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Işık eğrisini 'gama düzeltmesi' uygulayarak değiştirir.\n" +"Yüksek değerler orta ve düşük ışık seviyelerini daha parlak hale getirir.\n" +"'1.0' değeri ışık eğrisini değiştirmeden bırakır.\n" +"Bunun sadece gün ışığı ve suni ışık üstünde önemli bir etkisi vardır.\n" +"doğal gece ışığı üzerinde çok az etkisi vardır." #: src/settings_translation_file.cpp msgid "Altitude chill" @@ -2118,24 +2122,20 @@ msgid "Block send optimize distance" msgstr "Blok gönderme iyileştirme uzaklığı" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "Eş aralıklı yazı tipi konumu" +msgstr "Kalın ve italik yazı tipi konumu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" -msgstr "Eş aralıklı yazı tipi konumu" +msgstr "Kalın ve italik eş aralıklı yazı tipi konumu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "Yazı tipi konumu" +msgstr "Kalın yazı tipi konumu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" -msgstr "Eş aralıklı yazı tipi konumu" +msgstr "Kalın eş aralıklı yazı tipi konumu" #: src/settings_translation_file.cpp msgid "Build inside player" @@ -2223,6 +2223,8 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Işık eğrisi artırma aralığının merkezi.\n" +"0.0 minimum, 1.0 maksimum ışık seviyesidir." #: src/settings_translation_file.cpp msgid "" @@ -2442,6 +2444,11 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"Tünellerin genişliğini kontrol eder, daha küçük bir değer daha geniş " +"tüneller oluşturur.\n" +"Değer >= 10.0, tünellerin oluşumunu tamamen devre dışı kılar ve yoğun " +"gürültü\n" +"hesaplamaları önler." #: src/settings_translation_file.cpp msgid "Crash message" @@ -2492,7 +2499,6 @@ msgid "Dec. volume key" msgstr "Ses alçaltma tuşu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Decrease this to increase liquid resistance to movement." msgstr "Harekete karşı sıvı direncini artırmak için bunu azaltın." @@ -2703,6 +2709,8 @@ msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"IPv6 desteğini etkinleştirin (hem istemci hem de sunucu için).\n" +"IPv6 bağlantılarının çalışması için gereklidir." #: src/settings_translation_file.cpp msgid "" @@ -2788,6 +2796,8 @@ msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"Köşe arabellek nesnelerini etkinleştirin.\n" +"Bu grafik performansını büyük ölçüde artırır." #: src/settings_translation_file.cpp msgid "" @@ -2798,14 +2808,14 @@ msgstr "" "Örneğin: 0 ise görüntü sallanması yok; 1.0 ise normal; 2.0 ise çift." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable/disable running an IPv6 server.\n" "Ignored if bind_address is set.\n" "Needs enable_ipv6 to be enabled." msgstr "" "IPv6 sunucu çalıştırmayı etkin/devre dışı kılar.\n" -"Eğer bind_address ayarlı ise yok sayılır." +"Eğer bind_address ayarlı ise yok sayılır.\n" +"enable_ipv6 etkin kılınmalıdır." #: src/settings_translation_file.cpp msgid "" @@ -2814,6 +2824,10 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"Hable'ın 'Uncharted 2' film ton eşlemesini etkinleştirir.\n" +"Fotoğrafsal film ton eğrisini simüle eder ve bu\n" +"yüksek dinamik aralıklı görüntülerin görünümü yakınlaştırır. Orta-aralık\n" +"kontrast biraz geliştirilir, vurgular ve gölgeler yavaş yavaş sıkıştırılır." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." @@ -2862,6 +2876,10 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"Ses sistemini etkinleştirir.\n" +"Devre dışı bırakılırsa, bu tüm sesleri devre dışı kılar ve oyun içindeki\n" +"ses denetimlerinin işlevi olmaz.\n" +"Bu ayarı değiştirmek, yeniden başlatma gerektirir." #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" @@ -2896,9 +2914,8 @@ msgid "Fall bobbing factor" msgstr "Düşme sallanması çarpanı" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "Geri dönüş yazı tipi" +msgstr "Yedek yazı tipi konumu" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -3021,11 +3038,11 @@ msgstr "Sis açma/kapama tuşu" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Öntanımlı kalın yazı tipi" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Öntanımlı italik yazı tipi" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3041,15 +3058,15 @@ msgstr "Yazı tipi boyutu" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "Öntanımlı yazı tipinin nokta (pt) olarak boyutu." #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "Yedek yazı tipinin nokta (pt) olarak boyutu." #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "Eş aralıklı yazı tipinin nokta (pt) olarak boyutu." #: src/settings_translation_file.cpp msgid "" @@ -3191,18 +3208,20 @@ msgstr "" "denetler, diğer mapgenlerde bu bayrak tüm dekorasyonları denetler." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." -msgstr "Maksimum ışık seviyesinde ışık eğrisinin gradyantı." +msgstr "" +"Maksimum ışık seviyesinde ışık eğrisinin gradyantı.\n" +"En yüksek ışık düzeylerinin kontrastını denetler." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." -msgstr "Minimum ışık seviyesinde ışık eğrisinin gradyantı." +msgstr "" +"Minimum ışık seviyesinde ışık eğrisinin gradyantı.\n" +"En düşük ışık düzeylerinin kontrastını kontrol eder." #: src/settings_translation_file.cpp msgid "Graphics" @@ -3233,7 +3252,6 @@ msgid "HUD toggle key" msgstr "HUD açma/kapama tuşu" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- legacy: (try to) mimic old behaviour (default for release).\n" @@ -3482,6 +3500,10 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" +"Sıvı dalgalarının ne kadar hızlı hareket edeceğini\n" +"belirler . Daha yüksek = daha hızlı.\n" +"Negatif ise, sıvı dalgalar geriye hareket edecektir.\n" +"Dalgalanan sıvılar etkin kılınmalıdır." #: src/settings_translation_file.cpp msgid "" @@ -3728,14 +3750,12 @@ msgid "Invert vertical mouse movement." msgstr "Ters dikey fare hareketi." #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic font path" -msgstr "Eş aralıklı yazı tipi konumu" +msgstr "İtalik yazı tipi konumu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic monospace font path" -msgstr "Eş aralıklı yazı tipi konumu" +msgstr "İtalik eş aralıklı yazı tipi konumu" #: src/settings_translation_file.cpp msgid "Item entity TTL" @@ -4565,15 +4585,15 @@ msgstr "Büyük mağara derinliği" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "Büyük mağara maksimum sayısı" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "Büyük mağara minimum sayısı" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" -msgstr "" +msgstr "Büyük mağara su alma oranı" #: src/settings_translation_file.cpp msgid "Large chat console key" @@ -4609,13 +4629,12 @@ msgstr "" "aralık." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Length of liquid waves.\n" "Requires waving liquids to be enabled." msgstr "" -"True (doğru) olarak ayarlamak dalgalanan yaprakları etkinleştirir.\n" -"Gölgelemenin etkin olmasını gerektirir." +"Sıvı dalgalarının uzunluğu.\n" +"Dalgalanan sıvılar etkin kılınmalı." #: src/settings_translation_file.cpp msgid "Length of time between Active Block Modifier (ABM) execution cycles" @@ -4650,34 +4669,28 @@ msgstr "" "- verbose (ayrıntılı)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost" -msgstr "Işık eğrisi orta-artırma" +msgstr "Işık eğrisi artırma" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost center" -msgstr "Işık eğrisi orta-artırma merkezi" +msgstr "Işık eğrisi artırma merkezi" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost spread" -msgstr "Işık eğrisi orta-artırmanın yayılması" +msgstr "Işık eğrisi artırma yayılması" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve gamma" -msgstr "Işık eğrisi orta-artırma" +msgstr "Işık eğrisi gama" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve high gradient" -msgstr "Işık eğrisi orta-artırma" +msgstr "Işık eğrisi yüksek gradyan" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve low gradient" -msgstr "Işık eğrisi orta-artırma merkezi" +msgstr "Işık eğrisi düşük gradyan" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" @@ -4795,22 +4808,20 @@ msgid "Map generation attributes specific to Mapgen Carpathian." msgstr "Mapgen Karpat'a özgü harita üretim değerleri." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Flat.\n" "Occasional lakes and hills can be added to the flat world." msgstr "" -"Mapgen düz'e özgü harita üretim değerleri.\n" +"Mapgen Düz'e özgü harita üretim değerleri.\n" "Ara sıra göller ve tepeler düz dünyaya eklenebilir." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Fractal.\n" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" -"Mapgen düz'e özgü harita üretim değerleri.\n" +"Mapgen Fraktal'a özgü harita üretim değerleri.\n" "'terrain' fraktal olmayan arazi üretimini etkinleştirir:\n" "okyanus, adalar ve yeraltı." @@ -4985,19 +4996,18 @@ msgstr "Maksimum hotbar genişliği" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "Her harita yığını için rastgele büyük mağara sayısının üst sınırı." #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Her harita yığını için rastgele küçük mağara sayısının üst sınırı." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." msgstr "" -"Maksimum sıvı direnci. Yüksek hızda sıvıya girerken yavaşlamayı\n" +"Maksimum sıvı direnci. Sıvıya, yüksek hızda girerken yavaşlamayı\n" "denetler." #: src/settings_translation_file.cpp @@ -5136,13 +5146,12 @@ msgid "Minimap scan height" msgstr "Mini harita tarama yüksekliği" #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "Harita yığını başına zindan sayısını belirleyen 3B gürültü." +msgstr "Her harita yığını için rastgele büyük mağara sayısının alt sınırı." #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Her harita yığını için rastgele küçük mağara sayısının alt sınırı." #: src/settings_translation_file.cpp msgid "Minimum texture size" @@ -5350,11 +5359,14 @@ msgstr "Opak sıvılar" msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." msgstr "" +"0 ile 255 arasında öntanımlı yazı tipinin arkasındaki gölgenin opaklığı " +"(alfa)." #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." msgstr "" +"0 ile 255 arasında yedek yazı tipinin arkasındaki gölgenin opaklığı (alfa)." #: src/settings_translation_file.cpp msgid "" @@ -5405,6 +5417,11 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" +"Yedek yazı tipi konumu.\n" +"“freetype” ayarı etkinse: TrueType yazı tipi olmalı.\n" +"“freetype” ayarı devre dışıysa: bitmap veya XML vektör yazı tipi olmalı.\n" +"Bu yazı tipi belirli diller için veya öntanımlı yazı tipi kullanılamıyorsa " +"kullanılır." #: src/settings_translation_file.cpp msgid "Path to save screenshots at." @@ -5429,6 +5446,10 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "The fallback font will be used if the font cannot be loaded." msgstr "" +"Öntanımlı yazı tipi konumu.\n" +"“freetype” ayarı etkinse: TrueType yazı tipi olmalı.\n" +"“freetype” ayarı devre dışıysa: bitmap veya XML vektör yazı tipi olmalı.\n" +"Yazı tipi yüklenemiyorsa yedek yazı tipi kullanılır." #: src/settings_translation_file.cpp msgid "" @@ -5437,6 +5458,10 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "This font is used for e.g. the console and profiler screen." msgstr "" +"Eş aralıklı yazı tipi konumu.\n" +"“freetype” ayarı etkinse: TrueType yazı tipi olmalı.\n" +"“freetype” ayarı devre dışıysa: bitmap veya XML vektör yazı tipi olmalı.\n" +"Bu yazı tipi konsol, profil ekranı v.b. için kullanılır." #: src/settings_translation_file.cpp msgid "Pause on lost window focus" @@ -5522,7 +5547,7 @@ msgstr "Profilleme" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." -msgstr "" +msgstr "Sıvı içeren büyük mağaraların oranı." #: src/settings_translation_file.cpp msgid "" @@ -5551,9 +5576,8 @@ msgid "Recent Chat Messages" msgstr "Son Sohbet İletileri" #: src/settings_translation_file.cpp -#, fuzzy msgid "Regular font path" -msgstr "Rapor konumu" +msgstr "Normal yazı tipi konumu" #: src/settings_translation_file.cpp msgid "Remote media" @@ -5766,7 +5790,6 @@ msgid "Selection box width" msgstr "Seçim kutusu genişliği" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Selects one of 18 fractal types.\n" "1 = 4D \"Roundy\" Mandelbrot set.\n" @@ -5789,24 +5812,24 @@ msgid "" "18 = 4D \"Mandelbulb\" Julia set." msgstr "" "18 fraktal türünden birini seçer.\n" -"1 = 4D \"Roundy\" mandelbrot seti.\n" -"2 = 4D \"Roundy\" julia seti.\n" -"3 = 4D \"Squarry\" mandelbrot seti.\n" -"4 = 4D \"Squarry\" julia seti.\n" -"5 = 4D \"Mandy Cousin\" mandelbrot seti.\n" -"6 = 4D \"Mandy Cousin\" julia seti.\n" -"7 = 4D \"Variation\" mandelbrot seti.\n" -"8 = 4D \"Variation\" julia seti.\n" -"9 = 3D \"Mandelbrot/Mandelbar\" mandelbrot seti.\n" -"10 = 3D \"Mandelbrot/Mandelbar\" julia seti.\n" -"11 = 3D \"Christmas Tree\" mandelbrot seti.\n" -"12 = 3D \"Christmas Tree\" julia seti.\n" -"13 = 3D \"Mandelbulb\" mandelbrot seti.\n" -"14 = 3D \"Mandelbulb\" julia seti.\n" +"1 = 4D \"Roundy\" Mandelbrot seti.\n" +"2 = 4D \"Roundy\" Julia seti.\n" +"3 = 4D \"Squarry\" Mandelbrot seti.\n" +"4 = 4D \"Squarry\" Julia seti.\n" +"5 = 4D \"Mandy Cousin\" Mandelbrot seti.\n" +"6 = 4D \"Mandy Cousin\" Julia seti.\n" +"7 = 4D \"Variation\" Mandelbrot seti.\n" +"8 = 4D \"Variation\" Julia seti.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot seti.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" Julia seti.\n" +"11 = 3D \"Christmas Tree\" Mandelbrot seti.\n" +"12 = 3D \"Christmas Tree\" Julia seti.\n" +"13 = 3D \"Mandelbulb\" Mandelbrot seti.\n" +"14 = 3D \"Mandelbulb\" Julia seti.\n" "15 = 3D \"Cosine Mandelbulb\" mandelbrot seti.\n" "16 = 3D \"Cosine Mandelbulb\" julia seti.\n" -"17 = 4D \"Mandelbulb\" mandelbrot seti.\n" -"18 = 4D \"Mandelbulb\" julia seti." +"17 = 4D \"Mandelbulb\" Mandelbrot seti.\n" +"18 = 4D \"Mandelbulb\" Julia seti." #: src/settings_translation_file.cpp msgid "Server / Singleplayer" @@ -5859,31 +5882,28 @@ msgstr "" "ayarla." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving leaves.\n" "Requires shaders to be enabled." msgstr "" -"True (doğru) olarak ayarlamak dalgalanan yaprakları etkinleştirir.\n" -"Gölgelemenin etkin olmasını gerektirir." +"Dalgalanan yaprakları için doğru'ya ayarlayın.\n" +"Gölgelemeler etkin kılınmalıdır." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving liquids (like water).\n" "Requires shaders to be enabled." msgstr "" -"True (doğru) olarak ayarlamak dalgalanan suyu etkinleştirir.\n" -"Gölgelemenin etkin olmasını gerektirir." +"Dalgalanan sıvılar (su gibi) için doğru'ya ayarlayın.\n" +"Gölgelemeler etkin kılınmalıdır." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving plants.\n" "Requires shaders to be enabled." msgstr "" -"True (doğru) olarak ayarlamak dalgalanan bitkileri etkinleştirir.\n" -"Gölgelemenin etkin olmasını gerektirir." +"Dalgalanan bitkiler için doğru'ya ayarlayın.\n" +"Gölgelemeler etkin kılınmalıdır." #: src/settings_translation_file.cpp msgid "Shader path" @@ -5902,18 +5922,18 @@ msgstr "" "Bu yalnızca OpenGL video arka ucu ile çalışır." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the default font. If 0, then shadow will not be " "drawn." -msgstr "Yazı tipi gölge kayması, 0 ise gölge çizilmez." +msgstr "" +"Öntanımlı yazı tipinin gölge uzaklığı (piksel olarak). 0 ise, gölge çizilmez." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " "be drawn." -msgstr "Yazı tipi gölge kayması, 0 ise gölge çizilmez." +msgstr "" +"Yedek yazı tipinin gölge uzaklığı (piksel olarak). 0 ise, gölge çizilmez." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." @@ -5967,11 +5987,11 @@ msgstr "Yükseklikleri değiştirmek için eğim ve dolgu birlikte işler." #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "" +msgstr "Küçük mağara maksimum sayısı" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "" +msgstr "Küçük mağara minimum sayısı" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." @@ -6039,14 +6059,14 @@ msgstr "" "Var olmayan dosyalar her zamanki yoldan alınır." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Spread of light curve boost range.\n" "Controls the width of the range to be boosted.\n" "Standard deviation of the light curve boost Gaussian." msgstr "" -"Işık eğrisi orta-artırmanın yayılması.\n" -"Gaussian orta-artırmanın standart deviyasyonu." +"Işık eğrisi artırma aralığının yayılması.\n" +"Artırılacak aralığın genişliğini denetler.\n" +"Işık eğrisi artırma Gaussian'ın standart sapması." #: src/settings_translation_file.cpp msgid "Static spawnpoint" @@ -6074,6 +6094,9 @@ msgid "" "The 3 'boost' parameters define a range of the light\n" "curve that is boosted in brightness." msgstr "" +"Işık eğrisi artırmanın gücü.\n" +"3 'boost' parametresi parlaklık artırılan\n" +"bir ışık eğrisi aralığı tanımlar." #: src/settings_translation_file.cpp msgid "Strength of parallax." @@ -6198,6 +6221,11 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" +"Dalgalanan sıvıların yüzeyinin maksimum yüksekliği.\n" +"4.0 = Dalga yüksekliği iki nod.\n" +"0.0 = Dalga hiç hareket etmez.\n" +"Öntanımlı 1.0'dır (1/2 nod).\n" +"Dalgalanan sıvılar etkin kılınmalıdır." #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -6372,7 +6400,6 @@ msgid "Trilinear filtering" msgstr "Trilineer filtreleme" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "True = 256\n" "False = 128\n" @@ -6555,13 +6582,12 @@ msgid "Volume" msgstr "Ses" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Volume of all sounds.\n" "Requires the sound system to be enabled." msgstr "" -"Paralaks oklüzyon eşlemeyi etkinleştirir.\n" -"Gölgelemelerin etkin olmasını gerektirir." +"Tüm seslerin yüksekliği.\n" +"Ses sistemi etkin kılınmalıdır." #: src/settings_translation_file.cpp msgid "" @@ -6607,24 +6633,20 @@ msgid "Waving leaves" msgstr "Dalgalanan yapraklar" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids" -msgstr "Dalgalanan Sıvılar" +msgstr "Dalgalanan sıvılar" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave height" -msgstr "Dalgalanan su dalga yüksekliği" +msgstr "Dalgalanan sıvılar dalga yüksekliği" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave speed" -msgstr "Dalgalanan su dalga hızı" +msgstr "Dalgalanan sıvılar dalga hızı" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wavelength" -msgstr "Dalgalanan su dalga boyu" +msgstr "Dalgalanan sıvılar dalga-boyu" #: src/settings_translation_file.cpp msgid "Waving plants" @@ -6679,14 +6701,14 @@ msgstr "" "olarak da kullanılır." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Whether FreeType fonts are used, requires FreeType support to be compiled " "in.\n" "If disabled, bitmap and XML vectors fonts are used instead." msgstr "" "Freetype yazı tiplerinin kullanılıp kullanılmayacağını, freetype desteği ile " -"derlenmiş olması gerekir." +"derlenmiş olmalıdır.\n" +"Devre dışı kılınırsa, yerine bitmap ve XML vektör yazı tipleri kullanılır." #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." @@ -6730,6 +6752,10 @@ msgid "" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" +"Seslerin kısılıp kısılmayacağı. Ses sistemi devre dışı değilse \n" +"(enable_sound = false) sesleri istediğiniz zaman açabilirsiniz.\n" +"Oyunda, ses kısma durumunu, ses kısma tuşuyla veya duraklatma menüsünü\n" +"kullanarak belirleyebilirsiniz." #: src/settings_translation_file.cpp msgid "" From 2de515f311a3d2310f8f252e0cbb43ba8b6a5c00 Mon Sep 17 00:00:00 2001 From: pan93412 Date: Tue, 28 Jan 2020 07:22:29 +0000 Subject: [PATCH 007/424] Translated using Weblate (Chinese (Traditional)) Currently translated at 68.9% (888 of 1288 strings) --- po/zh_TW/minetest.po | 1149 ++++++++++++++++++------------------------ 1 file changed, 497 insertions(+), 652 deletions(-) diff --git a/po/zh_TW/minetest.po b/po/zh_TW/minetest.po index 7af879637..5e670c2fa 100644 --- a/po/zh_TW/minetest.po +++ b/po/zh_TW/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Chinese (Traditional) (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-01-29 13:50+0000\n" +"Last-Translator: pan93412 \n" "Language-Team: Chinese (Traditional) \n" "Language: zh_TW\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.9-dev\n" +"X-Generator: Weblate 3.11-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -20,12 +20,11 @@ msgstr "重生" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" -msgstr "您已經死亡" +msgstr "您已死亡" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred in a Lua script:" -msgstr "在 Lua 指令稿中發生錯誤,如 mod:" +msgstr "Lua 指令稿發生錯誤:" #: builtin/fstk/ui.lua msgid "An error occurred:" @@ -61,11 +60,11 @@ msgstr "伺服器強制協定版本 $1。 " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "伺服器支援協定版本 $1 到 $2 " +msgstr "伺服器支援協定版本 $1 到 $2。 " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." -msgstr "嘗試重新啟用公共伺服器清單並檢查您的網際網路連線。" +msgstr "請嘗試重新啟用公共伺服器清單並檢查您的網際網路連線。" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." @@ -87,63 +86,57 @@ msgstr "取消" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Dependencies:" -msgstr "依賴:" +msgstr "相依元件:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" -msgstr "停用全部" +msgstr "全部停用" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "已停用 Mod包" +msgstr "停用 Mod 包" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "啟用全部" +msgstr "全部啟用" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "重新命名 Mod 包" +msgstr "啟用 Mod 包" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." -msgstr "" -"啟用 mod 「$1」 失敗,因為其包含了不合法的字元。只有 字元 [a-z0-9_] 才是可用" -"的。" +msgstr "無法啟用 Mod「$1」,因為其包含了不允許的字元。只能有 [a-z0-9_] 字元。" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Mod:" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No (optional) dependencies" -msgstr "選用的相依元件:" +msgstr "沒有 (選用的) 相依元件" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr "找不到 mod 描述。" +msgstr "未提供遊戲描述。" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No hard dependencies" -msgstr "無相依元件。" +msgstr "沒有強制相依元件" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "找不到 mod 描述。" +msgstr "未提供 Mod 包描述。" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No optional dependencies" -msgstr "選用的相依元件:" +msgstr "沒有可選相依元件" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "選用的相依元件:" +msgstr "可選相依元件:" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp @@ -164,20 +157,19 @@ msgstr "所有套件" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back" -msgstr "Back" +msgstr "返回" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" -msgstr "主選單" +msgstr "返回主選單" #: builtin/mainmenu/dlg_contentstore.lua msgid "Downloading and installing $1, please wait..." -msgstr "正在下載 $1,請稍候……" +msgstr "正在下載並安裝 $1,請稍候……" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Failed to download $1" -msgstr "安裝 $1 到 $2 失敗" +msgstr "無法下載 $1" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -191,15 +183,15 @@ msgstr "安裝" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Mods" -msgstr "Mods" +msgstr "Mod" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "無法取得任何套件" +msgstr "無法取得套件" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" -msgstr "沒有搜尋到任何項目" +msgstr "無結果" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua @@ -207,14 +199,12 @@ msgid "Search" msgstr "搜尋" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Texture packs" msgstr "材質包" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Uninstall" -msgstr "安裝" +msgstr "解除安裝" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update" @@ -229,9 +219,8 @@ msgid "Create" msgstr "建立" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "從 minetest.net 下載一個子遊戲,像是 minetest_game" +msgstr "從 minetest.net 下載遊戲,例如 Minetest Game" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" @@ -246,9 +235,8 @@ msgid "Mapgen" msgstr "地圖產生器" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "No game selected" -msgstr "選擇範圍" +msgstr "未選擇遊戲" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -261,16 +249,15 @@ msgstr "警告:最小化的開發測試僅供開發者使用。" #: builtin/mainmenu/dlg_create_world.lua msgid "World name" -msgstr "世界遊戲" +msgstr "世界名稱" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "You have no games installed." -msgstr "您沒有安裝子遊戲。" +msgstr "您未安裝遊戲。" #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "您確定您要刪除「$1」嗎?" +msgstr "您確定要刪除「$1」嗎?" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua @@ -279,18 +266,16 @@ msgid "Delete" msgstr "刪除" #: builtin/mainmenu/dlg_delete_content.lua -#, fuzzy msgid "pkgmgr: failed to delete \"$1\"" -msgstr "Mod 管理員:刪除「$1」失敗" +msgstr "pkgmgr:無法刪除「$1」" #: builtin/mainmenu/dlg_delete_content.lua -#, fuzzy msgid "pkgmgr: invalid path \"$1\"" -msgstr "Mod 管理員:無效的 mod 路徑「$1」" +msgstr "pkgmgr:「%1」路徑無效" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" -msgstr "刪除世界「$1」?" +msgstr "刪除「$1」世界?" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" @@ -304,18 +289,15 @@ msgstr "重新命名 Mod 包:" msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." -msgstr "" -"這個Mod包有給定一個明確的名稱在它所屬的 modpack.conf 之中,可以在該檔案中複寫" -"Mod包的名稱。" +msgstr "這個 Mod 包有在其 modpack.conf 提供明確的名稱,會覆蓋此處的重新命名。" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" -msgstr "(這個設定沒有描述可用)" +msgstr "(未提供設定描述)" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "2D Noise" -msgstr "噪音" +msgstr "2D 雜訊值" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" @@ -340,11 +322,12 @@ msgstr "已啟用" #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "Lacunarity" -msgstr "安全" +msgstr "Lacunarity" #: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy msgid "Octaves" -msgstr "" +msgstr "倍頻程" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" @@ -353,7 +336,7 @@ msgstr "補償" #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "Persistance" -msgstr "玩家傳送距離" +msgstr "暫留" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." @@ -365,21 +348,19 @@ msgstr "請輸入有效的數字。" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Restore Default" -msgstr "恢復預設值" +msgstr "還原至預設值" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" msgstr "規模" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "Select directory" -msgstr "地圖目錄" +msgstr "選擇目錄" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "Select file" -msgstr "選取 Mod 檔案:" +msgstr "選擇檔案" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Show technical names" @@ -387,156 +368,135 @@ msgstr "顯示技術名稱" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must be at least $1." -msgstr "值必須大於 $1。" +msgstr "數值必須大於 $1。" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must not be larger than $1." -msgstr "值必須小於 $1。" +msgstr "數值必須小於 $1。" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" -msgstr "" +msgstr "X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" -msgstr "" +msgstr "X 點差" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" -msgstr "" +msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" -msgstr "" +msgstr "Y 點差" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" -msgstr "" +msgstr "Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" -msgstr "" +msgstr "Z 點差" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" -msgstr "" +msgstr "絕對值" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "defaults" -msgstr "預設遊戲" +msgstr "預設值" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" -msgstr "" +msgstr "緩解 (eased)" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "$1 (Enabled)" -msgstr "已啟用" +msgstr "$1(已啟用)" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "$1 mods" -msgstr "3D 模式" +msgstr "$1 個 Mod" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" -msgstr "安裝 $1 到 $2 失敗" +msgstr "無法安裝 $1 至 $2" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "安裝 Mod:找不到 $1 的真實 mod 名稱" +msgstr "安裝 Mod:找不到下述項目的真實 Mod 名稱:$1" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install Mod: Unable to find suitable folder name for modpack $1" -msgstr "安裝 Mod:找不到 mod 包 $1 適合的資料夾名稱" +msgstr "安裝 Mod:找不到 $1 Mod 包適合的資料夾名稱" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install: Unsupported file type \"$1\" or broken archive" -msgstr "" -"\n" -"安裝 Mod:不支援的檔案類型「$1」或是損毀的壓縮檔" +msgstr "安裝:「%1」檔案類型不支援,或是封存檔損壞" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install: file: \"$1\"" -msgstr "安裝 Mod:檔案「$1」" +msgstr "安裝:檔案:「$1」" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to find a valid mod or modpack" -msgstr "安裝 Mod:找不到 mod 包 $1 適合的資料夾名稱" +msgstr "找不到有效的 Mod 或 Mod 包" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a $1 as a texture pack" -msgstr "安裝 $1 到 $2 失敗" +msgstr "無法將 $1 安裝為材質包" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a game as a $1" -msgstr "安裝 $1 到 $2 失敗" +msgstr "無法將遊戲安裝為 $1" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a mod as a $1" -msgstr "安裝 $1 到 $2 失敗" +msgstr "無法將 Mod 安裝為 $1" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a modpack as a $1" -msgstr "安裝 $1 到 $2 失敗" +msgstr "無法將 Mod 包安裝為 $1" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "" +msgstr "瀏覽線上內容" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Content" -msgstr "繼續" +msgstr "內容" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Disable Texture Pack" -msgstr "選取材質包:" +msgstr "停用材質包" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Information:" -msgstr "Mod 資訊:" +msgstr "資訊:" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Installed Packages:" -msgstr "已安裝的 Mod:" +msgstr "已安裝套件:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." msgstr "無相依元件。" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "No package description available" -msgstr "找不到 mod 描述" +msgstr "沒有可用的套件描述" #: builtin/mainmenu/tab_content.lua msgid "Rename" msgstr "重新命名" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Uninstall Package" -msgstr "解除安裝已選取的 mod" +msgstr "解除安裝套件" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Use Texture Pack" -msgstr "材質包" +msgstr "使用材質包" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" @@ -592,19 +552,19 @@ msgstr "名稱/密碼" #: builtin/mainmenu/tab_local.lua msgid "New" -msgstr "新" +msgstr "新增" #: builtin/mainmenu/tab_local.lua msgid "No world created or selected!" -msgstr "未有已建立或已選取的世界!" +msgstr "未建立或選取世界!" #: builtin/mainmenu/tab_local.lua msgid "Play Game" -msgstr "玩遊戲" +msgstr "遊玩遊戲" #: builtin/mainmenu/tab_local.lua msgid "Port" -msgstr "埠" +msgstr "連線埠" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -615,13 +575,12 @@ msgid "Server Port" msgstr "伺服器埠" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Start Game" -msgstr "主持遊戲" +msgstr "開始遊戲" #: builtin/mainmenu/tab_online.lua msgid "Address / Port" -msgstr "地址/埠" +msgstr "地址/連線埠" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" @@ -641,12 +600,11 @@ msgstr "刪除收藏" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Favorite" -msgstr "最愛" +msgstr "收藏" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Join Game" -msgstr "主持遊戲" +msgstr "加入遊戲" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Name / Password" @@ -677,9 +635,8 @@ msgid "8x" msgstr "8x" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "All Settings" -msgstr "設定" +msgstr "所有設定" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" @@ -687,12 +644,11 @@ msgstr "反鋸齒:" #: builtin/mainmenu/tab_settings.lua msgid "Are you sure to reset your singleplayer world?" -msgstr "您確定要要重置您的單人遊戲世界嗎?" +msgstr "您確定要重設您的單人遊戲世界嗎?" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Autosave Screen Size" -msgstr "自動儲存視窗大小" +msgstr "自動儲存螢幕大小" #: builtin/mainmenu/tab_settings.lua msgid "Bilinear Filter" @@ -715,9 +671,8 @@ msgid "Fancy Leaves" msgstr "華麗葉子" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Generate Normal Maps" -msgstr "生成一般地圖" +msgstr "產生一般地圖" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap" @@ -733,11 +688,11 @@ msgstr "否" #: builtin/mainmenu/tab_settings.lua msgid "No Filter" -msgstr "無過濾器" +msgstr "沒有過濾器" #: builtin/mainmenu/tab_settings.lua msgid "No Mipmap" -msgstr "無 Mip 貼圖" +msgstr "沒有 Mip 貼圖" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" @@ -745,7 +700,7 @@ msgstr "突顯節點" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" -msgstr "突顯節點" +msgstr "加入節點外框" #: builtin/mainmenu/tab_settings.lua msgid "None" @@ -769,7 +724,7 @@ msgstr "粒子" #: builtin/mainmenu/tab_settings.lua msgid "Reset singleplayer world" -msgstr "重置單人遊戲世界" +msgstr "重設單人遊戲世界" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" @@ -785,7 +740,7 @@ msgstr "著色器" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" -msgstr "" +msgstr "著色器(無法使用)" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" @@ -808,9 +763,8 @@ msgid "Tone Mapping" msgstr "色調映射" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Touchthreshold: (px)" -msgstr "碰觸限值(像素)" +msgstr "觸控閾值:(像素)" #: builtin/mainmenu/tab_settings.lua msgid "Trilinear Filter" @@ -821,9 +775,8 @@ msgid "Waving Leaves" msgstr "葉子擺動" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Waving Liquids" -msgstr "擺動節點" +msgstr "擺動液體" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" @@ -835,7 +788,7 @@ msgstr "是" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" -msgstr "設定 mod" +msgstr "設定 Mod" #: builtin/mainmenu/tab_simple_main.lua msgid "Main" @@ -867,7 +820,7 @@ msgstr "正在載入材質..." #: src/client/client.cpp msgid "Rebuilding shaders..." -msgstr "正在重新構建著色器..." +msgstr "正在重新組建著色器..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -879,7 +832,7 @@ msgstr "找不到或無法載入遊戲 \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "無效的遊戲規格。" +msgstr "遊戲規格無效。" #: src/client/clientlauncher.cpp msgid "Main Menu" @@ -895,11 +848,11 @@ msgstr "玩家名稱太長。" #: src/client/clientlauncher.cpp msgid "Please choose a name!" -msgstr "請選擇名字!" +msgstr "請選擇名稱!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "" +msgstr "無法開啟提供的密碼檔案: " #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " @@ -935,7 +888,7 @@ msgstr "- 模式: " #: src/client/game.cpp msgid "- Port: " -msgstr "- 埠: " +msgstr "- 連線埠: " #: src/client/game.cpp msgid "- Public: " @@ -950,42 +903,36 @@ msgid "- Server Name: " msgstr "- 伺服器名稱: " #: src/client/game.cpp -#, fuzzy msgid "Automatic forward disabled" -msgstr "前進鍵" +msgstr "已停用自動前進" #: src/client/game.cpp -#, fuzzy msgid "Automatic forward enabled" -msgstr "前進鍵" +msgstr "已啟用自動前進" #: src/client/game.cpp -#, fuzzy msgid "Camera update disabled" -msgstr "攝影機切換更新按鍵" +msgstr "已停用相機更新" #: src/client/game.cpp -#, fuzzy msgid "Camera update enabled" -msgstr "攝影機切換更新按鍵" +msgstr "已啟用相機更新" #: src/client/game.cpp msgid "Change Password" msgstr "變更密碼" #: src/client/game.cpp -#, fuzzy msgid "Cinematic mode disabled" -msgstr "電影模式按鍵" +msgstr "已停用電影模式" #: src/client/game.cpp -#, fuzzy msgid "Cinematic mode enabled" -msgstr "電影模式按鍵" +msgstr "已啟用電影模式" #: src/client/game.cpp msgid "Client side scripting is disabled" -msgstr "" +msgstr "已停用用戶端指令稿" #: src/client/game.cpp msgid "Connecting to server..." @@ -1030,7 +977,7 @@ msgstr "" #: src/client/game.cpp msgid "Creating client..." -msgstr "正在建立客戶端..." +msgstr "正在建立用戶端..." #: src/client/game.cpp msgid "Creating server..." @@ -1038,16 +985,15 @@ msgstr "正在建立伺服器..." #: src/client/game.cpp msgid "Debug info and profiler graph hidden" -msgstr "" +msgstr "已隱藏除錯資訊及分析圖" #: src/client/game.cpp -#, fuzzy msgid "Debug info shown" -msgstr "除錯資訊切換按鍵" +msgstr "已顯示除錯資訊" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" -msgstr "" +msgstr "已隱藏除錯資訊、分析圖及線框" #: src/client/game.cpp msgid "" @@ -1079,19 +1025,19 @@ msgstr "" #: src/client/game.cpp msgid "Disabled unlimited viewing range" -msgstr "" +msgstr "已停用無限視野" #: src/client/game.cpp msgid "Enabled unlimited viewing range" -msgstr "" +msgstr "已啟用無限視野" #: src/client/game.cpp msgid "Exit to Menu" -msgstr "離開到選單" +msgstr "離開,回到選單" #: src/client/game.cpp msgid "Exit to OS" -msgstr "離開到作業系統" +msgstr "離開,回到作業系統" #: src/client/game.cpp msgid "Fast mode disabled" @@ -1103,7 +1049,7 @@ msgstr "已啟用快速模式" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "" +msgstr "已啟用快速模式(註:沒有「fast」權限)" #: src/client/game.cpp msgid "Fly mode disabled" @@ -1115,17 +1061,15 @@ msgstr "已啟用飛行模式" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "" +msgstr "已啟用飛行模式(註:沒有「fly」權限)" #: src/client/game.cpp -#, fuzzy msgid "Fog disabled" -msgstr "若停用 " +msgstr "已停用霧氣" #: src/client/game.cpp -#, fuzzy msgid "Fog enabled" -msgstr "已啟用" +msgstr "已啟用霧氣" #: src/client/game.cpp msgid "Game info:" @@ -1141,11 +1085,11 @@ msgstr "正在主持伺服器" #: src/client/game.cpp msgid "Item definitions..." -msgstr "物品定義..." +msgstr "定義物品..." #: src/client/game.cpp msgid "KiB/s" -msgstr "KiB/s" +msgstr "KiB/秒" #: src/client/game.cpp msgid "Media..." @@ -1153,53 +1097,51 @@ msgstr "媒體..." #: src/client/game.cpp msgid "MiB/s" -msgstr "MiB/s" +msgstr "MiB/秒" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "" +msgstr "迷你地圖目前已被遊戲或 Mod 停用" #: src/client/game.cpp -#, fuzzy msgid "Minimap hidden" -msgstr "迷你地圖按鍵" +msgstr "已隱藏迷你地圖" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" -msgstr "" +msgstr "雷達模式的迷你地圖,放大 1 倍" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x2" -msgstr "" +msgstr "雷達模式的迷你地圖,放大 2 倍" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x4" -msgstr "" +msgstr "雷達模式的迷你地圖,放大 4 倍" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x1" -msgstr "" +msgstr "表面模式的迷你地圖,放大 1 倍" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x2" -msgstr "" +msgstr "表面模式的迷你地圖,放大 2 倍" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x4" -msgstr "" +msgstr "表面模式的迷你地圖,放大 4 倍" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "" +msgstr "已停用穿牆模式" #: src/client/game.cpp -#, fuzzy msgid "Noclip mode enabled" -msgstr "已啟用傷害" +msgstr "已啟用穿牆模式" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "" +msgstr "已啟用穿牆模式(註:沒有「noclip」權限)" #: src/client/game.cpp msgid "Node definitions..." @@ -1215,15 +1157,15 @@ msgstr "開啟" #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "" +msgstr "已停用 Pitch 移動模式" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "" +msgstr "已啟用 Pitch 移動模式" #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "" +msgstr "已顯示分析圖" #: src/client/game.cpp msgid "Remote server" @@ -1235,7 +1177,7 @@ msgstr "正在解析地址……" #: src/client/game.cpp msgid "Shutting down..." -msgstr "關閉..." +msgstr "正在關閉..." #: src/client/game.cpp msgid "Singleplayer" @@ -1246,86 +1188,81 @@ msgid "Sound Volume" msgstr "音量" #: src/client/game.cpp -#, fuzzy msgid "Sound muted" -msgstr "音量" +msgstr "已靜音" #: src/client/game.cpp -#, fuzzy msgid "Sound unmuted" -msgstr "音量" +msgstr "已取消靜音" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing range changed to %d" -msgstr "音量已調整為%d%%" +msgstr "已調整視野至 %d" #: src/client/game.cpp #, c-format msgid "Viewing range is at maximum: %d" -msgstr "" +msgstr "視野已為最大值:%d" #: src/client/game.cpp #, c-format msgid "Viewing range is at minimum: %d" -msgstr "" +msgstr "視野已為最小值:%d" #: src/client/game.cpp #, c-format msgid "Volume changed to %d%%" -msgstr "音量已調整為%d%%" +msgstr "音量已調整為 %d%%" #: src/client/game.cpp msgid "Wireframe shown" -msgstr "" +msgstr "已顯示線框" #: src/client/game.cpp msgid "Zoom currently disabled by game or mod" -msgstr "" +msgstr "遠近調整目前已被遊戲或模組停用" #: src/client/game.cpp src/gui/modalMenu.cpp msgid "ok" msgstr "確定" #: src/client/gameui.cpp -#, fuzzy msgid "Chat hidden" -msgstr "聊天按鍵" +msgstr "隱藏聊天室" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "" +msgstr "顯示聊天室" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "" +msgstr "已隱藏 HUD" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "" +msgstr "已顯示 HUD" #: src/client/gameui.cpp -#, fuzzy msgid "Profiler hidden" -msgstr "分析器" +msgstr "已隱藏分析器" #: src/client/gameui.cpp #, c-format msgid "Profiler shown (page %d of %d)" -msgstr "" +msgstr "已顯示分析器(第 %d 頁,共 %d 頁)" #: src/client/keycode.cpp msgid "Apps" msgstr "應用程式" #: src/client/keycode.cpp -#, fuzzy msgid "Backspace" -msgstr "Back" +msgstr "退格鍵" #: src/client/keycode.cpp msgid "Caps Lock" -msgstr "Caps Lock" +msgstr "大寫鎖定鍵" #: src/client/keycode.cpp msgid "Clear" @@ -1369,7 +1306,7 @@ msgstr "轉換 IME" #: src/client/keycode.cpp msgid "IME Escape" -msgstr "逃脫 IME" +msgstr "跳脫 IME" #: src/client/keycode.cpp msgid "IME Mode Change" @@ -1393,19 +1330,19 @@ msgstr "左鍵" #: src/client/keycode.cpp msgid "Left Control" -msgstr "左邊 Control" +msgstr "左 Control" #: src/client/keycode.cpp msgid "Left Menu" -msgstr "左邊選單鍵" +msgstr "左選單鍵" #: src/client/keycode.cpp msgid "Left Shift" -msgstr "左邊 Shift" +msgstr "左 Shift" #: src/client/keycode.cpp msgid "Left Windows" -msgstr "左方視窗" +msgstr "左 Windows 鍵" #: src/client/keycode.cpp msgid "Menu" @@ -1417,7 +1354,7 @@ msgstr "中鍵" #: src/client/keycode.cpp msgid "Num Lock" -msgstr "Num Lock" +msgstr "數字鎖定鍵" #: src/client/keycode.cpp msgid "Numpad *" @@ -1433,7 +1370,7 @@ msgstr "數字鍵 -" #: src/client/keycode.cpp msgid "Numpad ." -msgstr "數字鍵臺。" +msgstr "數字鍵 ." #: src/client/keycode.cpp msgid "Numpad /" @@ -1485,11 +1422,11 @@ msgstr "OEM 清除" #: src/client/keycode.cpp msgid "Page down" -msgstr "" +msgstr "Page down" #: src/client/keycode.cpp msgid "Page up" -msgstr "" +msgstr "Page up" #: src/client/keycode.cpp msgid "Pause" @@ -1497,7 +1434,7 @@ msgstr "暫停" #: src/client/keycode.cpp msgid "Play" -msgstr "玩" +msgstr "遊玩" #: src/client/keycode.cpp msgid "Print" @@ -1517,23 +1454,23 @@ msgstr "右鍵" #: src/client/keycode.cpp msgid "Right Control" -msgstr "右邊 Control" +msgstr "右 Control" #: src/client/keycode.cpp msgid "Right Menu" -msgstr "右邊選單鍵" +msgstr "右選單鍵" #: src/client/keycode.cpp msgid "Right Shift" -msgstr "右邊 Shift" +msgstr "右 Shift" #: src/client/keycode.cpp msgid "Right Windows" -msgstr "右方視窗" +msgstr "右 Windows 鍵" #: src/client/keycode.cpp msgid "Scroll Lock" -msgstr "Scroll Lock" +msgstr "捲動鎖定鍵" #: src/client/keycode.cpp msgid "Select" @@ -1549,11 +1486,11 @@ msgstr "睡眠" #: src/client/keycode.cpp msgid "Snapshot" -msgstr "螢幕截圖" +msgstr "快照" #: src/client/keycode.cpp msgid "Space" -msgstr "Space" +msgstr "空白鍵" #: src/client/keycode.cpp msgid "Tab" @@ -1573,7 +1510,7 @@ msgstr "X 按鈕 2" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Zoom" -msgstr "縮放" +msgstr "遠近調整" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" @@ -1581,7 +1518,7 @@ msgstr "密碼不符合!" #: src/gui/guiConfirmRegistration.cpp msgid "Register and Join" -msgstr "" +msgstr "註冊並加入" #: src/gui/guiConfirmRegistration.cpp #, c-format @@ -1592,33 +1529,33 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" +"您第一次使用「%s」名稱加入這個伺服器。\n" +"如您繼續,即會在這台伺服器使用你的憑證建立新帳戶。\n" +"請重新輸入您的密碼,後按下「註冊並加入」確認帳戶建立,或按「取消」中止。" #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" -msgstr "開始" +msgstr "繼續" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "\"Special\" = climb down" -msgstr "「使用」=向下攀爬" +msgstr "\"Special\" = 向下攀爬" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Autoforward" -msgstr "前進" +msgstr "自動前進" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" -msgstr "" +msgstr "自動跳躍" #: src/gui/guiKeyChangeMenu.cpp msgid "Backward" msgstr "後退" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Change camera" -msgstr "變更按鍵" +msgstr "變更相機" #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" @@ -1633,9 +1570,8 @@ msgid "Console" msgstr "終端機" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Dec. range" -msgstr "視野" +msgstr "降低視野" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. volume" @@ -1654,9 +1590,8 @@ msgid "Forward" msgstr "前進" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Inc. range" -msgstr "視野" +msgstr "提高視野" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. volume" @@ -1672,7 +1607,7 @@ msgstr "跳躍" #: src/gui/guiKeyChangeMenu.cpp msgid "Key already in use" -msgstr "此按鍵已被使用" +msgstr "已使用此按鍵" #: src/gui/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" @@ -1688,7 +1623,7 @@ msgstr "靜音" #: src/gui/guiKeyChangeMenu.cpp msgid "Next item" -msgstr "下一個項目" +msgstr "下一個物品" #: src/gui/guiKeyChangeMenu.cpp msgid "Prev. item" @@ -1700,7 +1635,7 @@ msgstr "選擇範圍" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Screenshot" -msgstr "螢幕截圖" +msgstr "螢幕擷取" #: src/gui/guiKeyChangeMenu.cpp msgid "Sneak" @@ -1708,44 +1643,39 @@ msgstr "潛行" #: src/gui/guiKeyChangeMenu.cpp msgid "Special" -msgstr "" +msgstr "特殊" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle HUD" -msgstr "切換飛行" +msgstr "切換 HUD" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle chat log" -msgstr "切換快速" +msgstr "切換聊天記錄" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fast" -msgstr "切換快速" +msgstr "切換快速模式" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "切換飛行" +msgstr "切換飛行模式" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle fog" -msgstr "切換飛行" +msgstr "切換霧氣" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle minimap" -msgstr "切換無省略" +msgstr "切換迷你地圖" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "切換無省略" +msgstr "切換穿牆模式" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle pitchmove" -msgstr "切換快速" +msgstr "切換 Pitch 移動模式" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" @@ -1772,9 +1702,8 @@ msgid "Exit" msgstr "離開" #: src/gui/guiVolumeChange.cpp -#, fuzzy msgid "Muted" -msgstr "靜音" +msgstr "已靜音" #: src/gui/guiVolumeChange.cpp msgid "Sound Volume: " @@ -1793,13 +1722,16 @@ msgid "" "(Android) Fixes the position of virtual joystick.\n" "If disabled, virtual joystick will center to first-touch's position." msgstr "" +"(Android) 修正虛擬搖桿的位置。\n" +"如停用,虛擬搖桿將會置中於第一個觸碰的位置。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "(Android) Use virtual joystick to trigger \"aux\" button.\n" "If enabled, virtual joystick will also tap \"aux\" button when out of main " "circle." -msgstr "" +msgstr "(Android) 使用虛擬搖桿觸發 \"aux\" 按鍵。\n" #: src/settings_translation_file.cpp #, fuzzy @@ -1839,31 +1771,33 @@ msgstr "" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of ridged mountains." -msgstr "" +msgstr "控制山脊之形狀或大小的 2D 雜訊值。" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." -msgstr "" +msgstr "控制波狀丘陵地之形狀或大小的 2D 雜訊值。" #: src/settings_translation_file.cpp +#, fuzzy msgid "2D noise that controls the shape/size of step mountains." -msgstr "" +msgstr "控制 Step mountains 之形狀或大小的 2D 雜訊值。" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." -msgstr "" +msgstr "控制山脊範圍之大小或產狀的 2D 雜訊值。" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "" +msgstr "控制波狀丘陵地之大小或產狀的 2D 雜訊值。" #: src/settings_translation_file.cpp +#, fuzzy msgid "2D noise that controls the size/occurrence of step mountain ranges." -msgstr "" +msgstr "控制 Step mountains 範圍之形狀或大小的 2D 雜訊值。" #: src/settings_translation_file.cpp msgid "2D noise that locates the river valleys and channels." -msgstr "" +msgstr "定位河谷及河道的 2D 雜訊值。" #: src/settings_translation_file.cpp msgid "3D clouds" @@ -1875,35 +1809,33 @@ msgstr "3D 模式" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." -msgstr "產生大型洞穴時用的雜訊值。" +msgstr "定義大型洞穴時用的雜訊值。" #: src/settings_translation_file.cpp msgid "" "3D noise defining mountain structure and height.\n" "Also defines structure of floatland mountain terrain." msgstr "" -"產生高山結構與高度時用的雜訊值。\n" -"同時用來產生空島山地形結構。" +"定義高山結構與高度所用的 3D 雜訊值。\n" +"同時用來定義空島山地形結構。" #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." -msgstr "產生河流峽谷時用的雜訊值。" +msgstr "定義河流峽谷結構所用的 3D 雜訊值。" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D noise defining terrain." -msgstr "產生大型洞穴時用的雜訊值。" +msgstr "定義地形所用的 3D 雜訊值。" #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." -msgstr "" +msgstr "懸空、懸崖等山丘的 3D 雜訊值。通常是小變異。" #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "" +msgstr "決定每個地圖區塊中地城數量的 3D 雜訊值。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" @@ -1918,12 +1850,14 @@ msgid "" msgstr "" "3D 支援。\n" "目前已支援:\n" -"- 無:無 3D 輸出。\n" -"- 浮雕:青色/品紅色彩色 3D。\n" -"- 交錯的:基於偏振螢幕的奇/偶行支援。\n" -"- 頂底:將螢幕分離為頂部/底部。\n" -"- 一邊一個:將螢幕分離為一邊一個。\n" -"- 翻頁:基於四重緩衝的 3D。" +"- none:無 3D 輸出。\n" +"- anaglyph:青色/品紅色彩色 3D。\n" +"- interlaced:基於偏振螢幕的奇/偶行支援。\n" +"- topbottom:將螢幕分成頂/底部。\n" +"- sidebyside:將螢幕分離為一邊一個。\n" +"- crossview: 鬥雞眼式 3D\n" +"- pageflip:基於四重緩衝的 3D。\n" +"註:interlaced 模式需要啟用著色器。" #: src/settings_translation_file.cpp msgid "" @@ -1935,16 +1869,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "當伺服器當機時要顯示在所有客戶端上的訊息。" +msgstr "當伺服器當機時要顯示在所有用戶端上的訊息。" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." -msgstr "當伺服器關機時要顯示在所有客戶端上的訊息。" +msgstr "當伺服器關機時要顯示在所有用戶端上的訊息。" #: src/settings_translation_file.cpp -#, fuzzy msgid "ABM interval" -msgstr "地圖儲存間隔" +msgstr "ABM 間隔" #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" @@ -1952,18 +1885,17 @@ msgstr "發生佇列的絕對限制" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "在空氣中的加速" +msgstr "空氣中的加速度" #: src/settings_translation_file.cpp msgid "Acceleration of gravity, in nodes per second per second." -msgstr "" +msgstr "每秒中每秒節點的重力加速度。" #: src/settings_translation_file.cpp msgid "Active Block Modifiers" msgstr "活動區塊調整器" #: src/settings_translation_file.cpp -#, fuzzy msgid "Active block management interval" msgstr "活動區塊管理間隔" @@ -1973,7 +1905,7 @@ msgstr "活動區塊範圍" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "活動目標發送範圍" +msgstr "活動目標傳送範圍" #: src/settings_translation_file.cpp msgid "" @@ -2009,13 +1941,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Altitude chill" -msgstr "高度寒冷" +msgstr "寒冷海拔" #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "總是啟用飛行與快速" +msgstr "總是啟用飛行與快速模式" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" @@ -2023,12 +1954,11 @@ msgstr "環境遮蔽光" #: src/settings_translation_file.cpp msgid "Amount of messages a player may send per 10 seconds." -msgstr "" +msgstr "玩家每 10 秒能傳送的訊息量" #: src/settings_translation_file.cpp -#, fuzzy msgid "Amplifies the valleys." -msgstr "放大山谷" +msgstr "放大山谷。" #: src/settings_translation_file.cpp msgid "Anisotropic filtering" @@ -2039,31 +1969,32 @@ msgid "Announce server" msgstr "公佈伺服器" #: src/settings_translation_file.cpp -#, fuzzy msgid "Announce to this serverlist." -msgstr "公佈伺服器" +msgstr "公佈至此伺服器清單。" #: src/settings_translation_file.cpp msgid "Append item name" -msgstr "" +msgstr "將物品名稱加至末尾" #: src/settings_translation_file.cpp msgid "Append item name to tooltip." -msgstr "" +msgstr "將物品名稱加至工具提示的末尾。" #: src/settings_translation_file.cpp msgid "Apple trees noise" -msgstr "蘋果樹噪音" +msgstr "蘋果樹雜訊" #: src/settings_translation_file.cpp +#, fuzzy msgid "Arm inertia" -msgstr "" +msgstr "慣性手臂" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Arm inertia, gives a more realistic movement of\n" "the arm when the camera moves." -msgstr "" +msgstr "慣性手臂,當相機移動時提供更加真實的手臂運動。" #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" @@ -2084,7 +2015,7 @@ msgid "" "optimization.\n" "Stated in mapblocks (16 nodes)." msgstr "" -"在這樣的距離下,伺服器將積極最佳化那些要傳送給客戶端的方塊。\n" +"在這樣的距離下,伺服器將積極最佳化那些要傳送給用戶端的方塊。\n" "較小的值可能會提升效能,但代價是一些可見的彩現問題。\n" "(有一些在水中與洞穴中的方塊將不會被彩現,以及有時在陸地上)\n" "將此值設定為大於 max_block_send_distance 將會停用這個最佳化。\n" @@ -2137,11 +2068,11 @@ msgstr "基礎特權" #: src/settings_translation_file.cpp msgid "Beach noise" -msgstr "海灘噪音" +msgstr "海灘雜訊" #: src/settings_translation_file.cpp msgid "Beach noise threshold" -msgstr "海灘噪音閾值" +msgstr "海灘雜訊閾值" #: src/settings_translation_file.cpp msgid "Bilinear filtering" @@ -2153,11 +2084,11 @@ msgstr "綁定地址" #: src/settings_translation_file.cpp msgid "Biome API temperature and humidity noise parameters" -msgstr "Biome API 溫度與濕度 噪音 參數" +msgstr "Biome API 溫度與濕度 雜訊 參數" #: src/settings_translation_file.cpp msgid "Biome noise" -msgstr "生物噪音" +msgstr "生物雜訊" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." @@ -2222,15 +2153,15 @@ msgstr "攝影機切換更新按鍵" #: src/settings_translation_file.cpp msgid "Cave noise" -msgstr "洞穴噪音" +msgstr "洞穴雜訊" #: src/settings_translation_file.cpp msgid "Cave noise #1" -msgstr "洞穴噪音 #1" +msgstr "洞穴雜訊 #1" #: src/settings_translation_file.cpp msgid "Cave noise #2" -msgstr "洞穴噪音 #2" +msgstr "洞穴雜訊 #2" #: src/settings_translation_file.cpp msgid "Cave width" @@ -2238,11 +2169,11 @@ msgstr "洞穴寬度" #: src/settings_translation_file.cpp msgid "Cave1 noise" -msgstr "洞穴1噪音" +msgstr "洞穴1 雜訊" #: src/settings_translation_file.cpp msgid "Cave2 noise" -msgstr "洞穴2噪音" +msgstr "洞穴2 雜訊" #: src/settings_translation_file.cpp msgid "Cavern limit" @@ -2250,7 +2181,7 @@ msgstr "洞穴極限" #: src/settings_translation_file.cpp msgid "Cavern noise" -msgstr "洞穴噪音" +msgstr "洞穴雜訊" #: src/settings_translation_file.cpp msgid "Cavern taper" @@ -2286,23 +2217,20 @@ msgid "Chat key" msgstr "聊天按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message count limit" -msgstr "連線時的狀態訊息" +msgstr "聊天訊息數上限" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message format" -msgstr "連線時的狀態訊息" +msgstr "聊天訊息格式" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message kick threshold" -msgstr "沙漠噪音閾值" +msgstr "聊天訊息踢出閾值" #: src/settings_translation_file.cpp msgid "Chat message max length" -msgstr "" +msgstr "聊天訊息長度上限" #: src/settings_translation_file.cpp msgid "Chat toggle key" @@ -2330,20 +2258,20 @@ msgstr "清除透明材質" #: src/settings_translation_file.cpp msgid "Client" -msgstr "客戶端" +msgstr "用戶端" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "客戶端與伺服器" +msgstr "用戶端與伺服器" #: src/settings_translation_file.cpp msgid "Client modding" -msgstr "客戶端修改" +msgstr "用戶端修改" #: src/settings_translation_file.cpp #, fuzzy msgid "Client side modding restrictions" -msgstr "客戶端修改" +msgstr "用戶端修改" #: src/settings_translation_file.cpp msgid "Client side node lookup range restriction" @@ -2363,7 +2291,7 @@ msgstr "雲朵" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "雲朵是客戶端的特效。" +msgstr "雲朵是用戶端的特效。" #: src/settings_translation_file.cpp msgid "Clouds in menu" @@ -2519,7 +2447,7 @@ msgstr "除錯資訊切換按鍵" #: src/settings_translation_file.cpp #, fuzzy msgid "Debug log file size threshold" -msgstr "沙漠噪音閾值" +msgstr "沙漠雜訊閾值" #: src/settings_translation_file.cpp msgid "Debug log level" @@ -2644,12 +2572,12 @@ msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, thus reducing jitter on slower clients." msgstr "" -"在客戶端上的網格間更新延遲,以毫秒為單位。增加它就會減慢\n" -"網格更新速率,從而減少在較慢客戶端上的抖動。" +"在用戶端上的網格間更新延遲,以毫秒為單位。增加它就會減慢\n" +"網格更新速率,從而減少在較慢用戶端上的抖動。" #: src/settings_translation_file.cpp msgid "Delay in sending blocks after building" -msgstr "建造后發送區塊前延遲的時間" +msgstr "建造后傳送區塊前延遲的時間" #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." @@ -2676,7 +2604,7 @@ msgstr "伺服器的描述,會在玩家加入時顯示,也會顯示在伺服 #: src/settings_translation_file.cpp msgid "Desert noise threshold" -msgstr "沙漠噪音閾值" +msgstr "沙漠雜訊閾值" #: src/settings_translation_file.cpp #, fuzzy @@ -2733,9 +2661,8 @@ msgid "Dungeon minimum Y" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dungeon noise" -msgstr "山噪音" +msgstr "地城雜訊" #: src/settings_translation_file.cpp msgid "" @@ -2748,7 +2675,7 @@ msgid "" "Enable Lua modding support on client.\n" "This support is experimental and API can change." msgstr "" -"在客戶端上啟用 Lua 修改支援。\n" +"在用戶端上啟用 Lua 修改支援。\n" "這個支援是實驗性的,且 API 可能會變動。" #: src/settings_translation_file.cpp @@ -2807,8 +2734,8 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" -"啟用以讓舊的客戶端無法連線。\n" -"較舊的客戶端在這個意義上相容,它們不會在連線至\n" +"啟用以讓舊的用戶端無法連線。\n" +"較舊的用戶端在這個意義上相容,它們不會在連線至\n" "新伺服器時當掉,但它們可能會不支援一些您預期會有的新功能。" #: src/settings_translation_file.cpp @@ -2844,7 +2771,7 @@ msgid "" "Needs enable_ipv6 to be enabled." msgstr "" "啟用/停用執行 IPv6 伺服器。IPv6 伺服器可能會限制只有\n" -"IPv6 客戶端才能連線,取決於系統設定。\n" +"IPv6 用戶端才能連線,取決於系統設定。\n" "當 bind_address 被設定時將會被忽略。" #: src/settings_translation_file.cpp @@ -2928,7 +2855,7 @@ msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Factor noise" -msgstr "噪音係數" +msgstr "雜訊係數" #: src/settings_translation_file.cpp msgid "Fall bobbing factor" @@ -2990,8 +2917,7 @@ msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the\n" "Multiplayer Tab." -msgstr "" -"在 客戶端/伺服器清單/ 中的檔案包含了顯示在多人遊戲分頁中您最愛的伺服器。" +msgstr "在 用戶端/伺服器清單/ 中的檔案包含了顯示在多人遊戲分頁中您最愛的伺服器。" #: src/settings_translation_file.cpp #, fuzzy @@ -3000,7 +2926,7 @@ msgstr "填充深度" #: src/settings_translation_file.cpp msgid "Filler depth noise" -msgstr "填充深度噪音" +msgstr "填充深度雜訊" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" @@ -3024,14 +2950,12 @@ msgid "Filtering" msgstr "過濾器" #: src/settings_translation_file.cpp -#, fuzzy msgid "First of 4 2D noises that together define hill/mountain range height." -msgstr "二之一 一同定義隧道的 3D 噪音。" +msgstr "四之一 一同定義山丘範圍高度的 2D 雜訊。" #: src/settings_translation_file.cpp -#, fuzzy msgid "First of two 3D noises that together define tunnels." -msgstr "二之一 一同定義隧道的 3D 噪音。" +msgstr "二之一 一同定義隧道的 3D 雜訊。" #: src/settings_translation_file.cpp msgid "Fixed map seed" @@ -3054,13 +2978,12 @@ msgid "Fog" msgstr "霧" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fog start" -msgstr "霧開始" +msgstr "霧氣開始" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "霧切換鍵" +msgstr "霧氣切換鍵" #: src/settings_translation_file.cpp msgid "Font bold by default" @@ -3100,6 +3023,8 @@ msgid "" "placeholders:\n" "@name, @message, @timestamp (optional)" msgstr "" +"玩家聊天訊息的格式,以下字串皆是有效的佔位符號:\n" +"@name、@message、@timestamp(可選)" #: src/settings_translation_file.cpp msgid "Format of screenshots." @@ -3146,9 +3071,8 @@ msgid "Forward key" msgstr "前進鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fourth of 4 2D noises that together define hill/mountain range height." -msgstr "二之一 一同定義隧道的 3D 噪音。" +msgstr "四之四 一同定義山丘範圍高度的 2D 雜訊。" #: src/settings_translation_file.cpp msgid "Fractal type" @@ -3156,7 +3080,7 @@ msgstr "碎形類型" #: src/settings_translation_file.cpp msgid "Fraction of the visible distance at which fog starts to be rendered" -msgstr "霧開始呈現的可見距離分數" +msgstr "開始呈現霧氣的可見距離分數" #: src/settings_translation_file.cpp #, fuzzy @@ -3167,12 +3091,12 @@ msgstr "Freetype 字型" msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." -msgstr "要在客戶端上從多遠的區塊開始生成,以地圖區塊計算(16 個節點)。" +msgstr "要在用戶端上從多遠的區塊開始生成,以地圖區塊計算(16 個節點)。" #: src/settings_translation_file.cpp msgid "" "From how far blocks are sent to clients, stated in mapblocks (16 nodes)." -msgstr "要把多遠的區塊送到客戶端,以地圖區塊計算(16 個節點)。" +msgstr "要把多遠的區塊送到用戶端,以地圖區塊計算(16 個節點)。" #: src/settings_translation_file.cpp msgid "" @@ -3253,9 +3177,8 @@ msgid "Ground level" msgstr "地面高度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Ground noise" -msgstr "泥土噪音" +msgstr "地面雜訊" #: src/settings_translation_file.cpp #, fuzzy @@ -3298,11 +3221,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Heat blend noise" -msgstr "熱 混合 噪音" +msgstr "熱 混合 雜訊" #: src/settings_translation_file.cpp msgid "Heat noise" -msgstr "熱 噪音" +msgstr "熱 雜訊" #: src/settings_translation_file.cpp msgid "Height component of the initial window size." @@ -3310,11 +3233,11 @@ msgstr "初始視窗大小的高度組件。" #: src/settings_translation_file.cpp msgid "Height noise" -msgstr "高度噪音" +msgstr "高度雜訊" #: src/settings_translation_file.cpp msgid "Height select noise" -msgstr "高度 選擇 噪音" +msgstr "高度 選擇 雜訊" #: src/settings_translation_file.cpp msgid "High-precision FPU" @@ -3329,24 +3252,20 @@ msgid "Hill threshold" msgstr "山丘閾值" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hilliness1 noise" -msgstr "坡度噪音" +msgstr "多丘陵1 雜訊" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hilliness2 noise" -msgstr "坡度噪音" +msgstr "多丘陵2 雜訊" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hilliness3 noise" -msgstr "坡度噪音" +msgstr "多丘陵3 雜訊" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hilliness4 noise" -msgstr "坡度噪音" +msgstr "多丘陵4 雜訊" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." @@ -3372,171 +3291,139 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Hotbar next key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列下一個鍵" #: src/settings_translation_file.cpp msgid "Hotbar previous key" -msgstr "Hotbar 上一個鍵" +msgstr "快捷列上一個鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 1 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 1 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 10 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 10 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 11 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 11 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 12 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 12 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 13 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 13 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 14 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 14 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 15 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 15 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 16 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 16 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 17 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 17 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 18 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 18 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 19 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 19 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 2 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 2 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 20 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 20 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 21 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 21 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 22 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 22 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 23 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 23 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 24 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 24 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 25 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 25 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 26 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 26 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 27 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 27 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 28 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 28 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 29 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 29 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 3 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 3 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 30 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 30 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 31 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 31 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 32 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 32 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 4 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 4 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 5 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 5 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 6 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 6 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 7 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 7 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 8 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 8 個槽的按鍵" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 9 key" -msgstr "Hotbar 下一個鍵" +msgstr "快捷列第 9 個槽的按鍵" #: src/settings_translation_file.cpp #, fuzzy @@ -3565,11 +3452,11 @@ msgstr "河流多寬" #: src/settings_translation_file.cpp msgid "Humidity blend noise" -msgstr "溼度 混合 噪音" +msgstr "溼度 混合 雜訊" #: src/settings_translation_file.cpp msgid "Humidity noise" -msgstr "溼度 噪音" +msgstr "溼度 雜訊" #: src/settings_translation_file.cpp msgid "Humidity variation for biomes." @@ -3608,9 +3495,9 @@ msgid "" "so that the utility of noclip mode is reduced." msgstr "" "若啟用,伺服器將會執行基於玩家眼睛位置的\n" -"地圖區塊阻擋剔除。這樣可以減少向客戶端發\n" -"送 50-80% 的區塊數。客戶端將不會收到最\n" -"不可能看見的內容,而使 noclip 模式的效用降低。" +"地圖區塊阻擋剔除。這樣可以減少向用戶端發\n" +"送 50-80% 的區塊數。用戶端將不會收到最\n" +"不可能看見的內容,而使穿牆模式的效用降低。" #: src/settings_translation_file.cpp msgid "" @@ -3619,7 +3506,7 @@ msgid "" "This requires the \"noclip\" privilege on the server." msgstr "" "若與飛行模式一同啟用,玩家就可以飛過固體節點。\n" -"這需要在伺服器上的「noclip」特權。" +"這需要在伺服器上的「noclip」權限。" #: src/settings_translation_file.cpp #, fuzzy @@ -3759,7 +3646,7 @@ msgstr "儲存世界中的重要變更的間隔,以秒計。" #: src/settings_translation_file.cpp msgid "Interval of sending time of day to clients." -msgstr "發送當日時間至客戶端的間隔。" +msgstr "傳送當日時間至用戶端的間隔。" #: src/settings_translation_file.cpp msgid "Inventory items animations" @@ -4056,290 +3943,264 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 11th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 11 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 12th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 12 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 13th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 13 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 14th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 14 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 15th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 15 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 16th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 16 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 17th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 17 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 18th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 18 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 19th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 19 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 20th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 20 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 21st hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 21 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 22nd hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 22 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 23rd hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 23 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 24th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 24 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 25th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 25 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 26th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 26 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 27th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 27 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 28th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 28 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 29th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 29 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 30th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 30 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 31st hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 31 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 32nd hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 32 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the eighth hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 8 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the fifth hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 5 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the first hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 1 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the fourth hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取上一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 4 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4347,20 +4208,19 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"在快捷列選取下一個物品的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the ninth hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 9 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4368,64 +4228,59 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取上一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"在快捷列選取上一個物品的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the second hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 2 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the seventh hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 7 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the sixth hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 6 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the tenth hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 10 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the third hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"在 hotbar 選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"選取快捷列中第 3 個槽的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4517,20 +4372,19 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"切換 noclip 模式的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"切換穿牆模式的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for toggling pitch move mode.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"切換 noclip 模式的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"切換 Pitch Move 模式的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4543,15 +4397,14 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for toggling the display of chat.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"切換顯示聊天的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"用來切換聊天顯示的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4564,15 +4417,14 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for toggling the display of fog.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"切換顯示霧的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"切換顯示霧氣的按鍵。\n" +"請見 http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -5118,7 +4970,7 @@ msgid "" "Maximum number of mapblocks for client to be kept in memory.\n" "Set to -1 for unlimited amount." msgstr "" -"要保留在記憶體中的客戶端地圖區塊最大值。\n" +"要保留在記憶體中的用戶端地圖區塊最大值。\n" "設定為 -1 則不限制數量。" #: src/settings_translation_file.cpp @@ -5129,7 +4981,7 @@ msgid "" msgstr "" "每個傳送步驟要傳送的最大封包數,若您的網路連線緩慢\n" "請試著降低它,但請不要降低到低於兩倍的目標\n" -"客戶端數。" +"用戶端數。" #: src/settings_translation_file.cpp #, fuzzy @@ -5137,9 +4989,8 @@ msgid "Maximum number of players that can be connected simultaneously." msgstr "最大可同時連線的玩家數。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum number of recent chat messages to show" -msgstr "強制載入地圖區塊的最大數量。" +msgstr "最多顯示幾個最近聊天訊息" #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." @@ -5159,7 +5010,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum simultaneous block sends per client" -msgstr "每個客戶端最大同時傳送區塊數" +msgstr "每個用戶端最大同時傳送區塊數" #: src/settings_translation_file.cpp msgid "Maximum size of the out chat queue" @@ -5246,21 +5097,20 @@ msgstr "等寬字型大小" #: src/settings_translation_file.cpp msgid "Mountain height noise" -msgstr "山高度 噪音" +msgstr "山高度 雜訊" #: src/settings_translation_file.cpp msgid "Mountain noise" -msgstr "山噪音" +msgstr "山雜訊" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mountain variation noise" -msgstr "山高度 噪音" +msgstr "山變異 雜訊" #: src/settings_translation_file.cpp #, fuzzy msgid "Mountain zero level" -msgstr "山噪音" +msgstr "山雜訊" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" @@ -5272,7 +5122,7 @@ msgstr "滑鼠靈敏度倍數。" #: src/settings_translation_file.cpp msgid "Mud noise" -msgstr "泥土噪音" +msgstr "泥土雜訊" #: src/settings_translation_file.cpp msgid "" @@ -5305,7 +5155,7 @@ msgid "" "When starting from the main menu, this is overridden." msgstr "" "玩家名稱。\n" -"當執行伺服器時,以此名稱連線的客戶端即為管理員。\n" +"當執行伺服器時,以此名稱連線的用戶端即為管理員。\n" "當從主選單啟動時,這個將會被覆寫。" #: src/settings_translation_file.cpp @@ -5335,11 +5185,11 @@ msgstr "新使用這需要輸入這個密碼。" #: src/settings_translation_file.cpp msgid "Noclip" -msgstr "Noclip" +msgstr "穿牆" #: src/settings_translation_file.cpp msgid "Noclip key" -msgstr "Noclip 按鍵" +msgstr "穿牆按鍵" #: src/settings_translation_file.cpp msgid "Node highlighting" @@ -5351,7 +5201,7 @@ msgstr "NodeTimer 間隔" #: src/settings_translation_file.cpp msgid "Noises" -msgstr "噪音" +msgstr "雜訊" #: src/settings_translation_file.cpp msgid "Normalmaps sampling" @@ -5600,7 +5450,7 @@ msgstr "範圍選擇鍵" #: src/settings_translation_file.cpp msgid "Recent Chat Messages" -msgstr "" +msgstr "最近聊天訊息" #: src/settings_translation_file.cpp #, fuzzy @@ -5620,6 +5470,8 @@ msgid "" "Remove color codes from incoming chat messages\n" "Use this to stop players from being able to use color in their messages" msgstr "" +"移除傳入聊天訊息的色彩碼\n" +"使用這個能防止玩家在訊息中使用色彩" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." @@ -5644,22 +5496,20 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Ridge mountain spread noise" -msgstr "水下山脊噪音" +msgstr "山脊展開雜訊" #: src/settings_translation_file.cpp msgid "Ridge noise" -msgstr "山脊噪音" +msgstr "山脊雜訊" #: src/settings_translation_file.cpp msgid "Ridge underwater noise" -msgstr "水下山脊噪音" +msgstr "水下山脊雜訊" #: src/settings_translation_file.cpp -#, fuzzy msgid "Ridged mountain size noise" -msgstr "水下山脊噪音" +msgstr "山脊大小雜訊" #: src/settings_translation_file.cpp msgid "Right key" @@ -5685,9 +5535,8 @@ msgid "River depth" msgstr "河流深度" #: src/settings_translation_file.cpp -#, fuzzy msgid "River noise" -msgstr "河流噪音" +msgstr "河流雜訊" #: src/settings_translation_file.cpp #, fuzzy @@ -5705,11 +5554,11 @@ msgstr "返回記錄" #: src/settings_translation_file.cpp msgid "Rolling hill size noise" -msgstr "" +msgstr "波狀丘陵地大小雜訊" #: src/settings_translation_file.cpp msgid "Rolling hills spread noise" -msgstr "" +msgstr "波狀丘陵地展開雜訊" #: src/settings_translation_file.cpp msgid "Round minimap" @@ -5725,7 +5574,7 @@ msgstr "當 np_beach 超過此值時,會生成沙灘。" #: src/settings_translation_file.cpp msgid "Save the map received by the client on disk." -msgstr "由客戶端儲存接收到的地圖到磁碟上。" +msgstr "由用戶端儲存接收到的地圖到磁碟上。" #: src/settings_translation_file.cpp msgid "Save window size automatically when modified." @@ -5782,17 +5631,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Seabed noise" -msgstr "海底噪音" +msgstr "海底雜訊" #: src/settings_translation_file.cpp -#, fuzzy msgid "Second of 4 2D noises that together define hill/mountain range height." -msgstr "二之二 一同定義隧道的 3D 噪音。" +msgstr "四之二 一同定義山丘範圍高度的 2D 雜訊。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Second of two 3D noises that together define tunnels." -msgstr "二之二 一同定義隧道的 3D 噪音。" +msgstr "二之二 一同定義隧道的 3D 雜訊。" #: src/settings_translation_file.cpp msgid "Security" @@ -5904,7 +5751,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Set the maximum character length of a chat message sent by clients." -msgstr "" +msgstr "設定用戶端傳送之聊天訊息的最大字元長度。" #: src/settings_translation_file.cpp #, fuzzy @@ -6077,7 +5924,7 @@ msgid "" "(obviously, remote_media should end with a slash).\n" "Files that are not present will be fetched the usual way." msgstr "" -"客戶端從指定的 URL 而不是使用 UDP 抓取媒體。\n" +"用戶端從指定的 URL 而不是使用 UDP 抓取媒體。\n" "$filename 應該可以透過 cURL 從 $remote_media$filename 存取。\n" "(當然,remote_media 部份應以斜線結束)。\n" "沒有在其中的檔案將會以平常的方式抓取。" @@ -6095,17 +5942,17 @@ msgstr "靜態重生點" #: src/settings_translation_file.cpp msgid "Steepness noise" -msgstr "坡度噪音" +msgstr "坡度雜訊" #: src/settings_translation_file.cpp #, fuzzy msgid "Step mountain size noise" -msgstr "山噪音" +msgstr "山雜訊" #: src/settings_translation_file.cpp #, fuzzy msgid "Step mountain spread noise" -msgstr "山噪音" +msgstr "山雜訊" #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." @@ -6139,9 +5986,8 @@ msgid "Temperature variation for biomes." msgstr "生態的溫度變化。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Terrain alternative noise" -msgstr "地形高度噪音" +msgstr "地形替代雜訊" #: src/settings_translation_file.cpp msgid "Terrain base noise" @@ -6154,11 +6000,11 @@ msgstr "地形高度" #: src/settings_translation_file.cpp msgid "Terrain higher noise" -msgstr "地形高處噪音" +msgstr "地形高處雜訊" #: src/settings_translation_file.cpp msgid "Terrain noise" -msgstr "地形噪音" +msgstr "地形雜訊" #: src/settings_translation_file.cpp msgid "" @@ -6166,7 +6012,7 @@ msgid "" "Controls proportion of world area covered by hills.\n" "Adjust towards 0.0 for a larger proportion." msgstr "" -"山丘的地形噪音閾值。\n" +"山丘的地形雜訊閾值。\n" "控制山丘覆蓋世界的比例。\n" "往 0.0 調整一取得較大的比例。" @@ -6176,13 +6022,13 @@ msgid "" "Controls proportion of world area covered by lakes.\n" "Adjust towards 0.0 for a larger proportion." msgstr "" -"湖泊的地形噪音閾值。\n" +"湖泊的地形雜訊閾值。\n" "控制湖泊覆蓋世界的比例。\n" "往 0.0 調整一取得較大的比例。" #: src/settings_translation_file.cpp msgid "Terrain persistence noise" -msgstr "地形持續性噪音" +msgstr "地形持續性雜訊" #: src/settings_translation_file.cpp msgid "Texture path" @@ -6328,9 +6174,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Third of 4 2D noises that together define hill/mountain range height." -msgstr "二之一 一同定義隧道的 3D 噪音。" +msgstr "四之三 一同定義山丘範圍高度的 2D 雜訊。" #: src/settings_translation_file.cpp msgid "" @@ -6354,7 +6199,7 @@ msgstr "時間速度" #: src/settings_translation_file.cpp msgid "Timeout for client to remove unused map data from memory." -msgstr "客戶端從記憶體移除未使用的地圖資料的逾時時間。" +msgstr "用戶端從記憶體移除未使用的地圖資料的逾時時間。" #: src/settings_translation_file.cpp msgid "" @@ -6377,11 +6222,11 @@ msgstr "工具提示延遲" #: src/settings_translation_file.cpp #, fuzzy msgid "Touch screen threshold" -msgstr "海灘噪音閾值" +msgstr "海灘雜訊閾值" #: src/settings_translation_file.cpp msgid "Trees noise" -msgstr "樹林噪音" +msgstr "樹林雜訊" #: src/settings_translation_file.cpp msgid "Trilinear filtering" @@ -6509,7 +6354,7 @@ msgid "" "When noise is < -0.55 terrain is near-flat." msgstr "" "垂直地形大小的變化。\n" -"當噪音 < -0.55 則地形近乎平坦。" +"當雜訊 < -0.55 則地形近乎平坦。" #: src/settings_translation_file.cpp msgid "Varies depth of biome surface nodes." @@ -6521,7 +6366,7 @@ msgid "" "Defines the 'persistence' value for terrain_base and terrain_alt noises." msgstr "" "地形粗糙度變化。\n" -"為 terrain_base 與 terrain_alt 噪音定義 'persistence' 值。" +"為 terrain_base 與 terrain_alt 雜訊定義 'persistence' 值。" #: src/settings_translation_file.cpp msgid "Varies steepness of cliffs." @@ -6706,7 +6551,7 @@ msgid "" "Whether players are shown to clients without any range limit.\n" "Deprecated, use the setting player_transfer_distance instead." msgstr "" -"玩家是否應該在客戶端無距離限制地顯示。\n" +"玩家是否應該在用戶端無距離限制地顯示。\n" "已棄用,請用 setting player_transfer_distance 代替。" #: src/settings_translation_file.cpp @@ -6718,7 +6563,7 @@ msgid "" "Whether to ask clients to reconnect after a (Lua) crash.\n" "Set this to true if your server is set up to restart automatically." msgstr "" -"是否要在 (Lua) 當掉後詢問客戶端是否重新連線。\n" +"是否要在 (Lua) 當掉後詢問用戶端是否重新連線。\n" "如果您的伺服器被設定為會自動重新開啟,將這個設定為真。" #: src/settings_translation_file.cpp @@ -6736,7 +6581,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." -msgstr "是否顯示客戶端除錯資訊(與按下 F5 有同樣的效果)。" +msgstr "是否顯示用戶端除錯資訊(與按下 F5 有同樣的效果)。" #: src/settings_translation_file.cpp msgid "Width component of the initial window size." From e94ba07a69fc81adb815824253e4c2dfa36512f3 Mon Sep 17 00:00:00 2001 From: universales Date: Wed, 29 Jan 2020 18:43:17 +0000 Subject: [PATCH 008/424] Translated using Weblate (Spanish) Currently translated at 67.7% (872 of 1288 strings) --- po/es/minetest.po | 460 +++++++++++++++++++++++++--------------------- 1 file changed, 250 insertions(+), 210 deletions(-) diff --git a/po/es/minetest.po b/po/es/minetest.po index 7f6f47996..84b4d9d3b 100644 --- a/po/es/minetest.po +++ b/po/es/minetest.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Spanish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-12-30 20:21+0000\n" +"PO-Revision-Date: 2020-01-31 02:50+0000\n" "Last-Translator: universales \n" "Language-Team: Spanish \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10\n" +"X-Generator: Weblate 3.11-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -313,7 +313,7 @@ msgstr "< Volver a la página de Configuración" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Browse" -msgstr "Navegar" +msgstr "Explorar" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Disabled" @@ -404,26 +404,22 @@ msgid "Z spread" msgstr "Propagación Z" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "absvalue" msgstr "Valor absoluto" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "defaults" msgstr "Predeterminados" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "eased" -msgstr "Aliviado" +msgstr "Suavizado" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" msgstr "$1 (Activado)" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "$1 mods" msgstr "$1 mods" @@ -491,7 +487,7 @@ msgstr "Paquetes instalados:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "Sin depenencias." +msgstr "Sin dependencias." #: builtin/mainmenu/tab_content.lua msgid "No package description available" @@ -646,9 +642,8 @@ msgid "8x" msgstr "8x" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "All Settings" -msgstr "Ver toda la config." +msgstr "Todos los ajustes" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" @@ -910,7 +905,7 @@ msgstr "- Público: " #: src/client/game.cpp msgid "- PvP: " -msgstr "- JvJ: " +msgstr "- PvP: " #: src/client/game.cpp msgid "- Server Name: " @@ -921,7 +916,6 @@ msgid "Automatic forward disabled" msgstr "Avance automático desactivado" #: src/client/game.cpp -#, fuzzy msgid "Automatic forward enabled" msgstr "Avance automático activado" @@ -1313,27 +1307,27 @@ msgstr "Inicio" #: src/client/keycode.cpp msgid "IME Accept" -msgstr "IME Aceptar" +msgstr "Aceptar IME" #: src/client/keycode.cpp msgid "IME Convert" -msgstr "IME Convertir" +msgstr "Convertir IME" #: src/client/keycode.cpp msgid "IME Escape" -msgstr "IME Escapar" +msgstr "Escapada de IME" #: src/client/keycode.cpp msgid "IME Mode Change" -msgstr "IME Cambio de modo" +msgstr "Cambiar Modo IME" #: src/client/keycode.cpp msgid "IME Nonconvert" -msgstr "IME No convertir" +msgstr "No convertir IME" #: src/client/keycode.cpp msgid "Insert" -msgstr "Introducir" +msgstr "Insertar" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Left" @@ -1937,7 +1931,7 @@ msgstr "Aceleración en el aire" #: src/settings_translation_file.cpp msgid "Acceleration of gravity, in nodes per second per second." -msgstr "Aceleración de gravedad, en nodos por segundo por segundo." +msgstr "Aceleración de gravedad, en nodos por segundo." #: src/settings_translation_file.cpp msgid "Active Block Modifiers" @@ -1989,6 +1983,13 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Altera la curva de luz aplicándole una \"corrección gamma\".\n" +"Los valores más altos hacen que los niveles de luz medios y bajos sean más " +"brillantes.\n" +"El valor \"1.0\" deja la curva de luz inalterada.\n" +"Esto sólo tiene un efecto significativo en la luz del día y en la luz " +"artificial, \n" +"tiene muy poco efecto en la luz natural nocturna." #: src/settings_translation_file.cpp msgid "Altitude chill" @@ -2067,7 +2068,7 @@ msgstr "" "A esta distancia el servidor optimizará agresivamente qué bloques son " "enviados a\n" "los clientes.\n" -"Valores bajos potencialmente mejorarán mucho el rendimiento, a costa de \n" +"Los valores bajos mejorarán mucho el rendimiento, a costa de \n" "errores gráficos visibles (algunos bloques no serán renderizados bajo el " "agua y en cuevas,\n" "así como ocasionalmente en tierra).\n" @@ -2076,16 +2077,12 @@ msgstr "" "Fijado en bloques de mapa (16 nodos)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Automatic forward key" msgstr "Tecla de avance automático" #: src/settings_translation_file.cpp -#, fuzzy msgid "Automatically jump up single-node obstacles." -msgstr "" -"Salta obstáculos de un nodo automáticamente.\n" -"tipo: booleano" +msgstr "Saltar obstáculos de un nodo automáticamente." #: src/settings_translation_file.cpp msgid "Automatically report to the serverlist." @@ -2093,7 +2090,7 @@ msgstr "Automáticamente informar a la lista del servidor." #: src/settings_translation_file.cpp msgid "Autosave screen size" -msgstr "Autoguardar tamaño de ventana" +msgstr "Autoguardar el tamaño de la pantalla" #: src/settings_translation_file.cpp msgid "Autoscaling mode" @@ -2151,28 +2148,27 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Block send optimize distance" -msgstr "Distancia de optimización de envío de bloques" +msgstr "Optimizar la distancia del envío de bloques" #: src/settings_translation_file.cpp msgid "Bold and italic font path" -msgstr "" +msgstr "Ruta de la fuente en negrita y cursiva" #: src/settings_translation_file.cpp msgid "Bold and italic monospace font path" -msgstr "" +msgstr "Ruta de la fuente monoespacio en negrita y cursiva" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "Ruta de fuentes" +msgstr "Ruta de la fuente en negrita" #: src/settings_translation_file.cpp msgid "Bold monospace font path" -msgstr "" +msgstr "Ruta de la fuente monoespacio en negrita" #: src/settings_translation_file.cpp msgid "Build inside player" -msgstr "Construir dentro de jugador" +msgstr "Construir dentro del jugador" #: src/settings_translation_file.cpp msgid "Builtin" @@ -2183,17 +2179,17 @@ msgid "Bumpmapping" msgstr "Mapeado de relieve" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" "Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" -"Distancia del plano cercano de la cámara en nodos, entre 0 y 0.5.\n" -"La mayoría de los usuarios no necesitarán editar ésto.\n" -"Incrementarlo puede reducir los artefactos en GPUs débiles.\n" -"0.1 = Predeterminado, 0.25 = Buen valor para tabletas débiles." +"Distancia de la cámara 'cerca del plano delimitador' en nodos, entre 0 y 0,5." +"\n" +"La mayoría de los usuarios no necesitarán cambiar esto.\n" +"El aumento puede reducir los artefactos en GPU más débiles.\n" +"0.1 = Predeterminado, 0,25 = Buen valor para comprimidos más débiles." #: src/settings_translation_file.cpp msgid "Camera smoothing" @@ -2256,6 +2252,8 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Centro de rango de impulso de la curva de luz.\n" +"Cuando 0.0 es el nivel mínimo de luz, 1.0 es el nivel de luz máximo." #: src/settings_translation_file.cpp msgid "" @@ -2281,9 +2279,8 @@ msgid "Chat message count limit" msgstr "Límite de mensajes de chat" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message format" -msgstr "Longitud máx. de mensaje de chat" +msgstr "Formato del mensaje del chat" #: src/settings_translation_file.cpp msgid "Chat message kick threshold" @@ -2334,9 +2331,8 @@ msgid "Client side modding restrictions" msgstr "Restricciones para modear del lado del cliente" #: src/settings_translation_file.cpp -#, fuzzy msgid "Client side node lookup range restriction" -msgstr "Restricción de distancia de búsqueda de nodos del cliente" +msgstr "Restricción del rango de búsqueda del nodo del lado cliente" #: src/settings_translation_file.cpp msgid "Climbing speed" @@ -2431,9 +2427,8 @@ msgid "ContentDB Flag Blacklist" msgstr "Lista negra de banderas de ContentDB" #: src/settings_translation_file.cpp -#, fuzzy msgid "ContentDB URL" -msgstr "Contenido" +msgstr "Dirección URL de ContentDB" #: src/settings_translation_file.cpp msgid "Continuous forward" @@ -2457,21 +2452,21 @@ msgid "" "Examples:\n" "72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." msgstr "" -"Controla el duración del ciclo día/noche.\n" +"Controla la duración del ciclo día/noche.\n" "Ejemplos: 72 = 20min, 360 = 4min, 1 = 24hora, 0 = día/noche/lo que sea se " "queda inalterado." #: src/settings_translation_file.cpp msgid "Controls sinking speed in liquid." -msgstr "" +msgstr "Controla la velocidad de hundimiento en líquidos." #: src/settings_translation_file.cpp msgid "Controls steepness/depth of lake depressions." -msgstr "Controla lo escarpado/profundo de las depresiones." +msgstr "Controla la pendiente/profundidad de las depresiones del lago." #: src/settings_translation_file.cpp msgid "Controls steepness/height of hills." -msgstr "Controla lo escarpado/alto de las colinas." +msgstr "Controla la pendiente/altura de las colinas." #: src/settings_translation_file.cpp msgid "" @@ -2479,6 +2474,11 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"Controla la anchura de los túneles, un valor más pequeño crea túneles más " +"anchos.\n" +"El valor >- 10.0 desactiva completamente la generación de túneles y evita " +"la\n" +"cálculos intensivos de ruido." #: src/settings_translation_file.cpp msgid "Crash message" @@ -2490,7 +2490,7 @@ msgstr "Creativo" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "Opacidad de punto de mira" +msgstr "Opacidad del punto de mira" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." @@ -2517,9 +2517,8 @@ msgid "Debug info toggle key" msgstr "Tecla alternativa para la información de la depuración" #: src/settings_translation_file.cpp -#, fuzzy msgid "Debug log file size threshold" -msgstr "Umbral de ruido del desierto" +msgstr "Umbral del tamaño del archivo de registro de depuración" #: src/settings_translation_file.cpp msgid "Debug log level" @@ -2531,7 +2530,7 @@ msgstr "Dec. tecla de volumen" #: src/settings_translation_file.cpp msgid "Decrease this to increase liquid resistance to movement." -msgstr "" +msgstr "Disminuya esto para aumentar la resistencia del líquido al movimiento." #: src/settings_translation_file.cpp msgid "Dedicated server step" @@ -2616,9 +2615,8 @@ msgid "Defines the base ground level." msgstr "Define el nivel base del terreno." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the depth of the river channel." -msgstr "Define el nivel base del terreno." +msgstr "Define la profundidad del canal del río." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." @@ -2627,14 +2625,12 @@ msgstr "" "límite)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river channel." -msgstr "Define la estructura del canal fluvial a gran escala." +msgstr "Define el ancho del canal del río." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river valley." -msgstr "Define las áreas donde los árboles tienen manzanas." +msgstr "Define el ancho del valle del río." #: src/settings_translation_file.cpp msgid "Defines tree areas and tree density." @@ -2683,17 +2679,16 @@ msgid "Desert noise threshold" msgstr "Umbral de ruido del desierto" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Deserts occur when np_biome exceeds this value.\n" "When the 'snowbiomes' flag is enabled, this is ignored." msgstr "" -"Los desiertos se dan cuando np_biome excede este valor.\n" -"Cuando el nuevo sistema de biomas está habilitado, esto es ignorado." +"Los desiertos se producen cuando np_biome supera este valor.\n" +"Cuando se activa la bandera de \"snowbiomes\", esto se ignora." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" -msgstr "Desincronizar animación de bloques" +msgstr "Desincronizar la animación de los bloques" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -2739,13 +2734,15 @@ msgstr "Mazmorras, mín. Y" #: src/settings_translation_file.cpp #, fuzzy msgid "Dungeon noise" -msgstr "Mazmorras, mín. Y" +msgstr "Ruido de mazmorra" #: src/settings_translation_file.cpp msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"Habilitar el soporte de IPv6 (tanto para el cliente como para el servidor).\n" +"Requerido para que las conexiones IPv6 funcionen." #: src/settings_translation_file.cpp msgid "" @@ -2757,11 +2754,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Enable console window" -msgstr "Habilita la ventana de consola" +msgstr "Habilitar la ventana de la consola" #: src/settings_translation_file.cpp msgid "Enable creative mode for new created maps." -msgstr "Habilita el modo creativo para nuevos mapas creados." +msgstr "Habilitar el modo creativo para los nuevos mapas creados." #: src/settings_translation_file.cpp msgid "Enable joysticks" @@ -2769,7 +2766,7 @@ msgstr "Activar joysticks" #: src/settings_translation_file.cpp msgid "Enable mod channels support." -msgstr "Activar soporte para canales de mods." +msgstr "Activar soporte para los canales de mods." #: src/settings_translation_file.cpp msgid "Enable mod security" @@ -2792,8 +2789,8 @@ msgid "" "Enable register confirmation when connecting to server.\n" "If disabled, new account will be registered automatically." msgstr "" -"Habilita la confirmación de registro cuando se conecte al servidor.\n" -"Si está desactivada, la nueva cuenta se registrará automáticamente." +"Habilitar confirmación de registro al conectar al servidor\n" +"Si esta deshabilitado, se registrará una nueva cuenta automáticamente." #: src/settings_translation_file.cpp msgid "" @@ -2832,6 +2829,8 @@ msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"Habilitar los objetos vértices del buffer.\n" +"Esto debería mejorar enormemente el rendimiento de los gráficos." #: src/settings_translation_file.cpp msgid "" @@ -2842,23 +2841,29 @@ msgstr "" "Por ejemplo: 0 para balanceo sin vista; 1.0 para normal; 2.0 para doble." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable/disable running an IPv6 server.\n" "Ignored if bind_address is set.\n" "Needs enable_ipv6 to be enabled." msgstr "" -"Habilita/deshabilita ejecutar un servidor IPv6. Un servidor IPv6 puede ser\n" -"restringido a clientes IPv6, dependiendo de la configuración del sistema.\n" -"Ignorado si 'bind_address' está configurado." +"Habilita/deshabilita la ejecución de un servidor IPv6.\n" +"Ignorado si se establece bind_address.\n" +"Necesita habilitar enable_ipv6 para ser activado." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Enables Hable's 'Uncharted 2' filmic tone mapping.\n" "Simulates the tone curve of photographic film and how this approximates the\n" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"Permite el mapeo de tonos fílmicos de Hable \"Uncharted 2\".\n" +"Simula la curva de tono de la película fotográfica y cómo ésta se aproxima a " +"la\n" +"aparición de imágenes de alto rango dinámico. El contraste de gama media es " +"ligeramente\n" +"mejorado, los reflejos y las sombras se comprimen gradualmente." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." @@ -2908,10 +2913,14 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"Habilita el sistema de sonido.\n" +"Si está desactivado, esto desactiva completamente todos los sonidos y\n" +"los controles de sonido el juego no serán funcionales.\n" +"Cambiar esta configuración requiere un reinicio." #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" -msgstr "Intervalo de impresión de datos de profiling de la engine" +msgstr "Intervalo de impresión de datos del perfil del motor" #: src/settings_translation_file.cpp msgid "Entity methods" @@ -2942,25 +2951,24 @@ msgid "Fall bobbing factor" msgstr "Factor de balanceo en caída" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "Fuente de reserva" +msgstr "Ruta de la fuente alternativa" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "Sombra de fuente de reserva" +msgstr "Sombra de la fuente de reserva" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "Alfa de sombra de fuente de reserva" +msgstr "Alfa de la sombra de la fuente de reserva" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "Tamaño de fuente de reserva" +msgstr "Tamaño de la fuente de reserva" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "Tecla de \"Rápido\"" +msgstr "Tecla rápida" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" @@ -3005,7 +3013,7 @@ msgstr "Profundidad del relleno" #: src/settings_translation_file.cpp msgid "Filler depth noise" -msgstr "Nivel llena de ruido" +msgstr "Nivel lleno de ruido" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" @@ -3066,35 +3074,35 @@ msgstr "Tecla para alternar niebla" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Fuente en negrita por defecto" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Letra cursiva por defecto" #: src/settings_translation_file.cpp msgid "Font shadow" -msgstr "Sombra de fuentes" +msgstr "Sombra de la fuente" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "Alfa de sombra de fuentes" +msgstr "Alfa de sombra de la fuente" #: src/settings_translation_file.cpp msgid "Font size" -msgstr "Tamaño de fuente" +msgstr "Tamaño de la fuente" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "Tamaño de la fuente por defecto en punto (pt)." #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "Tamaño de la fuente de reserva en punto (pt)." #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "Tamaño de la fuente del monoespacio en punto (pt)." #: src/settings_translation_file.cpp msgid "" @@ -3102,10 +3110,13 @@ msgid "" "placeholders:\n" "@name, @message, @timestamp (optional)" msgstr "" +"Formato en los mensajes del chat del jugador. Los siguientes strings son " +"válidos:\n" +"@name, @message, @timestamp (opcional)" #: src/settings_translation_file.cpp msgid "Format of screenshots." -msgstr "Formato de capturas de pantalla." +msgstr "Formato de las capturas de pantalla." #: src/settings_translation_file.cpp msgid "Formspec Default Background Color" @@ -3117,19 +3128,19 @@ msgstr "Opacidad de fondo Predeterminada para formularios" #: src/settings_translation_file.cpp msgid "Formspec Full-Screen Background Color" -msgstr "Color see fondo para formularios en pantalla completa" +msgstr "Color de fondo para formularios en pantalla completa" #: src/settings_translation_file.cpp msgid "Formspec Full-Screen Background Opacity" -msgstr "Opacidad de formularios en pantalla completa" +msgstr "Opacidad de los formularios en pantalla completa" #: src/settings_translation_file.cpp msgid "Formspec default background color (R,G,B)." -msgstr "Color de fondo predeterminado para formularios (R, G, B)." +msgstr "Color de fondo predeterminado para los formularios (R, G, B)." #: src/settings_translation_file.cpp msgid "Formspec default background opacity (between 0 and 255)." -msgstr "Opacidad predeterminada del fondo de formularios (entre 0 y 255)." +msgstr "Opacidad predeterminada del fondo de los formularios (entre 0 y 255)." #: src/settings_translation_file.cpp msgid "Formspec full-screen background color (R,G,B)." @@ -3222,7 +3233,7 @@ msgstr "Generar mapas normales" #: src/settings_translation_file.cpp msgid "Global callbacks" -msgstr "Devolución de llamadas globales" +msgstr "Llamadas globales" #: src/settings_translation_file.cpp #, fuzzy @@ -3242,18 +3253,20 @@ msgstr "" "inhabilitar esas opciones." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." -msgstr "Gradiente de la curva de luz al nivel de luz máximo." +msgstr "" +"Gradiente de la curva de luz en el nivel máximo de luz.\n" +"Controla el contraste de los niveles de luz más altos." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." -msgstr "Gradiente de la curva de luz al nivel de luz mínimo." +msgstr "" +"Gradiente de la curva de luz en el nivel mínimo de luz.\n" +"Controla el contraste de los niveles de luz más bajos." #: src/settings_translation_file.cpp msgid "Graphics" @@ -3277,29 +3290,29 @@ msgstr "Mods HTTP" #: src/settings_translation_file.cpp msgid "HUD scale factor" -msgstr "Factor de escala del HUD" +msgstr "Factor de escala HUD" #: src/settings_translation_file.cpp msgid "HUD toggle key" msgstr "Tecla de cambio del HUD" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- legacy: (try to) mimic old behaviour (default for release).\n" "- log: mimic and log backtrace of deprecated call (default for debug).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" -"Manejo de las llamadas de la API LUA obsoletas:\n" -"- legacy: (intenta)imita el antiguo comportamiento (por defecto para " -"lanzamientos).\n" -"- log: imita y guarda el seguimiento de las llamadas obsoletas (por defecto " -"para depuración).\n" -"- error: Cancela en el uso de llamadas obsoletas (sugerido para los " -"desarrolladores de Mods)." +"Manejo de llamadas a la API de Lua en desuso:\n" +"- legacy: (intentar) imitar el comportamiento antiguo (por defecto para la " +"liberación).\n" +"- log: imitar y registrar la pista de seguimiento de la llamada en desuso (" +"predeterminado para la depuración).\n" +"- error: abortar el uso de la llamada en desuso (sugerido para " +"desarrolladores de mods)." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Have the profiler instrument itself:\n" "* Instrument an empty function.\n" @@ -3307,6 +3320,11 @@ msgid "" "call).\n" "* Instrument the sampler being used to update the statistics." msgstr "" +"Tener el propio instrumento del generador de perfiles:\n" +"* Instrumente una función vacía.\n" +"Esto estima la sobrecarga, que la instrumentación está agregando (+1 llamada " +"de función).\n" +"* Instrumente el muestreador que se utiliza para actualizar las estadísticas." #: src/settings_translation_file.cpp msgid "Heat blend noise" @@ -3326,7 +3344,7 @@ msgstr "Altura del ruido" #: src/settings_translation_file.cpp msgid "Height select noise" -msgstr "Ruido de elección de altura" +msgstr "Altura del ruido seleccionado" #: src/settings_translation_file.cpp msgid "High-precision FPU" @@ -3366,26 +3384,32 @@ msgid "" "Horizontal acceleration in air when jumping or falling,\n" "in nodes per second per second." msgstr "" +"Aceleración horizontal en el aire al saltar o caer,\n" +"en nodos por segundo." #: src/settings_translation_file.cpp msgid "" "Horizontal and vertical acceleration in fast mode,\n" "in nodes per second per second." msgstr "" +"Aceleración horizontal y vertical en modo rápido,\n" +"en nodos por segundo." #: src/settings_translation_file.cpp msgid "" "Horizontal and vertical acceleration on ground or when climbing,\n" "in nodes per second per second." msgstr "" +"Aceleración horizontal y vertical en el suelo o al subir,\n" +"en nodos por segundo." #: src/settings_translation_file.cpp msgid "Hotbar next key" -msgstr "Tecla de siguiente barra rápida" +msgstr "Tecla de siguiente de la barra rápida" #: src/settings_translation_file.cpp msgid "Hotbar previous key" -msgstr "Tecla de anterior barra rápida" +msgstr "Tecla de anterior de la barra rápida" #: src/settings_translation_file.cpp msgid "Hotbar slot 1 key" @@ -3412,139 +3436,112 @@ msgid "Hotbar slot 14 key" msgstr "Tecla de barra rápida ranura 14" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 15 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 15" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 16 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 16" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 17 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 17" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 18 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 18" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 19 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 19" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 2 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 2" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 20 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 20" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 21 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 21" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 22 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 22" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 23 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 23" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 24 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 24" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 25 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 25" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 26 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 26" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 27 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 27" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 28 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 28" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 29 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 29" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 3 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 3" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 30 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 30" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 31 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 31" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 32 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 32" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 4 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 4" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 5 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 5" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 6 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 6" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 7 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 7" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 8 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 8" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hotbar slot 9 key" -msgstr "Botón de siguiente Hotbar" +msgstr "Tecla de barra rápida ranura 9" #: src/settings_translation_file.cpp -#, fuzzy msgid "How deep to make rivers." -msgstr "Profundidad para los ríos" +msgstr "Profundidad para los ríos." #: src/settings_translation_file.cpp msgid "" @@ -3552,6 +3549,9 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" +"Como de rápido se moverán las ondas de líquido. Más alto = más rápido.\n" +"Si es negativo, las ondas de líquido se moverán hacia atrás.\n" +"Requiere que se habiliten los líquidos de agitación." #: src/settings_translation_file.cpp msgid "" @@ -3563,13 +3563,12 @@ msgstr "" "Con valores mayores es mas fluido, pero se utiliza mas RAM." #: src/settings_translation_file.cpp -#, fuzzy msgid "How wide to make rivers." -msgstr "Ancho de los ríos" +msgstr "Ancho de los ríos." #: src/settings_translation_file.cpp msgid "Humidity blend noise" -msgstr "" +msgstr "Ruido de la mezcla de humedad" #: src/settings_translation_file.cpp msgid "Humidity noise" @@ -3592,20 +3591,21 @@ msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" -"Si las FPS no van mas alto que esto, limitelas\n" -"para no gastar poder del CPU para ningun beneficio." +"Si los FPS subieran a más de esto, limítelos durmiendo a fin de no malgastar " +"potencia de CPU sin beneficio." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "If disabled, \"special\" key is used to fly fast if both fly and fast mode " "are\n" "enabled." msgstr "" -"Si la tecla \"usar\" desactivada se usa para volar rápido si tanto el modo " -"rápido como el modo rápido están habilitados." +"Si está desactivado, la tecla \"especial\" se utiliza para volar rápido si " +"tanto el modo de vuelo como el modo rápido están\n" +"habilitados." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "If enabled the server will perform map block occlusion culling based on\n" "on the eye position of the player. This can reduce the number of blocks\n" @@ -3613,6 +3613,12 @@ msgid "" "invisible\n" "so that the utility of noclip mode is reduced." msgstr "" +"Si está habilitado, el servidor realizará la selección de la oclusión del " +"bloque del mapa basado en\n" +"en la posición del ojo del jugador. Esto puede reducir el número de bloques\n" +"enviados al cliente en un 50-80%. El cliente ya no recibirá la mayoría de " +"las invisibles\n" +"para que la utilidad del modo nocturno se reduzca." #: src/settings_translation_file.cpp msgid "" @@ -3620,48 +3626,50 @@ msgid "" "nodes.\n" "This requires the \"noclip\" privilege on the server." msgstr "" -"Si se habilita junto con el modo volar, el jugador puede volar a través de " +"Si se activa junto con el modo vuelo, el jugador puede volar a través de " "nodos sólidos.\n" -"Esto requiere el privilegio \"noclip\" en el servidor." +"Requiere del privilegio \"noclip\" en el servidor." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "If enabled, \"special\" key instead of \"sneak\" key is used for climbing " "down and\n" "descending." msgstr "" -"Si está habilitado, la tecla \"usar\" en lugar de la tecla \"escabullirse\" " -"se usa para subir y bajar." +"Si está activada, la tecla \"especial\" en lugar de la tecla \"sneak\" se " +"utilizará para bajar y\n" +"descender." #: src/settings_translation_file.cpp msgid "" "If enabled, actions are recorded for rollback.\n" "This option is only read when server starts." msgstr "" -"Si esta activiado, las accione son guardadas para un rollback.\n" -"Esta opcion es de solo lectura cuando el servidor inicia." +"Si se activa, las acciones se graban para poder deshacerse.\n" +"Esta opción sólo se lee al arrancar el servidor." #: src/settings_translation_file.cpp msgid "If enabled, disable cheat prevention in multiplayer." msgstr "" -"Si esta habilitado, desahabilita la prevencion de trampas y trucos en " -"multijugador." +"Si se habilita, deshabilita la prevención de trampas en modo multijugador." #: src/settings_translation_file.cpp msgid "" "If enabled, invalid world data won't cause the server to shut down.\n" "Only enable this if you know what you are doing." msgstr "" -"Si está habilitado, los datos mundiales inválidos no harán que el servidor " -"se apague.\n" -"Solo habilita esto si sabes lo que estás haciendo." +"Si se habilita, los datos del mundo inválidos no causarán que el servidor se " +"apague.\n" +"Actívelo sólo si sabe lo que hace." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "If enabled, makes move directions relative to the player's pitch when flying " "or swimming." msgstr "" +"Si está activada, hace que las direcciones de movimiento sean relativas al " +"lanzamiento del jugador cuando vuela o nada." #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." @@ -3685,6 +3693,9 @@ msgid "" "limited\n" "to this distance from the player to the node." msgstr "" +"Si la restricción CSM para el rango de nodos está activada, las llamadas a " +"get_node están limitadas\n" +"a esta distancia del jugador al nodo." #: src/settings_translation_file.cpp msgid "" @@ -3693,6 +3704,11 @@ msgid "" "deleting an older debug.txt.1 if it exists.\n" "debug.txt is only moved if this setting is positive." msgstr "" +"Si el tamaño del archivo debug.txt excede el número de megabytes " +"especificado en\n" +"esta configuración cuando se abre, el archivo se mueve a debug.txt.1,\n" +"borrando un antiguo debug.txt.1 si existe.\n" +"debug.txt sólo se mueve si esta configuración es positiva." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." @@ -3728,13 +3744,16 @@ msgstr "Tecla de la consola" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." -msgstr "" +msgstr "Velocidad vertical inicial al saltar, en nodos por segundo." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Instrument builtin.\n" "This is usually only needed by core/builtin contributors" msgstr "" +"El instrumento está construido.\n" +"Por lo general, esto sólo lo necesitan los contribuyentes del núcleo/base" #: src/settings_translation_file.cpp msgid "Instrument chatcommands on registration." @@ -3802,7 +3821,7 @@ msgstr "Ruta de fuentes" #: src/settings_translation_file.cpp msgid "Italic monospace font path" -msgstr "" +msgstr "Ruta de la fuente monoespacial cursiva" #: src/settings_translation_file.cpp msgid "Item entity TTL" @@ -3819,6 +3838,10 @@ msgid "" "increases processing load.\n" "At iterations = 20 this mapgen has a similar load to mapgen V7." msgstr "" +"Iteraciones de la función recursiva.\n" +"Aumentar esto aumenta la cantidad de detalles finos, pero también\n" +"aumenta la carga de procesamiento.\n" +"En las iteraciones = 20 este mapgen tiene una carga similar al mapgen V7." #: src/settings_translation_file.cpp msgid "Joystick ID" @@ -3830,7 +3853,7 @@ msgstr "Intervalo de repetición del botón del Joystick" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" -msgstr "" +msgstr "Sensibilidad del Joystick" #: src/settings_translation_file.cpp msgid "Joystick type" @@ -4495,6 +4518,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para activar/desactivar el modo cinemático.\n" +"Véase http://irrlicht.sourceforge.net/docu/namespaceirr.html#" +"a54da2a0e231901735e3da1b0edf72eb3\n" #: src/settings_translation_file.cpp msgid "" @@ -4502,6 +4528,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para activar/desactivar la vista del minimapa.\n" +"Véase http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4509,6 +4538,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para activar/desactivar el modo veloz.\n" +"Véase http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4516,6 +4548,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para activar/desactivar el vuelo.\n" +"Véase http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4523,6 +4558,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para activar/desactivar el modo noclip.\n" +"Véase http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp #, fuzzy @@ -4997,21 +5035,21 @@ msgid "Mapgen flags" msgstr "Banderas de Mapgen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" msgstr "Generador de mapas" #: src/settings_translation_file.cpp msgid "Max block generate distance" -msgstr "" +msgstr "Distancia máxima de generación de bloques" #: src/settings_translation_file.cpp msgid "Max block send distance" -msgstr "" +msgstr "Distancia máxima de envío de bloques" #: src/settings_translation_file.cpp +#, fuzzy msgid "Max liquids processed per step." -msgstr "" +msgstr "Líquidos máximos procesados por paso." #: src/settings_translation_file.cpp msgid "Max. clearobjects extra blocks" @@ -5023,11 +5061,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "" +msgstr "FPS máximos" #: src/settings_translation_file.cpp msgid "Maximum FPS when game is paused." -msgstr "" +msgstr "FPS máximos cuando el juego está pausado." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -5057,6 +5095,9 @@ msgid "" "The maximum total count is calculated dynamically:\n" "max_total = ceil((#clients + max_users) * per_client / 4)" msgstr "" +"Número máximo de bloques que se envían simultáneamente por cliente.\n" +"El recuento total máximo se calcula dinámicamente:\n" +"max_total = ceil ((# clients + max_users) * per_client / 4)" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." @@ -5134,7 +5175,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum users" -msgstr "" +msgstr "Usuarios máximos" #: src/settings_translation_file.cpp msgid "Menus" @@ -5146,27 +5187,27 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Message of the day" -msgstr "" +msgstr "Mensaje del día" #: src/settings_translation_file.cpp msgid "Message of the day displayed to players connecting." -msgstr "" +msgstr "Mensaje del día mostrado a los jugadores que se conectan." #: src/settings_translation_file.cpp msgid "Method used to highlight selected object." -msgstr "" +msgstr "Método utilizado para resaltar el objeto seleccionado." #: src/settings_translation_file.cpp msgid "Minimap" -msgstr "" +msgstr "Minimapa" #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "Clave del minimapa" #: src/settings_translation_file.cpp msgid "Minimap scan height" -msgstr "" +msgstr "Altura de escaneo del minimapa" #: src/settings_translation_file.cpp #, fuzzy @@ -5237,13 +5278,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mute key" -msgstr "Usa la tecla" +msgstr "Tecla de silencio" #: src/settings_translation_file.cpp msgid "Mute sound" -msgstr "" +msgstr "Silenciar sonido" #: src/settings_translation_file.cpp msgid "" @@ -5271,7 +5311,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Network" -msgstr "" +msgstr "Red" #: src/settings_translation_file.cpp msgid "" @@ -5345,7 +5385,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Online Content Repository" -msgstr "" +msgstr "Contenido del repositorio en linea" #: src/settings_translation_file.cpp msgid "Opaque liquids" @@ -5417,7 +5457,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Path to save screenshots at." -msgstr "" +msgstr "Ruta para guardar las capturas de pantalla." #: src/settings_translation_file.cpp msgid "" @@ -5451,7 +5491,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" +msgstr "Físicas" #: src/settings_translation_file.cpp #, fuzzy @@ -5475,11 +5515,11 @@ msgstr "Nombre del jugador" #: src/settings_translation_file.cpp msgid "Player transfer distance" -msgstr "" +msgstr "Distancia de transferencia del jugador" #: src/settings_translation_file.cpp msgid "Player versus player" -msgstr "" +msgstr "Jugador contra jugador" #: src/settings_translation_file.cpp msgid "" From 2a1ad6a903ebc321c43f2939193e0245ffc9da10 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Fri, 14 Feb 2020 18:47:13 +0000 Subject: [PATCH 009/424] Translated using Weblate (Hungarian) Currently translated at 59.7% (769 of 1288 strings) --- po/hu/minetest.po | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/po/hu/minetest.po b/po/hu/minetest.po index 799508255..4c99afb2f 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Hungarian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-12-16 22:21+0000\n" -"Last-Translator: Ács Zoltán \n" +"PO-Revision-Date: 2020-02-27 09:32+0000\n" +"Last-Translator: An0n3m0us \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -390,7 +390,7 @@ msgstr "X" #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "X spread" -msgstr "x méret" +msgstr "X méret" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" @@ -399,7 +399,7 @@ msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "Y spread" -msgstr "y méret" +msgstr "Y méret" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" @@ -474,11 +474,11 @@ msgstr "$1 mod csomag telepítése meghiúsult" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "online tartalmak böngészése" +msgstr "Online tartalmak böngészése" #: builtin/mainmenu/tab_content.lua msgid "Content" -msgstr "tartalom" +msgstr "Tartalom" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" @@ -875,7 +875,7 @@ msgstr "A megadott útvonalon nem létezik világ: " #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "yes" +msgstr "no" #: src/client/game.cpp msgid "" @@ -1725,7 +1725,7 @@ msgstr "Kilépés" #: src/gui/guiVolumeChange.cpp msgid "Muted" -msgstr "némitva" +msgstr "Némitva" #: src/gui/guiVolumeChange.cpp msgid "Sound Volume: " @@ -1736,8 +1736,9 @@ msgid "Enter " msgstr "Belépés " #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp +#, fuzzy msgid "LANG_CODE" -msgstr "hu" +msgstr "NYELV_KÓD" #: src/settings_translation_file.cpp msgid "" From 4d3e2f8d692dbde6d61d50f31039005e22e03c69 Mon Sep 17 00:00:00 2001 From: Muhammad Nur Hidayat Yasuyoshi Date: Mon, 17 Feb 2020 05:06:52 +0000 Subject: [PATCH 010/424] Translated using Weblate (Malay) Currently translated at 100.0% (1288 of 1288 strings) --- po/ms/minetest.po | 272 +++++++++++++++++++++++++--------------------- 1 file changed, 148 insertions(+), 124 deletions(-) diff --git a/po/ms/minetest.po b/po/ms/minetest.po index b33b8ca3a..dbd9fd5b3 100644 --- a/po/ms/minetest.po +++ b/po/ms/minetest.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Malay (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-10-31 06:03+0000\n" +"PO-Revision-Date: 2020-02-18 06:32+0000\n" "Last-Translator: Muhammad Nur Hidayat Yasuyoshi \n" "Language-Team: Malay \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 3.11\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1748,7 +1748,6 @@ msgstr "" "berada di luar bulatan utama." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1759,11 +1758,12 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" -"Ofset fraktal (X,Y,Z) dari pusat dunia dalam unit 'skala'.\n" -"Digunakan untuk memindahkan titik yang diinginkan kepada (0, 0)\n" -"untuk mencipta titik kelahiran yang sesuai, atau untuk membolehkan\n" -"'zum masuk' pada titk yang diinginkan dengan menaikkan 'skala'.\n" -"Nilai lalai disesuaikan untuk titik kelahiran sesuai untuk set mandelbrot\n" +"(X,Y,Z) Ofset fraktal dari pusat dunia dalam unit 'skala'.\n" +"Boleh guna untuk pindahkan titik yang diingini ke (0, 0)\n" +"untuk cipta titik kelahiran yang sesuai, atau untuk\n" +"membolehkan 'zum masuk' pada titik yang diinginkan\n" +"dengan menaikkan 'skala'.\n" +"Nilai lalai disesuaikan untuk titik kelahiran sesuai untuk set Mandelbrot\n" "dengan parameter lalai, ia mungkin perlu diubah untuk situasi yang lain.\n" "Julat kasarnya -2 sehingga 2. Darabkan dengan 'skala' untuk ofset dalam nod." @@ -1964,6 +1964,11 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Ubah lengkung cahaya dengan mengenakan 'pembetulan gama'.\n" +"Nilai tinggi buatkan aras cahaya tengah dan rendah lebih terang.\n" +"Nilai '1.0' akan biarkan lengkung cahaya asal tidak berubah.\n" +"Tetapan ini hanya memberi kesan mendalam pada cahaya matahari\n" +"dan cahaya buatan, kesannya pada cahaya malam amat rendah." #: src/settings_translation_file.cpp msgid "Altitude chill" @@ -2122,24 +2127,20 @@ msgid "Block send optimize distance" msgstr "Jarak optimum penghantaran blok" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "Laluan fon monospace" +msgstr "Laluan fon tebal dan italik" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" -msgstr "Laluan fon monospace" +msgstr "Laluan fon monospace tebal dan italik" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "Laluan fon" +msgstr "Laluan fon tebal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" -msgstr "Laluan fon monospace" +msgstr "Laluan fon monospace tebal" #: src/settings_translation_file.cpp msgid "Build inside player" @@ -2226,6 +2227,8 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Pertengahan julat tolakan lengkung cahaya.\n" +"Di mana 0.0 ialah aras cahaya minimum, 1.0 ialah maksimum." #: src/settings_translation_file.cpp msgid "" @@ -2450,6 +2453,9 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"Mengawal lebar terowong, nilai kecil mencipta terowong lebih luas.\n" +"Nilai >= 10.0 melumpuhkan penjanaan terowong dan mengelakkan\n" +"pengiraan hingar yang terlalu banyak." #: src/settings_translation_file.cpp msgid "Crash message" @@ -2500,7 +2506,6 @@ msgid "Dec. volume key" msgstr "Kekunci perlahankan bunyi" #: src/settings_translation_file.cpp -#, fuzzy msgid "Decrease this to increase liquid resistance to movement." msgstr "" "Kurangkan nilai untuk meningkatkan rintangan cecair terhadap pergerakan." @@ -2713,6 +2718,8 @@ msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"Membolehkan sokongan IPv6 (untuk kedua-dua klien dan pelayan).\n" +"Diperlukan sekiranya ingin menggunakan sambungan IPv6." #: src/settings_translation_file.cpp msgid "" @@ -2802,6 +2809,8 @@ msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"Membolehkan objek penimbal bucu.\n" +"Ia patut meningkatkan prestasi grafik dengan banyak." #: src/settings_translation_file.cpp msgid "" @@ -2812,14 +2821,14 @@ msgstr "" "Contohnya: 0 untuk tiada apungan; 1.0 untuk biasa; 2.0 untuk dua kali ganda." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable/disable running an IPv6 server.\n" "Ignored if bind_address is set.\n" "Needs enable_ipv6 to be enabled." msgstr "" "Membolehkan/melumpuhkan penjalanan pelayan IPv6.\n" -"Diabaikan jika bind_address (alamat ikatan) ditetapkan." +"Diabaikan jika tetapan bind_address ditetapkan.\n" +"Memerlukan tetapan enable_ipv6 dibolehkan." #: src/settings_translation_file.cpp msgid "" @@ -2828,6 +2837,10 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"Membolehkan pemetaan tona sinematik 'Uncharted 2' oleh Hable.\n" +"Menyelakukan lengkung tona filem fotografi dan cara ia menganggarkan\n" +"penampilan imej jarak dinamik tinggi. Beza jelas pertengahan julat\n" +"ditingkatkan sedikit, tonjolan dan bayangan dimampatkan secara beransur." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." @@ -2876,6 +2889,10 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"Membolehkan sistem bunyi.\n" +"Jika dilumpuhkan, ia akan melumpuhkan kesemua bunyi di semua tempat\n" +"dan kawalan bunyi dalam permainan tidak akan berfungsi.\n" +"Pengubahan tetapan ini memerlukan permulaan semula." #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" @@ -2910,9 +2927,8 @@ msgid "Fall bobbing factor" msgstr "Faktor apungan kejatuhan" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "Fon berbalik" +msgstr "Laluan fon berbalik" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -3036,11 +3052,11 @@ msgstr "Kekunci togol kabut" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Fon tebal secara lalainya" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Fon italik secara lalainya" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3056,15 +3072,15 @@ msgstr "Saiz fon" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "Saiz fon bagi fon lalai dalan unit poin (pt)." #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "Saiz fon bagi fon berbalik dalam unit poin (pt)." #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "Saiz fon bagi fon monospace dalam unit poin (pt)." #: src/settings_translation_file.cpp msgid "" @@ -3212,18 +3228,20 @@ msgstr "" "dan rumput hutan, dalam janapeta lain pula bendera ini mengawal semua hiasan." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." -msgstr "Kecerunan lengkung cahaya pada tahap cahaya maksimum." +msgstr "" +"Kecerunan lengkung cahaya pada tahap cahaya maksimum.\n" +"Mengawal beza jelas tahap cahaya tertinggi." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." -msgstr "Kecerunan lengkung cahaya pada tahap cahaya minimum." +msgstr "" +"Kecerunan lengkung cahaya pada tahap cahaya minimum.\n" +"Mengawal beza jelas tahap cahaya terendah." #: src/settings_translation_file.cpp msgid "Graphics" @@ -3254,7 +3272,6 @@ msgid "HUD toggle key" msgstr "Kekunci menogol HUD" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- legacy: (try to) mimic old behaviour (default for release).\n" @@ -3262,11 +3279,11 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" "Cara pengendalian panggilan API Lua yang terkecam:\n" -"- pusaka: (cuba untuk) meniru tingkah laku yang lama (lalai untuk " -"keluaran).\n" -"- log: meniru dan menulis log runut balik kesemua panggilan terkecam " -"(lalai untuk nyahpepijat).\n" -"- ralat: gugurkan penggunaan panggilan terkecam (dicadangkan untuk " +"- legacy: (cuba untuk) meniru tingkah laku yang lama (lalai untuk " +"terbitan).\n" +"- log: meniru dan menulis log runut balik kesemua panggilan terkecam (" +"lalai untuk nyahpepijat).\n" +"- error: gugurkan penggunaan panggilan terkecam (dicadangkan untuk " "pembangun mods)." #: src/settings_translation_file.cpp @@ -3507,6 +3524,9 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" +"Secepat mana gelora cecair akan bergerak. Nilai tinggi = lebih laju.\n" +"Jika nilai negatif, gelora cecair akan bergerak ke belakang.\n" +"Memerlukan tetapan cecair bergelora dibolehkan." #: src/settings_translation_file.cpp msgid "" @@ -3762,14 +3782,12 @@ msgid "Invert vertical mouse movement." msgstr "Menyongsangkan pergerakan tetikus menegak." #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic font path" -msgstr "Laluan fon monospace" +msgstr "Laluan fon italik" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic monospace font path" -msgstr "Laluan fon monospace" +msgstr "Laluan fon monospace italik" #: src/settings_translation_file.cpp msgid "Item entity TTL" @@ -4598,15 +4616,15 @@ msgstr "Kedalaman gua besar" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "Jumlah maksimum gua besar" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "Jumlah minimum gua besar" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" -msgstr "" +msgstr "Perkadaran gua besar dibanjiri" #: src/settings_translation_file.cpp msgid "Large chat console key" @@ -4644,13 +4662,12 @@ msgstr "" "dikemaskini menerusi rangkaian." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Length of liquid waves.\n" "Requires waving liquids to be enabled." msgstr "" -"Tetapkan kepada \"true\" untuk membolehkan daun bergoyang.\n" -"Memerlukan pembayang untuk dibolehkan." +"Panjang gelora cecair.\n" +"Memerlukan tetapan cecair bergelora dibolehkan." #: src/settings_translation_file.cpp msgid "Length of time between Active Block Modifier (ABM) execution cycles" @@ -4685,34 +4702,28 @@ msgstr "" "- berjela-jela" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost" -msgstr "Tolakan tengah lengkung cahaya" +msgstr "Tolakan lengkung cahaya" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost center" -msgstr "Titik tengah tolakan tengah lengkung cahaya" +msgstr "Titik tengah tolakan lengkung cahaya" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost spread" -msgstr "Sebaran tolakan tengah lengkung cahaya" +msgstr "Sebaran tolakan lengkung cahaya" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve gamma" -msgstr "Tolakan tengah lengkung cahaya" +msgstr "Gama lengkung cahaya" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve high gradient" -msgstr "Tolakan tengah lengkung cahaya" +msgstr "Kecerunan tinggi lengkung cahaya" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve low gradient" -msgstr "Titik tengah tolakan tengah lengkung cahaya" +msgstr "Kecerunan rendah lengkung cahaya" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" @@ -4830,7 +4841,6 @@ msgid "Map generation attributes specific to Mapgen Carpathian." msgstr "Atribut penjanaan peta khusus untuk janapeta Carpathian." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Flat.\n" "Occasional lakes and hills can be added to the flat world." @@ -4839,13 +4849,12 @@ msgstr "" "Kadang-kala tasik dan bukit boleh ditambah ke dunia rata." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Fractal.\n" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" -"Atribut penjanaan peta khusus untuk Janapeta flat.\n" +"Atribut penjanaan peta khusus untuk Janapeta Fractal.\n" "'terrain' membolehkan penjanaan rupa bumi bukan fraktal:\n" "lautan, kepulauan dan unsur bawah tanah." @@ -5019,20 +5028,19 @@ msgstr "Lebar hotbar maksima" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "Had maksimum jumlah rawak gua besar per ketulan peta." #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Had maksimum jumlah rawak gua kecil per ketulan peta." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." msgstr "" "Rintangan cecair maksimum. Mengawal nyahpecutan apabila memasuki\n" -"cecair pada kelajuan maksimum." +"cecair pada kelajuan tinggi." #: src/settings_translation_file.cpp msgid "" @@ -5170,14 +5178,12 @@ msgid "Minimap scan height" msgstr "Ketinggian imbasan peta mini" #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "" -"Hingar 3D yang menentukan jumlah kurungan bawah tanah per ketulan peta." +msgstr "Had minimum jumlah rawak gua besar per ketulan peta." #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Had minimum jumlah rawak gua kecil per ketulan peta." #: src/settings_translation_file.cpp msgid "Minimum texture size" @@ -5387,12 +5393,12 @@ msgstr "Cecair legap" #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." -msgstr "" +msgstr "Kelegapan (alfa) bayang belakang fon lalai, nilai antara 0 dan 255." #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." -msgstr "" +msgstr "Kelegapan (alfa) bayang belakang fon berbalik, nilai antara 0 dan 255." #: src/settings_translation_file.cpp msgid "" @@ -5444,6 +5450,12 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" +"Laluan fon berbalik.\n" +"Jika tetapan “freetype” dibolehkan: Ia mestilah fon TrueType.\n" +"Jika tetapan “freetype” dilumpuhkan: Ia mestilah fon peta bit atau vektor " +"XML.\n" +"Fon ini akan digunakan bagi sesetengah bahasa atau jika fon lalai tidak " +"tersedia." #: src/settings_translation_file.cpp msgid "Path to save screenshots at." @@ -5468,6 +5480,11 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "The fallback font will be used if the font cannot be loaded." msgstr "" +"Laluan fon lalai.\n" +"Jika tetapan “freetype” dibolehkan: Ia mestilah fon TrueType.\n" +"Jika tetapan “freetype” dilumpuhkan: Ia mestilah fon peta bit atau vektor " +"XML.\n" +"Fon berbalik akan digunakan sekiranya fon ini tidak dapat dimuatkan." #: src/settings_translation_file.cpp msgid "" @@ -5476,6 +5493,11 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "This font is used for e.g. the console and profiler screen." msgstr "" +"Laluan fon monospace.\n" +"Jika tetapan “freetype” dibolehkan: Ia mestilah fon TrueType.\n" +"Jika tetapan “freetype” dilumpuhkan: Ia mestilah fon peta bit atau vektor " +"XML.\n" +"Fon ini digunakan untuk unsur spt. konsol dan skrin pembukah." #: src/settings_translation_file.cpp msgid "Pause on lost window focus" @@ -5565,7 +5587,7 @@ msgstr "Pemprofilan" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." -msgstr "" +msgstr "Perkadaran gua besar yang mempunyai cecair." #: src/settings_translation_file.cpp msgid "" @@ -5594,9 +5616,8 @@ msgid "Recent Chat Messages" msgstr "Mesej Sembang Terkini" #: src/settings_translation_file.cpp -#, fuzzy msgid "Regular font path" -msgstr "Laluan laporan" +msgstr "Laluan fon biasa" #: src/settings_translation_file.cpp msgid "Remote media" @@ -5812,7 +5833,6 @@ msgid "Selection box width" msgstr "Lebar kotak pemilihan" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Selects one of 18 fractal types.\n" "1 = 4D \"Roundy\" Mandelbrot set.\n" @@ -5835,24 +5855,24 @@ msgid "" "18 = 4D \"Mandelbulb\" Julia set." msgstr "" "Pilih salah satu daripada 18 jenis fraktal.\n" -"1 = Set mandelbrot \"Bulatan\" 4D\n" -"2 = Set julia \"Bulatan\" 4D.\n" -"3 = Set mandelbrot \"Persegi\" 4D.\n" -"4 = Set julia \"Persegi\" 4D.\n" -"5 = Set mandelbrot \"Sepupu Mandy\" 4D.\n" -"6 = Set julia \"Sepupu Mandy\" 4D.\n" -"7 = Set mandelbrot \"Variasi\" 4D.\n" -"8 = Set julia \"Variasi\" 4D.\n" -"9 = Set mandelbrot \"Mandelbrot/Mandelbar\" 3D.\n" -"10 = Set julia \"Mandelbrot/Mandelbar\" 3D.\n" -"11 = Set mandelbrot \"Pokok Krismas\" 3D.\n" -"12 = Set julia \"Pokok Krismas\" 3D.\n" -"13 = Set mandelbrot \"Mandelbulb\" 3D.\n" -"14 = Set julia \"Mandelbulb\" 3D.\n" -"15 = Set mandelbrot \"Mandelbulb Kosinus\" 3D.\n" -"16 = Set julia \"Mandelbulb Kosinus\" 3D.\n" -"17 = Set mandelbrot \"Mandelbulb\" 4D.\n" -"18 = Set julia \"Mandelbulb\" 4D." +"1 = Set Mandelbrot \"Bulatan\" 4D\n" +"2 = Set Julia \"Bulatan\" 4D.\n" +"3 = Set Mandelbrot \"Persegi\" 4D.\n" +"4 = Set Julia \"Persegi\" 4D.\n" +"5 = Set Mandelbrot \"Sepupu Mandy\" 4D.\n" +"6 = Set Julia \"Sepupu Mandy\" 4D.\n" +"7 = Set Mandelbrot \"Variasi\" 4D.\n" +"8 = Set Julia \"Variasi\" 4D.\n" +"9 = Set Mandelbrot \"Mandelbrot/Mandelbar\" 3D.\n" +"10 = Set Julia \"Mandelbrot/Mandelbar\" 3D.\n" +"11 = Set Mandelbrot \"Pokok Krismas\" 3D.\n" +"12 = Set Julia \"Pokok Krismas\" 3D.\n" +"13 = Set Mandelbrot \"Mandelbulb\" 3D.\n" +"14 = Set Julia \"Mandelbulb\" 3D.\n" +"15 = Set Mandelbrot \"Mandelbulb Kosinus\" 3D.\n" +"16 = Set Julia \"Mandelbulb Kosinus\" 3D.\n" +"17 = Set Mandelbrot \"Mandelbulb\" 4D.\n" +"18 = Set Julia \"Mandelbulb\" 4D." #: src/settings_translation_file.cpp msgid "Server / Singleplayer" @@ -5903,7 +5923,6 @@ msgid "Set the maximum character length of a chat message sent by clients." msgstr "Tetapkan panjang aksara maksimum mesej sembang dihantar oleh klien." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving leaves.\n" "Requires shaders to be enabled." @@ -5912,21 +5931,19 @@ msgstr "" "Memerlukan pembayang untuk dibolehkan." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving liquids (like water).\n" "Requires shaders to be enabled." msgstr "" -"Tetapkan ke \"true\" untuk membolehkan air bergelora.\n" +"Tetapkan ke \"true\" untuk membolehkan cecair bergelora (macam air).\n" "Memerlukan pembayang dibolehkan." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving plants.\n" "Requires shaders to be enabled." msgstr "" -"Tetapkan kepada \"true\" untuk membolehkan tumbuhan bergoyang.\n" +"Tetapkan ke \"true\" untuk membolehkan tumbuhan bergoyang.\n" "Memerlukan pembayang untuk dibolehkan." #: src/settings_translation_file.cpp @@ -5945,18 +5962,20 @@ msgstr "" "Namun ia hanya berfungsi dengan pembahagian belakang video OpenGL." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the default font. If 0, then shadow will not be " "drawn." -msgstr "Ofset bayang fon, jika 0 maka bayang tidak akan dilukis." +msgstr "" +"Ofset bayang fon lalai (dalam unit piksel). Jika 0, maka bayang tidak akan " +"dilukis." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " "be drawn." -msgstr "Ofset bayang fon, jika 0 maka bayang tidak akan dilukis." +msgstr "" +"Ofset bayang fon berbalik (dalam unit piksel). Jika 0, maka bayang tidak " +"akan dilukis." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." @@ -6012,11 +6031,11 @@ msgstr "Cerun dan pengisian bekerja bersama untuk mengubah ketinggian." #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "" +msgstr "Jumlah maksimum gua kecil" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "" +msgstr "Jumlah minimum gua kecil" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." @@ -6088,14 +6107,14 @@ msgstr "" "Fail yang tidak wujud akan diambil dengan cara biasa." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Spread of light curve boost range.\n" "Controls the width of the range to be boosted.\n" "Standard deviation of the light curve boost Gaussian." msgstr "" -"Sebar tolakan tengah lengkung cahaya.\n" -"Sisihan piawai Gauss tolakan tengah." +"Sebar julat tolakan lengkung cahaya.\n" +"Mengawal lebar julat untuk ditolak.\n" +"Sisihan piawai Gauss tolakan lengkung cahaya." #: src/settings_translation_file.cpp msgid "Static spawnpoint" @@ -6123,6 +6142,9 @@ msgid "" "The 3 'boost' parameters define a range of the light\n" "curve that is boosted in brightness." msgstr "" +"Kekuatan tolakan lengkung cahaya.\n" +"Tiga parameter 'tolakan' mentakrifkan julat lengkung\n" +"cahaya yang ditolak dalam pencahayaan." #: src/settings_translation_file.cpp msgid "Strength of parallax." @@ -6249,6 +6271,11 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" +"Tinggi maksimum permukaan cecair bergelora.\n" +"4.0 = Tinggi gelora ialah dua nod.\n" +"0.0 = Gelora tidak bergerak langsung.\n" +"Nilai asalnya 1.0 (1/2 nod).\n" +"Memerlukan tetapan cecair bergelora dibolehkan." #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -6426,7 +6453,6 @@ msgid "Trilinear filtering" msgstr "Penapisan trilinear" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "True = 256\n" "False = 128\n" @@ -6434,8 +6460,7 @@ msgid "" msgstr "" "True = 256\n" "False = 128\n" -"Boleh digunakan untuk membuatkan peta mini kelihatan lebih lembut pada mesin " -"yang lebih perlahan." +"Boleh digunakan untuk melancarkan peta mini pada mesin yang perlahan." #: src/settings_translation_file.cpp msgid "Trusted mods" @@ -6612,13 +6637,12 @@ msgid "Volume" msgstr "Kekuatan bunyi" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Volume of all sounds.\n" "Requires the sound system to be enabled." msgstr "" -"Membolehkan pemetaan oklusi paralaks.\n" -"Memerlukan pembayang untuk dibolehkan." +"Kekuatan semua bunyi.\n" +"Memerlukan sistem bunyi dibolehkan." #: src/settings_translation_file.cpp msgid "" @@ -6665,24 +6689,20 @@ msgid "Waving leaves" msgstr "Daun bergoyang" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids" -msgstr "Cecair Bergelora" +msgstr "Cecair bergelora" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave height" -msgstr "Ketinggian ombak air bergelora" +msgstr "Ketinggian ombak cecair bergelora" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave speed" -msgstr "Kelajuan ombak air bergelora" +msgstr "Kelajuan ombak cecair bergelora" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wavelength" -msgstr "Panjang ombak air bergelora" +msgstr "Panjang ombak cecair bergelora" #: src/settings_translation_file.cpp msgid "Waving plants" @@ -6741,14 +6761,14 @@ msgstr "" "tekstur jajaran dunia." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Whether FreeType fonts are used, requires FreeType support to be compiled " "in.\n" "If disabled, bitmap and XML vectors fonts are used instead." msgstr "" -"Menetapkan sama ada fon FreeType digunakan, memerlukan sokongan Freetype " -"dikompil bersama." +"Menetapkan sama ada fon FreeType digunakan, memerlukan sokongan Freetype\n" +"dikompil bersama. Jika dilumpuhkan, fon peta bit dan vektor XML akan " +"digunakan." #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." @@ -6790,6 +6810,10 @@ msgid "" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" +"Sama ada ingin membisukan bunyi. Anda boleh menyahbisu pada bila-bila\n" +"masa, melainkan sistem bunyi dilumpuhkan (enable_sound=false).\n" +"Dalam permainan, anda boleh menogol keadaan bisu menggunakan kekunci\n" +"bisu atau menggunakan menu jeda." #: src/settings_translation_file.cpp msgid "" From 811acbc8fd5aa53899a62e9709a5542deb1de581 Mon Sep 17 00:00:00 2001 From: JDiaz Date: Sun, 16 Feb 2020 11:09:19 +0000 Subject: [PATCH 011/424] Translated using Weblate (Spanish) Currently translated at 67.9% (875 of 1288 strings) --- po/es/minetest.po | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/po/es/minetest.po b/po/es/minetest.po index 84b4d9d3b..69f110aa6 100644 --- a/po/es/minetest.po +++ b/po/es/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Spanish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-01-31 02:50+0000\n" -"Last-Translator: universales \n" +"PO-Revision-Date: 2020-02-18 06:32+0000\n" +"Last-Translator: JDiaz \n" "Language-Team: Spanish \n" "Language: es\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 3.11\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -671,7 +671,7 @@ msgstr "Configurar teclas" #: builtin/mainmenu/tab_settings.lua msgid "Connected Glass" -msgstr "Vidrio Conectado" +msgstr "Vidrio conectado" #: builtin/mainmenu/tab_settings.lua msgid "Fancy Leaves" @@ -695,7 +695,7 @@ msgstr "No" #: builtin/mainmenu/tab_settings.lua msgid "No Filter" -msgstr "Sin Filtrado" +msgstr "Sin filtrado" #: builtin/mainmenu/tab_settings.lua msgid "No Mipmap" @@ -755,7 +755,7 @@ msgstr "Hojas simples" #: builtin/mainmenu/tab_settings.lua msgid "Smooth Lighting" -msgstr "Iluminación Suave" +msgstr "Iluminación suave" #: builtin/mainmenu/tab_settings.lua msgid "Texturing:" @@ -775,19 +775,19 @@ msgstr "Umbral táctil: (px)" #: builtin/mainmenu/tab_settings.lua msgid "Trilinear Filter" -msgstr "Filtrado Trilineal" +msgstr "Filtrado trilineal" #: builtin/mainmenu/tab_settings.lua msgid "Waving Leaves" -msgstr "Movimiento de Hojas" +msgstr "Movimiento de hojas" #: builtin/mainmenu/tab_settings.lua msgid "Waving Liquids" -msgstr "Movimiento de Líquidos" +msgstr "Movimiento de líquidos" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" -msgstr "Movimiento de Plantas" +msgstr "Movimiento de plantas" #: builtin/mainmenu/tab_settings.lua msgid "Yes" @@ -1687,9 +1687,8 @@ msgid "Toggle noclip" msgstr "Activar noclip" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle pitchmove" -msgstr "Alternar el registro del chat" +msgstr "Alternar inclinación" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" @@ -1721,7 +1720,7 @@ msgstr "Silenciado" #: src/gui/guiVolumeChange.cpp msgid "Sound Volume: " -msgstr "Volúmen del sonido: " +msgstr "Volumen del sonido: " #: src/gui/modalMenu.cpp msgid "Enter " @@ -3720,7 +3719,7 @@ msgstr "Ignora los errores del mundo" #: src/settings_translation_file.cpp msgid "In-Game" -msgstr "Dentro del Juego" +msgstr "Dentro del juego" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." @@ -5772,7 +5771,7 @@ msgstr "Primero de 2 ruidos 3D que juntos definen túneles." #: src/settings_translation_file.cpp msgid "Security" -msgstr "" +msgstr "Seguridad" #: src/settings_translation_file.cpp msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" @@ -6023,7 +6022,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Sound" -msgstr "" +msgstr "Sonido" #: src/settings_translation_file.cpp #, fuzzy From 668d83458360e39f53e6ec857c058579d542d816 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Wed, 19 Feb 2020 14:57:21 +0000 Subject: [PATCH 012/424] Translated using Weblate (French) Currently translated at 92.3% (1189 of 1288 strings) --- po/fr/minetest.po | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/po/fr/minetest.po b/po/fr/minetest.po index c91fb2905..d6a50b6e9 100644 --- a/po/fr/minetest.po +++ b/po/fr/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: French (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-11-13 16:04+0000\n" -"Last-Translator: Julien Maulny \n" +"PO-Revision-Date: 2020-02-19 22:31+0000\n" +"Last-Translator: Hugo Locurcio \n" "Language-Team: French \n" "Language: fr\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 3.11\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -136,9 +136,8 @@ msgid "No modpack description provided." msgstr "Aucune description fournie pour le pack de mods." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No optional dependencies" -msgstr "Pas de dépendances optionnelles" +msgstr "Pas de dépendances facultatives" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" @@ -1686,9 +1685,8 @@ msgid "Toggle noclip" msgstr "Mode sans collision" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle pitchmove" -msgstr "Afficher/retirer le canal de discussion" +msgstr "Activer/désactiver vol vertical" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" From 548efbf16f25aa831b48616fd012b9e5e1963fd3 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Sat, 22 Feb 2020 19:21:12 +0000 Subject: [PATCH 013/424] Translated using Weblate (Lithuanian) Currently translated at 15.2% (196 of 1288 strings) --- po/lt/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/lt/minetest.po b/po/lt/minetest.po index 8a81c9c72..3209a5679 100644 --- a/po/lt/minetest.po +++ b/po/lt/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Lithuanian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-11-10 15:04+0000\n" -"Last-Translator: Krock \n" +"PO-Revision-Date: 2020-02-22 19:27+0000\n" +"Last-Translator: An0n3m0us \n" "Language-Team: Lithuanian \n" "Language: lt\n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > " "19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? " "1 : 2);\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -935,7 +935,7 @@ msgstr "Pateiktas pasaulio kelias neegzistuoja: " #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "yes" +msgstr "no" #: src/client/game.cpp msgid "" From fa9278963b12e89eee6f0e66b58388693734ac47 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Sat, 22 Feb 2020 19:32:51 +0000 Subject: [PATCH 014/424] Translated using Weblate (Arabic) Currently translated at 6.1% (79 of 1288 strings) --- po/ar/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/ar/minetest.po b/po/ar/minetest.po index 6f6b7051f..eebfd298c 100644 --- a/po/ar/minetest.po +++ b/po/ar/minetest.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-01-11 18:26+0000\n" -"Last-Translator: rubenwardy \n" +"PO-Revision-Date: 2020-02-23 20:32+0000\n" +"Last-Translator: An0n3m0us \n" "Language-Team: Arabic \n" "Language: ar\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 3.10.1\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -863,7 +863,7 @@ msgstr "" #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "yes" #: src/client/game.cpp msgid "" From 0ed27ffd379f175aee5a3f319e52866361a3e7af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20=C5=A0amla?= Date: Sun, 23 Feb 2020 23:10:35 +0000 Subject: [PATCH 015/424] Translated using Weblate (Czech) Currently translated at 48.3% (623 of 1288 strings) --- po/cs/minetest.po | 60 ++++++++++++++++++----------------------------- 1 file changed, 23 insertions(+), 37 deletions(-) diff --git a/po/cs/minetest.po b/po/cs/minetest.po index 4c10c7304..621866ac1 100644 --- a/po/cs/minetest.po +++ b/po/cs/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Czech (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-12-11 13:36+0000\n" -"Last-Translator: Luboš Nečas \n" +"PO-Revision-Date: 2020-02-24 23:32+0000\n" +"Last-Translator: Vojtěch Šamla \n" "Language-Team: Czech \n" "Language: cs\n" @@ -12,21 +12,19 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" msgstr "Vzkřísit" #: builtin/client/death_formspec.lua src/client/game.cpp -#, fuzzy msgid "You died" -msgstr "Zemřel jsi." +msgstr "Zemřel jsi" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred in a Lua script:" -msgstr "Nastala chyba v Lua skriptu, což může být např. mod:" +msgstr "Nastala chyba v Lua skriptu:" #: builtin/fstk/ui.lua msgid "An error occurred:" @@ -109,42 +107,36 @@ msgid "Enable modpack" msgstr "Povolit balíček modifikací" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" "Nepodařilo se povolit mod \"$1\" protože obsahuje nepovolené znaky. Povoleny " -"jsou pouze znaky a-z, 0-9." +"jsou pouze znaky [a-z0-9_]." #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Mod:" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No (optional) dependencies" -msgstr "Volitelné závislosti:" +msgstr "Žádné (volitelné) závislosti" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No game description provided." -msgstr "Mod nemá popis" +msgstr "Není k dispozici žádný popis hry." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No hard dependencies" -msgstr "Žádné závislosti." +msgstr "Žádné pevné závislosti" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No modpack description provided." -msgstr "Mod nemá popis" +msgstr "Není k dispozici žádný popis balíčku modifikací." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No optional dependencies" -msgstr "Volitelné závislosti:" +msgstr "Žádné volitelné závislosti" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" @@ -172,9 +164,8 @@ msgid "Back" msgstr "Zpět" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Back to Main Menu" -msgstr "Hlavní nabídka" +msgstr "Zpět do hlavní nabídky" #: builtin/mainmenu/dlg_contentstore.lua msgid "Downloading and installing $1, please wait..." @@ -200,7 +191,7 @@ msgstr "Mody" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "" +msgstr "Nelze načíst žádné balíčky" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" @@ -232,9 +223,8 @@ msgid "Create" msgstr "Vytvořit" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "Stáhněte si z minetest.net podhru, například minetest_game" +msgstr "Stáhněte si z minetest.net hru, například Minetest Game" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" @@ -249,9 +239,8 @@ msgid "Mapgen" msgstr "Generátor mapy" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "No game selected" -msgstr "Změna dohledu" +msgstr "Není vybrána žádná hra" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -267,9 +256,8 @@ msgid "World name" msgstr "Název světa" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "You have no games installed." -msgstr "Nemáte nainstalované žádné podhry." +msgstr "Nemáte nainstalované žádné hry." #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" @@ -282,14 +270,12 @@ msgid "Delete" msgstr "Smazat" #: builtin/mainmenu/dlg_delete_content.lua -#, fuzzy msgid "pkgmgr: failed to delete \"$1\"" -msgstr "Modmgr: Nepodařilo se odstranit \"$1\"" +msgstr "pkgmgr: nepodařilo se odstranit \"$1\"" #: builtin/mainmenu/dlg_delete_content.lua -#, fuzzy msgid "pkgmgr: invalid path \"$1\"" -msgstr "Modmgr: Neplatná cesta k modu \"$1\"" +msgstr "pkgmgr: neplatná cesta \"$1\"" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" @@ -308,15 +294,16 @@ msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" +"Tento balíček modů má uvedené jméno ve svém modpack.conf, které přepíše " +"jakékoliv přejmenování zde." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" msgstr "(bez popisu)" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "2D Noise" -msgstr "Šum jeskyní 2" +msgstr "2D šum" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" @@ -345,7 +332,7 @@ msgstr "Zabezpečení" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Octaves" -msgstr "" +msgstr "Oktávy" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" @@ -377,9 +364,8 @@ msgid "Select directory" msgstr "Vybrat soubor s modem:" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "Select file" -msgstr "Vybrat soubor s modem:" +msgstr "Vybrat soubor" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Show technical names" From 214d99a4d088553ca7b7a5102f290c5957488daf Mon Sep 17 00:00:00 2001 From: Gao Tiesuan Date: Thu, 27 Feb 2020 12:13:24 +0000 Subject: [PATCH 016/424] Translated using Weblate (Esperanto) Currently translated at 92.5% (1192 of 1288 strings) --- po/eo/minetest.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/po/eo/minetest.po b/po/eo/minetest.po index 939c56351..2db4bd71a 100644 --- a/po/eo/minetest.po +++ b/po/eo/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Esperanto (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-12-16 22:21+0000\n" -"Last-Translator: Tirifto \n" +"PO-Revision-Date: 2020-03-01 19:51+0000\n" +"Last-Translator: Gao Tiesuan \n" "Language-Team: Esperanto \n" "Language: eo\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -160,11 +160,11 @@ msgstr "Ĉiuj pakaĵoj" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back" -msgstr "Reen" +msgstr "Reeniri" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" -msgstr "Reen al ĉefmenuo" +msgstr "Reeniri al ĉefmenuo" #: builtin/mainmenu/dlg_contentstore.lua msgid "Downloading and installing $1, please wait..." @@ -527,7 +527,7 @@ msgstr "Enlistigi servilon" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" -msgstr "Asocianta adreso" +msgstr "Asocii adreso" #: builtin/mainmenu/tab_local.lua msgid "Configure" From ad2de3ad955284462fafa71b93a9a7ef35086413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81cs=20Zolt=C3=A1n?= Date: Sat, 29 Feb 2020 16:46:33 +0000 Subject: [PATCH 017/424] Translated using Weblate (Hungarian) Currently translated at 59.5% (767 of 1288 strings) --- po/hu/minetest.po | 88 ++++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 43 deletions(-) diff --git a/po/hu/minetest.po b/po/hu/minetest.po index 4c99afb2f..bf8f4150f 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Hungarian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-02-27 09:32+0000\n" -"Last-Translator: An0n3m0us \n" +"PO-Revision-Date: 2020-03-01 19:51+0000\n" +"Last-Translator: Ács Zoltán \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -37,7 +37,7 @@ msgstr "Főmenü" #: builtin/fstk/ui.lua msgid "Ok" -msgstr "OK" +msgstr "Ok" #: builtin/fstk/ui.lua msgid "Reconnect" @@ -106,7 +106,7 @@ msgstr "Összes engedélyezése" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "Modok engedélyezése" +msgstr "Modcsomag engedélyezése" #: builtin/mainmenu/dlg_config_world.lua msgid "" @@ -127,7 +127,7 @@ msgstr "Választható függőségek:" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr "Nincs elérhető mód leírás." +msgstr "Nincs elérhető játékleírás." #: builtin/mainmenu/dlg_config_world.lua #, fuzzy @@ -136,7 +136,7 @@ msgstr "Nincsenek függőségek." #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "Nincs elérhető mód leírás." +msgstr "Nincs elérhető modcsomag-leírás." #: builtin/mainmenu/dlg_config_world.lua #, fuzzy @@ -200,7 +200,7 @@ msgstr "A csomagok nem nyerhetők vissza" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" -msgstr "Nincs eredmény" +msgstr "Nincs találat" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua @@ -240,6 +240,7 @@ msgid "Game" msgstr "Játék" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +#, fuzzy msgid "Mapgen" msgstr "Térkép-előállítás" @@ -250,7 +251,7 @@ msgstr "Nincs játékmód kiválasztva" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Seed" -msgstr "Seed" +msgstr "Kezdőérték" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." @@ -293,14 +294,14 @@ msgstr "Elfogadás" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "Modpakk átnevezése:" +msgstr "Modcsomag átnevezése:" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" -"Ennek a modpack-nek a neve a a modpack.conf fájlban meghatározott, ami " +"Ennek a modcsomagnak a neve a a modpack.conf fájlban meghatározott, ami " "felülír minden itteni átnevezést." #: builtin/mainmenu/dlg_settings_advanced.lua @@ -309,11 +310,11 @@ msgstr "(Nincs megadva leírás a beállításhoz)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "2D Barlang zaj" +msgstr "2D zaj" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" -msgstr "< Vissza a Beállítások oldalra" +msgstr "< Vissza a Beállításokra" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Browse" @@ -417,7 +418,7 @@ msgstr "abszolút érték" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" -msgstr "Alapértelmezettek" +msgstr "alapértelmezések" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" @@ -437,12 +438,12 @@ msgstr "$1 telepítése meghiúsult ide: $2" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "Mód telepítése: nem található valódi mód név ehhez: $1" +msgstr "Mod telepítése: nem található valódi mod név ehhez: $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" msgstr "" -"Mód telepítése: nem található megfelelő mappanév ehhez a módcsomaghoz: $1" +"Mod telepítése: nem található megfelelő mappanév ehhez a modcsomaghoz: $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" @@ -450,27 +451,27 @@ msgstr "Telepítés: nem támogatott „$1” fájltípus, vagy sérült archív #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" -msgstr "Telepítés: fájl: „$1”" +msgstr "Telepítés: fájl: \"$1\"" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to find a valid mod or modpack" -msgstr "nem valós mod, mod csomag" +msgstr "Nem található érvényes mod, modcsomag" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "$1 telepítése meghiúsult mint textúra csomag" +msgstr "$1 telepítése meghiúsult mint textúracsomag" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" -msgstr "$1 játék telepítése meghiúsult" +msgstr "$1 aljáték telepítése meghiúsult" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a mod as a $1" -msgstr "$1 MOD telepítése meghiúsult" +msgstr "$1 mod telepítése meghiúsult" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a modpack as a $1" -msgstr "$1 mod csomag telepítése meghiúsult" +msgstr "$1 modcsomag telepítése meghiúsult" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" @@ -482,11 +483,11 @@ msgstr "Tartalom" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" -msgstr "Textúrapakk kikapcsolása" +msgstr "Textúracsomag kikapcsolása" #: builtin/mainmenu/tab_content.lua msgid "Information:" -msgstr "információk:" +msgstr "információ:" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" @@ -510,7 +511,7 @@ msgstr "Csomag eltávolítása" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" -msgstr "Textúra pakk használata" +msgstr "Textúracsomag használata" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" @@ -538,7 +539,7 @@ msgstr "Kiszolgáló nyilvánossá tétele" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" -msgstr "Csatolási cím" +msgstr "Cím csatolása" #: builtin/mainmenu/tab_local.lua msgid "Configure" @@ -650,7 +651,7 @@ msgstr "8x" #: builtin/mainmenu/tab_settings.lua msgid "All Settings" -msgstr "Minden beállítás" +msgstr "Összes beállítás" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" @@ -694,7 +695,7 @@ msgstr "Mipmap effekt" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap + Aniso. Filter" -msgstr "Mipmap + Anizotropikus szűrés" +msgstr "Mipmap + Anizotróp szűrés" #: builtin/mainmenu/tab_settings.lua msgid "No" @@ -714,7 +715,7 @@ msgstr "Blokk kiemelés" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" -msgstr "Node körvonalazás" +msgstr "Körvonal" #: builtin/mainmenu/tab_settings.lua msgid "None" @@ -730,7 +731,7 @@ msgstr "Átlátszatlan víz" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Parallax Occlusion" -msgstr "Parallax Occlusion ( dombor textúra )" +msgstr "Parallax Occlusion ( domború textúra )" #: builtin/mainmenu/tab_settings.lua msgid "Particles" @@ -750,11 +751,11 @@ msgstr "Beállítások" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Shaders" -msgstr "Shaderek" +msgstr "Árnyalók" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" -msgstr "Shéderek ( nem elérhetö)" +msgstr "Árnyalók ( nem elérhető)" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" @@ -770,7 +771,7 @@ msgstr "Textúrázás:" #: builtin/mainmenu/tab_settings.lua msgid "To enable shaders the OpenGL driver needs to be used." -msgstr "A shaderek engedélyezéséhez OpenGL driver használata szükséges." +msgstr "Az árnyalók engedélyezéséhez OpenGL driver használata szükséges." #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" @@ -835,7 +836,7 @@ msgstr "Textúrák betöltése…" #: src/client/client.cpp msgid "Rebuilding shaders..." -msgstr "Shaderek újraépítése…" +msgstr "Árnyalók újraépítése…" #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -843,11 +844,11 @@ msgstr "Kapcsolódási hiba (időtúllépés?)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "Nem található vagy nem betölthető a(z) \" játék" +msgstr "Nem található vagy nem betölthető a játék" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "Érvénytelen játékmeghatározás" +msgstr "Érvénytelen játékmeghatározás." #: src/client/clientlauncher.cpp msgid "Main Menu" @@ -867,7 +868,7 @@ msgstr "Válassz egy nevet!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "jelszó file megnyitás hiba " +msgstr "jelszó fájl megnyitás hiba " #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " @@ -919,7 +920,7 @@ msgstr "- Kiszolgáló neve: " #: src/client/game.cpp msgid "Automatic forward disabled" -msgstr "automata elöre kikapcsolva" +msgstr "Automata előre kikapcsolva" #: src/client/game.cpp #, fuzzy @@ -928,23 +929,23 @@ msgstr "automata elöre engedélyezve" #: src/client/game.cpp msgid "Camera update disabled" -msgstr "kamera frissités KI" +msgstr "kamera frissítés kikapcsolva" #: src/client/game.cpp msgid "Camera update enabled" -msgstr "Kamera frissítés BE" +msgstr "Kamera frissítés bekapcsolva" #: src/client/game.cpp msgid "Change Password" -msgstr "Jelszó változtatás" +msgstr "Jelszóváltoztatás" #: src/client/game.cpp msgid "Cinematic mode disabled" -msgstr "Film mód KI" +msgstr "Film mód kikapcsolva" #: src/client/game.cpp msgid "Cinematic mode enabled" -msgstr "Film mód BE" +msgstr "Film mód bekapcsolva" #: src/client/game.cpp msgid "Client side scripting is disabled" @@ -2265,8 +2266,9 @@ msgid "Chat key" msgstr "Csevegés gomb" #: src/settings_translation_file.cpp +#, fuzzy msgid "Chat message count limit" -msgstr "" +msgstr "Chat üzenetek maximális száma" #: src/settings_translation_file.cpp #, fuzzy From facce8b966f4b5d6402d0049323e2256063d3f3a Mon Sep 17 00:00:00 2001 From: abidin toumi Date: Sun, 1 Mar 2020 18:48:55 +0000 Subject: [PATCH 018/424] Translated using Weblate (Arabic) Currently translated at 6.9% (89 of 1288 strings) --- po/ar/minetest.po | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/po/ar/minetest.po b/po/ar/minetest.po index eebfd298c..ada1142bb 100644 --- a/po/ar/minetest.po +++ b/po/ar/minetest.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-02-23 20:32+0000\n" -"Last-Translator: An0n3m0us \n" +"PO-Revision-Date: 2020-03-01 19:51+0000\n" +"Last-Translator: abidin toumi \n" "Language-Team: Arabic \n" "Language: ar\n" @@ -779,7 +779,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Waving Liquids" -msgstr "" +msgstr "سوائل متموجة" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" @@ -787,19 +787,20 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Yes" -msgstr "" +msgstr "نعم" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" msgstr "" #: builtin/mainmenu/tab_simple_main.lua +#, fuzzy msgid "Main" -msgstr "" +msgstr "الرئيسية" #: builtin/mainmenu/tab_simple_main.lua msgid "Start Singleplayer" -msgstr "" +msgstr "إلعب فرديا" #: src/client/client.cpp msgid "Connection timed out." @@ -807,15 +808,15 @@ msgstr "انتهت مهلة الاتصال." #: src/client/client.cpp msgid "Done!" -msgstr "" +msgstr "تم!" #: src/client/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "تحضير العقد" #: src/client/client.cpp msgid "Initializing nodes..." -msgstr "" +msgstr "تحضير العقد..." #: src/client/client.cpp msgid "Loading textures..." @@ -827,19 +828,20 @@ msgstr "" #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" -msgstr "" +msgstr "خطأ في الاتصال (انتهاء المهلة؟)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "" +msgstr "لا يمكن إيجاد أو تحميل لعبة \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." msgstr "" #: src/client/clientlauncher.cpp +#, fuzzy msgid "Main Menu" -msgstr "" +msgstr "القائمة الرئيسية" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." @@ -847,11 +849,11 @@ msgstr "" #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr "إسم اللاعب طويل." #: src/client/clientlauncher.cpp msgid "Please choose a name!" -msgstr "" +msgstr "يرجى اختيار اسم!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " From 02fd884d041e79e86279f434fc5b104f62fc7b5e Mon Sep 17 00:00:00 2001 From: Lucas Burlingham Date: Sun, 1 Mar 2020 19:01:31 +0000 Subject: [PATCH 019/424] Translated using Weblate (French) Currently translated at 93.5% (1205 of 1288 strings) --- po/fr/minetest.po | 192 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 134 insertions(+), 58 deletions(-) diff --git a/po/fr/minetest.po b/po/fr/minetest.po index d6a50b6e9..150a79c66 100644 --- a/po/fr/minetest.po +++ b/po/fr/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: French (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-02-19 22:31+0000\n" -"Last-Translator: Hugo Locurcio \n" +"PO-Revision-Date: 2020-03-03 04:32+0000\n" +"Last-Translator: Lucas Burlingham \n" "Language-Team: French \n" "Language: fr\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.11\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -411,8 +411,9 @@ msgid "defaults" msgstr "par défaut" #: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy msgid "eased" -msgstr "réaliste (easing)" +msgstr "l'aisance" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" @@ -625,7 +626,7 @@ msgstr "Ping" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "Combat activé" +msgstr "JcJ activé" #: builtin/mainmenu/tab_settings.lua msgid "2x" @@ -1040,7 +1041,7 @@ msgstr "La limite de vue a été désactivée" #: src/client/game.cpp msgid "Exit to Menu" -msgstr "Retour au menu principal" +msgstr "Menu Principal" #: src/client/game.cpp msgid "Exit to OS" @@ -1445,7 +1446,7 @@ msgstr "Jouer" #: src/client/keycode.cpp msgid "Print" -msgstr "Imprimer" +msgstr "Capture d'écran" #: src/client/keycode.cpp msgid "Return" @@ -1862,7 +1863,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "" +msgstr "Bruit 3D qui détermine le nombre de donjons par mapchunk." #: src/settings_translation_file.cpp msgid "" @@ -1974,6 +1975,12 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Il modifie la courbe de lumière en lui appliquant une \"correction gamma\".\n" +"Des valeurs plus élevées rendent les niveaux de lumière moyens et inférieurs " +"plus lumineux.\n" +"La valeur \"1.0\" laisse la courbe de lumière intacte.\n" +"Cela n'a d'effet significatif que sur la lumière du jour et les\n" +"la lumière, et elle a très peu d'effet sur la lumière naturelle de la nuit." #: src/settings_translation_file.cpp msgid "Altitude chill" @@ -2134,24 +2141,20 @@ msgid "Block send optimize distance" msgstr "Distance d'optimisation d'envoi des blocs" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "Chemin de la police Monospace" +msgstr "Chemin de la police en gras et en italique" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" msgstr "Chemin de la police Monospace" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "Chemin du fichier de police" +msgstr "Chemin de police audacieux" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" -msgstr "Chemin de la police Monospace" +msgstr "Chemin de police monospace audacieux" #: src/settings_translation_file.cpp msgid "Build inside player" @@ -2166,17 +2169,16 @@ msgid "Bumpmapping" msgstr "Bump mapping" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" "Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" -"Caméra à proximité de la distance plane en nœuds, entre 0 et 0,5\n" -"La plupart des utilisateurs n'auront pas besoin de changer cela.\n" -"Augmenter peut réduire les artefacts sur les GPU les plus faibles.\n" -"0,1 = par défaut, 0,25 = bonne valeur pour les tablettes moins performantes." +"Caméra 'près de la coupure de distance' dans les nœuds, entre 0 et 0,5.\n" +"La plupart des utilisateurs n’auront pas besoin de changer cela.\n" +"L’augmentation peut réduire l’artifacting sur des GPU plus faibles.\n" +"0.1 - Par défaut, 0,25 - Bonne valeur pour les comprimés plus faibles." #: src/settings_translation_file.cpp msgid "Camera smoothing" @@ -2239,6 +2241,9 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Gamme de poussée de courbe de centre de lumière.\n" +"Lorsque 0,0 est le niveau de lumière minimum, et 1,0 est le niveau de " +"lumière maximum." #: src/settings_translation_file.cpp msgid "" @@ -2449,7 +2454,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Controls sinking speed in liquid." -msgstr "" +msgstr "Contrôle la vitesse de descente dans un liquide." #: src/settings_translation_file.cpp msgid "Controls steepness/depth of lake depressions." @@ -2465,6 +2470,10 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"Contrôle la largeur des tunnels, une valeur plus faible crée des tunnels " +"plus large.\n" +"Valeur >= 10.0 désactive complètement la génération de tunnel et évite le " +"calcul intensif de bruit." #: src/settings_translation_file.cpp msgid "Crash message" @@ -2517,8 +2526,7 @@ msgstr "Touche pour diminuer le volume" #: src/settings_translation_file.cpp #, fuzzy msgid "Decrease this to increase liquid resistance to movement." -msgstr "" -"Diminuer cette valeur pour augmenter la résistance du liquide au mouvement." +msgstr "Diminuez ceci pour augmenter la résistance liquide au mouvement." #: src/settings_translation_file.cpp msgid "Dedicated server step" @@ -2604,9 +2612,8 @@ msgid "Defines the base ground level." msgstr "Définit le niveau du sol de base." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the depth of the river channel." -msgstr "Définit le niveau du sol de base." +msgstr "Définit la profondeur du court de la rivière." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." @@ -2615,14 +2622,12 @@ msgstr "" "illimité)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river channel." -msgstr "Définit la structure des canaux fluviaux à grande échelle." +msgstr "Définit la largeur des canaux fluviaux." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river valley." -msgstr "Définit des zones où les arbres ont des pommes." +msgstr "Définit la largeur de la vallée de la rivière." #: src/settings_translation_file.cpp msgid "Defines tree areas and tree density." @@ -2669,13 +2674,13 @@ msgid "Desert noise threshold" msgstr "Limite de bruit pour le désert" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Deserts occur when np_biome exceeds this value.\n" "When the 'snowbiomes' flag is enabled, this is ignored." msgstr "" "Des déserts apparaissent lorsque np_biome dépasse cette valeur.\n" -"Avec le nouveau système de biomes, ce paramètre est ignoré." +"Quand le flag 'snowbiomes' est activé, (avec le nouveau système de biomes), " +"ce paramètre est ignoré." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" @@ -2730,6 +2735,8 @@ msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"Activer la prise en charge IPv6 (pour le client et le serveur).\n" +"Requis pour que les connexions IPv6 fonctionnent." #: src/settings_translation_file.cpp msgid "" @@ -2820,6 +2827,8 @@ msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"Active les vertex buffer objects.\n" +"Cela devrait grandement augmenter les performances graphiques." #: src/settings_translation_file.cpp msgid "" @@ -2830,14 +2839,14 @@ msgstr "" "Par exemple : 0 = pas de mouvement, 1 = normal, 2 = double." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable/disable running an IPv6 server.\n" "Ignored if bind_address is set.\n" "Needs enable_ipv6 to be enabled." msgstr "" "Active/désactive l'usage d'un serveur IPv6.\n" -"Ignoré si bind_address est activé." +"Ignoré si bind_address est activé.\n" +"A besoin de enable_ipv6 pour être activé." #: src/settings_translation_file.cpp msgid "" @@ -2846,6 +2855,11 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"Permet à Hable 'Uncharted 2' de cartographier les tonalités du film.\n" +"Simule la courbe des tons du film photographique, ce qui se rapproche de la\n" +"l'apparition d'images à plage dynamique élevée. Le contraste de milieu de " +"gamme est légèrement\n" +"améliorées, les reflets et les ombres sont progressivement compressés." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." @@ -2895,6 +2909,11 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"Active le système audio.\n" +"S'il est désactivé, cela désactive complètement tous les sons partout et le " +"jeu\n" +"les commandes audio ne fonctionneront pas.\n" +"La modification de ce paramètre nécessite un redémarrage." #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" @@ -2997,7 +3016,7 @@ msgstr "Bruit de profondeur de remplissage" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" -msgstr "Mappage tonal cinématographique" +msgstr "Cartographie des tonalités filmiques" #: src/settings_translation_file.cpp msgid "" @@ -3056,11 +3075,11 @@ msgstr "Brume" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "La police est en gras par défaut" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "La police est en gras par défaut" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3076,15 +3095,15 @@ msgstr "Taille de la police" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "La taille de police par défaut en point (pt)." #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "Taille de police secondaire au point (pt)." #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "Taille de la police monospace en point (pt)." #: src/settings_translation_file.cpp msgid "" @@ -3230,18 +3249,20 @@ msgstr "" "signal contrôle toutes les décorations." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." -msgstr "Rampe de la courbe de lumière au niveau maximum." +msgstr "" +"Gradient de la courbe de lumière au niveau de lumière maximum. \n" +"Contrôle le contraste de la lumière aux niveaux d'éclairage les plus élevés." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." -msgstr "Rampe de la courbe de lumière au niveau minimum." +msgstr "" +"Gradient de la courbe de lumière au niveau de lumière maximum. \n" +"Contrôle le contraste de la lumière aux niveaux d'éclairage les plus bas." #: src/settings_translation_file.cpp msgid "Graphics" @@ -3374,6 +3395,8 @@ msgid "" "Horizontal and vertical acceleration on ground or when climbing,\n" "in nodes per second per second." msgstr "" +"Accélération horizontale et verticale au sol ou en montée,\n" +"en blocs par seconde." #: src/settings_translation_file.cpp msgid "Hotbar next key" @@ -3516,11 +3539,16 @@ msgid "How deep to make rivers." msgstr "Quelle profondeur pour faire des rivières." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "How fast liquid waves will move. Higher = faster.\n" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" +"La vitesse à laquelle les ondes liquides se déplaceront. Plus haut = plus " +"rapide.\n" +"Si la valeur est négative, les ondes liquides seront inversées.\n" +"Nécessite l'activation de liquides ondulants." #: src/settings_translation_file.cpp msgid "" @@ -3668,6 +3696,11 @@ msgid "" "deleting an older debug.txt.1 if it exists.\n" "debug.txt is only moved if this setting is positive." msgstr "" +"Si la taille du fichier debug.txt dépasse le nombre de mégaoctets spécifié " +"dans\n" +"ce paramètre une fois ouvert, le fisher est déplacé vers debug.txt.1 et\n" +"supprimera un ancien debug.txt.1 s'il existe.\n" +"debug.txt n'est déplacé que si ce paramètre est positif." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." @@ -3699,7 +3732,7 @@ msgstr "Touche d'augmentation de volume" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." -msgstr "" +msgstr "Vitesse verticale initiale lors du saut, en blocs par seconde." #: src/settings_translation_file.cpp msgid "" @@ -4612,15 +4645,15 @@ msgstr "Profondeur des grandes caves" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "Grand nombre de grottes maximum" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "Nombre minimum de grandes grottes" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" -msgstr "" +msgstr "Proportion de grandes grottes inondées" #: src/settings_translation_file.cpp msgid "Large chat console key" @@ -4698,14 +4731,12 @@ msgstr "" "- prolixe" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost" -msgstr "Boost intermédiaire de la courbe de lumière" +msgstr "Boost de courbe de lumière" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost center" -msgstr "Centre du boost intermédiaire de la courbe de lumière" +msgstr "Centre de boost de courbe de lumière" #: src/settings_translation_file.cpp #, fuzzy @@ -5041,16 +5072,20 @@ msgstr "Largeur maximale de la barre d'inventaire" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." msgstr "" +"Limite maximale pour le nombre aléatoire de grandes grottes par mapchunk." #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Limite maximale du nombre aléatoire de petites grottes par mapchunk." #: src/settings_translation_file.cpp msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." msgstr "" +"Résistance maximale aux liquides. Contrôle la décélération lorsqu'un joueur " +"entre dans un liquide à\n" +"haute vitesse." #: src/settings_translation_file.cpp msgid "" @@ -5190,12 +5225,16 @@ msgid "Minimap scan height" msgstr "Hauteur de scannage de la mini-carte" #: src/settings_translation_file.cpp +#, fuzzy msgid "Minimum limit of random number of large caves per mapchunk." msgstr "" +"Limite minimale pour le nombre aléatoire de grandes grottes par mapchunk." #: src/settings_translation_file.cpp +#, fuzzy msgid "Minimum limit of random number of small caves per mapchunk." msgstr "" +"Limite minimale pour le nombre aléatoire de petites grottes par mapchunk." #: src/settings_translation_file.cpp msgid "Minimum texture size" @@ -5412,11 +5451,13 @@ msgstr "Liquides opaques" msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." msgstr "" +"Opacité (alpha) de l'ombre derrière la police par défaut, entre 0 et 255." #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." msgstr "" +"Opacité (alpha) de l'ombre derrière la police secondaire, entre 0 et 255." #: src/settings_translation_file.cpp msgid "" @@ -5467,6 +5508,12 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" +"Chemin de la police de repli.\n" +"Si le paramètre \"freetype\" est activé : doit être une police TrueType.\n" +"Si le paramètre \"freetype\" est désactivé : doit être une police de " +"vecteurs bitmap ou XML.\n" +"Cette police sera utilisée pour certaines langues ou si la police par défaut " +"n’est pas disponible." #: src/settings_translation_file.cpp msgid "Path to save screenshots at." @@ -5493,14 +5540,26 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "The fallback font will be used if the font cannot be loaded." msgstr "" +"Chemin vers la police par défaut.\n" +"Si le paramètre \"freetype\" est activé : doit être une police TrueType.\n" +"Si le paramètre \"freetype\" est désactivé : doit être une police de " +"vecteurs bitmap ou XML.\n" +"La police de rentrée sera utilisée si la police ne peut pas être chargée." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Path to the monospace font.\n" "If “freetype” setting is enabled: Must be a TrueType font.\n" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "This font is used for e.g. the console and profiler screen." msgstr "" +"Chemin vers la police monospace.\n" +"Si le paramètre \"freetype\" est activé : doit être une police TrueType.\n" +"Si le paramètre \"freetype\" est désactivé : doit être une police de " +"vecteurs bitmap ou XML.\n" +"Cette police est utilisée pour par exemple la console et l’écran du " +"profileur." #: src/settings_translation_file.cpp msgid "Pause on lost window focus" @@ -5590,7 +5649,7 @@ msgstr "Profilage" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." -msgstr "" +msgstr "Proportion de grandes grottes qui contiennent du liquide." #: src/settings_translation_file.cpp msgid "" @@ -6048,11 +6107,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "" +msgstr "Nombre maximum de petites grottes" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "" +msgstr "Nombre maximum de petites grottes" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." @@ -6095,7 +6154,7 @@ msgstr "Vitesse d'accroupissement" #: src/settings_translation_file.cpp msgid "Sneaking speed, in nodes per second." -msgstr "" +msgstr "Vitesse furtive, en blocs par seconde." #: src/settings_translation_file.cpp msgid "Sound" @@ -6155,11 +6214,15 @@ msgid "Strength of generated normalmaps." msgstr "Force des normalmaps autogénérés." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Strength of light curve boost.\n" "The 3 'boost' parameters define a range of the light\n" "curve that is boosted in brightness." msgstr "" +"Force de la courbe de lumière boost.\n" +"Les 3 paramètres 'boost' définissent une gamme de la lumière\n" +"courbe qui est stimulée dans la luminosité." #: src/settings_translation_file.cpp msgid "Strength of parallax." @@ -6289,6 +6352,11 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" +"La hauteur maximale de la surface des liquides ondulants.\n" +"4.0 - La hauteur des vagues est de deux nœuds.\n" +"0.0 - La vague ne bouge pas du tout.\n" +"Par défaut est de 1,0 (1/2 nœud).\n" +"Nécessite d’activer les liquides ondulants." #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -6617,7 +6685,7 @@ msgstr "Contrôle l'élévation/hauteur des falaises." #: src/settings_translation_file.cpp msgid "Vertical climbing speed, in nodes per second." -msgstr "" +msgstr "Vitesse d’escalade verticale, en nœuds par seconde." #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." @@ -6684,7 +6752,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Walking and flying speed, in nodes per second." -msgstr "" +msgstr "Vitesse de marche et de vol, en nœuds par seconde." #: src/settings_translation_file.cpp msgid "Walking speed" @@ -6693,6 +6761,7 @@ msgstr "Vitesse de marche" #: src/settings_translation_file.cpp msgid "Walking, flying and climbing speed in fast mode, in nodes per second." msgstr "" +"Vitesse de marche, de vol et de montée en mode rapide, en nœuds par seconde." #: src/settings_translation_file.cpp msgid "Water level" @@ -6824,12 +6893,19 @@ msgid "Whether to fog out the end of the visible area." msgstr "Détermine la visibilité de la brume au bout de l'aire visible." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Whether to mute sounds. You can unmute sounds at any time, unless the\n" "sound system is disabled (enable_sound=false).\n" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" +"S'il faut mettre les sons en sourdine. Vous pouvez désactiver les sons à " +"tout moment, sauf si le\n" +"le système de sonorisation est désactivé (enable_sound=false).\n" +"Dans le jeu, vous pouvez passer en mode silencieux avec la touche de mise en " +"sourdine ou en utilisant la\n" +"menu pause." #: src/settings_translation_file.cpp msgid "" From 316f1e028d6788df9002e574c6b3af75d4ccea9d Mon Sep 17 00:00:00 2001 From: Gao Tiesuan Date: Thu, 27 Feb 2020 12:08:53 +0000 Subject: [PATCH 020/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 86.8% (1118 of 1288 strings) --- po/zh_CN/minetest.po | 1419 ++++++++++++++++++++++++++---------------- 1 file changed, 877 insertions(+), 542 deletions(-) diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index 5d3c2a95b..1abd86f7f 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Chinese (Simplified) (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-01-16 05:21+0000\n" -"Last-Translator: IFRFSX <1079092922@qq.com>\n" +"PO-Revision-Date: 2020-03-06 05:33+0000\n" +"Last-Translator: Gao Tiesuan \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -86,7 +86,7 @@ msgstr "取消" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Dependencies:" -msgstr "依赖:" +msgstr "依赖项:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" @@ -116,7 +116,7 @@ msgstr "Mod:" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" -msgstr "无(可选)依赖项:" +msgstr "无(可选)依赖项" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." @@ -124,19 +124,19 @@ msgstr "未提供游戏描述。" #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" -msgstr "无依赖项." +msgstr "无依赖项" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "未提供mod 包描述。" +msgstr "未提供 mod 包描述。" #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" -msgstr "无可选依赖项:" +msgstr "无可选依赖项" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "可选依赖:" +msgstr "可选依赖项:" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp @@ -153,7 +153,7 @@ msgstr "启用" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" -msgstr "全部包" +msgstr "所有包" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back" @@ -174,7 +174,7 @@ msgstr "下载 $1 失败" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Games" -msgstr "游戏" +msgstr "子游戏" #: builtin/mainmenu/dlg_contentstore.lua msgid "Install" @@ -245,7 +245,7 @@ msgstr "种子" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." -msgstr "警告: 最小化开发测试是为开发者提供。" +msgstr "警告: 最小化开发测试为开发者提供。" #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -257,7 +257,7 @@ msgstr "你没有安装任何子游戏。" #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "你确认要删除“$1”?" +msgstr "你确认要删除“$1”吗?" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua @@ -271,7 +271,7 @@ msgstr "pkgmgr:无法删除“$1”" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" -msgstr "MOD 管理器:MOD 路径 “$1” 无效" +msgstr "pkgmgr:MOD 路径 “$1” 无效" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" @@ -298,7 +298,7 @@ msgstr "(没有关于此设置的信息)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "2D 降噪" +msgstr "2D 噪声" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" @@ -310,15 +310,15 @@ msgstr "浏览" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Disabled" -msgstr "已禁用" +msgstr "禁用" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Edit" -msgstr "设置" +msgstr "编辑" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Enabled" -msgstr "已启用" +msgstr "启用" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Lacunarity" @@ -333,21 +333,20 @@ msgid "Offset" msgstr "补偿" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "Persistance" -msgstr "碰撞箱" +msgstr "持续性" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." -msgstr "请输入一个整数类型." +msgstr "请输入一个整数类型。" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid number." -msgstr "请输入一个合法的数字." +msgstr "请输入一个合法的数字。" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Restore Default" -msgstr "回复初始设置" +msgstr "恢复初始设置" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" @@ -363,7 +362,7 @@ msgstr "选择文件" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Show technical names" -msgstr "显示高级设置" +msgstr "显示高级名称" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must be at least $1." @@ -415,7 +414,7 @@ msgstr "$1 已启用" #: builtin/mainmenu/pkgmgr.lua msgid "$1 mods" -msgstr "$1 模组" +msgstr "$1 mod" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" @@ -423,23 +422,23 @@ msgstr "安装 $1 到 $2 失败" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "安装MOD:无法找到$1的真实MOD名称" +msgstr "安装mod:无法找到$1的真实mod名称" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" -msgstr "安装MOD:无法找到MOD包$1的合适文件夹名" +msgstr "安装mod:无法找到mod包$1的合适文件夹名" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" -msgstr "安装MOD:“$1“为不支持的文件类型或已损坏" +msgstr "安装:“$1“为不支持的文件类型或已损坏" #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" -msgstr "安装MOD:文件:”$1“" +msgstr "安装:文件:”$1“" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to find a valid mod or modpack" -msgstr "安装MOD:无法为MOD包$1找到合适的文件夹名" +msgstr "无法找到mod或mod包" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" @@ -447,7 +446,7 @@ msgstr "无法将$1安装为材质包" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" -msgstr "无法将$1安装为游戏包" +msgstr "无法将$1安装为子游戏" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a mod as a $1" @@ -466,13 +465,12 @@ msgid "Content" msgstr "内容" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Disable Texture Pack" -msgstr "禁用纹理包" +msgstr "禁用材质包" #: builtin/mainmenu/tab_content.lua msgid "Information:" -msgstr "MOD信息:" +msgstr "信息:" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" @@ -480,19 +478,19 @@ msgstr "已安装包:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "无依赖关系." +msgstr "无依赖项。" #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "该MOD没有描述信息" +msgstr "该包无描述信息" #: builtin/mainmenu/tab_content.lua msgid "Rename" -msgstr "改名" +msgstr "重命名" #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" -msgstr "删除选中的MOD" +msgstr "删除包" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" @@ -520,7 +518,7 @@ msgstr "前核心开发者" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" -msgstr "发布服务器" +msgstr "公开服务器" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" @@ -536,7 +534,7 @@ msgstr "创造模式" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Enable Damage" -msgstr "开启伤害风险" +msgstr "开启伤害" #: builtin/mainmenu/tab_local.lua msgid "Host Game" @@ -548,7 +546,7 @@ msgstr "建立服务器" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" -msgstr "名字/密码" +msgstr "用户名/密码" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -592,7 +590,7 @@ msgstr "创造模式" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Damage enabled" -msgstr "启用伤害" +msgstr "伤害已启用" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Del. Favorite" @@ -612,7 +610,7 @@ msgstr "用户名/密码" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Ping" -msgstr "检测" +msgstr "应答速度" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" @@ -644,7 +642,7 @@ msgstr "抗锯齿:" #: builtin/mainmenu/tab_settings.lua msgid "Are you sure to reset your singleplayer world?" -msgstr "你确定要重置您的单人世界吗?" +msgstr "你确定要重置你的单人世界吗?" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" @@ -664,15 +662,15 @@ msgstr "更改键位设置" #: builtin/mainmenu/tab_settings.lua msgid "Connected Glass" -msgstr "连接的玻璃" +msgstr "连通玻璃" #: builtin/mainmenu/tab_settings.lua msgid "Fancy Leaves" -msgstr "华丽的树叶" +msgstr "华丽树叶" #: builtin/mainmenu/tab_settings.lua msgid "Generate Normal Maps" -msgstr "生成普通地图" +msgstr "生成法线贴图" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap" @@ -680,7 +678,7 @@ msgstr "Mip 贴图" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap + Aniso. Filter" -msgstr "Mip 贴图 + Aniso 过滤" +msgstr "Mip 贴图 + 各向异性过滤" #: builtin/mainmenu/tab_settings.lua msgid "No" @@ -696,7 +694,7 @@ msgstr "无 Mip 贴图" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" -msgstr "节点高亮" +msgstr "方块高亮" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" @@ -708,15 +706,15 @@ msgstr "无" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Leaves" -msgstr "不透明的树叶" +msgstr "不透明树叶" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Water" -msgstr "不透明的水" +msgstr "不透明水" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Parallax Occlusion" -msgstr "视差贴图" +msgstr "视差遮蔽" #: builtin/mainmenu/tab_settings.lua msgid "Particles" @@ -728,7 +726,7 @@ msgstr "重置单人世界" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" -msgstr "截图:" +msgstr "屏幕:" #: builtin/mainmenu/tab_settings.lua msgid "Settings" @@ -744,7 +742,7 @@ msgstr "着色器 (不可用)" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" -msgstr "简单的树叶" +msgstr "简单树叶" #: builtin/mainmenu/tab_settings.lua msgid "Smooth Lighting" @@ -772,7 +770,7 @@ msgstr "三线性过滤" #: builtin/mainmenu/tab_settings.lua msgid "Waving Leaves" -msgstr "飘动的树叶" +msgstr "飘动树叶" #: builtin/mainmenu/tab_settings.lua msgid "Waving Liquids" @@ -780,7 +778,7 @@ msgstr "摇动流体" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" -msgstr "摇摆的植物" +msgstr "摇摆植物" #: builtin/mainmenu/tab_settings.lua msgid "Yes" @@ -788,11 +786,11 @@ msgstr "是" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" -msgstr "配置 MOD" +msgstr "配置 mod" #: builtin/mainmenu/tab_simple_main.lua msgid "Main" -msgstr "主要" +msgstr "主菜单" #: builtin/mainmenu/tab_simple_main.lua msgid "Start Singleplayer" @@ -808,11 +806,11 @@ msgstr "完成!" #: src/client/client.cpp msgid "Initializing nodes" -msgstr "初始化节点中" +msgstr "初始化方块中" #: src/client/client.cpp msgid "Initializing nodes..." -msgstr "初始化节点..." +msgstr "初始化方块..." #: src/client/client.cpp msgid "Loading textures..." @@ -820,7 +818,7 @@ msgstr "载入材质..." #: src/client/client.cpp msgid "Rebuilding shaders..." -msgstr "重建渲染器..." +msgstr "重建着色器..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -832,7 +830,7 @@ msgstr "无法找到或者载入游戏 \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "非法游戏模式规格。" +msgstr "非法游戏信息。" #: src/client/clientlauncher.cpp msgid "Main Menu" @@ -840,15 +838,15 @@ msgstr "主菜单" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "没有选择世界或提供地址。未执行操作。" +msgstr "没有选择世界或提供地址。无可用操作。" #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "玩家名称太长了。" +msgstr "玩家名称过长。" #: src/client/clientlauncher.cpp msgid "Please choose a name!" -msgstr "请选择游戏!" +msgstr "请选择名称!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " @@ -872,7 +870,7 @@ msgstr "" #: src/client/game.cpp msgid "- Address: " -msgstr "-绑定地址: " +msgstr "- 地址: " #: src/client/game.cpp msgid "- Creative Mode: " @@ -896,7 +894,7 @@ msgstr "- 公共服务器: " #: src/client/game.cpp msgid "- PvP: " -msgstr "- 多人: " +msgstr "- 玩家对战: " #: src/client/game.cpp msgid "- Server Name: " @@ -904,19 +902,19 @@ msgstr "- 服务器名称: " #: src/client/game.cpp msgid "Automatic forward disabled" -msgstr "自动转发已禁用" +msgstr "自动前进已禁用" #: src/client/game.cpp msgid "Automatic forward enabled" -msgstr "自动转发已启用" +msgstr "自动前进已启用" #: src/client/game.cpp msgid "Camera update disabled" -msgstr "已禁用相机更新" +msgstr "已禁用镜头更新" #: src/client/game.cpp msgid "Camera update enabled" -msgstr "镜头更新已启用" +msgstr "已启用镜头更新" #: src/client/game.cpp msgid "Change Password" @@ -967,8 +965,8 @@ msgstr "" "- %s:向右移动\n" "- %s:跳/爬\n" "- %s:潜行/向下\n" -"- %s:丢物品\n" -"- %s:物品栏\n" +"- %s:丢弃物品\n" +"- %s:物品清单\n" "- 鼠标:转身/环顾\n" "- 鼠标左键: 挖/打\n" "- 鼠标右键: 放/使用\n" @@ -985,7 +983,7 @@ msgstr "建立服务器...." #: src/client/game.cpp msgid "Debug info and profiler graph hidden" -msgstr "隐藏的调试信息和 Profiler 图" +msgstr "隐藏的调试信息和性能分析图" #: src/client/game.cpp msgid "Debug info shown" @@ -993,7 +991,7 @@ msgstr "调试信息切换键" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" -msgstr "隐藏调试信息,Profiler 图,和线框" +msgstr "隐藏调试信息,性能分析图,和线框" #: src/client/game.cpp msgid "" @@ -1041,7 +1039,7 @@ msgstr "退出至操作系统" #: src/client/game.cpp msgid "Fast mode disabled" -msgstr "已禁用快速模式" +msgstr "快速模式已禁用" #: src/client/game.cpp msgid "Fast mode enabled" @@ -1049,27 +1047,27 @@ msgstr "快速移动模式已启用" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "快速模式已启用(注:无 'fast' 特权)" +msgstr "快速模式已启用(注:无 'fast' 权限)" #: src/client/game.cpp msgid "Fly mode disabled" -msgstr "关闭飞行模式" +msgstr "飞行模式已禁用" #: src/client/game.cpp msgid "Fly mode enabled" -msgstr "启用飞行模式" +msgstr "飞行模式已启用" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "启用飞行模式(无飞行权限)" +msgstr "飞行模式已启用(注:无 'fly' 权限)" #: src/client/game.cpp msgid "Fog disabled" -msgstr "禁用雾气" +msgstr "雾气已禁用" #: src/client/game.cpp msgid "Fog enabled" -msgstr "启用雾气" +msgstr "雾气已启用" #: src/client/game.cpp msgid "Game info:" @@ -1101,7 +1099,7 @@ msgstr "MiB/s" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "小地图被当前游戏或者 mod 禁用" +msgstr "小地图被当前子游戏或者 mod 禁用" #: src/client/game.cpp msgid "Minimap hidden" @@ -1109,39 +1107,39 @@ msgstr "小地图已隐藏" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" -msgstr "雷达小地图,放大一倍" +msgstr "雷达小地图,放大至一倍" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x2" -msgstr "雷达小地图,放大一倍" +msgstr "雷达小地图,放大至两倍" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x4" -msgstr "雷达模式的小地图, 放大4倍" +msgstr "雷达小地图, 放大至四倍" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x1" -msgstr "地表模式的小地图, 放大1倍" +msgstr "地表模式小地图, 放大至一倍" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x2" -msgstr "地表模式的小地图, 放大2倍" +msgstr "地表模式小地图, 放大至两倍" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x4" -msgstr "地表模式的小地图, 放大4倍" +msgstr "地表模式小地图, 放大至四倍" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "Noclip 模式已禁用" +msgstr "穿墙模式已禁用" #: src/client/game.cpp msgid "Noclip mode enabled" -msgstr "穿墙伤害已启用" +msgstr "穿墙模式已启用" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "穿墙模式已启用 (注意:你没有穿墙权限)" +msgstr "穿墙模式已启用 (注:无 'noclip' 权限)" #: src/client/game.cpp msgid "Node definitions..." @@ -1157,15 +1155,15 @@ msgstr "开" #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "Pitch移动模式已禁用" +msgstr "仰角移动模式已禁用" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "Pitch移动模式已禁用" +msgstr "仰角移动模式已禁用" #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "显示Profiler图" +msgstr "显示性能分析图" #: src/client/game.cpp msgid "Remote server" @@ -1177,7 +1175,7 @@ msgstr "正在解析地址..." #: src/client/game.cpp msgid "Shutting down..." -msgstr "关闭..." +msgstr "关闭中..." #: src/client/game.cpp msgid "Singleplayer" @@ -1208,7 +1206,7 @@ msgstr "视野范围已达到最大:%d" #: src/client/game.cpp #, c-format msgid "Viewing range is at minimum: %d" -msgstr "视野已达到最小:%d" +msgstr "视野范围已达到最小:%d" #: src/client/game.cpp #, c-format @@ -1217,11 +1215,11 @@ msgstr "音量改到%d1%%2" #: src/client/game.cpp msgid "Wireframe shown" -msgstr "显示线框" +msgstr "线框已显示" #: src/client/game.cpp msgid "Zoom currently disabled by game or mod" -msgstr "缩放被当前游戏或 mod 禁用" +msgstr "缩放被当前子游戏或 mod 禁用" #: src/client/game.cpp src/gui/modalMenu.cpp msgid "ok" @@ -1233,24 +1231,24 @@ msgstr "聊天已隐藏" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "显示聊天" +msgstr "聊天已显示" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "隐藏 HUD" +msgstr "HUD 已隐藏" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "显示 HUD" +msgstr "HUD 已显示" #: src/client/gameui.cpp msgid "Profiler hidden" -msgstr "隐藏分析器" +msgstr "性能分析图已隐藏" #: src/client/gameui.cpp #, c-format msgid "Profiler shown (page %d of %d)" -msgstr "显示Profiler (第 %d 页 共 %d 页)" +msgstr "性能分析图已显示 (第 %d 页 共 %d 页)" #: src/client/keycode.cpp msgid "Apps" @@ -1370,7 +1368,7 @@ msgstr "小键盘-" #: src/client/keycode.cpp msgid "Numpad ." -msgstr "小键盘*。" +msgstr "小键盘." #: src/client/keycode.cpp msgid "Numpad /" @@ -1537,14 +1535,12 @@ msgid "Proceed" msgstr "继续" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "\"Special\" = climb down" -msgstr "“使用” = 向下爬" +msgstr "“特殊” = 向下爬" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Autoforward" -msgstr "向前" +msgstr "自动向前" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" @@ -1584,7 +1580,7 @@ msgstr "连按两次“跳”切换飞行模式" #: src/gui/guiKeyChangeMenu.cpp msgid "Drop" -msgstr "丢出" +msgstr "丢弃" #: src/gui/guiKeyChangeMenu.cpp msgid "Forward" @@ -1628,7 +1624,7 @@ msgstr "下一个" #: src/gui/guiKeyChangeMenu.cpp msgid "Prev. item" -msgstr "上一个" +msgstr "上一个物品" #: src/gui/guiKeyChangeMenu.cpp msgid "Range select" @@ -1644,39 +1640,39 @@ msgstr "潜行" #: src/gui/guiKeyChangeMenu.cpp msgid "Special" -msgstr "特别" +msgstr "特殊" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" -msgstr "切换HUD" +msgstr "开关HUD" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle chat log" -msgstr "聊天记录开关" +msgstr "开关聊天记录" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fast" -msgstr "切换快速移动模式" +msgstr "开关快速移动模式" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "切换飞行模式" +msgstr "开关飞行模式" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fog" -msgstr "切换快速移动" +msgstr "开关雾" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle minimap" -msgstr "切换小地图" +msgstr "开关小地图" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "切换穿墙模式" +msgstr "开关穿墙模式" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle pitchmove" -msgstr "切换快速移动模式" +msgstr "开关仰角移动模式" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" @@ -1727,17 +1723,15 @@ msgstr "" "如果禁用,虚拟操纵杆将居中至第一次触摸的位置。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(Android) Use virtual joystick to trigger \"aux\" button.\n" "If enabled, virtual joystick will also tap \"aux\" button when out of main " "circle." msgstr "" -"(安卓)使用虚拟操纵杆触发\"aux\"按钮。 如果启用,虚拟操纵杆在主圆圈外会点击" -"\"aux\"按钮。" +"(安卓)使用虚拟操纵杆触发\"aux\"按钮。\n" +"如果启用,虚拟操纵杆在主圆圈外会点击\"aux\"按钮。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1748,10 +1742,14 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" -"在「比例尺」中分形的 (X,Y,Z) 偏移。\n" -"用于移动适合的低地生成区域靠近 (0, 0)。\n" -"预设值适合曼德尔布罗特集合,若要用于朱利亚集合则必须修改。\n" -"范围大约在 -2 至 2 间。乘以节点的偏移值。" +"分形图形距世界中心的(X, Y, Z)偏移\n" +"以『比例』为单位。\n" +"可用于移动给定点至(0, 0)以创建生成\n" +"点,或通过增加『比例』来放大给定点。\n" +"默认值适合曼德尔布罗特集合,若要用于其\n" +"他情形则可能需要修改。\n" +"范围大约在 -2 至 2 间。\n" +"乘以『比例』。" #: src/settings_translation_file.cpp msgid "" @@ -1763,6 +1761,13 @@ msgid "" "Default is for a vertically-squashed shape suitable for\n" "an island, set all 3 numbers equal for the raw shape." msgstr "" +"节点的分形的(X,Y,Z)比例。\n" +"实际分形大小将是2到3倍。\n" +"这些数字可以做得非常大,\n" +"分形不一定要适合世界。\n" +"增加这些以“放大”到分形的细节。\n" +"默认值为适合\n" +"孤岛的垂直压扁形状,将所有3个数字设置为相等以呈现原始形状。" #: src/settings_translation_file.cpp msgid "" @@ -1774,31 +1779,31 @@ msgstr "" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of ridged mountains." -msgstr "" +msgstr "控制山脊形状/大小的2D噪声。" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." -msgstr "" +msgstr "控制丘陵形状/大小的2D噪声。" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." -msgstr "" +msgstr "控制平缓山形状/大小的2D噪声。" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." -msgstr "" +msgstr "控制山脊区域的大小/频率的2D噪声。" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "" +msgstr "控制丘陵的大小/频率的2D噪声。" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of step mountain ranges." -msgstr "" +msgstr "控制平缓山的大小/频率的2D噪声。" #: src/settings_translation_file.cpp msgid "2D noise that locates the river valleys and channels." -msgstr "" +msgstr "确定河谷及河道位置的2D噪声。" #: src/settings_translation_file.cpp msgid "3D clouds" @@ -1810,33 +1815,33 @@ msgstr "3D 模式" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." -msgstr "三维噪音定义巨洞." +msgstr "定义巨型洞穴的3D噪声。" #: src/settings_translation_file.cpp msgid "" "3D noise defining mountain structure and height.\n" "Also defines structure of floatland mountain terrain." -msgstr "三维噪音定义山脉结构和高度.也定义冲积平原山丘地形." +msgstr "" +"定义山丘结构和高度的3D噪声。\n" +"也定义悬空岛山丘地形。" #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." -msgstr "三维噪音定义河谷壁的结构." +msgstr "定义河谷壁的结构的3D噪声。" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D noise defining terrain." -msgstr "三维噪音定义巨洞." +msgstr "定义地形的3D噪声。" #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." -msgstr "" +msgstr "用于突出崖、悬崖等的3D噪声。通常变化小。" #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "" +msgstr "确定每个地图块的地窖数量的3D噪声。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" @@ -1851,12 +1856,14 @@ msgid "" msgstr "" "3D 支持。\n" "目前已支持:\n" -"- 无: 无 3D输出。\n" -"- 浮雕:青红/品红色彩色 3D。\n" -"- 交错:基于偏振屏的奇偶行支持。\n" -"- 顶底:上下分屏。\n" -"- 并列:左右分屏。\n" -"- 翻页:基于 3D 的四重缓冲。" +"- 无(none): 无 3D 输出。\n" +"- 立体影片(anaglyph):青红/品红色彩色 3D。\n" +"- 交错(interlaced):基于奇偶行的偏振屏支持。\n" +"- 顶底(topbottom):上下分屏。\n" +"- 并列(sidebyside):左右分屏。\n" +"- 内斜视(crossview):内斜视左右分屏3D。\n" +"- 翻页(pageflip):基于四重缓冲的 3D。\n" +"注意交错模式需要启用着色器。" #: src/settings_translation_file.cpp msgid "" @@ -1868,16 +1875,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "当服务器挂掉的时候,发送给所有客户端的信息。" +msgstr "当服务器崩溃的时候,发送给所有客户端的信息。" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." msgstr "当关闭服务器时,发送给所有客户端的信息。" #: src/settings_translation_file.cpp -#, fuzzy msgid "ABM interval" -msgstr "地图保存间隔" +msgstr "ABM间隔" #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" @@ -1889,20 +1895,19 @@ msgstr "空中加速" #: src/settings_translation_file.cpp msgid "Acceleration of gravity, in nodes per second per second." -msgstr "" +msgstr "重力加速度,单位为方块每秒二次方。" #: src/settings_translation_file.cpp msgid "Active Block Modifiers" -msgstr "活动区块修改器" +msgstr "活动方块修改器" #: src/settings_translation_file.cpp -#, fuzzy msgid "Active block management interval" -msgstr "活动区块管理间隔" +msgstr "活动方块管理间隔" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "活动块范围" +msgstr "活动方块范围" #: src/settings_translation_file.cpp msgid "Active object send range" @@ -1920,7 +1925,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Adds particles when digging a node." -msgstr "挖块时添加粒子." +msgstr "挖方块时添加粒子。" #: src/settings_translation_file.cpp msgid "" @@ -1930,7 +1935,7 @@ msgstr "为支持4K等屏幕,调节像素点密度(非 X11/Android 环境才 #: src/settings_translation_file.cpp msgid "Advanced" -msgstr "高级联机设置" +msgstr "高级" #: src/settings_translation_file.cpp msgid "" @@ -1940,11 +1945,15 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"通过“gamma修正”调整亮度曲线。\n" +"更大的gamma值使得低亮度区域更亮。\n" +"值为'1.0'时亮度曲线。\n" +"这只在白天和人工光源下有较大作用,\n" +"在夜晚的自然光照下作用很小。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Altitude chill" -msgstr "海拔寒冷" +msgstr "高地寒冷" #: src/settings_translation_file.cpp msgid "Always fly and fast" @@ -1952,16 +1961,15 @@ msgstr "保持高速飞行" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "环境闭塞伽马" +msgstr "环境遮蔽gamma" #: src/settings_translation_file.cpp msgid "Amount of messages a player may send per 10 seconds." -msgstr "" +msgstr "每10秒发送给玩家的消息量。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Amplifies the valleys." -msgstr "放大山谷" +msgstr "放大山谷。" #: src/settings_translation_file.cpp msgid "Anisotropic filtering" @@ -1969,20 +1977,19 @@ msgstr "各向异性过滤" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "发布服务器" +msgstr "公开服务器" #: src/settings_translation_file.cpp -#, fuzzy msgid "Announce to this serverlist." -msgstr "发布服务器" +msgstr "向服务器表公开服务器。" #: src/settings_translation_file.cpp msgid "Append item name" -msgstr "" +msgstr "添加物品名称" #: src/settings_translation_file.cpp msgid "Append item name to tooltip." -msgstr "" +msgstr "添加物品名称至工具栏。" #: src/settings_translation_file.cpp msgid "Apple trees noise" @@ -1990,20 +1997,21 @@ msgstr "苹果树噪音" #: src/settings_translation_file.cpp msgid "Arm inertia" -msgstr "" +msgstr "手臂惯性" #: src/settings_translation_file.cpp msgid "" "Arm inertia, gives a more realistic movement of\n" "the arm when the camera moves." -msgstr "手臂惯性,使摄像机移动时手臂更真实地运动。" +msgstr "" +"手臂惯性,使摄像机移动时手臂时\n" +"更真实地运动。" #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "崩溃后询问重新连接" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "At this distance the server will aggressively optimize which blocks are sent " "to\n" @@ -2017,23 +2025,24 @@ msgid "" "optimization.\n" "Stated in mapblocks (16 nodes)." msgstr "" -"在此距离下, 服务器将积极优化将哪些块发送到客户端。\n" -"小值可能会极大地提高性能, 这会牺牲可见的渲染故障。\n" -"(有些街区将不会在水和洞穴中, 有时也会在陆地上呈现)\n" -"将其设置为大于 max_block_send_distance 的值将禁用此优化。\n" -"声明在 mapblocks (16 个节点)" +"在此距离下,服务器将积极优化将哪些块发送到客户端。\n" +"小数值可能会极大地提高性能,\n" +"却会造成可见的渲染故障。\n" +"(有些方块将不会在水和洞穴中呈现,\n" +"有时在陆地上也不会呈现)\n" +"将其设置为大于 max_block_send_distance 的值\n" +"将禁用此优化。\n" +"在 mapblocks中声明(16 个节点)。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Automatic forward key" -msgstr "前进键" +msgstr "自动前进键" #: src/settings_translation_file.cpp msgid "Automatically jump up single-node obstacles." msgstr "自动跳跃一方块高度。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Automatically report to the serverlist." msgstr "自动报告到服务器列表。" @@ -2050,21 +2059,18 @@ msgid "Backward key" msgstr "后退键" #: src/settings_translation_file.cpp -#, fuzzy msgid "Base ground level" -msgstr "地图生成器平地级别" +msgstr "平地级别" #: src/settings_translation_file.cpp -#, fuzzy msgid "Base terrain height." -msgstr "基础地形高度" +msgstr "基础地形高度。" #: src/settings_translation_file.cpp msgid "Basic" msgstr "基础" #: src/settings_translation_file.cpp -#, fuzzy msgid "Basic privileges" msgstr "基本权限" @@ -2086,39 +2092,35 @@ msgstr "绑定地址" #: src/settings_translation_file.cpp msgid "Biome API temperature and humidity noise parameters" -msgstr "生物群落 API 温度和湿度噪声参数" +msgstr "群落 API 温度和湿度噪声参数" #: src/settings_translation_file.cpp msgid "Biome noise" -msgstr "生态噪音" +msgstr "生态噪声" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "全屏模式中的位/像素(又称色彩深度)。" +msgstr "全屏模式中的位每像素(又称色彩深度)。" #: src/settings_translation_file.cpp msgid "Block send optimize distance" -msgstr "" +msgstr "最优方块发送距离" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "等宽字体路径" +msgstr "粗斜体字体路径" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" -msgstr "等宽字体路径" +msgstr "粗斜体等宽字体路径" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "字体路径" +msgstr "粗体字体路径" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" -msgstr "等宽字体路径" +msgstr "粗体等宽字体路径" #: src/settings_translation_file.cpp msgid "Build inside player" @@ -2139,6 +2141,10 @@ msgid "" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" +"相机在节点附近的“剪切平面附近”距离,介于0到0.5之间。\n" +"大多数用户不需要更改此设置。\n" +"增加可以减少较弱GPU上的伪影。\n" +"0.1 =默认值,0.25 =对于较弱的平板电脑来说是不错的值。" #: src/settings_translation_file.cpp msgid "Camera smoothing" @@ -2150,7 +2156,7 @@ msgstr "电影模式下镜头平滑" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "镜头更新切换键" +msgstr "镜头更新开关键" #: src/settings_translation_file.cpp msgid "Cave noise" @@ -2178,30 +2184,31 @@ msgstr "洞穴2噪音" #: src/settings_translation_file.cpp msgid "Cavern limit" -msgstr "洞穴界限" +msgstr "大型洞穴界限" #: src/settings_translation_file.cpp msgid "Cavern noise" -msgstr "山洞噪音" +msgstr "大型洞穴噪音" #: src/settings_translation_file.cpp msgid "Cavern taper" -msgstr "山洞锥度" +msgstr "大型洞穴锥度" #: src/settings_translation_file.cpp msgid "Cavern threshold" -msgstr "山丘阈值" +msgstr "大型洞穴阈值" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cavern upper limit" -msgstr "洞穴界限" +msgstr "大型洞穴上界" #: src/settings_translation_file.cpp msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"亮度曲线范围中心。\n" +"0.0为最小值时1.0为最大值。" #: src/settings_translation_file.cpp msgid "" @@ -2212,6 +2219,10 @@ msgid "" "be\n" "necessary for smaller screens." msgstr "" +"主菜单UI的变化:\n" +"- 完整 多个单人世界,子游戏选择,材质包选择器等。\n" +"- 简单:单个单人世界,无子游戏材质包选择器。可能\n" +"需要用于小屏幕。" #: src/settings_translation_file.cpp msgid "Chat key" @@ -2222,14 +2233,12 @@ msgid "Chat message count limit" msgstr "聊天消息计数限制" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message format" -msgstr "聊天消息最大长度" +msgstr "聊天消息格式" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message kick threshold" -msgstr "聊天消息触发阈值" +msgstr "聊天消息踢出阈值" #: src/settings_translation_file.cpp msgid "Chat message max length" @@ -2237,7 +2246,7 @@ msgstr "聊天消息最大长度" #: src/settings_translation_file.cpp msgid "Chat toggle key" -msgstr "聊天切换键" +msgstr "聊天开关键" #: src/settings_translation_file.cpp msgid "Chatcommands" @@ -2257,7 +2266,7 @@ msgstr "电影模式键" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "干净透明纹理" +msgstr "干净透明材质" #: src/settings_translation_file.cpp msgid "Client" @@ -2265,20 +2274,19 @@ msgstr "客户端" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "客户端和服务器" +msgstr "客户端和服务端" #: src/settings_translation_file.cpp msgid "Client modding" -msgstr "客户端模组" +msgstr "客户端mod" #: src/settings_translation_file.cpp -#, fuzzy msgid "Client side modding restrictions" -msgstr "客户端模组" +msgstr "客户端mod限制" #: src/settings_translation_file.cpp msgid "Client side node lookup range restriction" -msgstr "" +msgstr "客户端方块查询范围限制" #: src/settings_translation_file.cpp msgid "Climbing speed" @@ -2294,7 +2302,7 @@ msgstr "云彩" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "云是客户端侧效果。" +msgstr "云是客户端效果。" #: src/settings_translation_file.cpp msgid "Clouds in menu" @@ -2314,22 +2322,28 @@ msgid "" "These flags are independent from Minetest versions,\n" "so see a full list at https://content.minetest.net/help/content_flags/" msgstr "" +"逗号分隔用于在仓库中隐藏内容的标签列表。\n" +"\"nonfree\"可用于隐藏根据自由软件基金会\n" +"不符合“自由软件”标准的包。\n" +"你也可以为仓库内容指定评分。\n" +"这些评分独立于Minetest版本,\n" +"完整列表见https://content.minetest.net/help/content_flags/" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of mods that are allowed to access HTTP APIs, which\n" "allow them to upload and download data to/from the internet." msgstr "" -"以逗号分隔的模组清单,让您可以存取 HTTP API,\n" -"其可从互联网上传及下载资料。" +"以逗号分隔可以存取 HTTP API的mod列表,\n" +"这些mod可与互联网交互,上传及下载数据。" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" -"受信任的 Mod 列表,以逗号分隔,其可存取不安全的\n" -"功能,即便 mod 安全性已启用(经由 request_insecure_environment())。" +"受信任的 Mod 列表,以逗号分隔,其可访问不安全的\n" +"函数,即便 mod 安全性已启用(经由 request_insecure_environment())。" #: src/settings_translation_file.cpp msgid "Command key" @@ -2345,11 +2359,11 @@ msgstr "连接到外部媒体服务器" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "连接玻璃,如果节点支持。" +msgstr "如果方块支持则连通玻璃。" #: src/settings_translation_file.cpp msgid "Console alpha" -msgstr "控制台透明" +msgstr "控制台透明度" #: src/settings_translation_file.cpp msgid "Console color" @@ -2361,16 +2375,15 @@ msgstr "控制台高度" #: src/settings_translation_file.cpp msgid "ContentDB Flag Blacklist" -msgstr "" +msgstr "ContentDB标签黑名单" #: src/settings_translation_file.cpp -#, fuzzy msgid "ContentDB URL" -msgstr "继续" +msgstr "ContentDB网址" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "连续前进" +msgstr "自动前进" #: src/settings_translation_file.cpp msgid "" @@ -2396,7 +2409,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Controls sinking speed in liquid." -msgstr "" +msgstr "控制在液体中的下沉速度。" #: src/settings_translation_file.cpp msgid "Controls steepness/depth of lake depressions." @@ -2412,6 +2425,8 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"控制洞穴通道宽度,设置较小值以创建较宽通道。\n" +"值>=10.0则完全关闭通道生成,避免大量噪声计算。" #: src/settings_translation_file.cpp msgid "Crash message" @@ -2419,23 +2434,23 @@ msgstr "崩溃信息" #: src/settings_translation_file.cpp msgid "Creative" -msgstr "创建" +msgstr "创造" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "十字透明" +msgstr "准星透明" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "十字线不透明度(0-255)。" +msgstr "准星不透明度(0-255)。" #: src/settings_translation_file.cpp msgid "Crosshair color" -msgstr "十字颜色" +msgstr "准星颜色" #: src/settings_translation_file.cpp msgid "Crosshair color (R,G,B)." -msgstr "十字颜色 (红,绿,蓝)。" +msgstr "准星颜色(红,绿,蓝)。" #: src/settings_translation_file.cpp msgid "DPI" @@ -2447,12 +2462,11 @@ msgstr "伤害" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "调试信息切换键" +msgstr "调试信息开关键" #: src/settings_translation_file.cpp -#, fuzzy msgid "Debug log file size threshold" -msgstr "沙漠噪音阈值" +msgstr "沙漠噪声阈值" #: src/settings_translation_file.cpp msgid "Debug log level" @@ -2464,7 +2478,7 @@ msgstr "音量减小键" #: src/settings_translation_file.cpp msgid "Decrease this to increase liquid resistance to movement." -msgstr "" +msgstr "减小此值以增加液体对运动的阻力。" #: src/settings_translation_file.cpp msgid "Dedicated server step" @@ -2483,7 +2497,7 @@ msgid "" "Default game when creating a new world.\n" "This will be overridden when creating a world from the main menu." msgstr "" -"创建新世界时默认游戏。\n" +"创建新世界时的默认游戏。\n" "从主菜单创建一个新世界时这将被覆盖。" #: src/settings_translation_file.cpp @@ -2503,7 +2517,7 @@ msgid "" "Default timeout for cURL, stated in milliseconds.\n" "Only has an effect if compiled with cURL." msgstr "" -"cURL 的默认超时,单位毫秒。\n" +"cURL 的默认时限,单位毫秒。\n" "仅使用 cURL 编译时有效果。" #: src/settings_translation_file.cpp @@ -2515,18 +2529,16 @@ msgid "Defines areas with sandy beaches." msgstr "定义沙质海滩区域." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines distribution of higher terrain and steepness of cliffs." -msgstr "定义了更高 (悬崖顶部) 地形的区域, 影响峭壁的陡峭度。" +msgstr "定义高地形的分布情况和悬崖陡峭程度。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines distribution of higher terrain." -msgstr "定义了 \"terrain_higher\" (悬崖顶部地形) 的区域。" +msgstr "定义悬崖顶部地形的分布。" #: src/settings_translation_file.cpp msgid "Defines full size of caverns, smaller values create larger caverns." -msgstr "定义洞穴的尺寸,数值越小洞穴越大。" +msgstr "定义大型洞穴的尺寸,数值越小洞穴越大。" #: src/settings_translation_file.cpp msgid "Defines large-scale river channel structure." @@ -2541,36 +2553,32 @@ msgid "" "Defines sampling step of texture.\n" "A higher value results in smoother normal maps." msgstr "" -"定义纹理采样步骤。\n" +"定义材质采样步骤。\n" "数值越高常态贴图越平滑。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the base ground level." -msgstr "定义森林区域和森林密度." +msgstr "定义基准地面高度." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the depth of the river channel." -msgstr "定义森林区域和森林密度." +msgstr "定义水道深度." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." msgstr "定义玩家可传送的最大距离,以方块为单位 (0 = 不限制)。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river channel." -msgstr "定义大尺寸的河道结构。" +msgstr "定义河道宽度。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river valley." -msgstr "定义树上长苹果的区域." +msgstr "定义河谷宽度." #: src/settings_translation_file.cpp msgid "Defines tree areas and tree density." -msgstr "定义森林区域和森林密度." +msgstr "定义森林面积和森林密度。" #: src/settings_translation_file.cpp msgid "" @@ -2586,16 +2594,15 @@ msgstr "建造后发送方块的延迟时间" #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." -msgstr "工具提示显示延迟,按毫秒计算。" +msgstr "工具栏显示延迟,按毫秒计算。" #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" msgstr "已弃用 Lua API 处理" #: src/settings_translation_file.cpp -#, fuzzy msgid "Depth below which you'll find giant caverns." -msgstr "大型洞穴的最浅深度。" +msgstr "巨型洞穴的最浅深度。" #: src/settings_translation_file.cpp msgid "Depth below which you'll find large caves." @@ -2605,20 +2612,19 @@ msgstr "大型洞穴的最浅深度。" msgid "" "Description of server, to be displayed when players join and in the " "serverlist." -msgstr "服务器描述,将显示在提供给玩家的服务器列表。" +msgstr "服务器描述,将在玩家加入时发送给玩家,并显示在服务器列表。" #: src/settings_translation_file.cpp msgid "Desert noise threshold" -msgstr "沙漠噪音阈值" +msgstr "沙漠噪声阈值" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Deserts occur when np_biome exceeds this value.\n" "When the 'snowbiomes' flag is enabled, this is ignored." msgstr "" "当np_biome超过该值时将产生沙漠。\n" -"当新的生物群系系统启用时,该项将被忽略。" +"当‘snowbiomes’启用时,该项将被忽略。" #: src/settings_translation_file.cpp msgid "Desynchronize block animation" @@ -2638,7 +2644,7 @@ msgstr "禁止使用空密码" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "服务器域名,将显示在提供给玩家的服务器列表。" +msgstr "服务器域名,将显示在服务器列表。" #: src/settings_translation_file.cpp msgid "Double tap jump for fly" @@ -2653,35 +2659,35 @@ msgid "Drop item key" msgstr "丢弃物品键" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dump the mapgen debug information." msgstr "转储地图生成器调试信息。" #: src/settings_translation_file.cpp msgid "Dungeon maximum Y" -msgstr "" +msgstr "地窖最大Y坐标" #: src/settings_translation_file.cpp msgid "Dungeon minimum Y" -msgstr "" +msgstr "地窖最小Y坐标" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dungeon noise" -msgstr "河流噪音" +msgstr "地窖噪声" #: src/settings_translation_file.cpp msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"为客户端和服务端启用IPv6支持。\n" +"需要IPv6网络连接可用。" #: src/settings_translation_file.cpp msgid "" "Enable Lua modding support on client.\n" "This support is experimental and API can change." msgstr "" -"启用Lua MOD支持。\n" +"启用客户端Lua mod支持。\n" "该功能是实验性的,且API会变动。" #: src/settings_translation_file.cpp @@ -2690,17 +2696,15 @@ msgstr "启用控制台窗口" #: src/settings_translation_file.cpp msgid "Enable creative mode for new created maps." -msgstr "启用新建地图的创造模式。" +msgstr "为新建地图启用创造模式。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable joysticks" msgstr "启用摇杆" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod channels support." -msgstr "启用 mod 安全" +msgstr "启用 mod 频道支持。" #: src/settings_translation_file.cpp msgid "Enable mod security" @@ -2716,13 +2720,15 @@ msgstr "启用随机用户输入(仅用于测试)。" #: src/settings_translation_file.cpp msgid "Enable register confirmation" -msgstr "" +msgstr "启用注册确认" #: src/settings_translation_file.cpp msgid "" "Enable register confirmation when connecting to server.\n" "If disabled, new account will be registered automatically." msgstr "" +"在连接到服务器时启用注册确认。\n" +"如果禁用,新账号会自动注册。" #: src/settings_translation_file.cpp msgid "" @@ -2730,7 +2736,7 @@ msgid "" "Disable for speed or for different looks." msgstr "" "启用简单环境光闭塞的平滑光照。\n" -"禁用可影响速度和获得不同外观。" +"禁用可影响速度或得到不同外观。" #: src/settings_translation_file.cpp msgid "" @@ -2741,7 +2747,7 @@ msgid "" "expecting." msgstr "" "启用禁止旧版客户端连接模式。\n" -"旧版客户端是可兼容的,它们不会在连接新版服务器时\n" +"兼容旧版客户端是指它们不会在连接新版服务器时\n" "崩溃,但可能不支持某些您所期望的新特性。" #: src/settings_translation_file.cpp @@ -2752,13 +2758,16 @@ msgid "" "when connecting to the server." msgstr "" "允许使用远程媒体服务器 (如果由服务器提供)。\n" -"连接到服务器时,远程服务器会提供一种更快的方式下载媒体 (如纹理)。" +"连接到服务器时,远程服务器会提供一种更快的方式\n" +"下载媒体信息 (如材质)。" #: src/settings_translation_file.cpp msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"启用顶点缓冲对象。\n" +"这会极大改善图像性能。" #: src/settings_translation_file.cpp msgid "" @@ -2769,15 +2778,14 @@ msgstr "" "例如:0是不摇动;1.0正常摇动;2.0双倍。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable/disable running an IPv6 server.\n" "Ignored if bind_address is set.\n" "Needs enable_ipv6 to be enabled." msgstr "" -"允许/禁止运行 IPv6 服务器。一个 IPv6 服务器可能仅限\n" -" IPv6 客户端,这取决于系统配置。\n" -"如果设置了 bind_address 则本项被忽略。" +"允许/禁止运行 IPv6 服务器。\n" +"如果设置了 bind_address 则本项被忽略。\n" +"需要开启 enable_ipv6。" #: src/settings_translation_file.cpp msgid "" @@ -2786,10 +2794,14 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"开启Hable的“神秘海域2”电影式的色调映射。\n" +"模拟电影色调曲线及其实现高动态范围图像的方式。\n" +"略微改善中等范围对比度。\n" +"逐步压缩高亮和阴影。" #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." -msgstr "启用库存物品动画。" +msgstr "启用物品清单动画。" #: src/settings_translation_file.cpp msgid "" @@ -2803,9 +2815,8 @@ msgstr "" "需要启用着色器。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enables caching of facedir rotated meshes." -msgstr "启用facedir rotated meshes的缓存" +msgstr "启用翻转网状物facedir的缓存。" #: src/settings_translation_file.cpp msgid "Enables minimap." @@ -2816,7 +2827,7 @@ msgid "" "Enables on the fly normalmap generation (Emboss effect).\n" "Requires bumpmapping to be enabled." msgstr "" -"启用即时法线生成(浮雕效果)。\n" +"启用即时法线贴图生成(浮雕效果)。\n" "需要启用凹凸贴图。" #: src/settings_translation_file.cpp @@ -2824,8 +2835,8 @@ msgid "" "Enables parallax occlusion mapping.\n" "Requires shaders to be enabled." msgstr "" -"启用视差闭塞映射。\n" -"需要着色器已启用。" +"启用视差遮蔽贴图。\n" +"需要启用着色器。" #: src/settings_translation_file.cpp msgid "" @@ -2834,11 +2845,14 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"启用声音系统。\n" +"如果禁用,则完全禁用游戏中所有声音。\n" +"游戏内声音控制将失效。\n" +"改变此设置需要重启。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Engine profiling data print interval" -msgstr "打印引擎分析数据间隔" +msgstr "打印引擎性能分析数据间隔" #: src/settings_translation_file.cpp msgid "Entity methods" @@ -2848,7 +2862,9 @@ msgstr "实体方法" msgid "" "Experimental option, might cause visible spaces between blocks\n" "when set to higher number than 0." -msgstr "实验性选项,设为大于 0 的数字时可能导致块之间出现可见空间。" +msgstr "" +"实验性选项,设为大于 0 的数字时可能导致\n" +"块之间出现可见空间。" #: src/settings_translation_file.cpp msgid "FPS in pause menu" @@ -2860,11 +2876,11 @@ msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Factor noise" -msgstr "噪音系数" +msgstr "系数噪音" #: src/settings_translation_file.cpp msgid "Fall bobbing factor" -msgstr "坠落上下摆动" +msgstr "坠落上下摆动系数" #: src/settings_translation_file.cpp #, fuzzy @@ -2877,7 +2893,7 @@ msgstr "后备字体阴影" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "后备字体阴影透明" +msgstr "后备字体阴影透明度" #: src/settings_translation_file.cpp msgid "Fallback font size" @@ -2889,57 +2905,54 @@ msgstr "快速移动键" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "快速移动模式加速度" +msgstr "快速模式加速度" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "快速移动模式速度" +msgstr "快速模式速度" #: src/settings_translation_file.cpp msgid "Fast movement" msgstr "快速移动" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Fast movement (via the \"special\" key).\n" "This requires the \"fast\" privilege on the server." msgstr "" -"快速移动(通过“使用”键)。\n" -"这需要服务器允许“快速移动”权限。" +"快速移动(通过“特殊”键)。\n" +"这需要服务器的“fast”权限。" #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "视界" +msgstr "视野" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "视界程度。" +msgstr "视野角度。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the\n" "Multiplayer Tab." msgstr "" -"client/serverlist/ 中的文件包含会显示在“多人游戏”选项卡中的您收藏的服务器。" +"客户端/服务器列表/ 中的文件,包含显示在“多人游戏”选项卡中的您\n" +"收藏的服务器。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Filler depth" msgstr "填充深度" #: src/settings_translation_file.cpp msgid "Filler depth noise" -msgstr "填充深度噪音" +msgstr "填充深度噪声" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" -msgstr "电影基调映射" +msgstr "电影色调映射" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Filtered textures can blend RGB values with fully-transparent neighbors,\n" "which PNG optimizers usually discard, sometimes resulting in a dark or\n" @@ -2956,14 +2969,12 @@ msgid "Filtering" msgstr "过滤" #: src/settings_translation_file.cpp -#, fuzzy msgid "First of 4 2D noises that together define hill/mountain range height." -msgstr "定义tunnels的最初2个3D噪音。" +msgstr "定义决定丘陵/山地范围高度的4个2D噪声的第一项。" #: src/settings_translation_file.cpp -#, fuzzy msgid "First of two 3D noises that together define tunnels." -msgstr "定义tunnels的最初2个3D噪音。" +msgstr "定义决定通道的2个3D噪音的第一项。" #: src/settings_translation_file.cpp msgid "Fixed map seed" @@ -2971,7 +2982,7 @@ msgstr "固定地图种子" #: src/settings_translation_file.cpp msgid "Fixed virtual joystick" -msgstr "" +msgstr "固定虚拟摇杆" #: src/settings_translation_file.cpp msgid "Fly key" @@ -2987,19 +2998,19 @@ msgstr "雾" #: src/settings_translation_file.cpp msgid "Fog start" -msgstr "" +msgstr "雾开始" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "雾切换键" +msgstr "雾开关键" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "默认粗体" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "默认斜体" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3015,15 +3026,15 @@ msgstr "字体大小" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "默认字体大小,单位pt。" #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "后备字体大小,单位pt。" #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "等宽字体大小,单位pt。" #: src/settings_translation_file.cpp msgid "" @@ -3031,6 +3042,8 @@ msgid "" "placeholders:\n" "@name, @message, @timestamp (optional)" msgstr "" +"玩家聊天消息格式。以下字符串是合法占位符:\n" +"@name, @message, @timestamp (可选)" #: src/settings_translation_file.cpp msgid "Format of screenshots." @@ -3038,52 +3051,51 @@ msgstr "屏幕截图格式。" #: src/settings_translation_file.cpp msgid "Formspec Default Background Color" -msgstr "菜单默认背景色" +msgstr "窗口默认背景色" #: src/settings_translation_file.cpp msgid "Formspec Default Background Opacity" -msgstr "菜单默认背景不透明度" +msgstr "窗口默认背景不透明度" #: src/settings_translation_file.cpp msgid "Formspec Full-Screen Background Color" -msgstr "菜单全屏背景色" +msgstr "窗口全屏背景色" #: src/settings_translation_file.cpp msgid "Formspec Full-Screen Background Opacity" -msgstr "菜单全屏背景不透明度" +msgstr "窗口全屏背景不透明度" #: src/settings_translation_file.cpp msgid "Formspec default background color (R,G,B)." -msgstr "菜单默认背景色(R,G,B)。" +msgstr "窗口默认背景色(红,绿,蓝)。" #: src/settings_translation_file.cpp msgid "Formspec default background opacity (between 0 and 255)." -msgstr "菜单默认背景不透明度(0~255)。" +msgstr "窗口默认背景不透明度(0~255)。" #: src/settings_translation_file.cpp msgid "Formspec full-screen background color (R,G,B)." -msgstr "菜单全屏背景色(R,G,B)。" +msgstr "窗口全屏背景色(红,绿,蓝)。" #: src/settings_translation_file.cpp msgid "Formspec full-screen background opacity (between 0 and 255)." -msgstr "菜单全屏背景不透明度(0~255)。" +msgstr "窗口全屏背景不透明度(0~255)。" #: src/settings_translation_file.cpp msgid "Forward key" msgstr "前进键" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fourth of 4 2D noises that together define hill/mountain range height." -msgstr "定义tunnels的最初2个3D噪音。" +msgstr "定义决定丘陵/山地范围高度的4个2D噪声的第四项。" #: src/settings_translation_file.cpp msgid "Fractal type" -msgstr "" +msgstr "分形类型" #: src/settings_translation_file.cpp msgid "Fraction of the visible distance at which fog starts to be rendered" -msgstr "雾的可见距离" +msgstr "从雾起始点开始雾的可见距离分数" #: src/settings_translation_file.cpp msgid "FreeType fonts" @@ -3108,6 +3120,11 @@ msgid "" "to maintain active objects up to this distance in the direction the\n" "player is looking. (This can avoid mobs suddenly disappearing from view)" msgstr "" +"客户端得知对象的距离多远,以地图区块(16 方块)为单位。\n" +"\n" +"将此值设定为大于active_block_range的值也会导致服务器向\n" +"玩家注视方向维护活跃对象至此距离(这可以避免mob突然从\n" +"视野中消失)" #: src/settings_translation_file.cpp msgid "Full screen" @@ -3123,19 +3140,19 @@ msgstr "全屏模式。" #: src/settings_translation_file.cpp msgid "GUI scaling" -msgstr "用户图形界面缩放" +msgstr "GUI缩放" #: src/settings_translation_file.cpp msgid "GUI scaling filter" -msgstr "用户图形界面缩放过滤器" +msgstr "GUI缩放过滤器" #: src/settings_translation_file.cpp msgid "GUI scaling filter txr2img" -msgstr "用户图形界面缩放过滤器 txr2img" +msgstr "GUI缩放过滤器 txr2img" #: src/settings_translation_file.cpp msgid "Generate normalmaps" -msgstr "生成常规地图" +msgstr "生成发现贴图" #: src/settings_translation_file.cpp msgid "Global callbacks" @@ -3147,6 +3164,9 @@ msgid "" "In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" "and junglegrass, in all other mapgens this flag controls all decorations." msgstr "" +"全局地图生成属性。\n" +"在地图生成器 v6 中‘decorations’标签控制除树木和丛林草外所有装饰物。\n" +"在其他地图生成器中此标签控制所有装饰物。" #: src/settings_translation_file.cpp msgid "" @@ -3159,6 +3179,8 @@ msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." msgstr "" +"最低亮度下亮度曲线的梯度。\n" +"控制最低亮度下的对比度。" #: src/settings_translation_file.cpp msgid "Graphics" @@ -3187,10 +3209,9 @@ msgstr "HUD 缩放比例系数" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "HUD 切换键" +msgstr "HUD 开关键" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- legacy: (try to) mimic old behaviour (default for release).\n" @@ -3200,7 +3221,7 @@ msgstr "" "处理已弃用的 Lua API 调用:\n" "- 兼容:(尝试)模拟旧的调用(发布版本的默认值)。\n" "- 记录:模拟并记录已弃用的调用的回溯(调试的默认值)。\n" -"- 错误:使用已弃用的调用是停止(Mod 开发人员推荐)。" +"- 错误:停止使用已弃用的调用(Mod 开发人员推荐)。" #: src/settings_translation_file.cpp msgid "" @@ -3210,6 +3231,10 @@ msgid "" "call).\n" "* Instrument the sampler being used to update the statistics." msgstr "" +"使性能分析计数器自身:\n" +"* 计数空函数。\n" +"估测计数器增加的性能开支。\n" +"* 计数被用于更新统计的取样器。" #: src/settings_translation_file.cpp msgid "Heat blend noise" @@ -3244,24 +3269,20 @@ msgid "Hill threshold" msgstr "山丘阈值" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hilliness1 noise" -msgstr "洞穴噪音 #1" +msgstr "山丘噪声 #1" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hilliness2 noise" -msgstr "洞穴噪音 #1" +msgstr "山丘噪声 #2" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hilliness3 noise" -msgstr "洞穴噪音 #1" +msgstr "山丘噪声 #3" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hilliness4 noise" -msgstr "洞穴噪音 #1" +msgstr "山丘噪声 #4" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." @@ -3272,158 +3293,164 @@ msgid "" "Horizontal acceleration in air when jumping or falling,\n" "in nodes per second per second." msgstr "" +"跳跃和掉落的水平加速度。\n" +"单位为方块每二次方秒。" #: src/settings_translation_file.cpp msgid "" "Horizontal and vertical acceleration in fast mode,\n" "in nodes per second per second." msgstr "" +"快速模式的水平和竖直加速度。\n" +"单位为方块每二次方秒。" #: src/settings_translation_file.cpp msgid "" "Horizontal and vertical acceleration on ground or when climbing,\n" "in nodes per second per second." msgstr "" +"行走或攀爬的水平和竖直加速度。\n" +"单位为方块每二次方秒。" #: src/settings_translation_file.cpp msgid "Hotbar next key" -msgstr "快捷栏下一个 键" +msgstr "快捷栏下一个键" #: src/settings_translation_file.cpp msgid "Hotbar previous key" -msgstr "快捷栏上一个 键" +msgstr "快捷栏上一个键" #: src/settings_translation_file.cpp msgid "Hotbar slot 1 key" -msgstr "快捷栏1 键" +msgstr "快捷栏1键" #: src/settings_translation_file.cpp msgid "Hotbar slot 10 key" -msgstr "快捷栏10 键" +msgstr "快捷栏10键" #: src/settings_translation_file.cpp msgid "Hotbar slot 11 key" -msgstr "快捷栏11 键" +msgstr "快捷栏11键" #: src/settings_translation_file.cpp msgid "Hotbar slot 12 key" -msgstr "快捷栏12 键" +msgstr "快捷栏12键" #: src/settings_translation_file.cpp msgid "Hotbar slot 13 key" -msgstr "快捷栏13 键" +msgstr "快捷栏13键" #: src/settings_translation_file.cpp msgid "Hotbar slot 14 key" -msgstr "快捷栏14 键" +msgstr "快捷栏14键" #: src/settings_translation_file.cpp msgid "Hotbar slot 15 key" -msgstr "快捷栏15 键" +msgstr "快捷栏15键" #: src/settings_translation_file.cpp msgid "Hotbar slot 16 key" -msgstr "快捷栏16 键" +msgstr "快捷栏16键" #: src/settings_translation_file.cpp msgid "Hotbar slot 17 key" -msgstr "快捷栏17 键" +msgstr "快捷栏17键" #: src/settings_translation_file.cpp msgid "Hotbar slot 18 key" -msgstr "快捷栏18 键" +msgstr "快捷栏18键" #: src/settings_translation_file.cpp msgid "Hotbar slot 19 key" -msgstr "快捷栏19 键" +msgstr "快捷栏19键" #: src/settings_translation_file.cpp msgid "Hotbar slot 2 key" -msgstr "快捷栏2 键" +msgstr "快捷栏2键" #: src/settings_translation_file.cpp msgid "Hotbar slot 20 key" -msgstr "快捷栏20 键" +msgstr "快捷栏20键" #: src/settings_translation_file.cpp msgid "Hotbar slot 21 key" -msgstr "快捷栏21 键" +msgstr "快捷栏21键" #: src/settings_translation_file.cpp msgid "Hotbar slot 22 key" -msgstr "快捷栏22 键" +msgstr "快捷栏22键" #: src/settings_translation_file.cpp msgid "Hotbar slot 23 key" -msgstr "快捷栏23 键" +msgstr "快捷栏23键" #: src/settings_translation_file.cpp msgid "Hotbar slot 24 key" -msgstr "快捷栏24 键" +msgstr "快捷栏24键" #: src/settings_translation_file.cpp msgid "Hotbar slot 25 key" -msgstr "快捷栏25 键" +msgstr "快捷栏25键" #: src/settings_translation_file.cpp msgid "Hotbar slot 26 key" -msgstr "快捷栏26 键" +msgstr "快捷栏26键" #: src/settings_translation_file.cpp msgid "Hotbar slot 27 key" -msgstr "快捷栏27 键" +msgstr "快捷栏27键" #: src/settings_translation_file.cpp msgid "Hotbar slot 28 key" -msgstr "快捷栏28 键" +msgstr "快捷栏28键" #: src/settings_translation_file.cpp msgid "Hotbar slot 29 key" -msgstr "快捷栏29 键" +msgstr "快捷栏29键" #: src/settings_translation_file.cpp msgid "Hotbar slot 3 key" -msgstr "快捷栏3 键" +msgstr "快捷栏3键" #: src/settings_translation_file.cpp msgid "Hotbar slot 30 key" -msgstr "快捷栏30 键" +msgstr "快捷栏30键" #: src/settings_translation_file.cpp msgid "Hotbar slot 31 key" -msgstr "快捷栏31 键" +msgstr "快捷栏31键" #: src/settings_translation_file.cpp msgid "Hotbar slot 32 key" -msgstr "快捷栏32 键" +msgstr "快捷栏32键" #: src/settings_translation_file.cpp msgid "Hotbar slot 4 key" -msgstr "快捷栏4 键" +msgstr "快捷栏4键" #: src/settings_translation_file.cpp msgid "Hotbar slot 5 key" -msgstr "快捷栏5 键" +msgstr "快捷栏5键" #: src/settings_translation_file.cpp msgid "Hotbar slot 6 key" -msgstr "快捷栏6 键" +msgstr "快捷栏6键" #: src/settings_translation_file.cpp msgid "Hotbar slot 7 key" -msgstr "快捷栏7 键" +msgstr "快捷栏7键" #: src/settings_translation_file.cpp msgid "Hotbar slot 8 key" -msgstr "快捷栏8 键" +msgstr "快捷栏8键" #: src/settings_translation_file.cpp msgid "Hotbar slot 9 key" -msgstr "快捷栏9 键" +msgstr "快捷栏9键" #: src/settings_translation_file.cpp msgid "How deep to make rivers." -msgstr "使河流多深。" +msgstr "生成河流多深。" #: src/settings_translation_file.cpp msgid "" @@ -3431,6 +3458,9 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" +"液体波移动多快。更高值=更快。\n" +"如果为负,液体波向后移动。\n" +"需要波动液体启用。" #: src/settings_translation_file.cpp msgid "" @@ -3442,7 +3472,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "How wide to make rivers." -msgstr "使河流多宽。" +msgstr "生成河流多宽。" #: src/settings_translation_file.cpp msgid "Humidity blend noise" @@ -3468,7 +3498,9 @@ msgstr "IPv6 服务器" msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." -msgstr "如果 FPS 可以超过此值,限制它以节省 CPU 功耗,因为没有更多好处。" +msgstr "" +"如果 FPS 可以超过此值,通过睡眠限制它以\n" +"节省无效 CPU 功耗。" #: src/settings_translation_file.cpp msgid "" @@ -3497,7 +3529,7 @@ msgid "" "This requires the \"noclip\" privilege on the server." msgstr "" "使玩家可以在飞行启用时飞过固体方块。\n" -"这需要服务器的“noclip”特权。" +"这需要服务器的“noclip”权限。" #: src/settings_translation_file.cpp msgid "" @@ -3537,14 +3569,13 @@ msgid "If enabled, new players cannot join with an empty password." msgstr "如果启用,新玩家将无法使用空密码加入。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "If enabled, you can place blocks at the position (feet + eye level) where " "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" -"如果启用,您可以将块放置在您站立的位置(脚+视线水平)。\n" -"在小区域中使用方块框时,这很有用。" +"如果启用,您可以将方块放置在您站立的位置(脚+视线水平)。\n" +"在小区域中使用方块框型方块时,这很有用。" #: src/settings_translation_file.cpp msgid "" @@ -3552,6 +3583,8 @@ msgid "" "limited\n" "to this distance from the player to the node." msgstr "" +"如果客户端mod方块范围限制启用,限制get_node至玩家\n" +"到方块的距离" #: src/settings_translation_file.cpp msgid "" @@ -3579,7 +3612,7 @@ msgstr "游戏内聊天控制台背景 alpha 值(不透明度,0~255)。" #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." -msgstr "游戏内聊天控制台背景色(R,G,B)。" +msgstr "游戏内聊天控制台背景色(红,绿,蓝)。" #: src/settings_translation_file.cpp msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." @@ -3591,15 +3624,15 @@ msgstr "音量增大键" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." -msgstr "" +msgstr "初始垂直速度,单位为方块每二次方秒。" #: src/settings_translation_file.cpp msgid "" "Instrument builtin.\n" "This is usually only needed by core/builtin contributors" msgstr "" -"内部构建工具。\n" -"这通常只被核心/内部构建者需要" +"内置计数器。\n" +"通常只有核心/内部构建者需要" #: src/settings_translation_file.cpp msgid "Instrument chatcommands on registration." @@ -3610,26 +3643,26 @@ msgid "" "Instrument global callback functions on registration.\n" "(anything you pass to a minetest.register_*() function)" msgstr "" -"登录时检测全局回调函数。\n" +"注册时计数全局回调函数。\n" "(传递给 minetest.register_*() 函数的任何内容)" #: src/settings_translation_file.cpp msgid "" "Instrument the action function of Active Block Modifiers on registration." -msgstr "" +msgstr "注册时计数ABM的行为函数。" #: src/settings_translation_file.cpp msgid "" "Instrument the action function of Loading Block Modifiers on registration." -msgstr "" +msgstr "注册时计数LBM的行为函数。" #: src/settings_translation_file.cpp msgid "Instrument the methods of entities on registration." -msgstr "" +msgstr "注册时计数实体的方法。" #: src/settings_translation_file.cpp msgid "Instrumentation" -msgstr "仪表" +msgstr "计数器" #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." @@ -3641,11 +3674,11 @@ msgstr "向客户端发送时间的间隔。" #: src/settings_translation_file.cpp msgid "Inventory items animations" -msgstr "库存物品动画" +msgstr "物品清单物品动画" #: src/settings_translation_file.cpp msgid "Inventory key" -msgstr "库存键" +msgstr "物品清单键" #: src/settings_translation_file.cpp msgid "Invert mouse" @@ -3656,14 +3689,12 @@ msgid "Invert vertical mouse movement." msgstr "反转垂直鼠标移动。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic font path" -msgstr "等宽字体路径" +msgstr "斜体字体路径" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic monospace font path" -msgstr "等宽字体路径" +msgstr "斜体等宽字体路径" #: src/settings_translation_file.cpp msgid "Item entity TTL" @@ -3680,6 +3711,10 @@ msgid "" "increases processing load.\n" "At iterations = 20 this mapgen has a similar load to mapgen V7." msgstr "" +"递归函数迭代数。\n" +"增加此值会增加细节量,但也会\n" +"增加处理器负荷。\n" +"在迭代数=20时地图生成器有与地图生成器v4相似的负荷。" #: src/settings_translation_file.cpp msgid "Joystick ID" @@ -3691,7 +3726,7 @@ msgstr "摇杆按钮重复间隔" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" -msgstr "摇杆灵敏度" +msgstr "摇杆头灵敏度" #: src/settings_translation_file.cpp msgid "Joystick type" @@ -3705,6 +3740,11 @@ msgid "" "Has no effect on 3D fractals.\n" "Range roughly -2 to 2." msgstr "" +"仅朱莉亚集合。\n" +"超复数常数的W成分。\n" +"改变分形图形形状。\n" +"对3D分形无影响。\n" +"大致在-2到2之间。" #: src/settings_translation_file.cpp msgid "" @@ -3713,6 +3753,10 @@ msgid "" "Alters the shape of the fractal.\n" "Range roughly -2 to 2." msgstr "" +"仅朱莉亚集合。\n" +"超复数常数的X成分。\n" +"改变分形图形形状。\n" +"大致在-2到2之间。" #: src/settings_translation_file.cpp msgid "" @@ -3721,6 +3765,10 @@ msgid "" "Alters the shape of the fractal.\n" "Range roughly -2 to 2." msgstr "" +"仅朱莉亚集合。\n" +"超复数常数的Y成分。\n" +"改变分形图形形状。\n" +"大致在-2到2之间。" #: src/settings_translation_file.cpp msgid "" @@ -3729,22 +3777,26 @@ msgid "" "Alters the shape of the fractal.\n" "Range roughly -2 to 2." msgstr "" +"仅朱莉亚集合。\n" +"超复数常数的Z成分。\n" +"改变分形图形形状。\n" +"大致在-2到2之间。" #: src/settings_translation_file.cpp msgid "Julia w" -msgstr "" +msgstr "朱莉亚w" #: src/settings_translation_file.cpp msgid "Julia x" -msgstr "" +msgstr "朱莉亚x" #: src/settings_translation_file.cpp msgid "Julia y" -msgstr "" +msgstr "朱莉亚y" #: src/settings_translation_file.cpp msgid "Julia z" -msgstr "" +msgstr "朱莉亚z" #: src/settings_translation_file.cpp msgid "Jump key" @@ -3760,6 +3812,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"视野缩小键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3767,6 +3822,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"音量减小键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3774,6 +3832,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"丢弃所选物品键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3781,6 +3842,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"视野扩大键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3788,6 +3852,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"音量增大键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3795,6 +3862,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"跳跃键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3802,6 +3872,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"快速模式移动键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3810,6 +3883,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"后退键。\n" +"在按下时也会取消自动前进。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3817,6 +3894,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"前进键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3824,6 +3904,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"向左键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3831,6 +3914,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"向右键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3838,6 +3924,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"静音键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3845,6 +3934,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"打开聊天窗口输入命令键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3852,6 +3944,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"打开聊天窗口输入本地命令键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3859,6 +3954,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"打开聊天窗口键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3866,6 +3964,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"打开物品清单键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3873,6 +3974,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第11个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3880,6 +3984,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第12个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3887,6 +3994,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第13个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3894,6 +4004,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第14个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3901,6 +4014,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第15个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3908,6 +4024,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第16个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3915,6 +4034,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第17个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3922,6 +4044,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第18个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3929,6 +4054,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第19个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3936,6 +4064,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第20个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3943,6 +4074,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第21个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3950,6 +4084,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第22个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3957,6 +4094,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第23个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3964,6 +4104,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第24个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3971,6 +4114,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第25个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3978,6 +4124,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第26个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3985,6 +4134,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第27个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3992,6 +4144,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第28个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3999,6 +4154,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第29个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4006,6 +4164,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第30个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4013,6 +4174,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第31个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4020,6 +4184,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第32个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4027,6 +4194,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第8个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4034,6 +4204,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第5个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4041,6 +4214,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第1个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4048,6 +4224,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第4个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4055,6 +4234,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏下一个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4062,6 +4244,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第9个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4069,6 +4254,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏上一个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4076,6 +4264,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第2个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4083,6 +4274,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第7个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4090,6 +4284,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第6个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4097,6 +4294,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第10个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4104,6 +4304,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"选择快捷栏第3个位置键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4113,6 +4316,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"下蹲键。\n" +"若aux1_descends禁用,也可用于向下攀爬、在水中向下游。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4120,6 +4327,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"第一人称第三人称镜头切换键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4127,6 +4337,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"截屏键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4134,6 +4347,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关自动前进键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4141,6 +4357,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关电影模式键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4148,6 +4367,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关小地图键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4155,6 +4377,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关快速移动键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4162,6 +4387,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关飞行键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4169,6 +4397,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关穿墙模式键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4176,6 +4407,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关仰角移动模式键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4183,6 +4417,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关相机更新键。仅用于开发。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4190,6 +4427,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关聊天显示键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4197,6 +4437,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关调试信息键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4204,6 +4447,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关雾显示键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4211,6 +4457,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关HUD显示键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4218,6 +4467,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关大型聊天控制台显示键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4225,6 +4477,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关性能分析图显示键。仅用于开发。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4232,6 +4487,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关无限视野键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4239,20 +4497,21 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"开关缩放(如有可能)键。\n" +"见http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Kick players who sent more than X messages per 10 seconds." -msgstr "" +msgstr "提出在10秒内发送超过X条消息的玩家。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Lake steepness" -msgstr "地图生成器平面湖坡度" +msgstr "湖坡度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Lake threshold" -msgstr "地图生成器平面阈值" +msgstr "湖阈值" #: src/settings_translation_file.cpp msgid "Language" @@ -4260,24 +4519,23 @@ msgstr "语言" #: src/settings_translation_file.cpp msgid "Large cave depth" -msgstr "巨大洞穴深度" +msgstr "大型洞穴深度" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "大型洞穴最大数量" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "大型洞穴最小数量" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" -msgstr "" +msgstr "大型洞穴淹没比" #: src/settings_translation_file.cpp -#, fuzzy msgid "Large chat console key" -msgstr "控制台键" +msgstr "大型聊天控制台键" #: src/settings_translation_file.cpp msgid "Leaves style" @@ -4290,6 +4548,10 @@ msgid "" "- Simple: only outer faces, if defined special_tiles are used\n" "- Opaque: disable transparency" msgstr "" +"树叶风格:\n" +"- 华丽: 所有面可见\n" +"- 简单: 若special_tiles已定义,仅外表面可见\n" +"- 不透明: 取消树叶透明度" #: src/settings_translation_file.cpp msgid "Left key" @@ -4301,24 +4563,28 @@ msgid "" "updated over\n" "network." msgstr "" +"服务器时钟节拍长度,通常也是对象通过网络更新的\n" +"时间间隔。" #: src/settings_translation_file.cpp msgid "" "Length of liquid waves.\n" "Requires waving liquids to be enabled." msgstr "" +"液体波长度。\n" +"需要波动液体启用。" #: src/settings_translation_file.cpp msgid "Length of time between Active Block Modifier (ABM) execution cycles" -msgstr "" +msgstr "ABM执行循环时长" #: src/settings_translation_file.cpp msgid "Length of time between NodeTimer execution cycles" -msgstr "" +msgstr "NodeTimer执行循环时长" #: src/settings_translation_file.cpp msgid "Length of time between active block management cycles" -msgstr "" +msgstr "活动方块管理循环时长" #: src/settings_translation_file.cpp msgid "" @@ -4331,30 +4597,38 @@ msgid "" "- info\n" "- verbose" msgstr "" +"写入debug.txt的日志等级:\n" +"- <无>(无日志)\n" +"- 无等级(none)(无等级的消息)\n" +"- 错误(error)\n" +"- 警告(warning)\n" +"- 行为(action)\n" +"- 信息(info)\n" +"- 冗长调试信息(verbose)" #: src/settings_translation_file.cpp msgid "Light curve boost" -msgstr "" +msgstr "亮度曲线提升" #: src/settings_translation_file.cpp msgid "Light curve boost center" -msgstr "" +msgstr "亮度曲线提升中心" #: src/settings_translation_file.cpp msgid "Light curve boost spread" -msgstr "" +msgstr "亮度曲线提升点差" #: src/settings_translation_file.cpp msgid "Light curve gamma" -msgstr "" +msgstr "亮度曲线gamma" #: src/settings_translation_file.cpp msgid "Light curve high gradient" -msgstr "" +msgstr "亮度曲线高梯度" #: src/settings_translation_file.cpp msgid "Light curve low gradient" -msgstr "" +msgstr "亮度曲线低梯度" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" @@ -4362,7 +4636,7 @@ msgstr "磁盘上的生产队列限制" #: src/settings_translation_file.cpp msgid "Limit of emerge queues to generate" -msgstr "要生成的生产队列绝对限制" +msgstr "要生成的生产队列限制" #: src/settings_translation_file.cpp msgid "" @@ -4370,6 +4644,9 @@ msgid "" "Only mapchunks completely within the mapgen limit are generated.\n" "Value is stored per-world." msgstr "" +"从(0,0,0)向全部6个方向的地图生成限制,单位为方块。\n" +"地图生成器只生成完全在此限制的地图块。\n" +"此值为每个世界单独保存。" #: src/settings_translation_file.cpp msgid "" @@ -4379,6 +4656,11 @@ msgid "" "- Downloads performed by main menu (e.g. mod manager).\n" "Only has an effect if compiled with cURL." msgstr "" +"并行HTTP请求数限制。\n" +"- 如果服务器使用remote_media设置,影响媒体信息获取。\n" +"- 影响服务器列表下载和服务器公开。\n" +"- 主菜单下载(例如mod管理器)\n" +"仅在编译时启用cURL时起作用。" #: src/settings_translation_file.cpp msgid "Liquid fluidity" @@ -4390,7 +4672,7 @@ msgstr "液体流动性平滑" #: src/settings_translation_file.cpp msgid "Liquid loop max" -msgstr "液体循环最大" +msgstr "液体循环最大值" #: src/settings_translation_file.cpp msgid "Liquid queue purge time" @@ -4407,11 +4689,11 @@ msgstr "液体更新间隔,单位秒。" #: src/settings_translation_file.cpp msgid "Liquid update tick" -msgstr "液体更新单次" +msgstr "液体更新时钟间隔" #: src/settings_translation_file.cpp msgid "Load the game profiler" -msgstr "" +msgstr "加载游戏性能分析图" #: src/settings_translation_file.cpp msgid "" @@ -4419,33 +4701,34 @@ msgid "" "Provides a /profiler command to access the compiled profile.\n" "Useful for mod developers and server operators." msgstr "" +"读取游戏性能分析图以收集游戏性能分析数据。\n" +"提供/profiler命令用于访问编译的性能分析图。\n" +"对mod开发者和服务器管理员有用。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Loading Block Modifiers" -msgstr "活动区块修改间隔" +msgstr "加载时区块修改间隔" #: src/settings_translation_file.cpp msgid "Lower Y limit of dungeons." -msgstr "" +msgstr "地窖的Y值下限。" #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "主菜单脚本" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu style" -msgstr "主菜单脚本" +msgstr "主菜单样式" #: src/settings_translation_file.cpp msgid "" "Make fog and sky colors depend on daytime (dawn/sunset) and view direction." -msgstr "" +msgstr "使雾和天空颜色依赖于一天中的时间(黎明/傍晚)和视线方向。" #: src/settings_translation_file.cpp msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." -msgstr "" +msgstr "使DirectX和LuaJIT一起工作。如果这导致了问题禁用它。" #: src/settings_translation_file.cpp msgid "Makes all liquids opaque" @@ -4457,13 +4740,15 @@ msgstr "地图目录" #: src/settings_translation_file.cpp msgid "Map generation attributes specific to Mapgen Carpathian." -msgstr "" +msgstr "针对Carpathian地图生成器的属性。" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen Flat.\n" "Occasional lakes and hills can be added to the flat world." msgstr "" +"针对Flat地图生成器的属性。\n" +"有时湖泊和丘陵可加入平坦的世界。" #: src/settings_translation_file.cpp msgid "" @@ -4471,6 +4756,9 @@ msgid "" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" +"针对Fractal地图生成器的属性。\n" +"'terrain'启用非分形地图的生成:\n" +"海洋,岛屿和地下地形。" #: src/settings_translation_file.cpp msgid "" @@ -4481,10 +4769,16 @@ msgid "" "to become shallower and occasionally dry.\n" "'altitude_dry': Reduces humidity with altitude." msgstr "" +"针对Valley地图生成器的属性。\n" +"'altitude_chill':随海拔高度减小热量。\n" +"'humid_rivers':增加河流周围的湿度。\n" +"'vary_river_depth':如果启用,高热量低湿度导致河流\n" +"变浅甚至干枯。\n" +"'altitude_dry':随海拔高度减小湿度。" #: src/settings_translation_file.cpp msgid "Map generation attributes specific to Mapgen v5." -msgstr "" +msgstr "针对v5地图生成器的属性。" #: src/settings_translation_file.cpp msgid "" @@ -4493,12 +4787,18 @@ msgid "" "When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" "the 'jungles' flag is ignored." msgstr "" +"针对v6地图生成器的属性。\n" +"'snowboimes'启用新版5群落系统。\n" +"当'snowbiomes'开启使丛林自动启用,\n" +"忽略'jungles'标签。" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" "'ridges' enables the rivers." msgstr "" +"针对v7地图生成器的属性。\n" +"'ridges'启用河流。" #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -4524,37 +4824,31 @@ msgstr "地图生成限制" #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" -msgstr "地图块卸载超时" +msgstr "地图块卸载时限" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Carpathian" -msgstr "地图生成器分形" +msgstr "地图生成器Carpathian" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Carpathian specific flags" -msgstr "地图生成器平面标志" +msgstr "地图生成器Carpathian标签" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Flat" -msgstr "地图生成器平面" +msgstr "地图生成器Flat" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Flat specific flags" -msgstr "地图生成器平面标志" +msgstr "地图生成器Flat标签" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Fractal" -msgstr "地图生成器分形" +msgstr "地图生成器Fractal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Fractal specific flags" -msgstr "地图生成器平面标志" +msgstr "地图生成器Fractal标签" #: src/settings_translation_file.cpp #, fuzzy @@ -4562,9 +4856,8 @@ msgid "Mapgen V5" msgstr "地图生成器 v5" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V5 specific flags" -msgstr "地图生成器 v6 标志" +msgstr "地图生成器 v5 标签" #: src/settings_translation_file.cpp #, fuzzy @@ -4572,9 +4865,8 @@ msgid "Mapgen V6" msgstr "地图生成器 v6" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V6 specific flags" -msgstr "地图生成器 v6 标志" +msgstr "地图生成器 v6 标签" #: src/settings_translation_file.cpp #, fuzzy @@ -4582,18 +4874,16 @@ msgid "Mapgen V7" msgstr "地图生成器 v7" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V7 specific flags" -msgstr "地图生成器 v7 标志" +msgstr "地图生成器 v7 标签" #: src/settings_translation_file.cpp msgid "Mapgen Valleys" -msgstr "地图生成器山谷" +msgstr "地图生成器Valleys" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Valleys specific flags" -msgstr "地图生成器平面标志" +msgstr "地图生成器Valleys标签" #: src/settings_translation_file.cpp msgid "Mapgen debug" @@ -4609,19 +4899,19 @@ msgstr "地图生成器名称" #: src/settings_translation_file.cpp msgid "Max block generate distance" -msgstr "" +msgstr "最大方块生成距离" #: src/settings_translation_file.cpp msgid "Max block send distance" -msgstr "" +msgstr "最大方块发送距离" #: src/settings_translation_file.cpp msgid "Max liquids processed per step." -msgstr "" +msgstr "每个时钟间隔内液体的最大处理速度。" #: src/settings_translation_file.cpp msgid "Max. clearobjects extra blocks" -msgstr "" +msgstr "最大clearobjects额外方块数" #: src/settings_translation_file.cpp msgid "Max. packets per iteration" @@ -4645,17 +4935,19 @@ msgstr "最大快捷栏宽度" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "每个地图块中随机的大型洞穴数的最大值。" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "每个地图块中随机的小型洞穴数的最大值。" #: src/settings_translation_file.cpp msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." msgstr "" +"最大液体阻力。控制快速进入液体时\n" +"的减速度。" #: src/settings_translation_file.cpp msgid "" @@ -4663,22 +4955,29 @@ msgid "" "The maximum total count is calculated dynamically:\n" "max_total = ceil((#clients + max_users) * per_client / 4)" msgstr "" +"同时发送至每个客户端的方块最大数。\n" +"最大总数按以下式子自动计算:\n" +"max_total = ceil((#clients + max_users) * per_client / 4)" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." -msgstr "" +msgstr "可在加载时加入队列的最大方块数。" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"在生成时加入队列的最大方块数。\n" +"设置为空白则自动选择合适的数值。" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "Set to blank for an appropriate amount to be chosen automatically." msgstr "" +"在从文件中加载时加入队列的最大方块数。\n" +"设置为空白则自动选择合适的数值。" #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -4689,6 +4988,8 @@ msgid "" "Maximum number of mapblocks for client to be kept in memory.\n" "Set to -1 for unlimited amount." msgstr "" +"客户端保存在内存中的最大地图块数量。\n" +"设置为-1则无限量。" #: src/settings_translation_file.cpp msgid "" @@ -4696,52 +4997,58 @@ msgid "" "try reducing it, but don't reduce it to a number below double of targeted\n" "client number." msgstr "" +"每个发送间隔之间发送的最大包数,如果你网络连接慢\n" +"尝试减小它,但不要把它减小到小雨目标客户端数的\n" +"两倍。" #: src/settings_translation_file.cpp msgid "Maximum number of players that can be connected simultaneously." -msgstr "" +msgstr "同时连接的玩家最大数量。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum number of recent chat messages to show" -msgstr "强制载入地图块最大数量。" +msgstr "显示的最近消息最大数量" #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." -msgstr "" +msgstr "方块内静态存储的对象最大数。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum objects per block" -msgstr "最大强制载入块" +msgstr "方块内最大对象数" #: src/settings_translation_file.cpp msgid "" "Maximum proportion of current window to be used for hotbar.\n" "Useful if there's something to be displayed right or left of hotbar." msgstr "" +"窗口内用于显示快捷栏的最大比例。\n" +"有需要在快捷栏左右两侧显示的内容时该设置有用。" #: src/settings_translation_file.cpp msgid "Maximum simultaneous block sends per client" -msgstr "" +msgstr "给每个客户端发送方块的最大次数" #: src/settings_translation_file.cpp +#, fuzzy msgid "Maximum size of the out chat queue" -msgstr "" +msgstr "外出聊天队列的最大大小" #: src/settings_translation_file.cpp msgid "" "Maximum size of the out chat queue.\n" "0 to disable queueing and -1 to make the queue size unlimited." msgstr "" +"外出聊天队列的最大大小。\n" +"0取消队列,-1使队列大小无限。" #: src/settings_translation_file.cpp msgid "Maximum time in ms a file download (e.g. a mod download) may take." -msgstr "" +msgstr "单个文件下载(如mod下载)的最大时间。" #: src/settings_translation_file.cpp msgid "Maximum users" -msgstr "最大用户" +msgstr "最大用户数" #: src/settings_translation_file.cpp msgid "Menus" @@ -4757,11 +5064,11 @@ msgstr "今日消息" #: src/settings_translation_file.cpp msgid "Message of the day displayed to players connecting." -msgstr "" +msgstr "发送给连接中玩家的今日消息。" #: src/settings_translation_file.cpp msgid "Method used to highlight selected object." -msgstr "" +msgstr "用于高亮选定的对象的方法。" #: src/settings_translation_file.cpp msgid "Minimap" @@ -4777,28 +5084,27 @@ msgstr "小地图扫描高度" #: src/settings_translation_file.cpp msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "每个地图块的随机大型洞穴数的上限。" #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "每个地图块的随机大型洞穴数的下限。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimum texture size" -msgstr "纹理过滤器最小大小" +msgstr "最小材质大小" #: src/settings_translation_file.cpp msgid "Mipmapping" -msgstr "Mip 贴图处理" +msgstr "Mip 贴图" #: src/settings_translation_file.cpp msgid "Mod channels" -msgstr "" +msgstr "mod频道" #: src/settings_translation_file.cpp msgid "Modifies the size of the hudbar elements." -msgstr "" +msgstr "更改hud栏元素。" #: src/settings_translation_file.cpp msgid "Monospace font path" @@ -4810,20 +5116,19 @@ msgstr "等宽字体大小" #: src/settings_translation_file.cpp msgid "Mountain height noise" -msgstr "" +msgstr "山高度噪声" #: src/settings_translation_file.cpp msgid "Mountain noise" -msgstr "" +msgstr "山噪声" #: src/settings_translation_file.cpp msgid "Mountain variation noise" -msgstr "" +msgstr "山变化噪声" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mountain zero level" -msgstr "水级别" +msgstr "山起点级" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" @@ -4835,22 +5140,23 @@ msgstr "鼠标灵敏度倍数。" #: src/settings_translation_file.cpp msgid "Mud noise" -msgstr "" +msgstr "泥土噪声" #: src/settings_translation_file.cpp msgid "" "Multiplier for fall bobbing.\n" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" +"掉落摇动倍数。\n" +"例如:设为0则不摇动;1.0则正常;2.0则两倍。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mute key" -msgstr "使用按键" +msgstr "静音按键" #: src/settings_translation_file.cpp msgid "Mute sound" -msgstr "" +msgstr "静音" #: src/settings_translation_file.cpp msgid "" @@ -4859,6 +5165,10 @@ msgid "" "Current mapgens in a highly unstable state:\n" "- The optional floatlands of v7 (disabled by default)." msgstr "" +"创建新世界时使用的地图生成器名称。\n" +"在主菜单中创建一个世界会覆盖此属性。\n" +"目前以下地图生成器非常不稳定:\n" +"- v7悬空岛(默认禁用)。" #: src/settings_translation_file.cpp msgid "" @@ -4877,7 +5187,7 @@ msgstr "服务器名称,将显示在提供给玩家的服务器列表。" #: src/settings_translation_file.cpp msgid "Near clipping plane" -msgstr "" +msgstr "靠近裁切平面" #: src/settings_translation_file.cpp msgid "Network" @@ -4897,20 +5207,19 @@ msgstr "新用户需要输入此密码。" #: src/settings_translation_file.cpp msgid "Noclip" -msgstr "无剪辑" +msgstr "穿墙" #: src/settings_translation_file.cpp msgid "Noclip key" -msgstr "无剪辑键" +msgstr "穿墙键" #: src/settings_translation_file.cpp msgid "Node highlighting" -msgstr "节点高亮" +msgstr "方块高亮" #: src/settings_translation_file.cpp -#, fuzzy msgid "NodeTimer interval" -msgstr "发送间隔时间" +msgstr "NodeTimer间隔" #: src/settings_translation_file.cpp msgid "Noises" @@ -4918,11 +5227,11 @@ msgstr "噪声" #: src/settings_translation_file.cpp msgid "Normalmaps sampling" -msgstr "一般地图采样" +msgstr "法线贴图采样" #: src/settings_translation_file.cpp msgid "Normalmaps strength" -msgstr "一般地图强度" +msgstr "法线贴图强度" #: src/settings_translation_file.cpp msgid "Number of emerge threads" @@ -4944,6 +5253,19 @@ msgid "" "processes, especially in singleplayer and/or when running Lua code in\n" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" +"使用的生产线程数。\n" +"警告:当'num_emerge_threads'大于1时,目前有很\n" +"多bug会导致崩溃。\n" +"强烈建议在此警告被移除之前将此值设为默认值'1'。\n" +"值0:\n" +"- 自动选择。生产线程数会是‘处理器数-2’,\n" +"- 下限为1。\n" +"任何其他值:\n" +"- 指定生产线程数,下限为1。\n" +"警告:增大此值会提高引擎地图生成器速度,但会由于\n" +"干扰其他进程而影响游戏体验,尤其是单人模式或运行\n" +"‘on_generated’中的Lua代码。对于大部分用户来说,最\n" +"佳值为1。" #: src/settings_translation_file.cpp msgid "" @@ -4951,28 +5273,31 @@ msgid "" "This is a trade-off between sqlite transaction overhead and\n" "memory consumption (4096=100MB, as a rule of thumb)." msgstr "" +"/clearobjects每次能加载的额外方块数。\n" +"这是与sqlite交互和内存消耗的平衡。\n" +"(4096=100MB,按经验法则)。" #: src/settings_translation_file.cpp msgid "Number of parallax occlusion iterations." -msgstr "视差闭塞迭代数。" +msgstr "视差遮蔽迭代数。" #: src/settings_translation_file.cpp msgid "Online Content Repository" -msgstr "" +msgstr "在线内容仓库(ContentDB)" #: src/settings_translation_file.cpp msgid "Opaque liquids" -msgstr "" +msgstr "不透明液体" #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." -msgstr "" +msgstr "默认字体后阴影的透明度(alpha),取值范围0~255。" #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." -msgstr "" +msgstr "后备字体后阴影的透明度(alpha),取值范围0~255。" #: src/settings_translation_file.cpp msgid "" @@ -4980,39 +5305,40 @@ msgid "" "formspec is\n" "open." msgstr "" +"当窗口焦点丢失是打开暂停菜单。如果游戏内窗口打开,\n" +"则不暂停。" #: src/settings_translation_file.cpp msgid "Overall bias of parallax occlusion effect, usually scale/2." -msgstr "" +msgstr "视差遮蔽效果的整体斜纹,通常为比例/2。" #: src/settings_translation_file.cpp msgid "Overall scale of parallax occlusion effect." -msgstr "视差闭塞效果的总体比例。" +msgstr "视差遮蔽效果的总体比例。" #: src/settings_translation_file.cpp msgid "Parallax occlusion" -msgstr "视差贴图闭塞" +msgstr "视差遮蔽" #: src/settings_translation_file.cpp msgid "Parallax occlusion bias" -msgstr "视差贴图闭塞偏移" +msgstr "视差遮蔽偏移" #: src/settings_translation_file.cpp msgid "Parallax occlusion iterations" -msgstr "视差贴图闭塞迭代" +msgstr "视差遮蔽迭代" #: src/settings_translation_file.cpp msgid "Parallax occlusion mode" -msgstr "视差贴图闭塞模式" +msgstr "视差遮蔽模式" #: src/settings_translation_file.cpp -#, fuzzy msgid "Parallax occlusion scale" -msgstr "视差贴图闭塞比例" +msgstr "视差遮蔽比例" #: src/settings_translation_file.cpp msgid "Parallax occlusion strength" -msgstr "视差贴图闭塞强度" +msgstr "视差遮蔽强度" #: src/settings_translation_file.cpp msgid "" @@ -5022,20 +5348,24 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" +"后备字体路径。\n" +"如果“freetype”设置启用:必须为TrueType字体。\n" +"如果“freetype”设置禁用:必须为位图或XML矢量字体。\n" +"此字体用于不可用默认字体的语言。" #: src/settings_translation_file.cpp msgid "Path to save screenshots at." -msgstr "屏幕截图保存位置。" +msgstr "屏幕截图保存路径。" #: src/settings_translation_file.cpp msgid "" "Path to shader directory. If no path is defined, default location will be " "used." -msgstr "" +msgstr "着色器目录路径。如果无路径,则使用默认路径。" #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." -msgstr "" +msgstr "材质目录路径。所有材质都从此路径搜索。" #: src/settings_translation_file.cpp msgid "" @@ -5044,6 +5374,10 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "The fallback font will be used if the font cannot be loaded." msgstr "" +"默认字体路径。\n" +"如果“freetype”设置启用:必须为TrueType字体。\n" +"如果“freetype”设置禁用:必须为位图或XML矢量字体。\n" +"后备字体用于不可用默认字体的语言。" #: src/settings_translation_file.cpp msgid "" @@ -5052,19 +5386,22 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "This font is used for e.g. the console and profiler screen." msgstr "" +"等宽字体路径。\n" +"如果“freetype”设置启用:必须为TrueType字体。\n" +"如果“freetype”设置禁用:必须为位图或XML矢量字体。\n" +"此字体用于控制台、性能分析图界面等。" #: src/settings_translation_file.cpp msgid "Pause on lost window focus" -msgstr "" +msgstr "丢失窗口焦点是暂停" #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" +msgstr "物理" #: src/settings_translation_file.cpp -#, fuzzy msgid "Pitch move key" -msgstr "飞行键" +msgstr "仰角移动键" #: src/settings_translation_file.cpp msgid "Pitch move mode" @@ -5075,6 +5412,8 @@ msgid "" "Player is able to fly without being affected by gravity.\n" "This requires the \"fly\" privilege on the server." msgstr "" +"使玩家可以不受重力飞起。\n" +"这需要服务器的“fly”权限。" #: src/settings_translation_file.cpp msgid "Player name" @@ -5085,9 +5424,8 @@ msgid "Player transfer distance" msgstr "玩家转移距离" #: src/settings_translation_file.cpp -#, fuzzy msgid "Player versus player" -msgstr "玩家对战玩家" +msgstr "玩家对战" #: src/settings_translation_file.cpp msgid "" @@ -5113,7 +5451,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Privileges that players with basic_privs can grant" -msgstr "" +msgstr "有\"basic_privs\"的玩家可以授予的权限" #: src/settings_translation_file.cpp #, fuzzy @@ -5452,36 +5790,32 @@ msgid "Set the maximum character length of a chat message sent by clients." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving leaves.\n" "Requires shaders to be enabled." msgstr "" -"启用视差闭塞映射。\n" -"需要着色器已启用。" +"设置为真以启用飘动树叶。\n" +"需要启用着色器。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving liquids (like water).\n" "Requires shaders to be enabled." msgstr "" -"启用视差闭塞映射。\n" -"需要着色器已启用。" +"设置为真以启用摇动流体(例如水)。\n" +"需要启用着色器。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving plants.\n" "Requires shaders to be enabled." msgstr "" -"启用视差闭塞映射。\n" -"需要着色器已启用。" +"设置为真以启用摆动植物。\n" +"需要启用着色器。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Shader path" -msgstr "着色器" +msgstr "着色器路径" #: src/settings_translation_file.cpp msgid "" @@ -5585,9 +5919,8 @@ msgid "Sneak key" msgstr "潜行键" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneaking speed" -msgstr "步行速度" +msgstr "潜行速度" #: src/settings_translation_file.cpp msgid "Sneaking speed, in nodes per second." @@ -5773,6 +6106,8 @@ msgid "" "The privileges that new users automatically get.\n" "See /privs in game for a full list on your server and mod configuration." msgstr "" +"新玩家自动获得的权限。\n" +"在游戏中查看/privs以获得完整列表和mod配置。" #: src/settings_translation_file.cpp msgid "" @@ -5905,7 +6240,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Trusted mods" -msgstr "可信 MOD" +msgstr "可信 mod" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." @@ -5934,7 +6269,7 @@ msgstr "卸载未用服务器数据" #: src/settings_translation_file.cpp msgid "Upper Y limit of dungeons." -msgstr "" +msgstr "地窖的Y值上限。" #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." From 6831836d0d804f76afb1887edb1444f9f4e71934 Mon Sep 17 00:00:00 2001 From: Robin Townsend Date: Thu, 5 Mar 2020 04:38:40 +0000 Subject: [PATCH 021/424] Translated using Weblate (German) Currently translated at 100.0% (1288 of 1288 strings) --- po/de/minetest.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/po/de/minetest.po b/po/de/minetest.po index 72b2b9d92..ce07a0977 100644 --- a/po/de/minetest.po +++ b/po/de/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" "PO-Revision-Date: 2020-03-06 05:32+0000\n" -"Last-Translator: Wuzzy \n" +"Last-Translator: Robin Townsend \n" "Language-Team: German \n" "Language: de\n" @@ -6329,7 +6329,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "The depth of dirt or other biome filler node." -msgstr "Die Tiefe der Erde oder einem anderem Biomfüllerblock." +msgstr "Die Tiefe der Erde oder eines anderen Biomfüllerblocks." #: src/settings_translation_file.cpp msgid "" From a5ec71f75840c3ed8da3dc266b27ee24dddb993d Mon Sep 17 00:00:00 2001 From: Robin Townsend Date: Tue, 3 Mar 2020 17:07:20 +0000 Subject: [PATCH 022/424] Translated using Weblate (Lojban) Currently translated at 12.7% (164 of 1288 strings) --- po/jbo/minetest.po | 369 +++++++++++++++++++++++---------------------- 1 file changed, 191 insertions(+), 178 deletions(-) diff --git a/po/jbo/minetest.po b/po/jbo/minetest.po index 0fafbac99..384ac68e5 100644 --- a/po/jbo/minetest.po +++ b/po/jbo/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Lojban (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-03-15 18:36+0000\n" +"Last-Translator: Robin Townsend \n" "Language-Team: Lojban \n" "Language: jbo\n" @@ -12,11 +12,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.9-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" -msgstr "nu tolcanci" +msgstr "tolcanci" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" @@ -31,7 +31,7 @@ msgstr "" #: builtin/fstk/ui.lua msgid "An error occurred:" -msgstr ".i la'e di'e nabmi" +msgstr ".i da nabmi" #: builtin/fstk/ui.lua msgid "Main menu" @@ -43,11 +43,11 @@ msgstr "je'e" #: builtin/fstk/ui.lua msgid "Reconnect" -msgstr "nu samjo'e" +msgstr "za'u re'u samjo'e" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr ".i lo samse'u cu cpedu lo nu za'u re'u co'a samjo'e" +msgstr ".i le samtcise'u cu cpedu pa nu za'u re'u co'a samjo'e" #: builtin/mainmenu/common.lua src/client/game.cpp msgid "Loading..." @@ -89,27 +89,27 @@ msgstr "" #: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp #: src/gui/guiPasswordChange.cpp msgid "Cancel" -msgstr "nu sisti" +msgstr "sisti" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Dependencies:" -msgstr "se nitcu" +msgstr "jai se nitcu" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" -msgstr "nu ro co'e cu ganda" +msgstr "ro co'e cu ganda" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "nu lo se samtcise'a bakfu cu ganda" +msgstr "le se samtcise'a bakfu cu ganda" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "nu ro co'e cu katci" +msgstr "ro co'e cu katci" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "nu lo se samtcise'a bakfu cu katci" +msgstr "le se samtcise'a bakfu cu katci" #: builtin/mainmenu/dlg_config_world.lua msgid "" @@ -128,7 +128,7 @@ msgstr "na'e se nitcu" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr ".i no da skicu be lo se kelci ku vlapoi" +msgstr "to'i no da ve skicu le se kelci toi" #: builtin/mainmenu/dlg_config_world.lua #, fuzzy @@ -137,7 +137,7 @@ msgstr ".i nitcu no da" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr ".i no da skicu be lo se samtcise'a ku vlapoi" +msgstr "to'i no da ve skicu le se samtcise'a bakfu toi" #: builtin/mainmenu/dlg_config_world.lua #, fuzzy @@ -151,7 +151,7 @@ msgstr "na'e se nitcu" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp msgid "Save" -msgstr "nu vreji" +msgstr "co'a vreji" #: builtin/mainmenu/dlg_config_world.lua msgid "World:" @@ -163,23 +163,23 @@ msgstr "katci" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" -msgstr "cmima lu'i ro bakfu" +msgstr "se cmima ro bakfu" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back" -msgstr "nu xruti" +msgstr "xruti" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" -msgstr "nu xruti fi tu'a lo ralju liste" +msgstr "xruti fi tu'a le ralju liste" #: builtin/mainmenu/dlg_contentstore.lua msgid "Downloading and installing $1, please wait..." -msgstr ".i ca'o kibycpa la'o zoi. $1 .zoi je cu samtcise'a ri .i .e'o denpa" +msgstr ".i ca'o kibycpa la'o zoi. $1 .zoi je cu samtcise'a ri .i ko denpa" #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" -msgstr ".i da nabmi fi lo nu kibycpa la'o zoi. $1 .zoi" +msgstr ".i da nabmi fi le nu kibycpa la'o zoi. $1 .zoi" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -188,7 +188,7 @@ msgstr "se kelci" #: builtin/mainmenu/dlg_contentstore.lua msgid "Install" -msgstr "nu samtcise'a" +msgstr "samtcise'a" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -197,7 +197,7 @@ msgstr "se samtcise'a" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr ".i na kakne lo ka ce'u kibycpa su'o bakfu" +msgstr ".i na kakne le ka kibycpa pa bakfu" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" @@ -206,15 +206,16 @@ msgstr ".i no da ckaji lo se sisku" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua msgid "Search" -msgstr "nu sisku" +msgstr "sisku" #: builtin/mainmenu/dlg_contentstore.lua +#, fuzzy msgid "Texture packs" msgstr "jvinu bakfu" #: builtin/mainmenu/dlg_contentstore.lua msgid "Uninstall" -msgstr "nu to'e samtcise'a" +msgstr "to'e samtcise'a" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update" @@ -222,17 +223,17 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" -msgstr ".i pa munje xa'o cmene zoi zoi. $1 .zoi" +msgstr ".i zoi zoi. $1 .zoi xa'o cmene pa munje" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" -msgstr "nu cupra" +msgstr "cupra" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" msgstr "" -".i ko kibycpa pa se kelci be mu'u la .maintest. se kelci la'o zoi. minetest." -"net .zoi" +".i ko kibycpa pa se kelci to mupli fa la .maintest. se kelci toi la'o zoi. " +"minetest.net .zoi" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" @@ -243,8 +244,9 @@ msgid "Game" msgstr "se kelci" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +#, fuzzy msgid "Mapgen" -msgstr "te cupra lo munje" +msgstr "te cupra le munje" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -252,16 +254,18 @@ msgstr ".i do cuxna no se kelci" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy msgid "Seed" msgstr "cunso jai krasi" #: builtin/mainmenu/dlg_create_world.lua +#, fuzzy msgid "Warning: The minimal development test is meant for developers." msgstr ".i la'o zoi. Minimal development test .zoi na'o selpli lo favgau .o'i" #: builtin/mainmenu/dlg_create_world.lua msgid "World name" -msgstr "cmene lo munje" +msgstr "cmene le munje" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no games installed." @@ -269,13 +273,13 @@ msgstr ".i do samtcise'a no se kelci" #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr ".i .au ju'o pei do vimcu la'o zoi. $1 .zoi" +msgstr ".i xu do djica le nu vimcu la'o zoi. $1 .zoi" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua #: src/client/keycode.cpp msgid "Delete" -msgstr "nu vimcu" +msgstr "vimcu" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" @@ -287,16 +291,15 @@ msgstr "" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" -msgstr ".i .au ju'o pei do vimcu la'o zoi. $1 .zoi" +msgstr ".i xu do djica le nu vimcu la'o zoi. $1 .zoi noi munje" #: builtin/mainmenu/dlg_rename_modpack.lua -#, fuzzy msgid "Accept" -msgstr "fitytu'i" +msgstr "mulno" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "nu basti fi lo ka ce'u cmene lo se samtcise'a bakfu" +msgstr "basti fi lo ka cmene le se samtcise'a bakfu" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" @@ -306,7 +309,7 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" -msgstr "" +msgstr "to'i no da ve skicu le te tcimi'e toi" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" @@ -326,7 +329,7 @@ msgstr "ganda" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Edit" -msgstr "nu bixygau" +msgstr "binxo" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Enabled" @@ -350,15 +353,15 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." -msgstr "" +msgstr ".i ko samci'a da poi drani le ka lerpoi fi pa mulna'u" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid number." -msgstr ".i ko samci'a pa namcu lerpoi poi drani" +msgstr ".i ko samci'a da poi drani fi le ka lerpoi fi pa namcu" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Restore Default" -msgstr "nu xruti fi lo zmiselcu'a" +msgstr "xruti fi le zmiselcu'a" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" @@ -366,11 +369,11 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select directory" -msgstr "nu cuxna pa datnyveimei" +msgstr "cuxna fi lu'i le datnyveimei" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select file" -msgstr "nu cuxna pa datnyvei" +msgstr "cuxna fi lu'i le datnyvei" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Show technical names" @@ -378,11 +381,11 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must be at least $1." -msgstr ".i lo namcu cu zmadu .ei li $1" +msgstr ".i sarcu fa le nu le namcu cu dubjavmau li $1" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must not be larger than $1." -msgstr ".i lo namcu cu mleca .ei li $1" +msgstr ".i sarcu fa le nu le namcu na zmadu li $1" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" @@ -422,7 +425,7 @@ msgstr "" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" -msgstr "me la'o zoi. $1 .zoi noi katci" +msgstr "$1 to'i katci toi" #: builtin/mainmenu/pkgmgr.lua msgid "$1 mods" @@ -431,7 +434,8 @@ msgstr "se samtcise'a fi la'o zoi. $1 .zoi" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" msgstr "" -".i da nabmi fi lo nu $1 co'a cmima lo se datnyveimei be la'o zoi. $2 .zoi" +".i da nabmi fi le nu setca la'o zoi. $1 .zoi lu'i ro se datnyveimei be la'o " +"zoi. $2 .zoi" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" @@ -474,12 +478,14 @@ msgid "Browse online content" msgstr "" #: builtin/mainmenu/tab_content.lua +#, fuzzy msgid "Content" -msgstr "se samtcise'a" +msgstr "kakne le ka se samtcise'a" #: builtin/mainmenu/tab_content.lua +#, fuzzy msgid "Disable Texture Pack" -msgstr "nu lo jvinu bakfu cu ganda" +msgstr "le jvinu bakfu cu ganda" #: builtin/mainmenu/tab_content.lua msgid "Information:" @@ -487,23 +493,24 @@ msgstr "datni" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" -msgstr "ca'o mo'u se samtcise'a" +msgstr "pu mo'u se samtcise'a" #: builtin/mainmenu/tab_content.lua +#, fuzzy msgid "No dependencies." msgstr ".i nitcu no da" #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "to'i no da skicu be lo bakfu ku vlapoi toi" +msgstr "to'i no da ve skicu le bakfu toi" #: builtin/mainmenu/tab_content.lua msgid "Rename" -msgstr "nu basti fi lo ka ce'u cmene" +msgstr "basti fi le ka cmene" #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" -msgstr "" +msgstr "to'e samtcise'a le bakfu" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" @@ -511,7 +518,7 @@ msgstr "" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "" +msgstr "liste lu'i ro ca gunka" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" @@ -519,11 +526,11 @@ msgstr "" #: builtin/mainmenu/tab_credits.lua msgid "Credits" -msgstr "lo finti liste" +msgstr "liste lu'i ro gunka" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "" +msgstr "liste lu'i ro pu je nai ca gunka" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" @@ -539,11 +546,11 @@ msgstr "" #: builtin/mainmenu/tab_local.lua msgid "Configure" -msgstr "" +msgstr "tcimi'e" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative Mode" -msgstr "le nu finti kelci" +msgstr "finti se kelci" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Enable Damage" @@ -555,13 +562,12 @@ msgid "Host Game" msgstr "cfari fa lo nu kelci" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Host Server" -msgstr "lo samtcise'u" +msgstr "co'a samtcise'u" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" -msgstr "lo cmene .e lo lerpoijaspu" +msgstr "cmene .i lerpoijaspu" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -569,42 +575,39 @@ msgstr "cnino" #: builtin/mainmenu/tab_local.lua msgid "No world created or selected!" -msgstr ".i lo no munje cu puzi zbasu gi'a cuxna" +msgstr ".i do no munje cu cupra ja cu cuxna" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Play Game" -msgstr "cfari fa lo nu kelci" +msgstr "co'a kelci" #: builtin/mainmenu/tab_local.lua msgid "Port" -msgstr "lo judrnporte" +msgstr "judrnporte" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Select World:" -msgstr "cuxna lo munje" +msgstr ".i ko cuxna fi lu'i le munje" #: builtin/mainmenu/tab_local.lua msgid "Server Port" -msgstr "lo samtcise'u judrnporte" +msgstr "judrnporte le samtcise'u" #: builtin/mainmenu/tab_local.lua msgid "Start Game" -msgstr "nu co'a kelci" +msgstr "co'a kelci" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Address / Port" -msgstr "lo samjudri jo'u judrnporte" +msgstr "judri .i judrnporte" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" -msgstr "samjongau" +msgstr "co'a samjo'e" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative mode" -msgstr "le nu finti kelci" +msgstr "finti se kelci" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Damage enabled" @@ -612,24 +615,23 @@ msgstr "" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Del. Favorite" -msgstr "" +msgstr "co'u cmima lu'i ro nelci se tcita" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Favorite" -msgstr "" +msgstr "nelci se tcita" #: builtin/mainmenu/tab_online.lua msgid "Join Game" -msgstr "nu co'a kelci kansa" +msgstr "co'a kansa fi le ka kelci" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Name / Password" -msgstr "lo cmene .e lo lerpoijaspu" +msgstr "cmene .i lerpoijaspu" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Ping" -msgstr "" +msgstr ".pin. temci" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" @@ -654,7 +656,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "All Settings" -msgstr "" +msgstr "se cmima ro te tcimi'e" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" @@ -662,16 +664,15 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Are you sure to reset your singleplayer world?" -msgstr ".i .au ju'o pei do xruti lo do nonselkansa munje" +msgstr ".i xu do djica le nu xruti le do nonselkansa munje" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" msgstr "" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Bilinear Filter" -msgstr "lo puvyrelyli'iju'e" +msgstr "puvyrelyli'iju'e" #: builtin/mainmenu/tab_settings.lua #, fuzzy @@ -702,6 +703,7 @@ msgid "Mipmap" msgstr "lo puvrmipmepi" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "Mipmap + Aniso. Filter" msgstr "lo puvrmipmepi .e lo puvytolmanfyju'e" @@ -733,10 +735,12 @@ msgid "None" msgstr "" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "Opaque Leaves" msgstr "lo tolkli pezli" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "Opaque Water" msgstr "lo tolkli djacu" @@ -751,7 +755,7 @@ msgstr "lo kantu" #: builtin/mainmenu/tab_settings.lua msgid "Reset singleplayer world" -msgstr "kraga'igau le za'e pavykelci munje" +msgstr "xruti le nonselkansa munje" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" @@ -759,17 +763,19 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Settings" -msgstr "" +msgstr "te tcimi'e" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Shaders" -msgstr "lo ti'orkemsamtci" +msgstr "ti'orkemsamtci" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "Shaders (unavailable)" -msgstr "" +msgstr "ti'orkemsamtci to na kakne toi" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "Simple Leaves" msgstr "lo sampu pezli" @@ -796,9 +802,8 @@ msgid "Touchthreshold: (px)" msgstr "" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Trilinear Filter" -msgstr "lo puvycibli'iju'e" +msgstr "puvycibli'iju'e" #: builtin/mainmenu/tab_settings.lua #, fuzzy @@ -825,11 +830,11 @@ msgstr "" #: builtin/mainmenu/tab_simple_main.lua msgid "Main" -msgstr "lo ralju" +msgstr "ralju" #: builtin/mainmenu/tab_simple_main.lua msgid "Start Singleplayer" -msgstr "" +msgstr "co'a nonselkansa kelci" #: src/client/client.cpp msgid "Connection timed out." @@ -837,17 +842,20 @@ msgstr "" #: src/client/client.cpp msgid "Done!" -msgstr "" +msgstr ".i mulno" #: src/client/client.cpp +#, fuzzy msgid "Initializing nodes" msgstr ".i ca'o samymo'i lo me la'o gy.node.gy." #: src/client/client.cpp +#, fuzzy msgid "Initializing nodes..." msgstr ".i ca'o samymo'i lo me la'o gy.node.gy." #: src/client/client.cpp +#, fuzzy msgid "Loading textures..." msgstr ".i ca'o samymo'i le tengu datnyvei" @@ -858,30 +866,34 @@ msgstr "" #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" msgstr "" +".i da nabmi fi le nu co'a jorne to la'a cu'i le temci cu dukse le ka clani " +"toi" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" msgstr "" +".i na cumki fa le nu le se kelci cu jai se facki je cu se samymo'i .i ky. du " +"la'o zoi." #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "" +msgstr ".i le se kelci ve skicu vreji na drani" #: src/client/clientlauncher.cpp msgid "Main Menu" -msgstr "" +msgstr "ralju liste" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "" +msgstr ".i do cuxna no munje .i do ciska no judri .i do zukte no da" #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr ".i le plicme cu dukse le ka clani" #: src/client/clientlauncher.cpp msgid "Please choose a name!" -msgstr "" +msgstr ".i ko ckaji le ka da zo'u jdice le du'u da cmene" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " @@ -900,16 +912,16 @@ msgid "" "\n" "Check debug.txt for details." msgstr "" +"\n" +".i sarcu fa le nu do cipcta la'o zoi. debug.txt .zoi kei tu'a le tcila" #: src/client/game.cpp -#, fuzzy msgid "- Address: " -msgstr "lo samjudri jo'u judrnporte" +msgstr "- judri: " #: src/client/game.cpp -#, fuzzy msgid "- Creative Mode: " -msgstr "le nu finti kelci" +msgstr "- finti se kelci: " #: src/client/game.cpp msgid "- Damage: " @@ -920,23 +932,21 @@ msgid "- Mode: " msgstr "" #: src/client/game.cpp -#, fuzzy msgid "- Port: " -msgstr "lo judrnporte" +msgstr "- judrnporte: " #: src/client/game.cpp -#, fuzzy msgid "- Public: " -msgstr "gubni" - -#: src/client/game.cpp -msgid "- PvP: " -msgstr "" +msgstr "- gubni: " #: src/client/game.cpp #, fuzzy +msgid "- PvP: " +msgstr "- kakne le ka simxu le ka xrani: " + +#: src/client/game.cpp msgid "- Server Name: " -msgstr "lo samtcise'u" +msgstr "- cmene le samtcise'u: " #: src/client/game.cpp #, fuzzy @@ -958,7 +968,7 @@ msgstr "" #: src/client/game.cpp msgid "Change Password" -msgstr "gafygau lo lerpoijaspu" +msgstr "basti fi le ka lerpoijaspu" #: src/client/game.cpp #, fuzzy @@ -976,7 +986,7 @@ msgstr "" #: src/client/game.cpp msgid "Connecting to server..." -msgstr ".i ca'o troci lo za'i samjo'e lo samse'u" +msgstr ".i ca'o samjo'e le samse'u" #: src/client/game.cpp msgid "Continue" @@ -1003,11 +1013,11 @@ msgstr "" #: src/client/game.cpp msgid "Creating client..." -msgstr ".i lo samtciselse'u cu se zbasu" +msgstr ".i ca'o cupra le samtciselse'u" #: src/client/game.cpp msgid "Creating server..." -msgstr ".i lo samtcise'u cu se zbasu" +msgstr ".i ca'o cupra le samtcise'u" #: src/client/game.cpp msgid "Debug info and profiler graph hidden" @@ -1047,11 +1057,11 @@ msgstr "" #: src/client/game.cpp msgid "Exit to Menu" -msgstr "" +msgstr "sisti tu'a le se kelci" #: src/client/game.cpp msgid "Exit to OS" -msgstr "tolcfagau" +msgstr "sisti tu'a le samtci" #: src/client/game.cpp msgid "Fast mode disabled" @@ -1090,16 +1100,15 @@ msgstr "selpli" #: src/client/game.cpp msgid "Game info:" -msgstr "" +msgstr ".i datni le se kelci" #: src/client/game.cpp msgid "Game paused" -msgstr "" +msgstr ".i ca'o denpa fo le nu kelci" #: src/client/game.cpp -#, fuzzy msgid "Hosting server" -msgstr ".i lo samtcise'u cu se zbasu" +msgstr ".i le samtci pe do cu samtcise'u" #: src/client/game.cpp #, fuzzy @@ -1169,11 +1178,11 @@ msgstr ".i ca'o samymo'i tu'a lo me la'o gy.node.gy." #: src/client/game.cpp msgid "Off" -msgstr "" +msgstr "ganda" #: src/client/game.cpp msgid "On" -msgstr "" +msgstr "katci" #: src/client/game.cpp msgid "Pitch move mode disabled" @@ -1189,19 +1198,19 @@ msgstr "" #: src/client/game.cpp msgid "Remote server" -msgstr "" +msgstr ".i da poi na du le samtci pe do cu samtcise'u" #: src/client/game.cpp msgid "Resolving address..." -msgstr ".i ca'o troci lo nu facki lo samjudri" +msgstr ".i ca'o sisku le ka se judri da kau" #: src/client/game.cpp msgid "Shutting down..." -msgstr "" +msgstr ".i ca'o sisti" #: src/client/game.cpp msgid "Singleplayer" -msgstr "pa kelci" +msgstr "nonselkansa" #: src/client/game.cpp msgid "Sound Volume" @@ -1246,26 +1255,24 @@ msgid "Zoom currently disabled by game or mod" msgstr "" #: src/client/game.cpp src/gui/modalMenu.cpp -#, fuzzy msgid "ok" msgstr "je'e" #: src/client/gameui.cpp -#, fuzzy msgid "Chat hidden" -msgstr "samta'a" +msgstr ".i ca mipri le tavla .uidje" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "" +msgstr ".i ca viska le tavla .uidje" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "" +msgstr ".i ca mipri le crakemsazycimde" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "" +msgstr ".i ca viska le crakemsazycimde" #: src/client/gameui.cpp msgid "Profiler hidden" @@ -1348,12 +1355,13 @@ msgid "Insert" msgstr "" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +#, fuzzy msgid "Left" msgstr "za'i zu'e muvdu" #: src/client/keycode.cpp msgid "Left Button" -msgstr "lo zulselpevysmacu" +msgstr "zulselpevysmacu" #: src/client/keycode.cpp msgid "Left Control" @@ -1377,7 +1385,7 @@ msgstr "" #: src/client/keycode.cpp msgid "Middle Button" -msgstr "lo mijyselpevysmacu" +msgstr "mijyselpevysmacu" #: src/client/keycode.cpp msgid "Num Lock" @@ -1444,6 +1452,7 @@ msgid "Numpad 9" msgstr "" #: src/client/keycode.cpp +#, fuzzy msgid "OEM Clear" msgstr "la'o gy.OEM Clear.gy." @@ -1472,12 +1481,13 @@ msgid "Return" msgstr "" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +#, fuzzy msgid "Right" msgstr "za'i ri'u muvdu" #: src/client/keycode.cpp msgid "Right Button" -msgstr "lo prityselpevysmacu" +msgstr "prityselpevysmacu" #: src/client/keycode.cpp msgid "Right Control" @@ -1528,10 +1538,12 @@ msgid "Up" msgstr "" #: src/client/keycode.cpp +#, fuzzy msgid "X Button 1" msgstr "la'o gy.X Button 1.gy." #: src/client/keycode.cpp +#, fuzzy msgid "X Button 2" msgstr "la'o gy.X Button 2.gy." @@ -1541,7 +1553,7 @@ msgstr "" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" -msgstr ".i lo lerpoijaspu na mintu" +msgstr ".i lu'i le re lerpoijaspu na simxu le ka mintu" #: src/gui/guiConfirmRegistration.cpp msgid "Register and Join" @@ -1575,6 +1587,7 @@ msgid "Automatic jumping" msgstr "" #: src/gui/guiKeyChangeMenu.cpp +#, fuzzy msgid "Backward" msgstr "za'i ti'a muvdu" @@ -1585,7 +1598,7 @@ msgstr "gafygau lo lerpoijaspu" #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" -msgstr "samta'a" +msgstr "tavla" #: src/gui/guiKeyChangeMenu.cpp msgid "Command" @@ -1593,7 +1606,7 @@ msgstr "minde" #: src/gui/guiKeyChangeMenu.cpp msgid "Console" -msgstr "" +msgstr "samtrotci" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. range" @@ -1608,10 +1621,12 @@ msgid "Double tap \"jump\" to toggle fly" msgstr "" #: src/gui/guiKeyChangeMenu.cpp +#, fuzzy msgid "Drop" msgstr "mu'e falcru" #: src/gui/guiKeyChangeMenu.cpp +#, fuzzy msgid "Forward" msgstr "za'i ca'u muvdu" @@ -1625,11 +1640,11 @@ msgstr "" #: src/gui/guiKeyChangeMenu.cpp msgid "Inventory" -msgstr "lo dacti uidje" +msgstr "sorcu" #: src/gui/guiKeyChangeMenu.cpp msgid "Jump" -msgstr "mu'e plipe" +msgstr "plipe" #: src/gui/guiKeyChangeMenu.cpp msgid "Key already in use" @@ -1650,23 +1665,23 @@ msgstr "" #: src/gui/guiKeyChangeMenu.cpp msgid "Next item" -msgstr "" +msgstr "se lamli'e fi lu'i le dacti" #: src/gui/guiKeyChangeMenu.cpp msgid "Prev. item" -msgstr "" +msgstr "lamli'e fi lu'i le dacti" #: src/gui/guiKeyChangeMenu.cpp msgid "Range select" -msgstr "mu'e cuxna fi le'i se kuspe" +msgstr "cuxna fi lu'i le se kuspe" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Screenshot" -msgstr "" +msgstr "vidnyxra" #: src/gui/guiKeyChangeMenu.cpp msgid "Sneak" -msgstr "za'i masno cadzu" +msgstr "masno cadzu" #: src/gui/guiKeyChangeMenu.cpp msgid "Special" @@ -1683,10 +1698,12 @@ msgid "Toggle chat log" msgstr "mu'e co'a jonai mo'u sutra" #: src/gui/guiKeyChangeMenu.cpp +#, fuzzy msgid "Toggle fast" msgstr "mu'e co'a jonai mo'u sutra" #: src/gui/guiKeyChangeMenu.cpp +#, fuzzy msgid "Toggle fly" msgstr "mu'e co'a jonai mo'u vofli" @@ -1710,28 +1727,32 @@ msgid "Toggle pitchmove" msgstr "mu'e co'a jonai mo'u sutra" #: src/gui/guiKeyChangeMenu.cpp +#, fuzzy msgid "press key" -msgstr "ko da'ergau le batke" +msgstr ".i ko da'ergau pa batke" #: src/gui/guiPasswordChange.cpp msgid "Change" -msgstr "gafygau" +msgstr "basti" #: src/gui/guiPasswordChange.cpp +#, fuzzy msgid "Confirm Password" msgstr "le rapli lerpoijaspu" #: src/gui/guiPasswordChange.cpp +#, fuzzy msgid "New Password" msgstr "lo cnino lerpoijaspu" #: src/gui/guiPasswordChange.cpp +#, fuzzy msgid "Old Password" msgstr "lo slabu lerpoijaspu" #: src/gui/guiVolumeChange.cpp msgid "Exit" -msgstr "" +msgstr "sisti" #: src/gui/guiVolumeChange.cpp #, fuzzy @@ -1739,6 +1760,7 @@ msgid "Muted" msgstr "ko da'ergau le batke" #: src/gui/guiVolumeChange.cpp +#, fuzzy msgid "Sound Volume: " msgstr "lo ni sance " @@ -1877,11 +1899,12 @@ msgstr "" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr ".i benji le notci ro se samtcise'u ca ro nu le samtcise'u cu samfli" #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." msgstr "" +".i benji le notci ro se samtcise'u ca ro nu le samtcise'u co'u samtcise'u" #: src/settings_translation_file.cpp msgid "ABM interval" @@ -1971,7 +1994,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "gubysku zo'e pe tu'a le samtcise'u" #: src/settings_translation_file.cpp msgid "Announce to this serverlist." @@ -2001,7 +2024,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "krefu samjo'e te preti ba ro nu samfli" #: src/settings_translation_file.cpp msgid "" @@ -2054,11 +2077,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "jicmu" #: src/settings_translation_file.cpp msgid "Basic privileges" -msgstr "" +msgstr "jicmu se curmi" #: src/settings_translation_file.cpp msgid "Beach noise" @@ -2069,9 +2092,8 @@ msgid "Beach noise threshold" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bilinear filtering" -msgstr "lo puvyrelyli'iju'e" +msgstr "puvyrelyli'iju'e" #: src/settings_translation_file.cpp #, fuzzy @@ -2281,9 +2303,8 @@ msgid "Cloud radius" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Clouds" -msgstr "le bliku dilnu" +msgstr "dilnu" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." @@ -2296,7 +2317,7 @@ msgstr "lo ralju" #: src/settings_translation_file.cpp msgid "Colored fog" -msgstr "" +msgstr "le bumgapci cu skari" #: src/settings_translation_file.cpp msgid "" @@ -2406,9 +2427,8 @@ msgid "Crash message" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Creative" -msgstr "zbasu" +msgstr "finti se kelci" #: src/settings_translation_file.cpp msgid "Crosshair alpha" @@ -2473,9 +2493,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "lo cnino lerpoijaspu" +msgstr "zmiselcu'a fi lu'i ro lerpoijaspu" #: src/settings_translation_file.cpp msgid "Default privileges" @@ -4157,7 +4176,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Language" -msgstr "" +msgstr "bangu" #: src/settings_translation_file.cpp msgid "Large cave depth" @@ -4760,7 +4779,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Network" -msgstr "" +msgstr "te samjo'e" #: src/settings_translation_file.cpp msgid "" @@ -4953,7 +4972,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Player name" -msgstr "" +msgstr "plicme" #: src/settings_translation_file.cpp msgid "Player transfer distance" @@ -5251,29 +5270,24 @@ msgid "Server / Singleplayer" msgstr "pa kelci" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "lo samtcise'u" +msgstr "veirjudri le samtcise'u" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "lo samtcise'u judrnporte" +msgstr "judri le samtcise'u" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "lo samtcise'u judrnporte" +msgstr "ve skicu le samtcise'u" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "lo samtcise'u" +msgstr "cmene le samtcise'u" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" -msgstr "lo samtcise'u judrnporte" +msgstr "judrnporte le samtcise'u" #: src/settings_translation_file.cpp msgid "Server side occlusion culling" @@ -5317,9 +5331,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Shader path" -msgstr "lo ti'orkemsamtci" +msgstr "judri le ti'orkemsamtci" #: src/settings_translation_file.cpp msgid "" From bfe91e0b8fba8c9ed113e4b42bf047b9685999e0 Mon Sep 17 00:00:00 2001 From: wzy2006 <3450354617@qq.com> Date: Sat, 7 Mar 2020 14:07:32 +0000 Subject: [PATCH 023/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 88.0% (1134 of 1288 strings) --- po/zh_CN/minetest.po | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index 1abd86f7f..7918dfcb7 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Chinese (Simplified) (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-03-06 05:33+0000\n" -"Last-Translator: Gao Tiesuan \n" +"PO-Revision-Date: 2020-03-08 15:32+0000\n" +"Last-Translator: wzy2006 <3450354617@qq.com>\n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" @@ -3173,6 +3173,8 @@ msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." msgstr "" +"最大光照下的光曲线梯度。\n" +"控制最高光照级别的对比度。" #: src/settings_translation_file.cpp msgid "" @@ -3199,9 +3201,8 @@ msgid "Ground noise" msgstr "地面噪声" #: src/settings_translation_file.cpp -#, fuzzy msgid "HTTP mods" -msgstr "HTTP Mod" +msgstr "HTTP Mods" #: src/settings_translation_file.cpp msgid "HUD scale factor" @@ -3593,6 +3594,10 @@ msgid "" "deleting an older debug.txt.1 if it exists.\n" "debug.txt is only moved if this setting is positive." msgstr "" +"如果 debug.txt 的文件大小在 打开时超过设置,\n" +"这个文件将被移动到debug.txt.1, \n" +"如果存在较旧的debug.txt.1,则旧的将被删除。 \n" +"仅当此设置为正时,才会移动 debug.txt。" #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." @@ -4679,7 +4684,6 @@ msgid "Liquid queue purge time" msgstr "液体队列清除时间" #: src/settings_translation_file.cpp -#, fuzzy msgid "Liquid sinking" msgstr "液体下沉" @@ -4813,14 +4817,12 @@ msgid "Mapblock limit" msgstr "地图块限制" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapblock mesh generation delay" -msgstr "地图生成限制" +msgstr "地图生成延时" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapblock mesh generator's MapBlock cache size in MB" -msgstr "地图生成限制" +msgstr "地图生成缓存大小" #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" @@ -4851,7 +4853,6 @@ msgid "Mapgen Fractal specific flags" msgstr "地图生成器Fractal标签" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V5" msgstr "地图生成器 v5" @@ -4860,7 +4861,6 @@ msgid "Mapgen V5 specific flags" msgstr "地图生成器 v5 标签" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V6" msgstr "地图生成器 v6" @@ -4869,7 +4869,6 @@ msgid "Mapgen V6 specific flags" msgstr "地图生成器 v6 标签" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V7" msgstr "地图生成器 v7" @@ -5030,9 +5029,8 @@ msgid "Maximum simultaneous block sends per client" msgstr "给每个客户端发送方块的最大次数" #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum size of the out chat queue" -msgstr "外出聊天队列的最大大小" +msgstr "显示最大聊天记录的行度" #: src/settings_translation_file.cpp msgid "" @@ -5404,8 +5402,9 @@ msgid "Pitch move key" msgstr "仰角移动键" #: src/settings_translation_file.cpp +#, fuzzy msgid "Pitch move mode" -msgstr "" +msgstr "第三人称视角" #: src/settings_translation_file.cpp msgid "" @@ -5432,22 +5431,28 @@ msgid "" "Port to connect to (UDP).\n" "Note that the port field in the main menu overrides this setting." msgstr "" +"要连接到 (UDP) 的端口。 \n" +"请注意,主菜单中的端口字段将覆盖此设置。" #: src/settings_translation_file.cpp msgid "" "Prevent digging and placing from repeating when holding the mouse buttons.\n" "Enable this when you dig or place too often by accident." msgstr "" +"按住鼠标时,防止误破坏和误放置。 \n" +"当您意外破坏方块或意外放置方块时,可以启用此功能。" #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." -msgstr "" +msgstr "阻止 mod 执行危险操作,如运行 shell 命令。" #: src/settings_translation_file.cpp msgid "" "Print the engine's profiling data in regular intervals (in seconds).\n" "0 = disable. Useful for developers." msgstr "" +"以固定间隔(以秒为单位)打印引擎的分析数据。 \n" +"0 = 禁用。对开发人员很有用。" #: src/settings_translation_file.cpp msgid "Privileges that players with basic_privs can grant" From 50b30de407c930c37cf7d1e398d1b567c7b86ffb Mon Sep 17 00:00:00 2001 From: Gmail a - 2 - a Boxa Date: Wed, 11 Mar 2020 18:52:18 +0000 Subject: [PATCH 024/424] Translated using Weblate (Romanian) Currently translated at 18.6% (240 of 1288 strings) --- po/ro/minetest.po | 120 +++++++++++++++++++++------------------------- 1 file changed, 54 insertions(+), 66 deletions(-) diff --git a/po/ro/minetest.po b/po/ro/minetest.po index f7bf0f871..1ce08ce4a 100644 --- a/po/ro/minetest.po +++ b/po/ro/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Romanian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-03-14 10:32+0000\n" +"Last-Translator: Gmail a - 2 - a Boxa \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Weblate 3.9-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -56,15 +56,15 @@ msgstr "Se încarcă..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Nepotrivire versiune protocol. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Serverul forteaza versiunea protocolului $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Server-ul suporta versiunile protocolului intre $1 si $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." @@ -74,7 +74,7 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Suportam doar versiunea de protocol $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." @@ -99,24 +99,24 @@ msgid "Disable all" msgstr "Dezactivează toate" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Disable modpack" -msgstr "Dezactivat" +msgstr "Dezactiveaza pachet mod" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" msgstr "Activează tot" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Enable modpack" -msgstr "Redenumiți Pachetul de moduri:" +msgstr "Activeaza pachet mod" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" +"Nu a reușit activarea modului „$ 1”, deoarece conține caractere " +"neautorizate. Doar caracterele [a-z0-9_] sunt permise." #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -124,7 +124,7 @@ msgstr "Mod:" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" -msgstr "" +msgstr "Nu există dependențe (opționale)" #: builtin/mainmenu/dlg_config_world.lua #, fuzzy @@ -132,9 +132,8 @@ msgid "No game description provided." msgstr "Nici o descriere de mod disponibilă" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No hard dependencies" -msgstr "Dependențe:" +msgstr "Nu există dependențe dure" #: builtin/mainmenu/dlg_config_world.lua #, fuzzy @@ -143,11 +142,11 @@ msgstr "Nici o descriere de mod disponibilă" #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" -msgstr "" +msgstr "Nu există dependențe opționale" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "" +msgstr "Dependențe opționale:" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp @@ -164,7 +163,7 @@ msgstr "activat" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" -msgstr "" +msgstr "Toate pachetele" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back" @@ -177,7 +176,7 @@ msgstr "Meniul Principal" #: builtin/mainmenu/dlg_contentstore.lua msgid "Downloading and installing $1, please wait..." -msgstr "" +msgstr "Se descarca si se instaleaza $ 1, vă rugăm să așteptați ..." #: builtin/mainmenu/dlg_contentstore.lua #, fuzzy @@ -200,11 +199,11 @@ msgstr "Moduri" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "" +msgstr "Nu s-au putut prelua pachete" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" -msgstr "" +msgstr "Fara rezultate" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua @@ -217,13 +216,12 @@ msgid "Texture packs" msgstr "Pachete de textură" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Uninstall" -msgstr "Instalează" +msgstr "Dezinstalare" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update" -msgstr "" +msgstr "Actualizare" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -235,11 +233,11 @@ msgstr "Creează" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "" +msgstr "Descărcați un joc, cum ar fi Minetest Game, de pe minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "" +msgstr "Descărcați unul de pe minetest.net" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -250,18 +248,17 @@ msgid "Mapgen" msgstr "Mapgen" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "No game selected" -msgstr "Selectare distanță" +msgstr "Nici un joc selectat" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Seed" -msgstr "" +msgstr "Seminţe" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." -msgstr "" +msgstr "Avertisment: Testul de dezvoltare minimă este destinat dezvoltatorilor." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -269,7 +266,7 @@ msgstr "Numele lumii" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no games installed." -msgstr "" +msgstr "Nu aveți jocuri instalate." #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" @@ -287,9 +284,8 @@ msgid "pkgmgr: failed to delete \"$1\"" msgstr "Modmgr: Eroare la ștergerea \"$1\"" #: builtin/mainmenu/dlg_delete_content.lua -#, fuzzy msgid "pkgmgr: invalid path \"$1\"" -msgstr "Modmgr: Pacht de mod invalid \"$1\"" +msgstr "Pkgmgr: calea nevalidă '$ 1'" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" @@ -308,14 +304,16 @@ msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" +"Acest modpack are un nume explicit dat în modpack.conf, care va înlocui " +"orice redenumire aici." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" -msgstr "" +msgstr "(Nicio descriere a setării date)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "" +msgstr "2D Zgomot" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" @@ -323,7 +321,7 @@ msgstr "< Înapoi la pagina de setări" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Browse" -msgstr "" +msgstr "Navighează" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Disabled" @@ -339,11 +337,11 @@ msgstr "Activat" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Lacunarity" -msgstr "" +msgstr "Lacunarity" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Octaves" -msgstr "" +msgstr "Octava" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" @@ -351,15 +349,15 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" -msgstr "" +msgstr "Persistență" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." -msgstr "" +msgstr "Vă rugăm să introduceți un număr întreg valid." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid number." -msgstr "" +msgstr "Vă rugăm să introduceți un număr valid." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Restore Default" @@ -367,29 +365,27 @@ msgstr "Restabilește valori implicite" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" -msgstr "" +msgstr "Scală" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "Select directory" -msgstr "Selectează Fișierul Modului:" +msgstr "Selectează directorul" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "Select file" -msgstr "Selectează Fișierul Modului:" +msgstr "Selectează fila" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Show technical names" -msgstr "" +msgstr "Afișați numele tehnice" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must be at least $1." -msgstr "" +msgstr "Valoarea trebuie să fie de cel puțin $ 1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must not be larger than $1." -msgstr "" +msgstr "Valoarea nu trebuie să fie mai mare de $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" @@ -397,7 +393,7 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" -msgstr "" +msgstr "X răspândit" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" @@ -405,7 +401,7 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" -msgstr "" +msgstr "Y răspândit" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" @@ -413,30 +409,27 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" -msgstr "" +msgstr "Z răspândit" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "defaults" -msgstr "modifică jocul" +msgstr "implicite" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" -msgstr "" +msgstr "uşura" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "$1 (Enabled)" -msgstr "Activat" +msgstr "$1 (Activat)" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "$1 mods" -msgstr "Configurează" +msgstr "$1 moduri" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" @@ -455,11 +448,8 @@ msgstr "" "mod $1" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install: Unsupported file type \"$1\" or broken archive" -msgstr "" -"\n" -"Instalare Mod: tip de fișier neacceptat \"$1\"" +msgstr "Instalare: tipul de fișier neacceptat „$ 1” sau arhiva ruptă" #: builtin/mainmenu/pkgmgr.lua #, fuzzy @@ -1117,14 +1107,12 @@ msgid "Fast mode enabled (note: no 'fast' privilege)" msgstr "" #: src/client/game.cpp -#, fuzzy msgid "Fly mode disabled" -msgstr "Dezactivează MP" +msgstr "Modul zburat dezactivat" #: src/client/game.cpp -#, fuzzy msgid "Fly mode enabled" -msgstr "Daune activate" +msgstr "Modul zburat activat" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" From cee3a3fd63c5940ff1ca86159490f6f017bdd671 Mon Sep 17 00:00:00 2001 From: Tirifto Date: Thu, 26 Mar 2020 18:26:53 +0000 Subject: [PATCH 025/424] Translated using Weblate (Esperanto) Currently translated at 99.3% (1279 of 1288 strings) --- po/eo/minetest.po | 335 +++++++++++++++++++++++++--------------------- 1 file changed, 186 insertions(+), 149 deletions(-) diff --git a/po/eo/minetest.po b/po/eo/minetest.po index 2db4bd71a..01c9cb498 100644 --- a/po/eo/minetest.po +++ b/po/eo/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Esperanto (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-03-01 19:51+0000\n" -"Last-Translator: Gao Tiesuan \n" +"PO-Revision-Date: 2020-03-28 22:09+0000\n" +"Last-Translator: Tirifto \n" "Language-Team: Esperanto \n" "Language: eo\n" @@ -48,7 +48,7 @@ msgstr "La servilo petis rekonekton:" #: builtin/mainmenu/common.lua src/client/game.cpp msgid "Loading..." -msgstr "Ŝargante…" +msgstr "Enlegante…" #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " @@ -248,7 +248,7 @@ msgstr "Fontnombro" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." -msgstr "Averto: La plejeta programista testo estas intencita por programistoj." +msgstr "Averto: La minimuma programista testo estas intencita por programistoj." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -302,7 +302,7 @@ msgstr "(Neniu priskribo de agordo estas donita)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "2D-a bruo" +msgstr "2d-a bruo" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" @@ -819,7 +819,7 @@ msgstr "Pravalorigante monderojn…" #: src/client/client.cpp msgid "Loading textures..." -msgstr "Ŝargante teksturojn…" +msgstr "Enlegante teksturojn…" #: src/client/client.cpp msgid "Rebuilding shaders..." @@ -831,7 +831,7 @@ msgstr "Konekta eraro (ĉu eltempiĝo?)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "Ne povis trovi aŭ ŝargi ludon \"" +msgstr "Ne povis trovi aŭ enlegi ludon \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." @@ -1206,12 +1206,12 @@ msgstr "Vidodistanco agordita al %d" #: src/client/game.cpp #, c-format msgid "Viewing range is at maximum: %d" -msgstr "Vidodistanco plejgrandas: %d" +msgstr "Vidodistanco maksimumas: %d" #: src/client/game.cpp #, c-format msgid "Viewing range is at minimum: %d" -msgstr "Vidodistanco je la malplejgrando: %d" +msgstr "Vidodistanco je la minimumo: %d" #: src/client/game.cpp #, c-format @@ -1741,7 +1741,6 @@ msgstr "" "ĉefa ringo." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1755,7 +1754,7 @@ msgstr "" "(X,Y,Z) deŝovo de fraktalo for de la centro de la mondo en unuoj\n" "de «scale».\n" "Utilas por movo de volata punkto proksimen al (0, 0) por krei taŭgan\n" -"naskiĝejon, aŭ por permeso « zomi » al volata punkto per pligrandigo\n" +"naskiĝejon, aŭ por permeso «zomi» al volata punkto per pligrandigo\n" "de la skalo.\n" "La normo estas agordita al taŭga naskiĝejo por aroj de Mandelbrot\n" "kun la normaj parametroj; ĝi eble bezonos alĝustigon por aliaj situacioj.\n" @@ -1794,7 +1793,7 @@ msgstr "2d-a bruo, kiu regas la formon/grandon de krestaj montoj." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." -msgstr "2d-a bruo, kiu regas la formon/grandon de larĝaj montetoj." +msgstr "2d-a bruo, kiu regas la formon/grandecon de mildaj montetoj." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." @@ -1806,16 +1805,15 @@ msgstr "2d-a bruo, kiu regas la grandon/ofton de krestaj montaroj." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "2d-a bruo, kiu regas la grandon/ofton de larĝaj montetoj." +msgstr "2d-a bruo, kiu regas la grandecon/oftecon de mildaj montetoj." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of step mountain ranges." msgstr "2d-a bruo, kiu regas la grandon/ofton de terasaj montaroj." #: src/settings_translation_file.cpp -#, fuzzy msgid "2D noise that locates the river valleys and channels." -msgstr "2d-a bruo, kiu regas la formon/grandon de larĝaj montetoj." +msgstr "2d-a bruo, kiu lokas la riverajn valojn kaj kanalojn." #: src/settings_translation_file.cpp msgid "3D clouds" @@ -1901,7 +1899,7 @@ msgstr "Intertempo de ABM (aktiva modifilo de monderoj)" #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "Plejgrando de mondestigaj vicoj" +msgstr "Maksimumo de mondestigaj vicoj" #: src/settings_translation_file.cpp msgid "Acceleration in air" @@ -1961,6 +1959,11 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Modifas la luman kurbon per apliko de «gamaa korekto» al ĝi.\n" +"Pli altaj valoroj heligas mezajn kaj malaltajn lumnivelojn.\n" +"Valoro «1.0» lasas la luman kurbon neŝanĝita.\n" +"Ĉi tio nur grave efikas sur taglumo kaj artlumo; ĝi nur\n" +"tre malmulte efikas sur natura noktlumo." #: src/settings_translation_file.cpp msgid "Altitude chill" @@ -2115,27 +2118,23 @@ msgstr "Bitoj bildere (aŭ kolornombro) en tutekrana reĝimo." #: src/settings_translation_file.cpp msgid "Block send optimize distance" -msgstr "Optimuma distanco de bloko-sendado" +msgstr "Optimuma distanco de monder-sendado" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "Dosierindiko al egallarĝa tiparo" +msgstr "Dosierindiko al egrasa kaj kursiva tiparo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" -msgstr "Dosierindiko al egallarĝa tiparo" +msgstr "Dosierindiko al grasa kaj kursiva egallarĝa tiparo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "Tipara dosierindiko" +msgstr "Dosierindiko al grasa tiparo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" -msgstr "Dosierindiko al egallarĝa tiparo" +msgstr "Dosierindiko al grasa egallarĝa tiparo" #: src/settings_translation_file.cpp msgid "Build inside player" @@ -2203,7 +2202,7 @@ msgstr "Kaverna limo" #: src/settings_translation_file.cpp msgid "Cavern noise" -msgstr "Kaverna bruo" +msgstr "Bruo de kavernoj" #: src/settings_translation_file.cpp msgid "Cavern taper" @@ -2222,6 +2221,8 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Centro de amplekso de pliigo de la luma kurbo.\n" +"Kie 0.0 estas minimuma lumnivelo, 1.0 estas maksimuma numnivelo." #: src/settings_translation_file.cpp msgid "" @@ -2444,6 +2445,9 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"Regas larĝon de tuneloj, pli malalta valoro kreas pli larĝajn tunelojn.\n" +"Valoro ≥ 10.0 tute malŝaltas estigon de tuneloj kaj evitas la intensan\n" +"kalkulojn de bruo." #: src/settings_translation_file.cpp msgid "Crash message" @@ -2494,7 +2498,6 @@ msgid "Dec. volume key" msgstr "Mallaŭtiga klavo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Decrease this to increase liquid resistance to movement." msgstr "Malpliigu ĉi tion por pliigi reziston de fluaĵoj al movo." @@ -2587,7 +2590,7 @@ msgstr "Difinas la profundecon de la rivera akvovojo." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." msgstr "" -"Difinas plejgrandan distancon por transsendo de ludantoj, en monderoj (0 = " +"Difinas maksimuman distancon por transsendo de ludantoj, en monderoj (0 = " "senlima)." #: src/settings_translation_file.cpp @@ -2600,14 +2603,14 @@ msgstr "Difinas larĝecon de la rivera valo." #: src/settings_translation_file.cpp msgid "Defines tree areas and tree density." -msgstr "Difinas arbajn zonojn kaj denson." +msgstr "Difinas arbajn zonojn kaj densecon." #: src/settings_translation_file.cpp msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, thus reducing jitter on slower clients." msgstr "" -"Prokrasto antaŭ ĝisdatigo de maŝoj kliente (milisekunde).\n" +"Prokrasto antaŭ ĝisdatigo de maŝoj kliente (en milisekundoj).\n" "Pli grandaj valoroj malrapidigas oftecon de ŝanĝoj, malhelpante postreston\n" "je malrapidaj klientoj." @@ -2693,7 +2696,7 @@ msgstr "Maksimuma Y de forgeskelo" #: src/settings_translation_file.cpp msgid "Dungeon minimum Y" -msgstr "Plejeta Y de forgeskeloj" +msgstr "Minimuma Y de forgeskeloj" #: src/settings_translation_file.cpp msgid "Dungeon noise" @@ -2704,6 +2707,8 @@ msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"Ŝalti subtenon de IPv6 (por kaj kliento kaj servilo).\n" +"Bezonata por ia funkciado de IPv6-konektoj." #: src/settings_translation_file.cpp msgid "" @@ -2781,8 +2786,8 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" -"Ŝalti uzon de fora aŭdvidaĵa servilo (se ĝi donitas de la servilo).\n" -"Foraj serviloj prezentas ege pli rapidon manieron elŝuti aŭdvidaĵojn\n" +"Ŝalti uzon de fora vidaŭdaĵa servilo (se ĝi donitas de la servilo).\n" +"Foraj serviloj prezentas ege pli rapidon manieron elŝuti vidaŭdaĵojn\n" "(ekzemple teksturojn) konektante al la servilo." #: src/settings_translation_file.cpp @@ -2790,6 +2795,8 @@ msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"Ŝalti verticajn bufrajn objektojn.\n" +"Ĉi tio devus multe plibonigi efikecon de grafiko." #: src/settings_translation_file.cpp msgid "" @@ -2800,14 +2807,14 @@ msgstr "" "Ekzemple: 0 por nenioma balanciĝo, 1.0 por normala, 2.0 por duobla." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable/disable running an IPv6 server.\n" "Ignored if bind_address is set.\n" "Needs enable_ipv6 to be enabled." msgstr "" "Ŝalti/malŝalti ruladon de IPv6-a servilo.\n" -"Ignorita, se «bindi_adreson» estas agordita." +"Ignorita, se «bind_address» estas agordita.\n" +"Bezonas «enable_ipv6» ŝaltitan." #: src/settings_translation_file.cpp msgid "" @@ -2816,6 +2823,10 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"Ŝaltas filmecan mapadon de tono «Uncharted 2», fare de Hable.\n" +"Simulas la tonan kurbon de fotofilmo, kaj ĝian proksimigon al aspekto\n" +"de bildoj kun alta dinamika amplekso. Mezampleksa kontrasto estas\n" +"iomete alĝustigita, ombroj kaj malombroj estas glate densigitaj." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." @@ -2864,6 +2875,10 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"Ŝaltas la sonsistemon.\n" +"Malŝaltite, ĉi tio tute malŝaltas ĉiujn sonojn kaj la enludoj sonregiloj\n" +"ne funkcios.\n" +"Ŝanĝo de ĉi tiu agordo postulos restartigon." #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" @@ -2898,21 +2913,20 @@ msgid "Fall bobbing factor" msgstr "Koeficiento de balancado dum falo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "Retropaŝa tiparo" +msgstr "Dosierindiko al reenpaŝa tiparo" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "Ombro de retropaŝa tiparo" +msgstr "Ombro de reenpaŝa tiparo" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "Travidebleco de ombro de la retropaŝa tiparo" +msgstr "Travidebleco de ombro de la reenpaŝa tiparo" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "Grando de retropaŝa tiparo" +msgstr "Grando de reenpaŝa tiparo" #: src/settings_translation_file.cpp msgid "Fast key" @@ -2966,7 +2980,7 @@ msgstr "Bruo de profundeco de plenigaĵo" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" -msgstr "" +msgstr "Filmeca mapado de tono" #: src/settings_translation_file.cpp msgid "" @@ -3024,11 +3038,11 @@ msgstr "Nebula baskula klavo" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Implice grasa tiparo" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Implice kursiva tiparo" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3044,15 +3058,15 @@ msgstr "Tipara grandeco" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "Grando de la implicita tiparo, punkte (pt)." #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "Grandeco de la reenpaŝa tiparo, punkte (pt)." #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "Grandeco de la egallarĝa tiparo, punkte (pt)." #: src/settings_translation_file.cpp msgid "" @@ -3188,18 +3202,20 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." -msgstr "Transiro de luma kurbo je plejeta lumnivelo." +msgstr "" +"Transiro de luma kurbo je plejalta lumnivelo.\n" +"Regas la kontraston de la plej altaj lumniveloj." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." -msgstr "Transiro de luma kurbo je plejeta lumnivelo." +msgstr "" +"Transiro de luma kurbo je minimuma lumnivelo.\n" +"Regas kontraston je la malplej altaj lumniveloj." #: src/settings_translation_file.cpp msgid "Graphics" @@ -3230,7 +3246,6 @@ msgid "HUD toggle key" msgstr "Baskula klavo por travida fasado" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- legacy: (try to) mimic old behaviour (default for release).\n" @@ -3258,7 +3273,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Heat blend noise" -msgstr "" +msgstr "Bruo de kunfando de varmeco" #: src/settings_translation_file.cpp msgid "Heat noise" @@ -3274,7 +3289,7 @@ msgstr "Alteca bruo" #: src/settings_translation_file.cpp msgid "Height select noise" -msgstr "" +msgstr "Bruo de elekto de alto" #: src/settings_translation_file.cpp msgid "High-precision FPU" @@ -3478,6 +3493,9 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" +"Kiel rapide ondoj de fluaĵoj moviĝos. Pli alta = pli rapide.\n" +"Je minusa valoro, ondoj de fluaĵoj moviĝos reen.\n" +"Bezonas ŝaltitajn ondantajn fluaĵojn." #: src/settings_translation_file.cpp msgid "" @@ -3555,7 +3573,8 @@ msgid "" "If enabled, \"special\" key instead of \"sneak\" key is used for climbing " "down and\n" "descending." -msgstr "Ŝaltite, klavo «uzi» uzatas anstataŭ klavo «kaŝiri» por malsupreniro." +msgstr "" +"Ŝaltite, klavo «uzi» estas uzata anstataŭ klavo «kaŝiri» por malsupreniro." #: src/settings_translation_file.cpp msgid "" @@ -3717,14 +3736,12 @@ msgid "Invert vertical mouse movement." msgstr "Renversi vertikalan movon de muso." #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic font path" -msgstr "Dosierindiko al egallarĝa tiparo" +msgstr "Dosierindiko al kursiva tiparo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic monospace font path" -msgstr "Dosierindiko al egallarĝa tiparo" +msgstr "Dosierindiko al kursiva egallarĝa tiparo" #: src/settings_translation_file.cpp msgid "Item entity TTL" @@ -4555,15 +4572,15 @@ msgstr "Profundeco de granda kaverno" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "Maksimuma nombro de grandaj kavernoj" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "Minimuma nombro de grandaj kavernoj" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" -msgstr "" +msgstr "Subakva parto de granda kaverno" #: src/settings_translation_file.cpp msgid "Large chat console key" @@ -4600,13 +4617,12 @@ msgstr "" "trans la reto." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Length of liquid waves.\n" "Requires waving liquids to be enabled." msgstr "" -"Ebligas ondojn je kreskaĵoj.\n" -"Bezonas ombrigilojn." +"Longo de fluaĵaj ondoj.\n" +"Bezonas ondantajn fluaĵojn." #: src/settings_translation_file.cpp msgid "Length of time between Active Block Modifier (ABM) execution cycles" @@ -4642,23 +4658,23 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Light curve boost" -msgstr "" +msgstr "Pliigo de luma kurbo" #: src/settings_translation_file.cpp msgid "Light curve boost center" -msgstr "" +msgstr "Centro de pliigo de luma kurbo" #: src/settings_translation_file.cpp msgid "Light curve boost spread" -msgstr "" +msgstr "Disvastiĝo de pliigo de luma kurbo" #: src/settings_translation_file.cpp msgid "Light curve gamma" -msgstr "" +msgstr "Gamao de luma kurbo" #: src/settings_translation_file.cpp msgid "Light curve high gradient" -msgstr "" +msgstr "Alta transiro de luma kurbo" #: src/settings_translation_file.cpp msgid "Light curve low gradient" @@ -4691,7 +4707,7 @@ msgid "" "Only has an effect if compiled with cURL." msgstr "" "Limigas nombron da samtempaj HTTP-petoj. Afliktas:\n" -"– Elŝuton de aŭdvidaĵoj, se la servilo uzas la agordon «remote_media».\n" +"– Elŝuton de vidaŭdaĵoj, se la servilo uzas la agordon «remote_media».\n" "– Elŝuton de listo de serviloj, kaj servila anonco.\n" "– Elŝutojn fare de la ĉefmenuo (ekz. modifaĵa administrilo).\n" "Efektivas nur se la ludo tradukiĝis kun cURL." @@ -4706,7 +4722,7 @@ msgstr "Glatigo de fluida flueco" #: src/settings_translation_file.cpp msgid "Liquid loop max" -msgstr "Plejgrando de fluaĵa ciklo" +msgstr "Maksimumo de fluaĵa ciklo" #: src/settings_translation_file.cpp msgid "Liquid queue purge time" @@ -4740,7 +4756,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Loading Block Modifiers" -msgstr "" +msgstr "Enlegante Modifilojn de Monderoj" #: src/settings_translation_file.cpp msgid "Lower Y limit of dungeons." @@ -4779,22 +4795,20 @@ msgid "Map generation attributes specific to Mapgen Carpathian." msgstr "Mondestigaj ecoj speciale por la Karpata Mondestigilo." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Flat.\n" "Occasional lakes and hills can be added to the flat world." msgstr "" -"Mapestigaj ecoj speciale por la Plata Mapestigilo.\n" +"Mondestigaj ecoj speciale por la Plata Mondestigilo.\n" "Kelklokaj lagoj kaj montetoj povas aldoniĝi al la plata mondo." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Fractal.\n" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" -"Mapestigaj ecoj speciale por la Plata Mapestigilo.\n" +"Mondestigaj ecoj speciale por la Plata Mondestigilo.\n" "«terrain» ŝaltas estigon de nefraktala tereno:\n" "oceano, insuloj, kaj subtero." @@ -4944,7 +4958,7 @@ msgstr "Plejmulto da fluaĵoj traktataj en unu paŝo." #: src/settings_translation_file.cpp msgid "Max. clearobjects extra blocks" -msgstr "Plejgrando da ekstraj mondopecoj por «clearobjects»" +msgstr "Maksimumo da ekstraj mondopecoj por «clearobjects»" #: src/settings_translation_file.cpp msgid "Max. packets per iteration" @@ -4960,7 +4974,7 @@ msgstr "Maksimumaj KS paŭze." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" -msgstr "Plejgrando de perforte enlegitaj mondopecoj" +msgstr "Maksimumo de perforte enlegitaj mondopecoj" #: src/settings_translation_file.cpp msgid "Maximum hotbar width" @@ -4968,19 +4982,19 @@ msgstr "Maksimuma larĝo de la fulmobreto" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "Maksimuma limo de hazarda nombro de grandaj kavernoj en unu mondoparto." #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." msgstr "" +"Maksimuma limo de hazarda nombro de malgrandaj kavernoj en unu mondoparto." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." msgstr "" -"Plejgranda rezisto de fluaĵoj. Regas malakcelon dum eniĝo en fluaĵon\n" +"Maksimuma rezisto de fluaĵoj. Regas malakcelon dum eniĝo en fluaĵon\n" "je granda rapido." #: src/settings_translation_file.cpp @@ -4989,8 +5003,8 @@ msgid "" "The maximum total count is calculated dynamically:\n" "max_total = ceil((#clients + max_users) * per_client / 4)" msgstr "" -"Plejgranda nombro de mondopecoj samtempe sendataj al unu kliento.\n" -"La plejgranda sumo estas kalkulata flue:\n" +"Maksimuma nombro de mondopecoj samtempe sendataj al unu kliento.\n" +"La maksimuma sumo estas kalkulata flue:\n" "max_total = ceil((#clients + max_users) * per_client / 4)" #: src/settings_translation_file.cpp @@ -5015,7 +5029,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." -msgstr "Plejgranda nombro de perforte enlegitaj mondopecoj." +msgstr "Maksimuma nombro de perforte enlegitaj mondopecoj." #: src/settings_translation_file.cpp msgid "" @@ -5038,15 +5052,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum number of players that can be connected simultaneously." -msgstr "Plejgranda nombro de ludantoj, kiuj povas konektiĝi samtempe." +msgstr "Maksimuma nombro de ludantoj, kiuj povas konektiĝi samtempe." #: src/settings_translation_file.cpp msgid "Maximum number of recent chat messages to show" -msgstr "Plejgranda nombro da freŝaj babilaj mesaĝoj montrotaj" +msgstr "Maksimuma nombro da freŝaj babilaj mesaĝoj montrotaj" #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." -msgstr "Plejgranda nombro de statike memorataj objektoj en mondopeco." +msgstr "Maksimuma nombro de statike memorataj objektoj en mondopeco." #: src/settings_translation_file.cpp msgid "Maximum objects per block" @@ -5078,7 +5092,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum time in ms a file download (e.g. a mod download) may take." -msgstr "Maksimuma tempo (milisekunde) por elŝuto de dosiero (ekz. modifaĵo)." +msgstr "" +"Maksimuma tempo (en milisekundoj) por elŝuto de dosiero (ekz. modifaĵo)." #: src/settings_translation_file.cpp msgid "Maximum users" @@ -5117,17 +5132,16 @@ msgid "Minimap scan height" msgstr "Alteco de mapeta skanado" #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "3D-bruo, kiu determinas la nombron de forgeskeloj en mondoparto." +msgstr "Minimuma limo de hazarda nombro de grandaj kavernoj en mondoparto." #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Minimuma limo de hazarda nombro de malgrandaj kavernoj unu mondoparto." #: src/settings_translation_file.cpp msgid "Minimum texture size" -msgstr "Plejeta grandeco de teksturoj" +msgstr "Minimuma grandeco de teksturoj" #: src/settings_translation_file.cpp msgid "Mipmapping" @@ -5162,9 +5176,8 @@ msgid "Mountain variation noise" msgstr "Bruo de monta variigo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mountain zero level" -msgstr "Bruo de montoj" +msgstr "Nulnivelo de montoj" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" @@ -5224,7 +5237,7 @@ msgstr "Nomo de la servilo, montrota al ludantoj kaj en la listo de serviloj." #: src/settings_translation_file.cpp msgid "Near clipping plane" -msgstr "" +msgstr "Proksime tonda ebeno" #: src/settings_translation_file.cpp msgid "Network" @@ -5260,7 +5273,7 @@ msgstr "Intervalo de NodeTimer" #: src/settings_translation_file.cpp msgid "Noises" -msgstr "Bruo" +msgstr "Bruoj" #: src/settings_translation_file.cpp msgid "Normalmaps sampling" @@ -5333,11 +5346,13 @@ msgstr "Netralumeblaj fluidoj" msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." msgstr "" +"Netravidebleco (alfa) de la ombro post la implicita tiparo, inter 0 kaj 255." #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." msgstr "" +"Netravidebleco (alfa) de la ombro post la reenpaŝa tiparo, inter 0 kaj 255." #: src/settings_translation_file.cpp msgid "" @@ -5351,7 +5366,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Overall bias of parallax occlusion effect, usually scale/2." -msgstr "" +msgstr "Entuta ekarto de la efiko de paralaksa ombrigo, kutime skalo/2." #: src/settings_translation_file.cpp msgid "Overall scale of parallax occlusion effect." @@ -5389,6 +5404,12 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" +"Dosierindiko de la reenpaŝa tiparo.\n" +"Se la agordo «freetype» estas ŝaltita: devas esti tiparspeco «TrueType».\n" +"Se la agordo «freetype» estas malŝaltita: devas esti bitbilda aŭ XML-vektora " +"tiparo.\n" +"Ĉi tiu tiparo uziĝos por kelkaj lingvoj, aŭ se la norma tiparo ne " +"disponeblas." #: src/settings_translation_file.cpp msgid "Path to save screenshots at." @@ -5398,7 +5419,9 @@ msgstr "Dosierindiko por konservi ekrankopiojn." msgid "" "Path to shader directory. If no path is defined, default location will be " "used." -msgstr "Dosierindiko al ombrigiloj. Se neniu difinitos, la implicita uzatos." +msgstr "" +"Dosierindiko al ombrigiloj. Se neniu estas difinita, la implicita estos " +"uzata." #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." @@ -5411,6 +5434,11 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "The fallback font will be used if the font cannot be loaded." msgstr "" +"Dosierindiko al la implicita tiparo.\n" +"Se la agordo «freetype» estas ŝaltita: devas esti tiparspeco «TrueType».\n" +"Se la agordo «freetype» estas malŝaltita: devas esti bitbilda aŭ XML-vektora " +"tiparo.\n" +"La reenpaŝa tiparo uziĝos se la tiparo ne povas enlegiĝi." #: src/settings_translation_file.cpp msgid "" @@ -5419,6 +5447,11 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "This font is used for e.g. the console and profiler screen." msgstr "" +"Dosierindiko al la egallarĝa tiparo.\n" +"Se la agordo «freetype» estas ŝaltita: devas esti tiparspeco «TrueType».\n" +"Se la agordo «freetype» estas malŝaltita: devas esti bitbilda aŭ XML-vektora " +"tiparo.\n" +"Ĉi tiu tiparo estas uzata por ekz. la ekranoj de konzolo kaj profililo." #: src/settings_translation_file.cpp msgid "Pause on lost window focus" @@ -5482,7 +5515,8 @@ msgid "" "Print the engine's profiling data in regular intervals (in seconds).\n" "0 = disable. Useful for developers." msgstr "" -"Presi la profilajn datenojn de la motoro laŭ regulaj intervaloj (sekunde).\n" +"Presi la profilajn datenojn de la motoro laŭ regulaj intervaloj (en " +"sekundoj).\n" "0 = malŝalti. Utila por evoluigistoj." #: src/settings_translation_file.cpp @@ -5503,7 +5537,7 @@ msgstr "Profilado" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." -msgstr "" +msgstr "Proporcio de grandaj kavernoj, kiu enhavas fluaĵon." #: src/settings_translation_file.cpp msgid "" @@ -5531,9 +5565,8 @@ msgid "Recent Chat Messages" msgstr "Freŝaj mesaĝoj de babilo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Regular font path" -msgstr "Raporta indiko" +msgstr "Dosierindiko al normala tiparo" #: src/settings_translation_file.cpp msgid "Remote media" @@ -5584,22 +5617,20 @@ msgstr "" "READ_PLAYERINFO: 32 (malŝaltas klient-flankan vokadon de «get_player_names»)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Ridge mountain spread noise" -msgstr "Bruo de montoj" +msgstr "Bruo de disvastiĝo de krestaj montoj" #: src/settings_translation_file.cpp msgid "Ridge noise" -msgstr "Pinta bruo" +msgstr "Bruo de krestoj" #: src/settings_translation_file.cpp msgid "Ridge underwater noise" -msgstr "" +msgstr "Subakva bruo de krestoj" #: src/settings_translation_file.cpp -#, fuzzy msgid "Ridged mountain size noise" -msgstr "Bruo de montoj" +msgstr "Bruo de grandeco de krestaj montoj" #: src/settings_translation_file.cpp msgid "Right key" @@ -5747,7 +5778,6 @@ msgid "Selection box width" msgstr "Larĝo de elektujo" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Selects one of 18 fractal types.\n" "1 = 4D \"Roundy\" Mandelbrot set.\n" @@ -5784,8 +5814,8 @@ msgstr "" "12 = 3D «Kristnaskarba» aro de Julia.\n" "13 = 3D «Mandelbulb» aro de Mandelbrot.\n" "14 = 3D «Mandelbulb» aro de Julia.\n" -"15 = 3D «Sinuse Mandelbulb» aro de Mandelbrot.\n" -"16 = 3D «Sinuse Mandelbulb» aro de Julia.\n" +"15 = 3D «Kosinuse Mandelbulb» aro de Mandelbrot.\n" +"16 = 3D «Kosinuse Mandelbulb» aro de Julia.\n" "17 = 4D «Mandelbulb» aro de Mandelbrot.\n" "18 = 4D «Mandelbulb» aro de Julia." @@ -5839,31 +5869,28 @@ msgstr "" "Agordi maksimuman longon de babilaj mesaĝoj (en signoj) sendotaj de klientoj." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving leaves.\n" "Requires shaders to be enabled." msgstr "" -"Ebligas ondojn je kreskaĵoj.\n" +"Ŝaltu por ebligi ondantajn foliojn.\n" "Bezonas ombrigilojn." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving liquids (like water).\n" "Requires shaders to be enabled." msgstr "" -"Ebligas ondojn je akvo.\n" +"Ŝaltu por ebligi ondantajn fluaĵojn (kiel akvon).\n" "Bezonas ombrigilojn." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving plants.\n" "Requires shaders to be enabled." msgstr "" "Verigo ŝaltas ondantajn kreskaĵojn.\n" -"Bezonas ŝalton de ombriloj." +"Bezonas ŝalton de ombrigiloj." #: src/settings_translation_file.cpp msgid "Shader path" @@ -5881,18 +5908,18 @@ msgstr "" "Ĉi tio funkcias nur kun la bildiga internaĵo de «OpenGL»." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the default font. If 0, then shadow will not be " "drawn." -msgstr "Deŝovo de tipara ombro; se ĝi estas 0, la ombro ne desegniĝos." +msgstr "" +"Deŝovo de ombro de la norma tiparo. Se ĝi estas 0, la ombro ne desegniĝos." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " "be drawn." -msgstr "Deŝovo de tipara ombro; se ĝi estas 0, la ombro ne desegniĝos." +msgstr "" +"Deŝovo de tipara ombro (en bilderoj); se ĝi estas 0, la ombro ne desegniĝos." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." @@ -5946,11 +5973,11 @@ msgstr "Deklivo kaj plenigo kunlaboras por ŝanĝi la altecojn." #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "" +msgstr "Maksimuma nombro de malgrandaj kavernoj" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "" +msgstr "Minimuma nombro de etaj kavernoj" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." @@ -6011,7 +6038,7 @@ msgid "" "(obviously, remote_media should end with a slash).\n" "Files that are not present will be fetched the usual way." msgstr "" -"Specifas URL de kiu la kliento elŝutos aŭdvidaĵojn, anstataŭ uzi UDP.\n" +"Specifas URL de kiu la kliento elŝutos vidaŭdaĵojn, anstataŭ uzi UDP.\n" "$filename atingeblu de $remote_media$filename per cURL\n" "(kompreneble, «remote_media» finiĝu per dekliva streko).\n" "Dosieroj mankantaj elŝutiĝos per la kutima maniero." @@ -6022,6 +6049,9 @@ msgid "" "Controls the width of the range to be boosted.\n" "Standard deviation of the light curve boost Gaussian." msgstr "" +"Disvastiĝo de pliiga amplekso de luma kurbo.\n" +"Regas la larĝecon de la pliigota amplekso.\n" +"Norma deflankiĝo de pliigo de la luma kurbo Gaŭsa." #: src/settings_translation_file.cpp msgid "Static spawnpoint" @@ -6049,6 +6079,9 @@ msgid "" "The 3 'boost' parameters define a range of the light\n" "curve that is boosted in brightness." msgstr "" +"Forteco de pliigo de la luma kurbo.\n" +"La 3 parametroj de «boost» definas amplekson\n" +"de la luma kurbo, kies heleco estas pliigita." #: src/settings_translation_file.cpp msgid "Strength of parallax." @@ -6072,7 +6105,7 @@ msgstr "Varmeca diverseco por klimatoj." #: src/settings_translation_file.cpp msgid "Terrain alternative noise" -msgstr "Alternativo bruo de tereno" +msgstr "Alternativa bruo de tereno" #: src/settings_translation_file.cpp msgid "Terrain base noise" @@ -6084,7 +6117,7 @@ msgstr "Alteco de tereno" #: src/settings_translation_file.cpp msgid "Terrain higher noise" -msgstr "" +msgstr "Pli alta bruo de tereno" #: src/settings_translation_file.cpp msgid "Terrain noise" @@ -6112,7 +6145,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Terrain persistence noise" -msgstr "" +msgstr "Bruo de persisteco de tereno" #: src/settings_translation_file.cpp msgid "Texture path" @@ -6172,6 +6205,11 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" +"Maksimuma alteco de la nivelo de ondantaj fluaĵoj.\n" +"4.0 = Alteco de ondo estas du monderoj.\n" +"0.0 = Ondo tute ne moviĝas.\n" +"La antaŭagordo estas 1.0 (duono de mondero).\n" +"Bezonas ŝaltitajn ondantajn fluaĵojn." #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -6275,9 +6313,8 @@ msgstr "" "je 10 se «altitude_dry» estas ŝaltita." #: src/settings_translation_file.cpp -#, fuzzy msgid "Third of 4 2D noises that together define hill/mountain range height." -msgstr "Unu el la du 3d-aj bruoj, kiuj kune difinas tunelojn." +msgstr "Tria el la 4 3d-aj bruoj, kiuj kune difinas altecon de mont(et)aroj." #: src/settings_translation_file.cpp msgid "" @@ -6301,7 +6338,7 @@ msgstr "Rapido de tempo" #: src/settings_translation_file.cpp msgid "Timeout for client to remove unused map data from memory." -msgstr "Tempolimo por forigi neuzatajn mapajn datumojn de klienta memoro." +msgstr "Tempolimo por forigi neuzatajn mapajn datenojn de klienta memoro." #: src/settings_translation_file.cpp msgid "" @@ -6321,7 +6358,7 @@ msgstr "Baskula klavo de vidpunkta reĝimo" #: src/settings_translation_file.cpp msgid "Tooltip delay" -msgstr "Ŝpruchelpila prokrasto" +msgstr "Prokrasto de ŝpruchelpilo" #: src/settings_translation_file.cpp msgid "Touch screen threshold" @@ -6336,7 +6373,6 @@ msgid "Trilinear filtering" msgstr "Triineara filtrado" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "True = 256\n" "False = 128\n" @@ -6366,7 +6402,7 @@ msgid "" "image.\n" "Higher values result in a less detailed image." msgstr "" -"Subspecimenado similas uzon de malgranda ekrandistingumo, sed ĝi nur\n" +"Subspecimenado similas uzon de malgranda ekrana distingumo, sed ĝi nur\n" "efektivas en la ludo, lasante la fasadon senŝanĝa.\n" "Ĝi grave helpu la efikecon kontraŭ malpli detala filmo." @@ -6442,7 +6478,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Variation of maximum mountain height (in nodes)." -msgstr "Variaĵo de plejgranda alteco de montoj (en monderoj)." +msgstr "Variaĵo de maksimuma alteco de montoj (en monderoj)." #: src/settings_translation_file.cpp msgid "Variation of number of caves." @@ -6453,10 +6489,12 @@ msgid "" "Variation of terrain vertical scale.\n" "When noise is < -0.55 terrain is near-flat." msgstr "" +"Variado de vertikala skalo de tereno.\n" +"Kiam brua subas -0.55, tereno estas preskaŭ plata." #: src/settings_translation_file.cpp msgid "Varies depth of biome surface nodes." -msgstr "" +msgstr "Variigas profundecon de surfacaj monderoj de klimato." #: src/settings_translation_file.cpp msgid "" @@ -6485,7 +6523,7 @@ msgstr "Videa pelilo" #: src/settings_translation_file.cpp msgid "View bobbing factor" -msgstr "" +msgstr "Koeficiento de balancado de vido" #: src/settings_translation_file.cpp msgid "View distance in nodes." @@ -6516,13 +6554,12 @@ msgid "Volume" msgstr "Laŭteco" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Volume of all sounds.\n" "Requires the sound system to be enabled." msgstr "" -"Ŝaltas mapadon de paralaksa ombrigo.\n" -"Bezonas ŝaltitajn ombrigilojn." +"Laŭteco de ĉiuj sonoj\n" +"Bezonas ŝaltitan sonsistemon." #: src/settings_translation_file.cpp msgid "" @@ -6568,24 +6605,20 @@ msgid "Waving leaves" msgstr "Ondantaj foliaĵoj" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids" msgstr "Ondantaj fluaĵoj" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave height" -msgstr "Alteco de ondoj de ondanta akvo" +msgstr "Alteco de ondoj de ondantaj fluaĵoj" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave speed" msgstr "Rapido de ondoj sur ondanta akvo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wavelength" -msgstr "Longo de ondoj de ondanta akvo" +msgstr "Longo de ondoj de ondantaj fluaĵoj" #: src/settings_translation_file.cpp msgid "Waving plants" @@ -6636,13 +6669,13 @@ msgstr "" "grandigado de monde laŭigitaj teksturoj." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Whether FreeType fonts are used, requires FreeType support to be compiled " "in.\n" "If disabled, bitmap and XML vectors fonts are used instead." msgstr "" -"Ĉu tiparoj de FreeType uziĝas; postulas entradukitan subtenon de FreeType." +"Ĉu tiparoj de FreeType uziĝas; postulas entradukitan subtenon de FreeType.\n" +"Malŝaltite, ĉi tio anstataŭe uzigas tiparojn bitbildajn kaj XML-vektorajn." #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." @@ -6679,6 +6712,10 @@ msgid "" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" +"Ĉu silentigi sonojn. Vi povas malsilentigi ilin kiam ajn, malse\n" +"la sonsistemo estas malŝaltita (enable_sound=false).\n" +"Enlude, vi povas ŝalti la staton de silentigo per la silentiga klavo,\n" +"aŭ per la paŭza menuo." #: src/settings_translation_file.cpp msgid "" @@ -6753,7 +6790,7 @@ msgstr "Y de supera limo de grandaj kavernoj." #: src/settings_translation_file.cpp msgid "Y-distance over which caverns expand to full size." -msgstr "" +msgstr "Y-distanco trans kiu kavernoj etendiĝas al plena grandeco." #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." @@ -6777,7 +6814,7 @@ msgstr "Y-nivelo de marplanko." #: src/settings_translation_file.cpp msgid "cURL file download timeout" -msgstr "" +msgstr "Tempolimo de dosiere elŝuto de cURL" #: src/settings_translation_file.cpp msgid "cURL parallel limit" From 9ae2b7c8a6fe440cdd399c43bdc03b2ef3fd63b5 Mon Sep 17 00:00:00 2001 From: Liet Kynes Date: Sat, 28 Mar 2020 23:58:14 +0000 Subject: [PATCH 026/424] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 42.7% (551 of 1288 strings) --- po/nb/minetest.po | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/po/nb/minetest.po b/po/nb/minetest.po index 6cc5a6381..cf2e3b5db 100644 --- a/po/nb/minetest.po +++ b/po/nb/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Norwegian Bokmål (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-12-11 13:36+0000\n" -"Last-Translator: Petter Reinholdtsen \n" +"PO-Revision-Date: 2020-03-29 00:21+0000\n" +"Last-Translator: Liet Kynes \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -23,9 +23,8 @@ msgid "You died" msgstr "Du døde" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred in a Lua script:" -msgstr "Det oppstod en feil i et Lua-skriptet, for eksempel i en mod:" +msgstr "Det oppstod en feil i et Lua-skript:" #: builtin/fstk/ui.lua msgid "An error occurred:" @@ -120,9 +119,8 @@ msgid "Mod:" msgstr "Mod:" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No (optional) dependencies" -msgstr "Valgfrie avhengigheter:" +msgstr "Kan gjerne bruke" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." @@ -663,7 +661,7 @@ msgstr "Bilineært filter" #: builtin/mainmenu/tab_settings.lua msgid "Bump Mapping" -msgstr "" +msgstr "Teksturtilføyning" #: builtin/mainmenu/tab_settings.lua src/client/game.cpp msgid "Change Keys" @@ -687,7 +685,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap + Aniso. Filter" -msgstr "Mipkart + Aniso. filter" +msgstr "Mipmap + anisotropisk filter" #: builtin/mainmenu/tab_settings.lua msgid "No" @@ -699,7 +697,7 @@ msgstr "Inget filter" #: builtin/mainmenu/tab_settings.lua msgid "No Mipmap" -msgstr "Intet Mipkart" +msgstr "Mangler mipmap" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" @@ -767,7 +765,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" -msgstr "" +msgstr "Nyanseoversettelse (tone mapping)" #: builtin/mainmenu/tab_settings.lua msgid "Touchthreshold: (px)" @@ -782,9 +780,8 @@ msgid "Waving Leaves" msgstr "Bølgende blader" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Waving Liquids" -msgstr "Bølgende blader" +msgstr "Skvulpende væsker" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" From 0a1725d345374a5b370b57a395ae1652ed7b5404 Mon Sep 17 00:00:00 2001 From: anonymous Date: Sun, 29 Mar 2020 00:13:53 +0000 Subject: [PATCH 027/424] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 42.7% (551 of 1288 strings) --- po/nb/minetest.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/po/nb/minetest.po b/po/nb/minetest.po index cf2e3b5db..710d2bb5d 100644 --- a/po/nb/minetest.po +++ b/po/nb/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" "PO-Revision-Date: 2020-03-29 00:21+0000\n" -"Last-Translator: Liet Kynes \n" +"Last-Translator: anonymous \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" @@ -745,7 +745,7 @@ msgstr "Skygger" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" -msgstr "" +msgstr "Skyggelegging (ikke tilgjenglig)" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" From 7ea3dfd29043cf038c9ec51e02753c7cd863aced Mon Sep 17 00:00:00 2001 From: Liet Kynes Date: Sun, 29 Mar 2020 00:22:03 +0000 Subject: [PATCH 028/424] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 54.0% (696 of 1288 strings) --- po/nb/minetest.po | 461 +++++++++++++++++++++++++--------------------- 1 file changed, 251 insertions(+), 210 deletions(-) diff --git a/po/nb/minetest.po b/po/nb/minetest.po index 710d2bb5d..7d26b5dd0 100644 --- a/po/nb/minetest.po +++ b/po/nb/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Norwegian Bokmål (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-03-29 00:21+0000\n" -"Last-Translator: anonymous \n" +"PO-Revision-Date: 2020-03-29 21:22+0000\n" +"Last-Translator: Liet Kynes \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" @@ -16,7 +16,7 @@ msgstr "" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" -msgstr "Respawn" +msgstr "Gjenoppstå" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" @@ -127,9 +127,8 @@ msgid "No game description provided." msgstr "Mangler spillbeskrivelse." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No hard dependencies" -msgstr "Ingen avhengigheter." +msgstr "Krever ingen andre modder" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." @@ -341,7 +340,7 @@ msgstr "Forskyvning" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" -msgstr "Utholdenhet" +msgstr "Bestandighet" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." @@ -413,7 +412,7 @@ msgstr "Forvalg" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" -msgstr "lettet" +msgstr "myknet" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" @@ -621,7 +620,7 @@ msgstr "Latens" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "Spiller mot spiller aktivert" +msgstr "Alle mot alle er på" #: builtin/mainmenu/tab_settings.lua msgid "2x" @@ -761,7 +760,7 @@ msgstr "Teksturering:" #: builtin/mainmenu/tab_settings.lua msgid "To enable shaders the OpenGL driver needs to be used." -msgstr "" +msgstr "For å skru på skyggeleging, må man bruke OpenGL-driveren." #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" @@ -833,7 +832,7 @@ msgstr "Tilkoblingsfeil (tidsavbrudd?)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "Kunne ikke finne eller laste spill \"" +msgstr "Klarte ikke finne eller laste inn spill «" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." @@ -901,7 +900,7 @@ msgstr "- Offentlig: " #: src/client/game.cpp msgid "- PvP: " -msgstr "- PvP: " +msgstr "- Alle mot alle (PvP): " #: src/client/game.cpp msgid "- Server Name: " @@ -1033,42 +1032,36 @@ msgid "Exit to OS" msgstr "Avslutt til operativsystem" #: src/client/game.cpp -#, fuzzy msgid "Fast mode disabled" -msgstr "Deaktiver Alle" +msgstr "Rask forflytning av" #: src/client/game.cpp -#, fuzzy msgid "Fast mode enabled" -msgstr "Skade aktivert" +msgstr "Rask forflytning på" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" msgstr "" #: src/client/game.cpp -#, fuzzy msgid "Fly mode disabled" -msgstr "Deaktiver Alle" +msgstr "Flymodus av" #: src/client/game.cpp -#, fuzzy msgid "Fly mode enabled" -msgstr "Skade aktivert" +msgstr "Flymodus på" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" msgstr "" #: src/client/game.cpp -#, fuzzy msgid "Fog disabled" -msgstr "Deaktiver Alle" +msgstr "Tåke av" #: src/client/game.cpp -#, fuzzy msgid "Fog enabled" -msgstr "aktivert" +msgstr "Tåke på" #: src/client/game.cpp msgid "Game info:" @@ -1135,9 +1128,8 @@ msgid "Noclip mode disabled" msgstr "" #: src/client/game.cpp -#, fuzzy msgid "Noclip mode enabled" -msgstr "Skade aktivert" +msgstr "Kan gå gjennom vegger" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" @@ -1188,14 +1180,12 @@ msgid "Sound Volume" msgstr "Lydstyrke" #: src/client/game.cpp -#, fuzzy msgid "Sound muted" -msgstr "Lydstyrke" +msgstr "Lyd av" #: src/client/game.cpp -#, fuzzy msgid "Sound unmuted" -msgstr "Lydstyrke" +msgstr "Lyd på" #: src/client/game.cpp #, c-format @@ -1230,9 +1220,8 @@ msgid "ok" msgstr "ok" #: src/client/gameui.cpp -#, fuzzy msgid "Chat hidden" -msgstr "Skydretast" +msgstr "Chat skjult" #: src/client/gameui.cpp msgid "Chat shown" @@ -1260,9 +1249,8 @@ msgid "Apps" msgstr "Programmer" #: src/client/keycode.cpp -#, fuzzy msgid "Backspace" -msgstr "Tilbake" +msgstr "Tilbaketast" #: src/client/keycode.cpp msgid "Caps Lock" @@ -1422,15 +1410,15 @@ msgstr "Numpad 9" #: src/client/keycode.cpp msgid "OEM Clear" -msgstr "" +msgstr "Tøm OEM" #: src/client/keycode.cpp msgid "Page down" -msgstr "" +msgstr "Page down" #: src/client/keycode.cpp msgid "Page up" -msgstr "" +msgstr "Page up" #: src/client/keycode.cpp msgid "Pause" @@ -1533,6 +1521,11 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" +"Dette er første gang du kobler deg til serveren «\"%s».\n" +"Om du fortsetter, vil det opprettes en ny konto med ditt navn og passord på " +"denne serveren.\n" +"Vennligst skriv inn et passord og klikk på «Registrer meg og bli med» for å " +"bekrefte opprettelse av konto, eller klikk « Avbryt» for å avbryte." #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" @@ -1544,9 +1537,8 @@ msgid "\"Special\" = climb down" msgstr "«bruk» = klatre ned" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Autoforward" -msgstr "Framover" +msgstr "Automatisk fremover" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" @@ -1557,13 +1549,12 @@ msgid "Backward" msgstr "Tilbake" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Change camera" -msgstr "Endre taster" +msgstr "Endre visning" #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" -msgstr "Sludre" +msgstr "Chatte" #: src/gui/guiKeyChangeMenu.cpp msgid "Command" @@ -1575,7 +1566,7 @@ msgstr "Konsoll" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. range" -msgstr "" +msgstr "Senk siktavstanden" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. volume" @@ -1595,7 +1586,7 @@ msgstr "Framover" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. range" -msgstr "" +msgstr "Øk siktavstanden" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. volume" @@ -1629,11 +1620,11 @@ msgstr "Demp" #: src/gui/guiKeyChangeMenu.cpp msgid "Next item" -msgstr "Neste element" +msgstr "Neste gjenstand" #: src/gui/guiKeyChangeMenu.cpp msgid "Prev. item" -msgstr "Forrige element" +msgstr "Forrige gjenstand" #: src/gui/guiKeyChangeMenu.cpp msgid "Range select" @@ -1641,51 +1632,47 @@ msgstr "Velg rekkevidde" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Screenshot" -msgstr "Skjermavbildning" +msgstr "Skjermdump" #: src/gui/guiKeyChangeMenu.cpp msgid "Sneak" -msgstr "Snik" +msgstr "Snike" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Special" msgstr "Spesial" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" -msgstr "" +msgstr "HUD (hurtigtilgang) av/på" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle chat log" -msgstr "" +msgstr "Chattehistorikk av/på" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fast" -msgstr "" +msgstr "Rask forflytning av/på" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "" +msgstr "Flymodus av/på" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle fog" -msgstr "Farget tåke" +msgstr "Tåke av/på" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle minimap" -msgstr "Aktiverer minikart." +msgstr "Minikart av/på" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "" +msgstr "Gjennomtrengelige blokker av/på" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle pitchmove" -msgstr "Farget tåke" +msgstr "Pitchbevegelse (lateralaksevinkel) av/på" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" @@ -1712,9 +1699,8 @@ msgid "Exit" msgstr "Avslutt" #: src/gui/guiVolumeChange.cpp -#, fuzzy msgid "Muted" -msgstr "Demp" +msgstr "Av" #: src/gui/guiVolumeChange.cpp msgid "Sound Volume: " @@ -1748,6 +1734,7 @@ msgstr "" "utenfor hovedsirkelen." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1758,6 +1745,15 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" +"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" +"Kan benyttes for å flytte et ønsket punkt til (0, 0) for å opprette et\n" +"passende gjenoppstandelsespunkt, eller for å tillate 'zooming in' on a " +"desired\n" +"point ved å øke 'scale'.\n" +"Standardverdien is tuned for a suitable spawn point for Mandelbrot\n" +"sets with default parameters, it may need altering in other\n" +"situations.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." #: src/settings_translation_file.cpp msgid "" @@ -1769,6 +1765,13 @@ msgid "" "Default is for a vertically-squashed shape suitable for\n" "an island, set all 3 numbers equal for the raw shape." msgstr "" +"(X,Y,Z)-skalering for fraktal i blokker.\n" +"Faktisk fraktalstørrelse blir to til tre ganger større.\n" +"Man kan angi veldig store tall; fraktalen\n" +"behøver ikke passe inn i verdenen.\n" +"Øk disse tallene for å oppskalere på fraktalens detaljer.\n" +"Standardverdien gir en form som er sammenpresset\n" +"i høyden og egner seg til øy. Angi tre like tall for grunnformen." #: src/settings_translation_file.cpp msgid "" @@ -1778,31 +1781,31 @@ msgstr "" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of ridged mountains." -msgstr "" +msgstr "2D-støytall som styrer form og størrelse på høydedrag." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." -msgstr "" +msgstr "2D-støytall som styrer form og størrelse på bakkelandskap." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." -msgstr "" +msgstr "2D-støytall som styrer form og størrelse på trinnvise fjell." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." -msgstr "" +msgstr "2D-støytall som styrer fjellkjedestørrelse og -forekomst." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "" +msgstr "2D-støytall som styrer størrelse og forekomst av bakkelandskap." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of step mountain ranges." -msgstr "" +msgstr "2D-støytall som styrer størrelse og forekomst av trinnfjellkjeder." #: src/settings_translation_file.cpp msgid "2D noise that locates the river valleys and channels." -msgstr "" +msgstr "2D-støytall som plasserer elvedaler og elveleier." #: src/settings_translation_file.cpp msgid "3D clouds" @@ -1814,29 +1817,31 @@ msgstr "3D-modus" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." -msgstr "" +msgstr "3D-støytall som definerer kjempegrotter." #: src/settings_translation_file.cpp msgid "" "3D noise defining mountain structure and height.\n" "Also defines structure of floatland mountain terrain." msgstr "" +"3D-støytall som definerer fjellstruktur og -høyde.\n" +"Definerer også fjellterrengstruktur på luftøyer." #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." -msgstr "" +msgstr "3D-støytall som definerer strukturen til sidene i en elvekløft." #: src/settings_translation_file.cpp msgid "3D noise defining terrain." -msgstr "" +msgstr "3D-støytall som definerer terrenget." #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." -msgstr "" +msgstr "3D-støytall for fjelloverheng, klipper o. l. Vanligvis små variasjoner." #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "" +msgstr "3D-støytall som avgjør antall grotter per kartchunk." #: src/settings_translation_file.cpp msgid "" @@ -1851,23 +1856,35 @@ msgid "" "- pageflip: quadbuffer based 3d.\n" "Note that the interlaced mode requires shaders to be enabled." msgstr "" +"3D-støtte.\n" +"For øyeblikket støttes følgende alternativer:\n" +"- none: ingen 3D-utdata.\n" +"- anaglyph: cyan/magenta farge-3d.\n" +"- interlaced: skjermstøtte for partall/oddetall-linjebasert polarisering." +"\n" +"- topbottom: del skjermen i topp og bunn.\n" +"- sidebyside: del skjermen side om side.\n" +"- crossview: skjele-3d\n" +"- pageflip: quadbuffer-basert 3d.\n" +"Vær klar over at interlace-modus krever skyggelegging påslått." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Velg genereringsfrø for en ny verden. La det stå tomt for et tilfeldig et.\n" +"Blir erstattet når man oppretter en ny verden i hovedmenyen." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" +msgstr "Melding som vises til alle klienter når serveren krasjer." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." -msgstr "En melding å vise alle klienter når tjeneren slås av." +msgstr "Melding som vises alle klienter når serveren slås av." #: src/settings_translation_file.cpp -#, fuzzy msgid "ABM interval" msgstr "ABM-intervall" @@ -1881,11 +1898,11 @@ msgstr "Akselerasjon i luft" #: src/settings_translation_file.cpp msgid "Acceleration of gravity, in nodes per second per second." -msgstr "" +msgstr "Tyngdeakselerasjon, i blokker per sekund per sekund (b/s^2)." #: src/settings_translation_file.cpp msgid "Active Block Modifiers" -msgstr "" +msgstr "Aktive blokkendrere (ABM)" #: src/settings_translation_file.cpp #, fuzzy @@ -1894,11 +1911,11 @@ msgstr "Aktiv blokkeringsrekkevidde" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "Aktiv blokkeringsrekkevidde" +msgstr "Rekkevidde for aktive blokker" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "Område for sending av aktive objekt" #: src/settings_translation_file.cpp msgid "" @@ -1906,16 +1923,22 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Kobler til denne adressen.\n" +"La det stå tomt for å starte en lokal server.\n" +"Vær klar over at adressen i feltet i hovedmenyen overkjører denne " +"innstillingen." #: src/settings_translation_file.cpp msgid "Adds particles when digging a node." -msgstr "Legger til partikler når en node graves." +msgstr "Legger på partikler når man graver ut en blokk." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"Justér skjermens DPI-innstilling (ikke for X11/kun Android), f. eks. for 4k-" +"skjermer." #: src/settings_translation_file.cpp msgid "Advanced" @@ -1929,14 +1952,19 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Endrer lyskurven ved å bruke gammakurven (gamma-korreksjon) .\n" +"Høye verdier gjør middels og lave lysnivåer lysere.\n" +"Verdien «1.0» gir ingen endring i lyskurven.\n" +"Dette har reell betydning kun for dagslys og kunstig\n" +"belysning - det har lite å si for naturlig nattelys." #: src/settings_translation_file.cpp msgid "Altitude chill" -msgstr "" +msgstr "Temperaturen synker med stigende høyde" #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "Alltid flymodus og rask forflytning" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" @@ -1944,11 +1972,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Amount of messages a player may send per 10 seconds." -msgstr "" +msgstr "Antall meldinger en spiller kan sende hvert 10. sekund." #: src/settings_translation_file.cpp msgid "Amplifies the valleys." -msgstr "" +msgstr "Forsterker daler." #: src/settings_translation_file.cpp msgid "Anisotropic filtering" @@ -1956,38 +1984,39 @@ msgstr "Antisotropisk filtrering" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "Annonser tjener" +msgstr "Offentliggjør server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Announce to this serverlist." -msgstr "Annonser tjener" +msgstr "Offentliggjør for denne serverlisten." #: src/settings_translation_file.cpp msgid "Append item name" -msgstr "" +msgstr "Legg til elementnavn" #: src/settings_translation_file.cpp msgid "Append item name to tooltip." -msgstr "" +msgstr "Legg elementnavn til infoboble." #: src/settings_translation_file.cpp msgid "Apple trees noise" -msgstr "" +msgstr "Støytall for epletrær" #: src/settings_translation_file.cpp msgid "Arm inertia" -msgstr "" +msgstr "Treghet i armer" #: src/settings_translation_file.cpp msgid "" "Arm inertia, gives a more realistic movement of\n" "the arm when the camera moves." msgstr "" +"Å gi armene treghet fører til en mer virkelighetsnær\n" +"bevegelse av armene når kameraet flytter seg." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "Spør om gjentilkobling etter kræsj" +msgstr "Spør om å koble til igjen etter kræsj" #: src/settings_translation_file.cpp msgid "" @@ -2003,20 +2032,26 @@ msgid "" "optimization.\n" "Stated in mapblocks (16 nodes)." msgstr "" +"På denne avstanden vil serveren utføre en kraftig optimalisering\n" +"av hvilke blokker som sendes til klienten.\n" +"En lav verdi kan potensielt føre til en kraftig forbedring i ytelsen, \n" +"på bekostning av synlige gjengivelsesfeil (det kan skje at blokker ikke\n" +"gjengis under vann og i huler, tidvis heller ikke på land).\n" +"Angi denne verdien til høyere enn max_block_send_distance\n" +"for å slå av denne optimaliseringen.\n" +"Målenheten er «mapblocks» (en enhet på 16x16 blokker)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Automatic forward key" -msgstr "Tast for filmatisk tilstand" +msgstr "Tast for automatisk fremoverbevegelse" #: src/settings_translation_file.cpp msgid "Automatically jump up single-node obstacles." -msgstr "" +msgstr "Hopp automatisk over hindringer med høyde på én blokk." #: src/settings_translation_file.cpp -#, fuzzy msgid "Automatically report to the serverlist." -msgstr "Rapporter automatisk til tjenerlisten." +msgstr "Rapporter automatisk til serverlisten." #: src/settings_translation_file.cpp msgid "Autosave screen size" @@ -2024,7 +2059,7 @@ msgstr "Lagre skjermstørrelse automatisk" #: src/settings_translation_file.cpp msgid "Autoscaling mode" -msgstr "" +msgstr "Autoskaleringsmodus" #: src/settings_translation_file.cpp msgid "Backward key" @@ -2032,25 +2067,23 @@ msgstr "Rettetast" #: src/settings_translation_file.cpp msgid "Base ground level" -msgstr "" +msgstr "Bakkens grunnivå" #: src/settings_translation_file.cpp -#, fuzzy msgid "Base terrain height." -msgstr "Grunnleggende terrenghøyde" +msgstr "Terrengets grunnhøyde." #: src/settings_translation_file.cpp msgid "Basic" msgstr "Grunnleggende" #: src/settings_translation_file.cpp -#, fuzzy msgid "Basic privileges" -msgstr "Grunnleggende priviliger" +msgstr "Enkle rettigheter" #: src/settings_translation_file.cpp msgid "Beach noise" -msgstr "Strandlyd" +msgstr "Strandlys" #: src/settings_translation_file.cpp msgid "Beach noise threshold" @@ -2066,7 +2099,7 @@ msgstr "Bindingsadresse" #: src/settings_translation_file.cpp msgid "Biome API temperature and humidity noise parameters" -msgstr "" +msgstr "Temperatur- og fuktighetsparametre for biotop-APIet" #: src/settings_translation_file.cpp msgid "Biome noise" @@ -2078,24 +2111,23 @@ msgstr "Biter per piksel (dvs. fargedybde) i fullskjermsmodus." #: src/settings_translation_file.cpp msgid "Block send optimize distance" -msgstr "" +msgstr "Avstand for optimalizering av mapblocksending" #: src/settings_translation_file.cpp msgid "Bold and italic font path" -msgstr "" +msgstr "Filsti for fet og kursivert skrifttype" #: src/settings_translation_file.cpp msgid "Bold and italic monospace font path" -msgstr "" +msgstr "Filsti for fet og kursivert monospace skrifttype" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "Skriftsti" +msgstr "Filsti for fet skrifttype" #: src/settings_translation_file.cpp msgid "Bold monospace font path" -msgstr "" +msgstr "Filsti for fet monospace skrifttype" #: src/settings_translation_file.cpp msgid "Build inside player" @@ -2107,15 +2139,20 @@ msgstr "Innebygd" #: src/settings_translation_file.cpp msgid "Bumpmapping" -msgstr "" +msgstr "Teksturpåføring (bump mapping)" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" "Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" +"Kamera 'near clipping plane' avstand i noder, mellom 0 og 0,5.\n" +"Brukere flest vil ikke behøve å endre på dette.\n" +"Økning av verdi vil kunne redusere artefakter fra svakere skjermkort.\n" +"0.1 = standardverdi, 0.25 = grei verdi for svakere nettbrett." #: src/settings_translation_file.cpp msgid "Camera smoothing" @@ -2127,7 +2164,7 @@ msgstr "Kamerautjevning i filmmodus" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "" +msgstr "Av/på-tast for visningsoppdatning" #: src/settings_translation_file.cpp msgid "Cave noise" @@ -2162,7 +2199,6 @@ msgid "Cavern noise" msgstr "Grottelyd" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cavern taper" msgstr "Grotteinnsnevring" @@ -2171,15 +2207,16 @@ msgid "Cavern threshold" msgstr "Grotteterskel" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cavern upper limit" -msgstr "Grottegrense" +msgstr "Øvre grottegrense" #: src/settings_translation_file.cpp msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Midtpunkt på lysforsterkningskurven,\n" +"der 0.0 er minimumsnivået for lysstyrke mens 1.0 er maksimumsnivået." #: src/settings_translation_file.cpp msgid "" @@ -2190,6 +2227,12 @@ msgid "" "be\n" "necessary for smaller screens." msgstr "" +"Endrer hovedmenyens brukergrensesnitt (UI):\n" +"- Fullstendig: Flere enkeltspillerverdener, valg av spill, " +"teksturpakkevalg, osv.\n" +"- Enkel: Én enkeltspillerverden, ingen valg av spill eller teksturpakke. " +"Kan være\n" +"nødvendig på mindre skjermer." #: src/settings_translation_file.cpp msgid "Chat key" @@ -2197,21 +2240,19 @@ msgstr "Skydretast" #: src/settings_translation_file.cpp msgid "Chat message count limit" -msgstr "" +msgstr "Maks antall meldinger i chatten" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message format" -msgstr "Kræsjmelding" +msgstr "Chatmeldingsformat" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message kick threshold" -msgstr "Grotteterskel" +msgstr "Terskel for utvisning fra chat" #: src/settings_translation_file.cpp msgid "Chat message max length" -msgstr "" +msgstr "Maksstørrelse på melding i chatten" #: src/settings_translation_file.cpp msgid "Chat toggle key" @@ -2223,7 +2264,7 @@ msgstr "Sludrekommandoer" #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "Chunk-størrelse" #: src/settings_translation_file.cpp msgid "Cinematic mode" @@ -2235,7 +2276,7 @@ msgstr "Tast for filmatisk tilstand" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "" +msgstr "Rene, gjennomsiktige teksturer" #: src/settings_translation_file.cpp msgid "Client" @@ -2247,15 +2288,15 @@ msgstr "Klient og tjener" #: src/settings_translation_file.cpp msgid "Client modding" -msgstr "" +msgstr "Brukermodding" #: src/settings_translation_file.cpp msgid "Client side modding restrictions" -msgstr "" +msgstr "Moddebegrensninger på brukers side" #: src/settings_translation_file.cpp msgid "Client side node lookup range restriction" -msgstr "" +msgstr "Omfangsbegrensning av blokkoppslag hos klienten" #: src/settings_translation_file.cpp msgid "Climbing speed" @@ -2291,12 +2332,21 @@ msgid "" "These flags are independent from Minetest versions,\n" "so see a full list at https://content.minetest.net/help/content_flags/" msgstr "" +"Komma-atskilt liste med of flags to hide in the content repository.\n" +"\"nonfree\" kan brukes til å skjule pakker som ikke kvalifiserer som \"fri " +"programvare\"\n" +"som definert av Free Software Foundation.\n" +"Man kan også specify innholdsvurderinger.\n" +"Disse flags are uavhengige av Minetest-versjoner,\n" +"se fullstendig liste på https://content.minetest.net/help/content_flags/" #: src/settings_translation_file.cpp msgid "" "Comma-separated list of mods that are allowed to access HTTP APIs, which\n" "allow them to upload and download data to/from the internet." msgstr "" +"Kommaatskilt liste over modder som er gitt tilgang til HTTP-APIer.\n" +"Dette lar dem laste data opp og ned til internett." #: src/settings_translation_file.cpp msgid "" @@ -2337,9 +2387,8 @@ msgid "ContentDB Flag Blacklist" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "ContentDB URL" -msgstr "Fortsett" +msgstr "ContentDB-URL" #: src/settings_translation_file.cpp msgid "Continuous forward" @@ -2356,15 +2405,15 @@ msgid "Controls" msgstr "Kontroller" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Controls length of day/night cycle.\n" "Examples:\n" "72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." msgstr "" -"Kontrollerer lengden på dag/natt -syklus.\n" -"Eksempler: 72 = 20min, 360 = 4min, 1 = 24timer, 0 = dag/natt/hva det skal " -"være, forblir uendret." +"Styrer lengden på døgnet.\n" +"Eksempler:\n" +"1 = 24timer, 72 = 20min, 360 = 4min, 0 = dag/natt/hva det skal være, forblir " +"uendret." #: src/settings_translation_file.cpp msgid "Controls sinking speed in liquid." @@ -2422,9 +2471,8 @@ msgid "Debug info toggle key" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Debug log file size threshold" -msgstr "Strandlydsterskel" +msgstr "Størrelsesterskel for feilsøkingsloggfil" #: src/settings_translation_file.cpp msgid "Debug log level" @@ -2514,9 +2562,8 @@ msgid "Defines the base ground level." msgstr "Definerer treområder og skogstetthet." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the depth of the river channel." -msgstr "Definerer treområder og skogstetthet." +msgstr "Angir dybden på elveleier." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." @@ -2527,9 +2574,8 @@ msgid "Defines the width of the river channel." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river valley." -msgstr "Definerer område der trær har epler." +msgstr "Angir bredden på elveleiet." #: src/settings_translation_file.cpp msgid "Defines tree areas and tree density." @@ -2647,9 +2693,8 @@ msgid "Enable creative mode for new created maps." msgstr "Skru på kreativt modusfor nye opprettede kart." #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable joysticks" -msgstr "Skru på spillstikker" +msgstr "Bruk joystick" #: src/settings_translation_file.cpp msgid "Enable mod channels support." @@ -2844,7 +2889,7 @@ msgstr "Synsfelt" #: src/settings_translation_file.cpp msgid "Field of view in degrees." -msgstr "Synsfelt i grader" +msgstr "Synsfelt i grader." #: src/settings_translation_file.cpp msgid "" @@ -2852,11 +2897,12 @@ msgid "" "the\n" "Multiplayer Tab." msgstr "" +"Fil i klient/serverliste som inneholder yndlingsservere som vist\n" +"i flerspillefanen." #: src/settings_translation_file.cpp -#, fuzzy msgid "Filler depth" -msgstr "Elvedybde" +msgstr "Fylldybde" #: src/settings_translation_file.cpp msgid "Filler depth noise" @@ -2883,8 +2929,9 @@ msgid "First of 4 2D noises that together define hill/mountain range height." msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "First of two 3D noises that together define tunnels." -msgstr "" +msgstr "Det første av to 3D-støytall som sammen definerer tunneler." #: src/settings_translation_file.cpp msgid "Fixed map seed" @@ -2907,9 +2954,8 @@ msgid "Fog" msgstr "Tåke" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fog start" -msgstr "Tåkestart" +msgstr "Tåkegrense" #: src/settings_translation_file.cpp msgid "Fog toggle key" @@ -2917,11 +2963,11 @@ msgstr "Tåkevekslingstast" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Fet skrifttype som forvalg" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Kursiv skrifttype som forvalg" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3007,9 +3053,8 @@ msgid "Fraction of the visible distance at which fog starts to be rendered" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "FreeType fonts" -msgstr "FreeType-skrifter" +msgstr "FreeType-skrifttyper" #: src/settings_translation_file.cpp msgid "" @@ -3095,9 +3140,8 @@ msgid "Ground level" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Ground noise" -msgstr "Grottelyd" +msgstr "Bakkestøy" #: src/settings_translation_file.cpp msgid "HTTP mods" @@ -3154,31 +3198,27 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Hill steepness" -msgstr "" +msgstr "Bratthet for ås" #: src/settings_translation_file.cpp msgid "Hill threshold" -msgstr "" +msgstr "Terskel for ås" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hilliness1 noise" -msgstr "Varmestøy" +msgstr "Bakke støy 1" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hilliness2 noise" -msgstr "Varmestøy" +msgstr "Bakke støy 2" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hilliness3 noise" -msgstr "Varmestøy" +msgstr "Bakke støy 3" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hilliness4 noise" -msgstr "Varmestøy" +msgstr "Bakke støy 4" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." @@ -3630,19 +3670,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Julia w" -msgstr "Julia w" +msgstr "Julia-w" #: src/settings_translation_file.cpp msgid "Julia x" -msgstr "Julia x" +msgstr "Julia-x" #: src/settings_translation_file.cpp msgid "Julia y" -msgstr "Julia y" +msgstr "Julia-y" #: src/settings_translation_file.cpp msgid "Julia z" -msgstr "Julia z" +msgstr "Julia-z" #: src/settings_translation_file.cpp msgid "Jump key" @@ -5249,34 +5289,28 @@ msgid "Rightclick repetition interval" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel depth" -msgstr "Elvedybde" +msgstr "Elveleiedybde" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel width" -msgstr "Elvedybde" +msgstr "Elveleiebredde" #: src/settings_translation_file.cpp -#, fuzzy msgid "River depth" msgstr "Elvedybde" #: src/settings_translation_file.cpp -#, fuzzy msgid "River noise" msgstr "Elvestøy" #: src/settings_translation_file.cpp -#, fuzzy msgid "River size" msgstr "Elvestørrelse" #: src/settings_translation_file.cpp -#, fuzzy msgid "River valley width" -msgstr "Elvedybde" +msgstr "Bredde på elvedal" #: src/settings_translation_file.cpp msgid "Rollback recording" @@ -5368,19 +5402,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" -msgstr "" +msgstr "Se https://www.sqlite.org/pragma.html#pragma_synchronous" #: src/settings_translation_file.cpp msgid "Selection box border color (R,G,B)." -msgstr "" +msgstr "Kantfarge på utvalgsfelt (R,G,B)." #: src/settings_translation_file.cpp msgid "Selection box color" -msgstr "" +msgstr "Farge på utvalgsfelt" #: src/settings_translation_file.cpp msgid "Selection box width" -msgstr "" +msgstr "Bredde på utvalgsfelt" #: src/settings_translation_file.cpp msgid "" @@ -5407,76 +5441,77 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Server / Singleplayer" -msgstr "" +msgstr "Server/alene" #: src/settings_translation_file.cpp msgid "Server URL" -msgstr "" +msgstr "Server-URL" #: src/settings_translation_file.cpp msgid "Server address" -msgstr "" +msgstr "Serveradresse" #: src/settings_translation_file.cpp msgid "Server description" -msgstr "" +msgstr "Serverbeskrivelse" #: src/settings_translation_file.cpp msgid "Server name" -msgstr "" +msgstr "Servernavn" #: src/settings_translation_file.cpp msgid "Server port" -msgstr "" +msgstr "Serverport" #: src/settings_translation_file.cpp +#, fuzzy msgid "Server side occlusion culling" -msgstr "" +msgstr "Ikke-synlige blokker blir ikke sendt videre av serveren" #: src/settings_translation_file.cpp msgid "Serverlist URL" -msgstr "" +msgstr "Serverliste-URL" #: src/settings_translation_file.cpp msgid "Serverlist file" -msgstr "" +msgstr "Serverlistefil" #: src/settings_translation_file.cpp msgid "" "Set the language. Leave empty to use the system language.\n" "A restart is required after changing this." msgstr "" - -#: src/settings_translation_file.cpp -msgid "Set the maximum character length of a chat message sent by clients." -msgstr "" +"Angi språk. La stå tom for å bruke operativsystemets språk.\n" +"Krever omstart etter endring." #: src/settings_translation_file.cpp #, fuzzy +msgid "Set the maximum character length of a chat message sent by clients." +msgstr "Angi maksimalt antall tegn i chatmelding sendt av klienter." + +#: src/settings_translation_file.cpp msgid "" "Set to true to enable waving leaves.\n" "Requires shaders to be enabled." msgstr "" -"Aktiver for å slå på bølgende blader.\n" -"Krever at dybdeskapere er aktivert." +"Angi som sann for å slå på bladrasling.\n" +"Krever at skyggelegging er påslått." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving liquids (like water).\n" "Requires shaders to be enabled." msgstr "" -"Aktiver for å slå på bølgende blader.\n" -"Krever at dybdeskapere er aktivert." +"Angi som sann for å slå på væskeskvulping (som vann).\n" +"Krever at skyggelegging er påslått." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving plants.\n" "Requires shaders to be enabled." msgstr "" -"Aktiver for å slå på bølgende blader.\n" -"Krever at dybdeskapere er aktivert." +"Angi som sann for å slå på plantesvaiing.\n" +"Krever at skyggelegging er aktivert." #: src/settings_translation_file.cpp msgid "Shader path" @@ -5595,13 +5630,12 @@ msgid "Sound" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Special key" -msgstr "trykk tast" +msgstr "Spesialtast" #: src/settings_translation_file.cpp msgid "Special key for climbing/descending" -msgstr "" +msgstr "Spesialtast for klatring/nedklatring" #: src/settings_translation_file.cpp msgid "" @@ -5610,13 +5644,21 @@ msgid "" "(obviously, remote_media should end with a slash).\n" "Files that are not present will be fetched the usual way." msgstr "" +"Angir URL som klienten bruker for å hente media i stedet for å bruke UDP.\n" +"$filename burde være tilgjenglig fra $remote_media$filename via cURL\n" +"(remote_media bør selvfølgelig ende med skråstrek).\n" +"Filer som ikke er til stede hentes på den vanlige måten." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Spread of light curve boost range.\n" "Controls the width of the range to be boosted.\n" "Standard deviation of the light curve boost Gaussian." msgstr "" +"Spread of light curve boost range.\n" +"Styrer the width of the range to be boosted.\n" +"Standardavvik for lyskurvens boost Gaussian." #: src/settings_translation_file.cpp msgid "Static spawnpoint" @@ -5624,15 +5666,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Steepness noise" -msgstr "" +msgstr "Bratthetsstøy" #: src/settings_translation_file.cpp msgid "Step mountain size noise" -msgstr "" +msgstr "Bratt fjellside-støy" #: src/settings_translation_file.cpp msgid "Step mountain spread noise" -msgstr "" +msgstr "Spredningsstøy for bratt fjell" #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." @@ -5663,7 +5705,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Temperature variation for biomes." -msgstr "" +msgstr "Temperaturvariasjon for biomer." #: src/settings_translation_file.cpp msgid "Terrain alternative noise" @@ -6213,7 +6255,6 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "World start time" msgstr "Verdensstarttid" From 9003ddb8d636e74f49fb70c31de9097593b614a3 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 30 Mar 2020 19:20:09 +0000 Subject: [PATCH 029/424] Translated using Weblate (Danish) Currently translated at 47.8% (616 of 1288 strings) --- po/da/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/da/minetest.po b/po/da/minetest.po index 2013abeec..b66c348e1 100644 --- a/po/da/minetest.po +++ b/po/da/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Danish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-11-10 15:04+0000\n" -"Last-Translator: Krock \n" +"PO-Revision-Date: 2020-03-31 10:14+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: Danish \n" "Language: da\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -884,7 +884,7 @@ msgstr "Angivne sti til verdenen findes ikke: " #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "yes" +msgstr "no" #: src/client/game.cpp msgid "" From ad2e2d3f08e2a9f533317b1b5792e6eb585db4bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Sun, 29 Mar 2020 21:22:30 +0000 Subject: [PATCH 030/424] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 60.0% (774 of 1288 strings) --- po/nb/minetest.po | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/po/nb/minetest.po b/po/nb/minetest.po index 7d26b5dd0..f5ef848a6 100644 --- a/po/nb/minetest.po +++ b/po/nb/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Norwegian Bokmål (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-03-29 21:22+0000\n" -"Last-Translator: Liet Kynes \n" +"PO-Revision-Date: 2020-03-31 10:14+0000\n" +"Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" @@ -1858,15 +1858,15 @@ msgid "" msgstr "" "3D-støtte.\n" "For øyeblikket støttes følgende alternativer:\n" -"- none: ingen 3D-utdata.\n" -"- anaglyph: cyan/magenta farge-3d.\n" -"- interlaced: skjermstøtte for partall/oddetall-linjebasert polarisering." +"- none: Ingen 3D-utdata.\n" +"- anaglyph: Cyan/magenta farge-3D.\n" +"- interlaced: Skjermstøtte for partall/oddetall-linjebasert polarisering." "\n" -"- topbottom: del skjermen i topp og bunn.\n" -"- sidebyside: del skjermen side om side.\n" -"- crossview: skjele-3d\n" -"- pageflip: quadbuffer-basert 3d.\n" -"Vær klar over at interlace-modus krever skyggelegging påslått." +"- topbottom: Del skjermen i topp og bunn.\n" +"- sidebyside: Del skjermen side om side.\n" +"- crossview: Skjele-3d\n" +"- pageflip: Quadbuffer-basert 3d.\n" +"Vær klar over at interlace-modus krever at skyggelegging er påslått." #: src/settings_translation_file.cpp msgid "" From 39c4df6b802fafa92cb5bad4c4b003a2f0380a01 Mon Sep 17 00:00:00 2001 From: Liet Kynes Date: Sun, 29 Mar 2020 21:47:32 +0000 Subject: [PATCH 031/424] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 60.0% (774 of 1288 strings) --- po/nb/minetest.po | 182 ++++++++++++++++++++++++++++------------------ 1 file changed, 111 insertions(+), 71 deletions(-) diff --git a/po/nb/minetest.po b/po/nb/minetest.po index f5ef848a6..9c2b14149 100644 --- a/po/nb/minetest.po +++ b/po/nb/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" -"Last-Translator: Allan Nordhøy \n" +"Last-Translator: Liet Kynes \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" @@ -680,7 +680,7 @@ msgstr "Generer normale kart" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap" -msgstr "" +msgstr "Mipmap" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap + Aniso. Filter" @@ -989,11 +989,11 @@ msgstr "Oppretter tjener…" #: src/client/game.cpp msgid "Debug info and profiler graph hidden" -msgstr "" +msgstr "Skjuler feilsøkingsinfo og profilgraf" #: src/client/game.cpp msgid "Debug info shown" -msgstr "" +msgstr "Viser feilsøkingsinfo" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" @@ -1014,6 +1014,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"Standardstyring:\n" +"Ved ingen synlig meny:\n" +"- enkel berøring: knapp aktiveres\n" +"- dobbel berøring: legg på plass/bruke\n" +"- glidende berøring: se rundt deg\n" +"Meny/beholdning synlig:\n" +"- dobbel berøring (ute):\n" +" -->lukk\n" +"- berør stabel, berør spor:\n" +" --> flytt stabel\n" +"- berør&trekk, berør med den andre fingeren\n" +" --> legg én enkelt gjenstand i spor\n" #: src/client/game.cpp msgid "Disabled unlimited viewing range" @@ -1097,7 +1109,7 @@ msgstr "" #: src/client/game.cpp msgid "Minimap hidden" -msgstr "" +msgstr "Skjuler minikart" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" @@ -1137,7 +1149,7 @@ msgstr "" #: src/client/game.cpp msgid "Node definitions..." -msgstr "" +msgstr "Blokkdefinisjoner..." #: src/client/game.cpp msgid "Off" @@ -1225,7 +1237,7 @@ msgstr "Chat skjult" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "" +msgstr "Viser chat" #: src/client/gameui.cpp msgid "HUD hidden" @@ -2353,10 +2365,12 @@ msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" +"Kommainndelt liste med klarerte modder som har tilgang til usikre\n" +"funksjoner selv når moddsikkerhet er på (via request_insecure_environment())." #: src/settings_translation_file.cpp msgid "Command key" -msgstr "" +msgstr "Tast for chat og kommandoer" #: src/settings_translation_file.cpp msgid "Connect glass" @@ -2372,7 +2386,7 @@ msgstr "Forbinder glass hvis støttet av knutepunkt." #: src/settings_translation_file.cpp msgid "Console alpha" -msgstr "" +msgstr "Konsolldekkevne (opasitet)" #: src/settings_translation_file.cpp msgid "Console color" @@ -2384,7 +2398,7 @@ msgstr "Konsollhøyde" #: src/settings_translation_file.cpp msgid "ContentDB Flag Blacklist" -msgstr "" +msgstr "ContentDBs svarteliste" #: src/settings_translation_file.cpp msgid "ContentDB URL" @@ -2392,13 +2406,16 @@ msgstr "ContentDB-URL" #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "Kontinuerlig fremoverbevegelse" #: src/settings_translation_file.cpp msgid "" "Continuous forward movement, toggled by autoforward key.\n" "Press the autoforward key again or the backwards movement to disable." msgstr "" +"Kontinuerlig fremoverbevegelse, slås av/på med tasten for automatisk " +"fremover.\n" +"Trykk på automatisk fremover-tasten igjen eller gå bakover for å slå av." #: src/settings_translation_file.cpp msgid "Controls" @@ -2417,7 +2434,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Controls sinking speed in liquid." -msgstr "" +msgstr "Bestemmer synkehastigheten i væsker." #: src/settings_translation_file.cpp msgid "Controls steepness/depth of lake depressions." @@ -2460,7 +2477,7 @@ msgstr "Trådkorsfarge (R, G, B)." #: src/settings_translation_file.cpp msgid "DPI" -msgstr "" +msgstr "DPI (skjermoppløsning)" #: src/settings_translation_file.cpp msgid "Damage" @@ -2468,7 +2485,7 @@ msgstr "Skade" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Tast for å vise/skjule feilsøkingsinfo" #: src/settings_translation_file.cpp msgid "Debug log file size threshold" @@ -2484,11 +2501,11 @@ msgstr "Tast for senking av lydstyrke" #: src/settings_translation_file.cpp msgid "Decrease this to increase liquid resistance to movement." -msgstr "" +msgstr "Reduksjon av denne verdien øker bevegelsesmotstanden i væsker." #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "" +msgstr "Serverens oppdateringsintervall (servertikk)" #: src/settings_translation_file.cpp msgid "Default acceleration" @@ -2661,11 +2678,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Dungeon maximum Y" -msgstr "" +msgstr "Maksimum y-verdi for grotter" #: src/settings_translation_file.cpp msgid "Dungeon minimum Y" -msgstr "" +msgstr "Minimum y-verdi for grotter" #: src/settings_translation_file.cpp #, fuzzy @@ -2845,9 +2862,8 @@ msgid "Fall bobbing factor" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "Tilbakefallsskrift" +msgstr "Filsti for reserveskrifttype" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -3222,7 +3238,7 @@ msgstr "Bakke støy 4" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" +msgstr "Serverens hjemmeside, som vises i serverlisten." #: src/settings_translation_file.cpp msgid "" @@ -3583,7 +3599,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Inventory key" -msgstr "" +msgstr "Tast for beholdning" #: src/settings_translation_file.cpp msgid "Invert mouse" @@ -3591,7 +3607,7 @@ msgstr "Inverter mus" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "Inverter vertikale musebevegelser." #: src/settings_translation_file.cpp #, fuzzy @@ -4187,6 +4203,11 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Sniketast.\n" +"Brukes også for å gå ned på stiger og i vann dersom aux1_descends ikke " +"brukes.\n" +"See http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4368,7 +4389,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Leaves style" -msgstr "" +msgstr "Bladstil" #: src/settings_translation_file.cpp msgid "" @@ -4377,10 +4398,14 @@ msgid "" "- Simple: only outer faces, if defined special_tiles are used\n" "- Opaque: disable transparency" msgstr "" +"Bladstil:\n" +"- Stilig: alle sider synes\n" +"- Enkel: kun yttersider synes, dersom special_tiles brukes\n" +"- Tildekket: gjennomsiktighet er av" #: src/settings_translation_file.cpp msgid "Left key" -msgstr "" +msgstr "Venstretast" #: src/settings_translation_file.cpp msgid "" @@ -4520,7 +4545,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Main menu script" -msgstr "" +msgstr "Skript for hovedmeny" #: src/settings_translation_file.cpp #, fuzzy @@ -4542,7 +4567,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Map directory" -msgstr "" +msgstr "Mappe for kart" #: src/settings_translation_file.cpp msgid "Map generation attributes specific to Mapgen Carpathian." @@ -4595,7 +4620,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Map save interval" -msgstr "" +msgstr "Lagringsintervall for kart" #: src/settings_translation_file.cpp msgid "Mapblock limit" @@ -4709,11 +4734,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum FPS" -msgstr "" +msgstr "Maks FPS («frames» - bilder per sekund)" #: src/settings_translation_file.cpp msgid "Maximum FPS when game is paused." -msgstr "" +msgstr "Maks FPS når spillet står i pause." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -4821,11 +4846,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum users" -msgstr "" +msgstr "Maks antall brukere" #: src/settings_translation_file.cpp msgid "Menus" -msgstr "" +msgstr "Menyer" #: src/settings_translation_file.cpp msgid "Mesh cache" @@ -4833,7 +4858,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Message of the day" -msgstr "" +msgstr "Dagens melding" #: src/settings_translation_file.cpp msgid "Message of the day displayed to players connecting." @@ -4845,11 +4870,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Minimap" -msgstr "" +msgstr "Minikart" #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "Tast for minikart" #: src/settings_translation_file.cpp msgid "Minimap scan height" @@ -4881,11 +4906,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Monospace font path" -msgstr "" +msgstr "Filsti for monospace skrifttype" #: src/settings_translation_file.cpp msgid "Monospace font size" -msgstr "" +msgstr "Størrelse for monospace skrifttype" #: src/settings_translation_file.cpp msgid "Mountain height noise" @@ -4905,7 +4930,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" -msgstr "" +msgstr "Pekerfølsomhet" #: src/settings_translation_file.cpp msgid "Mouse sensitivity multiplier." @@ -5095,7 +5120,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Path to save screenshots at." -msgstr "" +msgstr "Filsti til lagring av skjermdumper." #: src/settings_translation_file.cpp msgid "" @@ -5129,7 +5154,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" +msgstr "Fysikk" #: src/settings_translation_file.cpp #, fuzzy @@ -5148,7 +5173,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Player name" -msgstr "" +msgstr "Spillernavn" #: src/settings_translation_file.cpp msgid "Player transfer distance" @@ -5217,7 +5242,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Range select key" -msgstr "" +msgstr "Tilfeldig inndata" #: src/settings_translation_file.cpp msgid "Recent Chat Messages" @@ -5234,7 +5259,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Remote port" -msgstr "" +msgstr "Eksterne media" #: src/settings_translation_file.cpp msgid "" @@ -5244,7 +5269,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." -msgstr "" +msgstr "Ekstern port." #: src/settings_translation_file.cpp msgid "Report path" @@ -5359,15 +5384,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Screen height" -msgstr "" +msgstr "Skjermhøyde" #: src/settings_translation_file.cpp msgid "Screen width" -msgstr "" +msgstr "Skjermbredde" #: src/settings_translation_file.cpp msgid "Screenshot folder" -msgstr "" +msgstr "Mappe for skjermdumper" #: src/settings_translation_file.cpp msgid "Screenshot format" @@ -5398,7 +5423,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Security" -msgstr "" +msgstr "Sikkerhet" #: src/settings_translation_file.cpp msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" @@ -5543,7 +5568,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Show debug info" -msgstr "" +msgstr "Vis feilsøkingsinfo" #: src/settings_translation_file.cpp msgid "Show entity selection boxes" @@ -5551,7 +5576,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Shutdown message" -msgstr "" +msgstr "Beskjed ved avslutning" #: src/settings_translation_file.cpp msgid "" @@ -5614,7 +5639,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Sneak key" -msgstr "" +msgstr "Sniketast" #: src/settings_translation_file.cpp #, fuzzy @@ -5627,7 +5652,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Sound" -msgstr "" +msgstr "Lyd" #: src/settings_translation_file.cpp msgid "Special key" @@ -5662,7 +5687,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Static spawnpoint" -msgstr "" +msgstr "Fast gjenoppstandelsespunkt" #: src/settings_translation_file.cpp msgid "Steepness noise" @@ -5701,7 +5726,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Synchronous SQLite" -msgstr "" +msgstr "Synkron SQLite" #: src/settings_translation_file.cpp msgid "Temperature variation for biomes." @@ -5748,7 +5773,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Texture path" -msgstr "" +msgstr "Filsti for teksturer" #: src/settings_translation_file.cpp msgid "" @@ -5795,6 +5820,11 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" +"Makshøyden for overflaten på væsker som skvulper.\n" +"4,0 = Bølgehøyde er to blokker.\n" +"0,0 = Bølger flytter seg ikke i det hele tatt.\n" +"Forvalgt verdi er 1,0 (1/2 blokk).\n" +"Krever at væskebølger er påslått." #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -5925,7 +5955,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Trilinear filtering" -msgstr "" +msgstr "Forsinkelse for infoboble" #: src/settings_translation_file.cpp msgid "" @@ -5933,10 +5963,13 @@ msgid "" "False = 128\n" "Usable to make minimap smoother on slower machines." msgstr "" +"Sann = 256\n" +"Usann = 128\n" +"Kan gjøre at minikartet kjører lettere på trege maskiner." #: src/settings_translation_file.cpp msgid "Trusted mods" -msgstr "" +msgstr "Klarterte modder" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." @@ -5969,11 +6002,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." -msgstr "" +msgstr "Bruk 3D-skyer i stedet for flate." #: src/settings_translation_file.cpp msgid "Use a cloud animation for the main menu background." -msgstr "" +msgstr "Bruk animerte skyer som bakgrunn for hovedmenyen." #: src/settings_translation_file.cpp msgid "Use anisotropic filtering when viewing at textures from an angle." @@ -6060,7 +6093,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Video driver" -msgstr "" +msgstr "Videodriver" #: src/settings_translation_file.cpp msgid "View bobbing factor" @@ -6092,13 +6125,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Volume" -msgstr "" +msgstr "Volum" #: src/settings_translation_file.cpp msgid "" "Volume of all sounds.\n" "Requires the sound system to be enabled." msgstr "" +"Volum på all lyd. \n" +"Krever påslått lydsystem." #: src/settings_translation_file.cpp msgid "" @@ -6115,7 +6150,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Walking speed" -msgstr "" +msgstr "Gangfart" #: src/settings_translation_file.cpp msgid "Walking, flying and climbing speed in fast mode, in nodes per second." @@ -6123,7 +6158,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "Vannivå" #: src/settings_translation_file.cpp msgid "Water surface level of the world." @@ -6131,11 +6166,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Waving Nodes" -msgstr "" +msgstr "Blokksvaiing" #: src/settings_translation_file.cpp msgid "Waving leaves" -msgstr "" +msgstr "Bladrasling" #: src/settings_translation_file.cpp #, fuzzy @@ -6159,7 +6194,7 @@ msgstr "Bølgende vann" #: src/settings_translation_file.cpp msgid "Waving plants" -msgstr "" +msgstr "Plantesvaiing" #: src/settings_translation_file.cpp msgid "" @@ -6253,6 +6288,8 @@ msgid "" "World directory (everything in the world is stored here).\n" "Not needed if starting from the main menu." msgstr "" +"Mappe for verden (alt i verdenen lagres her).\n" +"Trengs ikke hvis den opprettes fra hovedmenyen." #: src/settings_translation_file.cpp msgid "World start time" @@ -6274,17 +6311,20 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Y of flat ground." -msgstr "" +msgstr "Y-koordinat for flatt land." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Y of mountain density gradient zero level. Used to shift mountains " "vertically." msgstr "" +"Y for nullnivået for tetthetsgradient til fjell. Brukes for å forskyve fjell " +"i høyden." #: src/settings_translation_file.cpp msgid "Y of upper limit of large caves." -msgstr "" +msgstr "Y-verdi for store grotters øvre grense." #: src/settings_translation_file.cpp msgid "Y-distance over which caverns expand to full size." @@ -6292,15 +6332,15 @@ msgstr "Y-avstand som en grotte kan øke i størrelse til full størrelse." #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." -msgstr "" +msgstr "Y-nivå for gjennomsnittlig terrengoverflate." #: src/settings_translation_file.cpp msgid "Y-level of cavern upper limit." -msgstr "" +msgstr "Y-nivå for øvre grottegrense." #: src/settings_translation_file.cpp msgid "Y-level of higher terrain that creates cliffs." -msgstr "" +msgstr "Y-nivå for høytliggende terreng som fører til klipper." #: src/settings_translation_file.cpp msgid "Y-level of lower terrain and seabed." From 391432eb9e318aa386be1a1ca58e5064c135f100 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 30 Mar 2020 19:34:57 +0000 Subject: [PATCH 032/424] Translated using Weblate (Polish) Currently translated at 77.0% (992 of 1288 strings) --- po/pl/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/pl/minetest.po b/po/pl/minetest.po index cf677bb15..c7eb20fab 100644 --- a/po/pl/minetest.po +++ b/po/pl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Polish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-11-04 17:03+0000\n" -"Last-Translator: Mateusz Mendel \n" +"PO-Revision-Date: 2020-03-31 10:14+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: Polish \n" "Language: pl\n" @@ -13,7 +13,7 @@ msgstr "" "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 3.10-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -871,7 +871,7 @@ msgstr "Podana ścieżka świata nie istnieje: " #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "yes" +msgstr "no" #: src/client/game.cpp msgid "" From c71e54fa6d5e3dc096353fbf7a9d88c28c12e1ad Mon Sep 17 00:00:00 2001 From: ssantos Date: Sun, 29 Mar 2020 19:12:59 +0000 Subject: [PATCH 033/424] Translated using Weblate (Portuguese) Currently translated at 95.8% (1234 of 1288 strings) --- po/pt/minetest.po | 62 +++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/po/pt/minetest.po b/po/pt/minetest.po index c4dce6b9c..80739054a 100644 --- a/po/pt/minetest.po +++ b/po/pt/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Portuguese (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-01-11 18:26+0000\n" -"Last-Translator: rubenwardy \n" +"PO-Revision-Date: 2020-03-31 10:14+0000\n" +"Last-Translator: ssantos \n" "Language-Team: Portuguese \n" "Language: pt\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.10.1\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1760,7 +1760,6 @@ msgstr "" "estiver fora do circulo principal." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1771,13 +1770,14 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" -"(X,Y,Z) Espaço do fractal a partir centro do mundo em unidades de 'escala'.\n" -"Pode ser usado para mover um ponto desejado para (0, 0) para criar um ponto " -"de spawn apropriado, ou para permitir zoom em um ponto desejado aumentando " -"sua escala.\n" -"O padrão é configurado para ponto de spawn mandelbrot, pode ser necessário " -"altera-lo em outras situações.\n" -"Variam de -2 a 2. Multiplica por \"escala\" para compensação de nós." +"(X,Y,Z) compensação de fractal do centro mundial em unidades de 'escala'.\n" +"Pode ser usado para mover um ponto desejado para (0, 0) para criar um\n" +"ponto de desova adequado ou para permitir o \"zoom in\" sobre um\n" +"ponto por aumentar a \"escala\".\n" +"O padrão é sintonizado para um ponto de desova adequado para Mandelbrot\n" +"com parâmetros padrão, pode precisar ser alterado em outras\n" +"situações.\n" +"Gama aproximadamente -2 a 2. Multiplicar por 'escala' para compensar em nós." #: src/settings_translation_file.cpp msgid "" @@ -1981,6 +1981,11 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Altera a curva da luz, aplicando-lhe a 'correção gama'.\n" +"Valores altos tornam os níveis médios e inferiores de luz mais brilhantes.\n" +"O valor '1.0' deixa a curva de luz inalterada.\n" +"Isto só tem um efeito significativo sobre a luz do dia e a luz artificial,\n" +"tem muito pouco efeito na luz natural da noite." #: src/settings_translation_file.cpp msgid "Altitude chill" @@ -2138,22 +2143,18 @@ msgid "Block send optimize distance" msgstr "Distância otimizada de envio de bloco" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "Caminho de fonte monoespaçada" +msgstr "Caminho de fonte para negrito e itálico" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" -msgstr "Caminho de fonte monoespaçada" +msgstr "Caminho de fonte monoespacial negrito e itálico" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "Caminho para ficheiro fonte" +msgstr "Caminho da fonte negrito" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" msgstr "Caminho de fonte monoespaçada" @@ -2242,6 +2243,8 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Faixa de aumento do centro da curva de luz.\n" +"0,0 é o nível mínimo de luz, 1,0 é o nível máximo de luz." #: src/settings_translation_file.cpp msgid "" @@ -2464,6 +2467,9 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"Controla a largura de túneis, um valor mais baixo cria túneis mais largos.\n" +"Valores >= 10,0 desativam completamente a geração de túneis e evitam\n" +"cálculos intensos de ruído." #: src/settings_translation_file.cpp msgid "Crash message" @@ -2726,6 +2732,8 @@ msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"Ativar suporte de IPv6 (tanto para cliente como para servidor).\n" +"Necessário para que conexões de IPv6 funcionem." #: src/settings_translation_file.cpp msgid "" @@ -2814,6 +2822,8 @@ msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"Ativar os objectos buffer de vértice.\n" +"Isto deve melhorar muito o desempenho gráfico." #: src/settings_translation_file.cpp msgid "" @@ -2840,6 +2850,12 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"Permite o mapeamento de tom de filme 'Uncharted 2' de Hable.\n" +"Simula a curva de tonalidade do filme fotográfico e como esta se aproxima " +"da\n" +"aparência de imagens de alta gama dinâmica. O contraste de gama média é " +"ligeiramente\n" +"melhorada, os destaques e as sombras são gradualmente comprimidos." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." @@ -2888,6 +2904,10 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"Possibilita o sistema de som.\n" +"Se desativado, desativa completamente todos os sons em todo o lado e \n" +"os controles de som no jogo não funcionarão.\n" +"A alteração desta configuração requer um reinício." #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" @@ -3046,11 +3066,11 @@ msgstr "Tecla de ativar/desativar nevoeiro" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Fonte em negrito por predefinição" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Fonte em itálico por predefinição" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3066,7 +3086,7 @@ msgstr "Tamanho da fonte" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "Tamanho da fonte predefinida em pontos (pt)." #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." From c08ced09287a6f15d0c7542ea1ce70ecadfab9db Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 30 Mar 2020 19:38:02 +0000 Subject: [PATCH 034/424] Translated using Weblate (Ukrainian) Currently translated at 41.3% (533 of 1288 strings) --- po/uk/minetest.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/po/uk/minetest.po b/po/uk/minetest.po index ccf12fa8b..a584fddb8 100644 --- a/po/uk/minetest.po +++ b/po/uk/minetest.po @@ -3,17 +3,17 @@ msgstr "" "Project-Id-Version: Ukrainian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-11-27 20:04+0000\n" -"Last-Translator: Fixer \n" +"PO-Revision-Date: 2020-03-31 10:14+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.10-dev\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 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -866,7 +866,7 @@ msgstr "Вказаний шлях до світу не існує: " #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "no" #: src/client/game.cpp msgid "" From 665b90a3c4116e26818d8b750f0bf07615f3e37f Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 30 Mar 2020 19:29:02 +0000 Subject: [PATCH 035/424] Translated using Weblate (Esperanto) Currently translated at 99.3% (1279 of 1288 strings) --- po/eo/minetest.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/eo/minetest.po b/po/eo/minetest.po index 01c9cb498..03176fc59 100644 --- a/po/eo/minetest.po +++ b/po/eo/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Esperanto (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-03-28 22:09+0000\n" -"Last-Translator: Tirifto \n" +"PO-Revision-Date: 2020-03-31 10:14+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: Esperanto \n" "Language: eo\n" @@ -863,7 +863,7 @@ msgstr "Donita monda dosierindiko ne ekzistas: " #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "yes" +msgstr "no" #: src/client/game.cpp msgid "" From 19b8f12e79021303e61f99200800af261df26b78 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 30 Mar 2020 19:37:27 +0000 Subject: [PATCH 036/424] Translated using Weblate (Swedish) Currently translated at 32.1% (414 of 1288 strings) --- po/sv/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/sv/minetest.po b/po/sv/minetest.po index daa065a7b..224ed9d05 100644 --- a/po/sv/minetest.po +++ b/po/sv/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Swedish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-10-29 11:53+0000\n" -"Last-Translator: Mattias Münster \n" +"PO-Revision-Date: 2020-03-31 10:14+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.9.1\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -896,7 +896,7 @@ msgstr "Den angivna sökvägen för världen existerar inte: " #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "no" #: src/client/game.cpp msgid "" From 82a08213f029dac6e1accca37c253c1c49cbc3fe Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 30 Mar 2020 19:34:29 +0000 Subject: [PATCH 037/424] Translated using Weblate (Norwegian Nynorsk) Currently translated at 30.9% (398 of 1288 strings) --- po/nn/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/nn/minetest.po b/po/nn/minetest.po index e6cf4d8d7..b6bc835f5 100644 --- a/po/nn/minetest.po +++ b/po/nn/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Norwegian Nynorsk (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-11-10 15:04+0000\n" -"Last-Translator: Krock \n" +"PO-Revision-Date: 2020-03-31 10:14+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: Norwegian Nynorsk \n" "Language: nn\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -872,7 +872,7 @@ msgstr "Verds-ruta du ga finnes ikkje: " #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "yes" +msgstr "no" #: src/client/game.cpp msgid "" From 96696cd1c0e424380e97ea0e973c0b5db47b9635 Mon Sep 17 00:00:00 2001 From: anonymous Date: Tue, 31 Mar 2020 15:02:53 +0000 Subject: [PATCH 038/424] Translated using Weblate (Russian) Currently translated at 94.6% (1219 of 1288 strings) --- po/ru/minetest.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/po/ru/minetest.po b/po/ru/minetest.po index d02d2a984..cecb59edc 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -3,17 +3,17 @@ msgstr "" "Project-Id-Version: Russian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2019-12-05 07:05+0000\n" -"Last-Translator: Andrei Stepanov \n" +"PO-Revision-Date: 2020-03-31 15:03+0000\n" +"Last-Translator: anonymous \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 3.10-dev\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 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -25,7 +25,7 @@ msgstr "Вы умерли" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" -msgstr "Обнаружена ошибка в скрипте Lua:" +msgstr "Произошла ошибка в скрипте Lua:" #: builtin/fstk/ui.lua msgid "An error occurred:" From be0200b2157f1dc444ec2d07e1784aec1375127a Mon Sep 17 00:00:00 2001 From: Tiller Luna Date: Tue, 31 Mar 2020 15:11:39 +0000 Subject: [PATCH 039/424] Translated using Weblate (Russian) Currently translated at 94.4% (1217 of 1288 strings) --- po/ru/minetest.po | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/po/ru/minetest.po b/po/ru/minetest.po index cecb59edc..bcb767e0b 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Russian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-03-31 15:03+0000\n" -"Last-Translator: anonymous \n" +"PO-Revision-Date: 2020-04-02 14:09+0000\n" +"Last-Translator: Tiller Luna \n" "Language-Team: Russian \n" "Language: ru\n" @@ -96,7 +96,7 @@ msgstr "Отключить все" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "Отключить пакет" +msgstr "Отключить пакет модов" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" @@ -104,7 +104,7 @@ msgstr "Включить все" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "Включить пакет" +msgstr "Включить пакет модов" #: builtin/mainmenu/dlg_config_world.lua msgid "" @@ -120,7 +120,7 @@ msgstr "Мод:" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" -msgstr "Нет необязательных зависимостей" +msgstr "Нет (необязательных) зависимостей" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." @@ -152,6 +152,7 @@ msgid "World:" msgstr "Мир:" #: builtin/mainmenu/dlg_config_world.lua +#, fuzzy msgid "enabled" msgstr "включить" @@ -293,6 +294,7 @@ msgid "Rename Modpack:" msgstr "Переименовать пакет модов:" #: builtin/mainmenu/dlg_rename_modpack.lua +#, fuzzy msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." @@ -353,6 +355,7 @@ msgid "Please enter a valid number." msgstr "Пожалуйста, введите допустимое число." #: builtin/mainmenu/dlg_settings_advanced.lua +#, fuzzy msgid "Restore Default" msgstr "Сбросить значение" @@ -425,6 +428,7 @@ msgid "$1 mods" msgstr "$1 модов" #: builtin/mainmenu/pkgmgr.lua +#, fuzzy msgid "Failed to install $1 to $2" msgstr "Невозможно установить $1 в $2" @@ -558,7 +562,7 @@ msgstr "Запустить сервер" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" -msgstr "Имя / Пароль" +msgstr "Имя/Пароль" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -836,7 +840,7 @@ msgstr "Сборка шейдеров..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" -msgstr "Ошибка соединения (таймаут?)" +msgstr "Ошибка соединения (тайм-аут?)" #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" @@ -1114,7 +1118,7 @@ msgstr "МиБ/с" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "Миникарта в настоящее время отключена игрой или модом" +msgstr "Миникарта сейчас отключена игрой или модом" #: src/client/game.cpp msgid "Minimap hidden" @@ -4557,7 +4561,7 @@ msgstr "" msgid "Kick players who sent more than X messages per 10 seconds." msgstr "" "Если клиент отправит в чат столько сообщений в течении 10 секунд, то будет " -"отключен от сервера." +"отключён от сервера." #: src/settings_translation_file.cpp msgid "Lake steepness" @@ -4889,7 +4893,7 @@ msgstr "Размер кэша блоков карты в генераторе м #: src/settings_translation_file.cpp msgid "Mapblock unload timeout" -msgstr "Таймаут выгрузки блоков" +msgstr "Тайм-аут выгрузки блоков" #: src/settings_translation_file.cpp msgid "Mapgen Carpathian" @@ -6851,7 +6855,7 @@ msgstr "Y-уровень морского дна." #: src/settings_translation_file.cpp msgid "cURL file download timeout" -msgstr "Таймаут загрузки файла с помощью cURL" +msgstr "Тайм-аут загрузки файла с помощью cURL" #: src/settings_translation_file.cpp msgid "cURL parallel limit" From 965e2028dea964baa52b8fffa0d8e30323ad8ace Mon Sep 17 00:00:00 2001 From: THANOS SIOURDAKIS Date: Tue, 31 Mar 2020 16:40:14 +0000 Subject: [PATCH 040/424] Translated using Weblate (Greek) Currently translated at 1.7% (22 of 1288 strings) --- po/el/minetest.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/po/el/minetest.po b/po/el/minetest.po index 8690fa3c7..25f49c994 100644 --- a/po/el/minetest.po +++ b/po/el/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Greek (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-01-11 18:26+0000\n" -"Last-Translator: rubenwardy \n" +"PO-Revision-Date: 2020-03-31 20:29+0000\n" +"Last-Translator: THANOS SIOURDAKIS \n" "Language-Team: Greek \n" "Language: el\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10.1\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -92,7 +92,7 @@ msgstr "Εξαρτήσεις:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" -msgstr "" +msgstr "Απενεργοποίηση όλων" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" @@ -100,7 +100,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "" +msgstr "Ενεργοποίηση όλων" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" @@ -118,11 +118,11 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" -msgstr "" +msgstr "Δεν υπάρχουν (προαιρετικές) εξαρτήσεις" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr "" +msgstr "Δεν παρέχεται περιγραφή παιχνιδιού." #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" From 11f452586547dd930b4e64a2d0af3c9512192970 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Fri, 3 Apr 2020 17:17:31 +0000 Subject: [PATCH 041/424] Translated using Weblate (French) Currently translated at 96.0% (1237 of 1288 strings) --- po/fr/minetest.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/fr/minetest.po b/po/fr/minetest.po index 150a79c66..85bd20888 100644 --- a/po/fr/minetest.po +++ b/po/fr/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: French (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-03-03 04:32+0000\n" -"Last-Translator: Lucas Burlingham \n" +"PO-Revision-Date: 2020-04-03 20:24+0000\n" +"Last-Translator: Allan Nordhøy \n" "Language-Team: French \n" "Language: fr\n" @@ -2472,7 +2472,7 @@ msgid "" msgstr "" "Contrôle la largeur des tunnels, une valeur plus faible crée des tunnels " "plus large.\n" -"Valeur >= 10.0 désactive complètement la génération de tunnel et évite le " +"Valeur >= 10.0 désactive complètement la génération de tunnel et évite le " "calcul intensif de bruit." #: src/settings_translation_file.cpp From e223d7cf57390c48c29117a6f5ce5e2813357d7c Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 3 Apr 2020 20:08:33 +0000 Subject: [PATCH 042/424] Translated using Weblate (Hungarian) Currently translated at 59.6% (768 of 1288 strings) --- po/hu/minetest.po | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/po/hu/minetest.po b/po/hu/minetest.po index bf8f4150f..d22f4f337 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Hungarian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-03-01 19:51+0000\n" -"Last-Translator: Ács Zoltán \n" +"PO-Revision-Date: 2020-04-03 20:24+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -1737,9 +1737,8 @@ msgid "Enter " msgstr "Belépés " #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp -#, fuzzy msgid "LANG_CODE" -msgstr "NYELV_KÓD" +msgstr "hu" #: src/settings_translation_file.cpp msgid "" From 65884816be554313afbbb94033b39e51a2155316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Fri, 3 Apr 2020 10:49:25 +0000 Subject: [PATCH 043/424] Translated using Weblate (Indonesian) Currently translated at 92.0% (1185 of 1288 strings) --- po/id/minetest.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/po/id/minetest.po b/po/id/minetest.po index 970a5423c..fbd070d16 100644 --- a/po/id/minetest.po +++ b/po/id/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Indonesian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-01-18 20:21+0000\n" -"PO-Revision-Date: 2020-01-06 03:21+0000\n" -"Last-Translator: Dhimas Wnz \n" +"PO-Revision-Date: 2020-04-03 20:24+0000\n" +"Last-Translator: Allan Nordhøy \n" "Language-Team: Indonesian \n" "Language: id\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.10\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1525,7 +1525,7 @@ msgid "Register and Join" msgstr "Daftar dan gabung" #: src/gui/guiConfirmRegistration.cpp -#, c-format +#, c-format, fuzzy msgid "" "You are about to join this server with the name \"%s\" for the first time.\n" "If you proceed, a new account using your credentials will be created on this " @@ -1533,9 +1533,9 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" -"Anda akan bergabung dengan server %1$s dengan nama \"%2$s\" untuk pertama " -"kalinya. Jika Anda melanjutkan, akun baru yang telah Anda isikan akan dibuat " -"pada server ini.\n" +"Anda akan bergabung dengan server dengan nama \"%s\" untuk pertama kalinya. " +"Jika Anda melanjutkan, akun baru yang telah Anda isikan akan dibuat pada " +"server ini.\n" "Silakan ketik ulang kata sandi Anda dan klik Daftar dan gabung untuk " "mengonfirmasi pembuatan akun atau klik Batal untuk membatalkan." From 6940e5a191e14c024a123d91a66855ff298c5b84 Mon Sep 17 00:00:00 2001 From: "updatepo.sh" Date: Fri, 3 Apr 2020 23:17:42 +0200 Subject: [PATCH 044/424] Update minetest.conf.example, settings_translation_file.cpp --- minetest.conf.example | 55 ++++++++++++++++--------------- src/settings_translation_file.cpp | 4 +-- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/minetest.conf.example b/minetest.conf.example index 5bc41a9a4..1c1796a14 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -1371,7 +1371,7 @@ # ask_reconnect_on_crash = false # From how far clients know about objects, stated in mapblocks (16 nodes). -# +# # Setting this larger than active_block_range will also cause the server # to maintain active objects up to this distance in the direction the # player is looking. (This can avoid mobs suddenly disappearing from view) @@ -1920,7 +1920,7 @@ # octaves = 3, # persistence = 0.5, # lacunarity = 2.0, -# flags = +# flags = # } # Second of two 3D noises that together define tunnels. @@ -1933,7 +1933,7 @@ # octaves = 3, # persistence = 0.5, # lacunarity = 2.0, -# flags = +# flags = # } # 3D noise defining giant caverns. @@ -1946,7 +1946,7 @@ # octaves = 5, # persistence = 0.63, # lacunarity = 2.0, -# flags = +# flags = # } # 3D noise defining terrain. @@ -1972,7 +1972,7 @@ # octaves = 2, # persistence = 0.8, # lacunarity = 2.0, -# flags = +# flags = # } ## Mapgen V6 @@ -2312,7 +2312,7 @@ # octaves = 5, # persistence = 0.63, # lacunarity = 2.0, -# flags = +# flags = # } # 3D noise defining structure of river canyon walls. @@ -2325,7 +2325,7 @@ # octaves = 4, # persistence = 0.75, # lacunarity = 2.0, -# flags = +# flags = # } # 3D noise defining giant caverns. @@ -2338,7 +2338,7 @@ # octaves = 5, # persistence = 0.63, # lacunarity = 2.0, -# flags = +# flags = # } # First of two 3D noises that together define tunnels. @@ -2351,7 +2351,7 @@ # octaves = 3, # persistence = 0.5, # lacunarity = 2.0, -# flags = +# flags = # } # Second of two 3D noises that together define tunnels. @@ -2364,7 +2364,7 @@ # octaves = 3, # persistence = 0.5, # lacunarity = 2.0, -# flags = +# flags = # } # 3D noise that determines number of dungeons per mapchunk. @@ -2377,7 +2377,7 @@ # octaves = 2, # persistence = 0.8, # lacunarity = 2.0, -# flags = +# flags = # } ## Mapgen Carpathian @@ -2620,7 +2620,7 @@ # octaves = 5, # persistence = 0.55, # lacunarity = 2.0, -# flags = +# flags = # } # First of two 3D noises that together define tunnels. @@ -2633,7 +2633,7 @@ # octaves = 3, # persistence = 0.5, # lacunarity = 2.0, -# flags = +# flags = # } # Second of two 3D noises that together define tunnels. @@ -2646,7 +2646,7 @@ # octaves = 3, # persistence = 0.5, # lacunarity = 2.0, -# flags = +# flags = # } # 3D noise defining giant caverns. @@ -2659,7 +2659,7 @@ # octaves = 5, # persistence = 0.63, # lacunarity = 2.0, -# flags = +# flags = # } # 3D noise that determines number of dungeons per mapchunk. @@ -2672,7 +2672,7 @@ # octaves = 2, # persistence = 0.8, # lacunarity = 2.0, -# flags = +# flags = # } ## Mapgen Flat @@ -2782,7 +2782,7 @@ # octaves = 3, # persistence = 0.5, # lacunarity = 2.0, -# flags = +# flags = # } # Second of two 3D noises that together define tunnels. @@ -2795,7 +2795,7 @@ # octaves = 3, # persistence = 0.5, # lacunarity = 2.0, -# flags = +# flags = # } # 3D noise that determines number of dungeons per mapchunk. @@ -2808,7 +2808,7 @@ # octaves = 2, # persistence = 0.8, # lacunarity = 2.0, -# flags = +# flags = # } ## Mapgen Fractal @@ -2982,7 +2982,7 @@ # octaves = 3, # persistence = 0.5, # lacunarity = 2.0, -# flags = +# flags = # } # Second of two 3D noises that together define tunnels. @@ -2995,7 +2995,7 @@ # octaves = 3, # persistence = 0.5, # lacunarity = 2.0, -# flags = +# flags = # } # 3D noise that determines number of dungeons per mapchunk. @@ -3008,7 +3008,7 @@ # octaves = 2, # persistence = 0.8, # lacunarity = 2.0, -# flags = +# flags = # } ## Mapgen Valleys @@ -3098,7 +3098,7 @@ # octaves = 3, # persistence = 0.5, # lacunarity = 2.0, -# flags = +# flags = # } # Second of two 3D noises that together define tunnels. @@ -3111,7 +3111,7 @@ # octaves = 3, # persistence = 0.5, # lacunarity = 2.0, -# flags = +# flags = # } # The depth of dirt or other biome filler node. @@ -3137,7 +3137,7 @@ # octaves = 6, # persistence = 0.63, # lacunarity = 2.0, -# flags = +# flags = # } # Defines large-scale river channel structure. @@ -3189,7 +3189,7 @@ # octaves = 6, # persistence = 0.8, # lacunarity = 2.0, -# flags = +# flags = # } # Amplifies the valleys. @@ -3228,7 +3228,7 @@ # octaves = 2, # persistence = 0.8, # lacunarity = 2.0, -# flags = +# flags = # } ## Advanced @@ -3292,3 +3292,4 @@ # so see a full list at https://content.minetest.net/help/content_flags/ # type: string # contentdb_flag_blacklist = nonfree, desktop_default + diff --git a/src/settings_translation_file.cpp b/src/settings_translation_file.cpp index 0e38e5c73..9156580c0 100644 --- a/src/settings_translation_file.cpp +++ b/src/settings_translation_file.cpp @@ -286,8 +286,8 @@ fake_function() { gettext("Open the pause menu when the window's focus is lost. Does not pause if a formspec is\nopen."); gettext("Viewing range"); gettext("View distance in nodes."); - gettext("Near clipping plane"); - gettext("Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\nMost users will not need to change this.\nIncreasing can reduce artifacting on weaker GPUs.\n0.1 = Default, 0.25 = Good value for weaker tablets."); + gettext("Near plane"); + gettext("Camera 'near clipping plane' distance in nodes, between 0 and 0.25\nOnly works on GLES platforms. Most users will not need to change this.\nIncreasing can reduce artifacting on weaker GPUs.\n0.1 = Default, 0.25 = Good value for weaker tablets."); gettext("Screen width"); gettext("Width component of the initial window size."); gettext("Screen height"); From b6d2c34a15f93c61a784696d895fc02a5d81d6de Mon Sep 17 00:00:00 2001 From: "updatepo.sh" Date: Fri, 3 Apr 2020 23:19:54 +0200 Subject: [PATCH 045/424] Update translation files --- po/ar/minetest.po | 37 +++- po/be/minetest.po | 315 ++++++++++++++++------------- po/ca/minetest.po | 65 ++++-- po/cs/minetest.po | 171 +++++++++------- po/da/minetest.po | 125 +++++++----- po/de/minetest.po | 265 +++++++++++++----------- po/dv/minetest.po | 37 +++- po/el/minetest.po | 37 +++- po/eo/minetest.po | 235 ++++++++++++---------- po/es/minetest.po | 218 +++++++++++--------- po/et/minetest.po | 57 ++++-- po/eu/minetest.po | 37 +++- po/fil/minetest.po | 37 +++- po/fr/minetest.po | 260 +++++++++++++----------- po/he/minetest.po | 37 +++- po/hu/minetest.po | 203 +++++++++++-------- po/id/minetest.po | 273 ++++++++++++++----------- po/it/minetest.po | 261 +++++++++++++----------- po/ja/minetest.po | 264 +++++++++++++----------- po/ja_KS/minetest.po | 37 +++- po/jbo/minetest.po | 37 +++- po/kk/minetest.po | 37 +++- po/kn/minetest.po | 37 +++- po/ko/minetest.po | 115 +++++++---- po/ky/minetest.po | 53 +++-- po/lo/minetest.po | 37 +++- po/lt/minetest.po | 51 ++++- po/minetest.pot | 37 +++- po/ms/minetest.po | 259 +++++++++++++----------- po/my/minetest.po | 37 +++- po/nb/minetest.po | 74 +++++-- po/nl/minetest.po | 249 +++++++++++++---------- po/nn/minetest.po | 43 +++- po/pl/minetest.po | 279 ++++++++++++++------------ po/pt/minetest.po | 253 +++++++++++++---------- po/pt_BR/minetest.po | 275 +++++++++++++------------ po/ro/minetest.po | 64 ++++-- po/ru/minetest.po | 259 +++++++++++++----------- po/sl/minetest.po | 57 ++++-- po/sr_Cyrl/minetest.po | 69 +++++-- po/sv/minetest.po | 85 +++++--- po/sw/minetest.po | 153 ++++++++------ po/th/minetest.po | 121 ++++++----- po/tr/minetest.po | 259 +++++++++++++----------- po/uk/minetest.po | 67 +++++-- po/vi/minetest.po | 37 +++- po/zh_CN/minetest.po | 445 ++++++++++++++++++++++------------------- po/zh_TW/minetest.po | 380 +++++++++++++++++++---------------- 48 files changed, 4133 insertions(+), 2707 deletions(-) diff --git a/po/ar/minetest.po b/po/ar/minetest.po index ada1142bb..e40d3d8b3 100644 --- a/po/ar/minetest.po +++ b/po/ar/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-01 19:51+0000\n" "Last-Translator: abidin toumi \n" "Language-Team: Arabic "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "إفتراضي" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -617,6 +628,7 @@ msgstr "" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -863,6 +875,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -897,6 +917,7 @@ msgstr "" msgid "- Public: " msgstr "" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1321,6 +1342,7 @@ msgstr "" msgid "Left Windows" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1413,6 +1435,7 @@ msgstr "" msgid "Play" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1449,6 +1472,7 @@ msgstr "" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "" @@ -1683,10 +1707,15 @@ msgstr "" msgid "Sound Volume: " msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "ar" @@ -2060,8 +2089,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4666,7 +4695,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/be/minetest.po b/po/be/minetest.po index 0cae005f0..f8080df4f 100644 --- a/po/be/minetest.po +++ b/po/be/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Belarusian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2019-11-19 23:04+0000\n" "Last-Translator: Viktar Vauchkevich \n" "Language-Team: Belarusian "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "абсалютная велічыня" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "прадвызначаны" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "паслаблены" @@ -622,6 +633,7 @@ msgstr "Імя / Пароль" msgid "Ping" msgstr "Пінг" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP уключаны" @@ -866,6 +878,14 @@ msgstr "Не атрымалася адкрыць пададзены файл п msgid "Provided world path doesn't exist: " msgstr "Пададзены шлях не існуе: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -902,6 +922,7 @@ msgstr "- Порт: " msgid "- Public: " msgstr "- Публічны: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1352,6 +1373,7 @@ msgstr "Левы Shift" msgid "Left Windows" msgstr "Левы Super" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Меню" @@ -1444,6 +1466,7 @@ msgstr "Паўза" msgid "Play" msgstr "Гуляць" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Друкаваць" @@ -1480,6 +1503,7 @@ msgstr "Правы Super" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Абраць" @@ -1720,10 +1744,15 @@ msgstr "Сцішаны" msgid "Sound Volume: " msgstr "Гучнасць: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Увод " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "be" @@ -2155,9 +2184,10 @@ msgid "Bumpmapping" msgstr "Рэльефнае тэкстураванне" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5247,7 +5277,8 @@ msgid "" msgstr "Назва сервера, што будзе паказвацца пры падлучэнні і ў спісе сервераў." #: src/settings_translation_file.cpp -msgid "Near clipping plane" +#, fuzzy +msgid "Near plane" msgstr "Блізкая плоскасць адсячэння" #: src/settings_translation_file.cpp @@ -6841,40 +6872,130 @@ msgid "cURL timeout" msgstr "Таймаўт cURL" #~ msgid "" -#~ "Map generation attributes specific to Mapgen v5.\n" -#~ "Flags that are not enabled are not modified from the default.\n" -#~ "Flags starting with 'no' are used to explicitly disable them." +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Атрыбуты генерацыі мапы для генератара мапы 5.\n" -#~ "Нявызначаныя атрыбуты прадвызначана не змяняюцца.\n" -#~ "Атрыбуты, што пачынаюцца з 'no' выкарыстоўваюцца для іх выключэння." +#~ "Наладка гама-кадавання для светлавых табліц. Высокія значэнні — больш " +#~ "ярчэйшыя.\n" +#~ "Гэты параметр прызначаны толькі для кліента і ігнаруецца серверам." -#~ msgid "Toggle Cinematic" -#~ msgstr "Кінематаграфічнасць" +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "Кіруе звужэннем астравоў горнага тыпу ніжэй сярэдняй кропкі." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Цэнтр сярэдняга ўздыму крывой святла." #~ msgid "" -#~ "Map generation attributes specific to Mapgen Carpathian.\n" -#~ "Flags that are not enabled are not modified from the default.\n" -#~ "Flags starting with 'no' are used to explicitly disable them." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Атрыбуты генерацыі мапы для генератара мапы \"Карпаты\".\n" -#~ "Нявызначаныя атрыбуты прадвызначана не змяняюцца.\n" -#~ "Атрыбуты, што пачынаюцца з \"no\", выкарыстоўваюцца для іх выключэння." +#~ "Кіруе шчыльнасцю горнага рэльефу лятучых астравоў.\n" +#~ "Гэты зрух дадаецца да значэння 'np_mountain'." -#~ msgid "Content Store" -#~ msgstr "Крама дадаткаў" +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Кіруе шырынёй тунэляў. Меншае значэнне стварае больш шырокія тунэлі." -#~ msgid "Select Package File:" -#~ msgstr "Абраць файл пакунка:" +#~ msgid "Darkness sharpness" +#~ msgstr "Рэзкасць цемры" -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y верхняга ліміту лавы ў шырокіх пячорах." +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Вызначае вобласці гладкага рэльефу лятучых астравоў.\n" +#~ "Гладкая паверхня з'яўляецца, калі шум больш нуля." -#~ msgid "Waving Water" +#~ msgid "" +#~ "Deprecated, define and locate cave liquids using biome definitions " +#~ "instead.\n" +#~ "Y of upper limit of lava in large caves." +#~ msgstr "" +#~ "Састарэлы. Вызначае і размяшчае пячорныя вадкасці з выкарыстаннем " +#~ "азначэнняў біёму.\n" +#~ "Y верхняй мяжы лавы ў вялікіх пячорах." + +#~ msgid "Enable VBO" +#~ msgstr "Уключыць VBO" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Уключае кінематаграфічнае танальнае адлюстраванне" + +#~ msgid "Floatland base height noise" +#~ msgstr "Шум базавай вышыні лятучых астравоў" + +#~ msgid "Floatland base noise" +#~ msgstr "Базавы шум лятучых астравоў" + +#~ msgid "Floatland level" +#~ msgstr "Узровень лятучых астравоў" + +#~ msgid "Floatland mountain density" +#~ msgstr "Шчыльнасць гор лятучых астравоў" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "Шчыльнасць гор лятучых астравоў" + +#~ msgid "Floatland mountain height" +#~ msgstr "Вышыня гор на лятучых астравоў" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Празрыстасць цені шрыфту (ад 0 да 255)." + +#~ msgid "Gamma" +#~ msgstr "Гама" + +#~ msgid "IPv6 support." +#~ msgstr "Падтрымка IPv6." + +#~ msgid "Lava depth" +#~ msgstr "Глыбіня лавы" + +#~ msgid "Lightness sharpness" +#~ msgstr "Рэзкасць паваротлівасці" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Шлях да TrueTypeFont ці растравага шрыфту." + +#~ msgid "Shadow limit" +#~ msgstr "Ліміт ценяў" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Моц сярэдняга ўздыму крывой святла." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Гэты шрыфт будзе выкарыстоўваецца для некаторых моў." + +#~ msgid "" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "" +#~ "Тыповая максімальная вышыня, вышэй і ніжэй сярэдняй кропкі гор лятучых " +#~ "астравоў." + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Варыяцыя вышыні пагоркаў і глыбінь азёр на гладкай мясцовасці лятучых " +#~ "астравоў." + +#~ msgid "Waving water" #~ msgstr "Хваляванне вады" -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Выступ падзямелляў па-над рэльефам." +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Y-узровень сярэдняй кропкі і паверхні азёр лятучых астравоў." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Y-узровень, да якога распаўсюджваюцца цені лятучых астравоў." + +#~ msgid "" +#~ "If enabled together with fly mode, makes move directions relative to the " +#~ "player's pitch." +#~ msgstr "" +#~ "Калі ўключана адначасова з рэжымам палёту, то вызначае напрамак руху " +#~ "адносна кроку гульца." + +#~ msgid "Projecting dungeons" +#~ msgstr "Праектаванне падзямелляў" #~ msgid "" #~ "Map generation attributes specific to Mapgen v7.\n" @@ -6887,128 +7008,38 @@ msgstr "Таймаўт cURL" #~ "Нявызначаныя параметры прадвызначана не змяняюцца.\n" #~ "Параметры, што пачынаюцца з \"no\", выкарыстоўваюцца для выключэння." -#~ msgid "Projecting dungeons" -#~ msgstr "Праектаванне падзямелляў" +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Выступ падзямелляў па-над рэльефам." -#~ msgid "" -#~ "If enabled together with fly mode, makes move directions relative to the " -#~ "player's pitch." -#~ msgstr "" -#~ "Калі ўключана адначасова з рэжымам палёту, то вызначае напрамак руху " -#~ "адносна кроку гульца." - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Y-узровень, да якога распаўсюджваюцца цені лятучых астравоў." - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Y-узровень сярэдняй кропкі і паверхні азёр лятучых астравоў." - -#~ msgid "Waving water" +#~ msgid "Waving Water" #~ msgstr "Хваляванне вады" -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "" -#~ "Варыяцыя вышыні пагоркаў і глыбінь азёр на гладкай мясцовасці лятучых " -#~ "астравоў." +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y верхняга ліміту лавы ў шырокіх пячорах." + +#~ msgid "Select Package File:" +#~ msgstr "Абраць файл пакунка:" + +#~ msgid "Content Store" +#~ msgstr "Крама дадаткаў" #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Map generation attributes specific to Mapgen Carpathian.\n" +#~ "Flags that are not enabled are not modified from the default.\n" +#~ "Flags starting with 'no' are used to explicitly disable them." #~ msgstr "" -#~ "Тыповая максімальная вышыня, вышэй і ніжэй сярэдняй кропкі гор лятучых " -#~ "астравоў." +#~ "Атрыбуты генерацыі мапы для генератара мапы \"Карпаты\".\n" +#~ "Нявызначаныя атрыбуты прадвызначана не змяняюцца.\n" +#~ "Атрыбуты, што пачынаюцца з \"no\", выкарыстоўваюцца для іх выключэння." -#~ msgid "This font will be used for certain languages." -#~ msgstr "Гэты шрыфт будзе выкарыстоўваецца для некаторых моў." - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Моц сярэдняга ўздыму крывой святла." - -#~ msgid "Shadow limit" -#~ msgstr "Ліміт ценяў" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Шлях да TrueTypeFont ці растравага шрыфту." - -#~ msgid "Lightness sharpness" -#~ msgstr "Рэзкасць паваротлівасці" - -#~ msgid "Lava depth" -#~ msgstr "Глыбіня лавы" - -#~ msgid "IPv6 support." -#~ msgstr "Падтрымка IPv6." - -#~ msgid "Gamma" -#~ msgstr "Гама" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Празрыстасць цені шрыфту (ад 0 да 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Вышыня гор на лятучых астравоў" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Шчыльнасць гор лятучых астравоў" - -#~ msgid "Floatland mountain density" -#~ msgstr "Шчыльнасць гор лятучых астравоў" - -#~ msgid "Floatland level" -#~ msgstr "Узровень лятучых астравоў" - -#~ msgid "Floatland base noise" -#~ msgstr "Базавы шум лятучых астравоў" - -#~ msgid "Floatland base height noise" -#~ msgstr "Шум базавай вышыні лятучых астравоў" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Уключае кінематаграфічнае танальнае адлюстраванне" - -#~ msgid "Enable VBO" -#~ msgstr "Уключыць VBO" +#~ msgid "Toggle Cinematic" +#~ msgstr "Кінематаграфічнасць" #~ msgid "" -#~ "Deprecated, define and locate cave liquids using biome definitions " -#~ "instead.\n" -#~ "Y of upper limit of lava in large caves." +#~ "Map generation attributes specific to Mapgen v5.\n" +#~ "Flags that are not enabled are not modified from the default.\n" +#~ "Flags starting with 'no' are used to explicitly disable them." #~ msgstr "" -#~ "Састарэлы. Вызначае і размяшчае пячорныя вадкасці з выкарыстаннем " -#~ "азначэнняў біёму.\n" -#~ "Y верхняй мяжы лавы ў вялікіх пячорах." - -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Вызначае вобласці гладкага рэльефу лятучых астравоў.\n" -#~ "Гладкая паверхня з'яўляецца, калі шум больш нуля." - -#~ msgid "Darkness sharpness" -#~ msgstr "Рэзкасць цемры" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Кіруе шырынёй тунэляў. Меншае значэнне стварае больш шырокія тунэлі." - -#~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "Кіруе шчыльнасцю горнага рэльефу лятучых астравоў.\n" -#~ "Гэты зрух дадаецца да значэння 'np_mountain'." - -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Цэнтр сярэдняга ўздыму крывой святла." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "Кіруе звужэннем астравоў горнага тыпу ніжэй сярэдняй кропкі." - -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "Наладка гама-кадавання для светлавых табліц. Высокія значэнні — больш " -#~ "ярчэйшыя.\n" -#~ "Гэты параметр прызначаны толькі для кліента і ігнаруецца серверам." +#~ "Атрыбуты генерацыі мапы для генератара мапы 5.\n" +#~ "Нявызначаныя атрыбуты прадвызначана не змяняюцца.\n" +#~ "Атрыбуты, што пачынаюцца з 'no' выкарыстоўваюцца для іх выключэння." diff --git a/po/ca/minetest.po b/po/ca/minetest.po index bab5bf4c5..3ffc59552 100644 --- a/po/ca/minetest.po +++ b/po/ca/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Catalan (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: Catalan "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "defaults" msgstr "Joc per defecte" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -672,6 +683,7 @@ msgstr "Nom / Contrasenya" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP activat" @@ -922,6 +934,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "La ruta del món especificat no existeix: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -963,6 +983,7 @@ msgstr "Port" msgid "- Public: " msgstr "Públic" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1435,6 +1456,7 @@ msgstr "Shift esq" msgid "Left Windows" msgstr "Windows esquerre" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menú" @@ -1528,6 +1550,7 @@ msgstr "Pausa" msgid "Play" msgstr "Jugar" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Imprimir" @@ -1564,6 +1587,7 @@ msgstr "Windows dret" msgid "Scroll Lock" msgstr "Bloq Despl" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Seleccionar" @@ -1812,10 +1836,15 @@ msgstr "Utilitza la tecla" msgid "Sound Volume: " msgstr "Volum de so: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Introdueix " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "ca" @@ -2226,8 +2255,8 @@ msgstr "Mapat de relleu" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5100,7 +5129,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6495,20 +6524,6 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Toggle Cinematic" -#~ msgstr "Activar Cinematogràfic" - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Selecciona el fitxer del mod:" - -#~ msgid "Enable VBO" -#~ msgstr "Activar VBO" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Controla l'amplada dels túnels, un valor més petit crea túnels més amples." - #, fuzzy #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " @@ -6518,3 +6533,17 @@ msgstr "" #~ "Ajusta la codificació gamma per les taules de llum. Els nombrés nés " #~ "petits n'augmentaràn la brillantor.\n" #~ "Aquesta configuració només afecta al client, el servidor l'ignora." + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Controla l'amplada dels túnels, un valor més petit crea túnels més amples." + +#~ msgid "Enable VBO" +#~ msgstr "Activar VBO" + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Selecciona el fitxer del mod:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Activar Cinematogràfic" diff --git a/po/cs/minetest.po b/po/cs/minetest.po index 621866ac1..097a65cb0 100644 --- a/po/cs/minetest.po +++ b/po/cs/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Czech (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-02-24 23:32+0000\n" "Last-Translator: Vojtěch Šamla \n" "Language-Team: Czech "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "defaults" msgstr "Výchozí hra" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -643,6 +654,7 @@ msgstr "Jméno / Heslo" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP povoleno" @@ -893,6 +905,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "Uvedená cesta ke světu neexistuje: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -929,6 +949,7 @@ msgstr "- Port: " msgid "- Public: " msgstr "- Veřejný: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1398,6 +1419,7 @@ msgstr "Levý Shift" msgid "Left Windows" msgstr "Levá klávesa Windows" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Nabídka" @@ -1490,6 +1512,7 @@ msgstr "Pauza" msgid "Play" msgstr "Hrát" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Print Screen" @@ -1526,6 +1549,7 @@ msgstr "Pravá klávesa Windows" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Vybrat" @@ -1773,10 +1797,15 @@ msgstr "Ztlumit" msgid "Sound Volume: " msgstr "Hlasitost: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Zadejte " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "cs" @@ -2201,8 +2230,8 @@ msgstr "Bump mapování" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5202,7 +5231,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6610,69 +6639,14 @@ msgstr "cURL limit paralelních stahování" msgid "cURL timeout" msgstr "cURL timeout" -#~ msgid "Toggle Cinematic" -#~ msgstr "Plynulá kamera" - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Vybrat soubor s modem:" - -#~ msgid "Waving Water" -#~ msgstr "Vlnění vody" - -#~ msgid "Waving water" -#~ msgstr "Vlnění vody" - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Hloubka velké jeskyně" - -#~ msgid "IPv6 support." -#~ msgstr "" -#~ "Nastavuje reálnou délku dne.\n" -#~ "Např.: 72 = 20 minut, 360 = 4 minuty, 1 = 24 hodin, 0 = čas zůstává stále " -#~ "stejný." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Neprůhlednost stínu písma (od 0 do 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Výška hor na létajících ostrovech" - -#, fuzzy -#~ msgid "Floatland mountain exponent" -#~ msgstr "Koncentrace hor na létajících ostrovech" - -#~ msgid "Floatland mountain density" -#~ msgstr "Koncentrace hor na létajících ostrovech" - -#~ msgid "Floatland level" -#~ msgstr "Výška létajících ostrovů" - -#~ msgid "Floatland base noise" -#~ msgstr "Základní šum létajících ostrovů" - -#~ msgid "Floatland base height noise" -#~ msgstr "Šum základní výšky létajících ostrovů" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Zapne filmový tone mapping" - -#~ msgid "Enable VBO" -#~ msgstr "Zapnout VBO" - #~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Určuje oblasti létajících ostrovů s rovinný terénem.\n" -#~ "Terén bude rovný v místech, kde hodnota šumu bude větší než 0." - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "Ovládá šířku tunelů, menší hodnota vytváří širší tunely." +#~ "Upraví gamma kódování světelných tabulek. Vyšší čísla znamenají světlejší " +#~ "hodnoty.\n" +#~ "Toto nastavení ovlivňuje pouze klienta a serverem není použito." #, fuzzy #~ msgid "" @@ -6682,11 +6656,66 @@ msgstr "cURL timeout" #~ "Stanovuje hustotu horského terénu na létajících ostrovech.\n" #~ "Jedná se o posun přidaný k hodnotě šumu 'np_mountain'." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "Ovládá šířku tunelů, menší hodnota vytváří širší tunely." + #~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." #~ msgstr "" -#~ "Upraví gamma kódování světelných tabulek. Vyšší čísla znamenají světlejší " -#~ "hodnoty.\n" -#~ "Toto nastavení ovlivňuje pouze klienta a serverem není použito." +#~ "Určuje oblasti létajících ostrovů s rovinný terénem.\n" +#~ "Terén bude rovný v místech, kde hodnota šumu bude větší než 0." + +#~ msgid "Enable VBO" +#~ msgstr "Zapnout VBO" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Zapne filmový tone mapping" + +#~ msgid "Floatland base height noise" +#~ msgstr "Šum základní výšky létajících ostrovů" + +#~ msgid "Floatland base noise" +#~ msgstr "Základní šum létajících ostrovů" + +#~ msgid "Floatland level" +#~ msgstr "Výška létajících ostrovů" + +#~ msgid "Floatland mountain density" +#~ msgstr "Koncentrace hor na létajících ostrovech" + +#, fuzzy +#~ msgid "Floatland mountain exponent" +#~ msgstr "Koncentrace hor na létajících ostrovech" + +#~ msgid "Floatland mountain height" +#~ msgstr "Výška hor na létajících ostrovech" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Neprůhlednost stínu písma (od 0 do 255)." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "IPv6 support." +#~ msgstr "" +#~ "Nastavuje reálnou délku dne.\n" +#~ "Např.: 72 = 20 minut, 360 = 4 minuty, 1 = 24 hodin, 0 = čas zůstává stále " +#~ "stejný." + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Hloubka velké jeskyně" + +#~ msgid "Waving water" +#~ msgstr "Vlnění vody" + +#~ msgid "Waving Water" +#~ msgstr "Vlnění vody" + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Vybrat soubor s modem:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Plynulá kamera" diff --git a/po/da/minetest.po b/po/da/minetest.po index b66c348e1..d1bcc36ce 100644 --- a/po/da/minetest.po +++ b/po/da/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Danish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: sfan5 \n" "Language-Team: Danish "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "Absolut værdi" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "Standard" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -630,6 +641,7 @@ msgstr "Navn/adgangskode" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "Spiller mod spiller aktiveret" @@ -882,6 +894,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "Angivne sti til verdenen findes ikke: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -918,6 +938,7 @@ msgstr "- Port: " msgid "- Public: " msgstr "- Offentlig: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- Spiller mod spiller (PvP): " @@ -1388,6 +1409,7 @@ msgstr "Venstre Skift" msgid "Left Windows" msgstr "Venstre meta" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menu" @@ -1480,6 +1502,7 @@ msgstr "Pause" msgid "Play" msgstr "Spil" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Udskriv" @@ -1516,6 +1539,7 @@ msgstr "Højre meta" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Vælg" @@ -1763,10 +1787,15 @@ msgstr "Lydløs" msgid "Sound Volume: " msgstr "Lydstyrke: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr " " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "da" @@ -2181,8 +2210,8 @@ msgstr "Bumpmapping" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5296,7 +5325,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6716,50 +6745,6 @@ msgstr "" msgid "cURL timeout" msgstr "cURL-tidsudløb" -#~ msgid "Toggle Cinematic" -#~ msgstr "Aktiver filmisk" - -#~ msgid "Select Package File:" -#~ msgstr "Vælg pakke fil:" - -#, fuzzy -#~ msgid "Shadow limit" -#~ msgstr "Skygge grænse" - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Dybde for stor hule" - -#~ msgid "IPv6 support." -#~ msgstr "Understøttelse af IPv6." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Alfa for skrifttypeskygge (uigennemsigtighed, mellem 0 og 255)." - -#, fuzzy -#~ msgid "Floatland level" -#~ msgstr "Svævelandsniveau" - -#~ msgid "Floatland base height noise" -#~ msgstr "Svævelandsgrundhøjdestøj" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Aktiverer filmisk toneoversættelse" - -#~ msgid "Enable VBO" -#~ msgstr "Aktiver VBO" - -#, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "Søstejlhed" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Styrer bredden af tunneller. En lavere værdi giver bredere tunneller." - #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " #~ "brighter.\n" @@ -6767,3 +6752,47 @@ msgstr "cURL-tidsudløb" #~ msgstr "" #~ "Justér gammakodningen for lystabellerne. Et større tal betyder lysere.\n" #~ "Denne indstilling gælder kun for klienten og ignoreres af serveren." + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Styrer bredden af tunneller. En lavere værdi giver bredere tunneller." + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "Søstejlhed" + +#~ msgid "Enable VBO" +#~ msgstr "Aktiver VBO" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Aktiverer filmisk toneoversættelse" + +#~ msgid "Floatland base height noise" +#~ msgstr "Svævelandsgrundhøjdestøj" + +#, fuzzy +#~ msgid "Floatland level" +#~ msgstr "Svævelandsniveau" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Alfa for skrifttypeskygge (uigennemsigtighed, mellem 0 og 255)." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "IPv6 support." +#~ msgstr "Understøttelse af IPv6." + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Dybde for stor hule" + +#, fuzzy +#~ msgid "Shadow limit" +#~ msgstr "Skygge grænse" + +#~ msgid "Select Package File:" +#~ msgstr "Vælg pakke fil:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Aktiver filmisk" diff --git a/po/de/minetest.po b/po/de/minetest.po index ce07a0977..9cc758e0c 100644 --- a/po/de/minetest.po +++ b/po/de/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: German (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-06 05:32+0000\n" "Last-Translator: Robin Townsend \n" "Language-Team: German "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "Absolutwert" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "Standardwerte" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "weich (eased)" @@ -620,6 +631,7 @@ msgstr "Name / Passwort" msgid "Ping" msgstr "Latenz" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "Spielerkampf aktiviert" @@ -864,6 +876,14 @@ msgstr "Fehler beim öffnen der ausgewählten Passwort-Datei: " msgid "Provided world path doesn't exist: " msgstr "Angegebener Weltpfad existiert nicht: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -900,6 +920,7 @@ msgstr "- Port: " msgid "- Public: " msgstr "- Öffentlich: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- Spielerkampf: " @@ -1350,6 +1371,7 @@ msgstr "Umsch. links" msgid "Left Windows" msgstr "Win. links" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menü" @@ -1442,6 +1464,7 @@ msgstr "Pause" msgid "Play" msgstr "Spielen" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Druck" @@ -1478,6 +1501,7 @@ msgstr "Win. rechts" msgid "Scroll Lock" msgstr "Rollen" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Auswählen" @@ -1721,10 +1745,15 @@ msgstr "Stumm" msgid "Sound Volume: " msgstr "Tonlautstärke: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Eingabe " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "de" @@ -2176,9 +2205,10 @@ msgid "Bumpmapping" msgstr "Bumpmapping" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5353,7 +5383,8 @@ msgstr "" "Spieler angezeigt." #: src/settings_translation_file.cpp -msgid "Near clipping plane" +#, fuzzy +msgid "Near plane" msgstr "Vordere Clippingebene" #: src/settings_translation_file.cpp @@ -7021,106 +7052,36 @@ msgstr "cURL-Parallel-Begrenzung" msgid "cURL timeout" msgstr "cURL-Zeitüberschreitung" -#~ msgid "Toggle Cinematic" -#~ msgstr "Filmmodus umschalten" - -#~ msgid "Select Package File:" -#~ msgstr "Paket-Datei auswählen:" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y-Wert der Obergrenze von Lava in großen Höhlen." - -#~ msgid "Waving Water" -#~ msgstr "Wasserwellen" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Ob Verliese manchmal aus dem Gelände herausragen." - -#~ msgid "Projecting dungeons" -#~ msgstr "Herausragende Verliese" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Y-Höhe, bis zu der sich die Schatten der Schwebeländer ausbreiten." - -#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Y-Höhe vom Mittelpunkt der Schwebeländer sowie\n" -#~ "des Wasserspiegels von Seen." +#~ "Ändert die Gammakodierung der Lichttabellen. Kleinere Werte sind heller.\n" +#~ "Diese Einstellung ist rein clientseitig und wird vom Server ignoriert." -#~ msgid "Waving water" -#~ msgstr "Wasserwellen" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." #~ msgstr "" -#~ "Variierung der Hügelhöhe und Seetiefe in den ruhig verlaufenden\n" -#~ "Regionen der Schwebeländer." +#~ "Verändert, wie Schwebeländer des Bergtyps sich über und unter dem " +#~ "Mittelpunkt zuspitzen." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Mitte der Lichtkurven-Mittenverstärkung." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Typische Maximalhöhe, über und unter dem Mittelpunkt von Gebirgen in den\n" -#~ "Schwebeländern." +#~ "Legt die Dichte von Gebirgen in den Schwebeländern fest.\n" +#~ "Dies ist ein Versatz, der zum Rauschwert „mgv7_np_mountain“ addiert wird." -#~ msgid "This font will be used for certain languages." -#~ msgstr "Diese Schrift wird von bestimmten Sprachen benutzt." - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Stärke der Lichtkurven-Mittenverstärkung." - -#~ msgid "Shadow limit" -#~ msgstr "Schattenbegrenzung" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Pfad zu einer TrueType- oder Bitmap-Schrift." - -#~ msgid "Lightness sharpness" -#~ msgstr "Helligkeitsschärfe" - -#~ msgid "Lava depth" -#~ msgstr "Lavatiefe" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6-Unterstützung." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." #~ msgstr "" -#~ "Undurchsichtigkeit des Schattens der Schrift (Wert zwischen 0 und 255)." +#~ "Legt die Breite von Tunneln fest; ein kleinerer Wert erzeugt breitere " +#~ "Tunnel." -#~ msgid "Floatland mountain height" -#~ msgstr "Schwebelandberghöhe" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Schwebelandbergexponent" - -#~ msgid "Floatland mountain density" -#~ msgstr "Schwebelandbergdichte" - -#~ msgid "Floatland level" -#~ msgstr "Schwebelandhöhe" - -#~ msgid "Floatland base noise" -#~ msgstr "Schwebelandbasisrauschen" - -#~ msgid "Floatland base height noise" -#~ msgstr "Schwebeland-Basishöhenrauschen" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Aktiviert filmisches Tone-Mapping" - -#~ msgid "Enable VBO" -#~ msgstr "VBO aktivieren" - -#~ msgid "" -#~ "Deprecated, define and locate cave liquids using biome definitions " -#~ "instead.\n" -#~ "Y of upper limit of lava in large caves." -#~ msgstr "" -#~ "Misbilligte Einstellung. Definieren/Finden Sie statdessen " -#~ "Höhlenflüssigkeiten in Biomdefinitionen.\n" -#~ "Y der Obergrenze von Lava in großen Höhlen." +#~ msgid "Darkness sharpness" +#~ msgstr "Dunkelheits-Steilheit" #~ msgid "" #~ "Defines areas of floatland smooth terrain.\n" @@ -7131,33 +7092,103 @@ msgstr "cURL-Zeitüberschreitung" #~ "Schwebeländer treten auf, wenn der\n" #~ "Rauschwert > 0 ist." -#~ msgid "Darkness sharpness" -#~ msgstr "Dunkelheits-Steilheit" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgid "" +#~ "Deprecated, define and locate cave liquids using biome definitions " +#~ "instead.\n" +#~ "Y of upper limit of lava in large caves." #~ msgstr "" -#~ "Legt die Breite von Tunneln fest; ein kleinerer Wert erzeugt breitere " -#~ "Tunnel." +#~ "Misbilligte Einstellung. Definieren/Finden Sie statdessen " +#~ "Höhlenflüssigkeiten in Biomdefinitionen.\n" +#~ "Y der Obergrenze von Lava in großen Höhlen." + +#~ msgid "Enable VBO" +#~ msgstr "VBO aktivieren" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Aktiviert filmisches Tone-Mapping" + +#~ msgid "Floatland base height noise" +#~ msgstr "Schwebeland-Basishöhenrauschen" + +#~ msgid "Floatland base noise" +#~ msgstr "Schwebelandbasisrauschen" + +#~ msgid "Floatland level" +#~ msgstr "Schwebelandhöhe" + +#~ msgid "Floatland mountain density" +#~ msgstr "Schwebelandbergdichte" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "Schwebelandbergexponent" + +#~ msgid "Floatland mountain height" +#~ msgstr "Schwebelandberghöhe" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "" +#~ "Undurchsichtigkeit des Schattens der Schrift (Wert zwischen 0 und 255)." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6-Unterstützung." + +#~ msgid "Lava depth" +#~ msgstr "Lavatiefe" + +#~ msgid "Lightness sharpness" +#~ msgstr "Helligkeitsschärfe" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Pfad zu einer TrueType- oder Bitmap-Schrift." + +#~ msgid "Shadow limit" +#~ msgstr "Schattenbegrenzung" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Stärke der Lichtkurven-Mittenverstärkung." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Diese Schrift wird von bestimmten Sprachen benutzt." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Legt die Dichte von Gebirgen in den Schwebeländern fest.\n" -#~ "Dies ist ein Versatz, der zum Rauschwert „mgv7_np_mountain“ addiert wird." +#~ "Typische Maximalhöhe, über und unter dem Mittelpunkt von Gebirgen in den\n" +#~ "Schwebeländern." -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Mitte der Lichtkurven-Mittenverstärkung." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." #~ msgstr "" -#~ "Verändert, wie Schwebeländer des Bergtyps sich über und unter dem " -#~ "Mittelpunkt zuspitzen." +#~ "Variierung der Hügelhöhe und Seetiefe in den ruhig verlaufenden\n" +#~ "Regionen der Schwebeländer." -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ msgid "Waving water" +#~ msgstr "Wasserwellen" + +#~ msgid "Y-level of floatland midpoint and lake surface." #~ msgstr "" -#~ "Ändert die Gammakodierung der Lichttabellen. Kleinere Werte sind heller.\n" -#~ "Diese Einstellung ist rein clientseitig und wird vom Server ignoriert." +#~ "Y-Höhe vom Mittelpunkt der Schwebeländer sowie\n" +#~ "des Wasserspiegels von Seen." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Y-Höhe, bis zu der sich die Schatten der Schwebeländer ausbreiten." + +#~ msgid "Projecting dungeons" +#~ msgstr "Herausragende Verliese" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Ob Verliese manchmal aus dem Gelände herausragen." + +#~ msgid "Waving Water" +#~ msgstr "Wasserwellen" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y-Wert der Obergrenze von Lava in großen Höhlen." + +#~ msgid "Select Package File:" +#~ msgstr "Paket-Datei auswählen:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Filmmodus umschalten" diff --git a/po/dv/minetest.po b/po/dv/minetest.po index aa2107d99..41710bda4 100644 --- a/po/dv/minetest.po +++ b/po/dv/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Dhivehi (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2019-11-10 15:04+0000\n" "Last-Translator: Krock \n" "Language-Team: Dhivehi "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -632,6 +643,7 @@ msgstr "ޕާސްވޯޑް / ނަން" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "ޕީ.ވީ.ޕީ ޖައްސާ" @@ -876,6 +888,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -910,6 +930,7 @@ msgstr "" msgid "- Public: " msgstr "" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1354,6 +1375,7 @@ msgstr "" msgid "Left Windows" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "މެނޫ" @@ -1446,6 +1468,7 @@ msgstr "" msgid "Play" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1482,6 +1505,7 @@ msgstr "" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "އިހްތިޔާރުކުރޭ" @@ -1717,10 +1741,15 @@ msgstr "" msgid "Sound Volume: " msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "dv" @@ -2098,8 +2127,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4717,7 +4746,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/el/minetest.po b/po/el/minetest.po index 25f49c994..916bc48da 100644 --- a/po/el/minetest.po +++ b/po/el/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Greek (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-31 20:29+0000\n" "Last-Translator: THANOS SIOURDAKIS \n" "Language-Team: Greek "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -613,6 +624,7 @@ msgstr "" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -857,6 +869,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -891,6 +911,7 @@ msgstr "" msgid "- Public: " msgstr "" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1315,6 +1336,7 @@ msgstr "" msgid "Left Windows" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1407,6 +1429,7 @@ msgstr "" msgid "Play" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1443,6 +1466,7 @@ msgstr "" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "" @@ -1677,10 +1701,15 @@ msgstr "" msgid "Sound Volume: " msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "el" @@ -2054,8 +2083,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4660,7 +4689,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/eo/minetest.po b/po/eo/minetest.po index 03176fc59..8c46dafd0 100644 --- a/po/eo/minetest.po +++ b/po/eo/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Esperanto (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: sfan5 \n" "Language-Team: Esperanto "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "absoluta valoro" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "normoj" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "faciligita" @@ -617,6 +629,7 @@ msgstr "Nomo / Pasvorto" msgid "Ping" msgstr "Retprokrasto" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "Dueloj ŝaltitas" @@ -861,6 +874,14 @@ msgstr "Malsukcesis malfermi donitan pasvortan dosieron: " msgid "Provided world path doesn't exist: " msgstr "Donita monda dosierindiko ne ekzistas: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -897,6 +918,7 @@ msgstr "– Pordo: " msgid "- Public: " msgstr "– Publika: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "– LkL: " @@ -1347,6 +1369,7 @@ msgstr "Maldekstra Majuskligo" msgid "Left Windows" msgstr "Maldekstra Vindozo" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menuo" @@ -1439,6 +1462,7 @@ msgstr "Haltigo" msgid "Play" msgstr "Ludi" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Presi" @@ -1475,6 +1499,7 @@ msgstr "Dekstra Vindozo" msgid "Scroll Lock" msgstr "Ruluma Baskulo" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Elekti" @@ -1714,10 +1739,15 @@ msgstr "Silentigita" msgid "Sound Volume: " msgstr "Laŭteco: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Enigi " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "eo" @@ -2149,9 +2179,10 @@ msgid "Bumpmapping" msgstr "Mapado de elstaraĵoj" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4982,7 +5013,8 @@ msgstr "Maksimuma larĝo de la fulmobreto" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "Maksimuma limo de hazarda nombro de grandaj kavernoj en unu mondoparto." +msgstr "" +"Maksimuma limo de hazarda nombro de grandaj kavernoj en unu mondoparto." #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." @@ -5236,7 +5268,8 @@ msgid "" msgstr "Nomo de la servilo, montrota al ludantoj kaj en la listo de serviloj." #: src/settings_translation_file.cpp -msgid "Near clipping plane" +#, fuzzy +msgid "Near plane" msgstr "Proksime tonda ebeno" #: src/settings_translation_file.cpp @@ -6824,82 +6857,40 @@ msgstr "Samtempa limo de cURL" msgid "cURL timeout" msgstr "cURL tempolimo" -#~ msgid "Toggle Cinematic" -#~ msgstr "Baskuligi glitan vidpunkton" - -#~ msgid "Select Package File:" -#~ msgstr "Elekti pakaĵan dosieron:" - -#, fuzzy -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y de supera limo de grandaj kvazaŭ-hazardaj kavernoj." - -#~ msgid "Waving Water" -#~ msgstr "Ondanta akvo" - -#~ msgid "Projecting dungeons" -#~ msgstr "Planante forgeskelojn" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Y-nivelo kien etendiĝas ombroj de fluginsuloj." - -#~ msgid "Waving water" -#~ msgstr "Ondanta akvo" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Variaĵo de alteco de montetoj kaj profundeco de lagoj sur glata tereno de " -#~ "fluginsuloj." +#~ "Alĝustigi la gamaan kodadon al la lumtabeloj. Pli altaj nombroj estas pli " +#~ "helaj.\n" +#~ "Ĉi tiu agordo estas klientflanka, kaj serviloj ĝin malatentos." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "" +#~ "Ŝanĝas kiel montecaj fluginsuloj maldikiĝas super kaj sub la mezpunkto." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Ordinara plejalto, super kaj sub la mezpunkto, de fluginsulaj montoj." +#~ "Regas densecon de montecaj fluginsuloj.\n" +#~ "Temas pri deŝovo de la brua valoro «np_mountain»." -#~ msgid "This font will be used for certain languages." -#~ msgstr "Tiu ĉi tiparo uziĝos por iuj lingvoj." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Regas larĝecon de tuneloj; pli malgranda valoro kreas pri larĝajn " +#~ "tunelojn." -#~ msgid "Shadow limit" -#~ msgstr "Limo por ombroj" +#~ msgid "Darkness sharpness" +#~ msgstr "Akreco de mallumo" -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Dosierindiko al tiparo «TrueType» aŭ bitbildo." - -#~ msgid "Lightness sharpness" -#~ msgstr "Akreco de heleco" - -#~ msgid "Lava depth" -#~ msgstr "Lafo-profundeco" - -#~ msgid "IPv6 support." -#~ msgstr "Subteno de IPv6." - -#~ msgid "Gamma" -#~ msgstr "Helĝustigo" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Maltravidebleco de tipara ombro (inter 0 kaj 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Alteco de fluginsulaj montoj" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Eksponento de fluginsulaj montoj" - -#~ msgid "Floatland mountain density" -#~ msgstr "Denseco de fluginsulaj montoj" - -#~ msgid "Floatland level" -#~ msgstr "Alteco de fluginsuloj" - -#~ msgid "Floatland base noise" -#~ msgstr "Baza bruo de fluginsuloj" - -#~ msgid "Floatland base height noise" -#~ msgstr "Bruo de baza alteco de fluginsuloj" - -#~ msgid "Enable VBO" -#~ msgstr "Ŝalti VBO(Vertex Buffer Object)" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Difinas zonojn de glata tereno sur fluginsuloj.\n" +#~ "Glataj fluginsuloj okazas kiam bruo superas nulon." #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -6910,37 +6901,79 @@ msgstr "cURL tempolimo" #~ "difinoj\n" #~ "Y de supra limo de lafo en grandaj kavernoj." -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Difinas zonojn de glata tereno sur fluginsuloj.\n" -#~ "Glataj fluginsuloj okazas kiam bruo superas nulon." +#~ msgid "Enable VBO" +#~ msgstr "Ŝalti VBO(Vertex Buffer Object)" -#~ msgid "Darkness sharpness" -#~ msgstr "Akreco de mallumo" +#~ msgid "Floatland base height noise" +#~ msgstr "Bruo de baza alteco de fluginsuloj" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Regas larĝecon de tuneloj; pli malgranda valoro kreas pri larĝajn " -#~ "tunelojn." +#~ msgid "Floatland base noise" +#~ msgstr "Baza bruo de fluginsuloj" + +#~ msgid "Floatland level" +#~ msgstr "Alteco de fluginsuloj" + +#~ msgid "Floatland mountain density" +#~ msgstr "Denseco de fluginsulaj montoj" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "Eksponento de fluginsulaj montoj" + +#~ msgid "Floatland mountain height" +#~ msgstr "Alteco de fluginsulaj montoj" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Maltravidebleco de tipara ombro (inter 0 kaj 255)." + +#~ msgid "Gamma" +#~ msgstr "Helĝustigo" + +#~ msgid "IPv6 support." +#~ msgstr "Subteno de IPv6." + +#~ msgid "Lava depth" +#~ msgstr "Lafo-profundeco" + +#~ msgid "Lightness sharpness" +#~ msgstr "Akreco de heleco" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Dosierindiko al tiparo «TrueType» aŭ bitbildo." + +#~ msgid "Shadow limit" +#~ msgstr "Limo por ombroj" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Tiu ĉi tiparo uziĝos por iuj lingvoj." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Regas densecon de montecaj fluginsuloj.\n" -#~ "Temas pri deŝovo de la brua valoro «np_mountain»." +#~ "Ordinara plejalto, super kaj sub la mezpunkto, de fluginsulaj montoj." -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." #~ msgstr "" -#~ "Ŝanĝas kiel montecaj fluginsuloj maldikiĝas super kaj sub la mezpunkto." +#~ "Variaĵo de alteco de montetoj kaj profundeco de lagoj sur glata tereno de " +#~ "fluginsuloj." -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "Alĝustigi la gamaan kodadon al la lumtabeloj. Pli altaj nombroj estas pli " -#~ "helaj.\n" -#~ "Ĉi tiu agordo estas klientflanka, kaj serviloj ĝin malatentos." +#~ msgid "Waving water" +#~ msgstr "Ondanta akvo" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Y-nivelo kien etendiĝas ombroj de fluginsuloj." + +#~ msgid "Projecting dungeons" +#~ msgstr "Planante forgeskelojn" + +#~ msgid "Waving Water" +#~ msgstr "Ondanta akvo" + +#, fuzzy +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y de supera limo de grandaj kvazaŭ-hazardaj kavernoj." + +#~ msgid "Select Package File:" +#~ msgstr "Elekti pakaĵan dosieron:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Baskuligi glitan vidpunkton" diff --git a/po/es/minetest.po b/po/es/minetest.po index 69f110aa6..03ea55523 100644 --- a/po/es/minetest.po +++ b/po/es/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Spanish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-02-18 06:32+0000\n" "Last-Translator: JDiaz \n" "Language-Team: Spanish "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "Valor absoluto" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "Predeterminados" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "Suavizado" @@ -621,6 +632,7 @@ msgstr "Nombre / contraseña" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP activado" @@ -867,6 +879,14 @@ msgstr "Fallo para abrir el archivo con la contraseña proveída: " msgid "Provided world path doesn't exist: " msgstr "La ruta del mundo especificada no existe: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -903,6 +923,7 @@ msgstr "- Puerto: " msgid "- Public: " msgstr "- Público: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1353,6 +1374,7 @@ msgstr "Shift izq." msgid "Left Windows" msgstr "Win izq." +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menú" @@ -1445,6 +1467,7 @@ msgstr "Pausa" msgid "Play" msgstr "Jugar" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Captura" @@ -1481,6 +1504,7 @@ msgstr "Win der." msgid "Scroll Lock" msgstr "Bloq Despl" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Seleccionar" @@ -1722,10 +1746,15 @@ msgstr "Silenciado" msgid "Sound Volume: " msgstr "Volumen del sonido: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Ingresar " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "es" @@ -2178,14 +2207,15 @@ msgid "Bumpmapping" msgstr "Mapeado de relieve" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" -"Distancia de la cámara 'cerca del plano delimitador' en nodos, entre 0 y 0,5." -"\n" +"Distancia de la cámara 'cerca del plano delimitador' en nodos, entre 0 y " +"0,5.\n" "La mayoría de los usuarios no necesitarán cambiar esto.\n" "El aumento puede reducir los artefactos en GPU más débiles.\n" "0.1 = Predeterminado, 0,25 = Buen valor para comprimidos más débiles." @@ -3305,8 +3335,8 @@ msgstr "" "Manejo de llamadas a la API de Lua en desuso:\n" "- legacy: (intentar) imitar el comportamiento antiguo (por defecto para la " "liberación).\n" -"- log: imitar y registrar la pista de seguimiento de la llamada en desuso (" -"predeterminado para la depuración).\n" +"- log: imitar y registrar la pista de seguimiento de la llamada en desuso " +"(predeterminado para la depuración).\n" "- error: abortar el uso de la llamada en desuso (sugerido para " "desarrolladores de mods)." @@ -4518,8 +4548,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Tecla para activar/desactivar el modo cinemático.\n" -"Véase http://irrlicht.sourceforge.net/docu/namespaceirr.html#" -"a54da2a0e231901735e3da1b0edf72eb3\n" +"Véase http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3\n" #: src/settings_translation_file.cpp msgid "" @@ -4528,8 +4558,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Tecla para activar/desactivar la vista del minimapa.\n" -"Véase http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Véase http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4538,8 +4568,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Tecla para activar/desactivar el modo veloz.\n" -"Véase http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Véase http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4548,8 +4578,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Tecla para activar/desactivar el vuelo.\n" -"Véase http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Véase http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4558,8 +4588,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Tecla para activar/desactivar el modo noclip.\n" -"Véase http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Véase http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp #, fuzzy @@ -5305,7 +5335,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6721,82 +6751,6 @@ msgstr "" msgid "cURL timeout" msgstr "Tiempo de espera de cURL" -#~ msgid "Toggle Cinematic" -#~ msgstr "Activar cinemático" - -#~ msgid "Select Package File:" -#~ msgstr "Seleccionar el archivo del paquete:" - -#~ msgid "Waving Water" -#~ msgstr "Oleaje" - -#~ msgid "Waving water" -#~ msgstr "Oleaje en el agua" - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Características de la Lava" - -#~ msgid "IPv6 support." -#~ msgstr "soporte IPv6." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Alfa de sombra de fuentes (opacidad, entre 0 y 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Altura de las montañas en tierras flotantes" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Exponente de las montañas en tierras flotantes" - -#~ msgid "Floatland mountain density" -#~ msgstr "Densidad de las montañas en tierras flotantes" - -#~ msgid "Floatland level" -#~ msgstr "Nivel de tierra flotante" - -#~ msgid "Floatland base noise" -#~ msgstr "Ruido base para tierra flotante" - -#~ msgid "Floatland base height noise" -#~ msgstr "Ruido de altura base para tierra flotante" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Habilita el mapeado de tonos fílmico" - -#~ msgid "Enable VBO" -#~ msgstr "Activar VBO" - -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Define áreas de terreno liso flotante.\n" -#~ "Las zonas flotantes lisas se producen cuando el ruido > 0." - -#, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "Agudeza de la obscuridad" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Controla el ancho de los túneles, un valor menor crea túneles más anchos." - -#~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "Controla la densidad del terreno montañoso flotante.\n" -#~ "Se agrega un desplazamiento al valor de ruido 'mgv7_np_mountain'." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Modifica cómo las tierras flotantes del tipo montaña aparecen arriba y " -#~ "abajo del punto medio." - #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " #~ "brighter.\n" @@ -6805,3 +6759,79 @@ msgstr "Tiempo de espera de cURL" #~ "Ajustar la codificación gamma para las tablas de iluminación. Números " #~ "mayores son mas brillantes.\n" #~ "Este ajuste es solo para cliente y es ignorado por el servidor." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "" +#~ "Modifica cómo las tierras flotantes del tipo montaña aparecen arriba y " +#~ "abajo del punto medio." + +#~ msgid "" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "Controla la densidad del terreno montañoso flotante.\n" +#~ "Se agrega un desplazamiento al valor de ruido 'mgv7_np_mountain'." + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Controla el ancho de los túneles, un valor menor crea túneles más anchos." + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "Agudeza de la obscuridad" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Define áreas de terreno liso flotante.\n" +#~ "Las zonas flotantes lisas se producen cuando el ruido > 0." + +#~ msgid "Enable VBO" +#~ msgstr "Activar VBO" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Habilita el mapeado de tonos fílmico" + +#~ msgid "Floatland base height noise" +#~ msgstr "Ruido de altura base para tierra flotante" + +#~ msgid "Floatland base noise" +#~ msgstr "Ruido base para tierra flotante" + +#~ msgid "Floatland level" +#~ msgstr "Nivel de tierra flotante" + +#~ msgid "Floatland mountain density" +#~ msgstr "Densidad de las montañas en tierras flotantes" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "Exponente de las montañas en tierras flotantes" + +#~ msgid "Floatland mountain height" +#~ msgstr "Altura de las montañas en tierras flotantes" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Alfa de sombra de fuentes (opacidad, entre 0 y 255)." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "IPv6 support." +#~ msgstr "soporte IPv6." + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Características de la Lava" + +#~ msgid "Waving water" +#~ msgstr "Oleaje en el agua" + +#~ msgid "Waving Water" +#~ msgstr "Oleaje" + +#~ msgid "Select Package File:" +#~ msgstr "Seleccionar el archivo del paquete:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Activar cinemático" diff --git a/po/et/minetest.po b/po/et/minetest.po index 4c62b900e..d4e9e4a86 100644 --- a/po/et/minetest.po +++ b/po/et/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Estonian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-01-13 12:21+0000\n" "Last-Translator: Evert Prants \n" "Language-Team: Estonian "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "absoluutväärtus" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "vaikesätted" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -618,6 +629,7 @@ msgstr "Nimi / Salasõna" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP lubatud" @@ -862,6 +874,14 @@ msgstr "Salasõnafaili avamine ebaõnnestus: " msgid "Provided world path doesn't exist: " msgstr "Maailma failiteed pole olemas: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -898,6 +918,7 @@ msgstr "- Port: " msgid "- Public: " msgstr "- Avalik: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1342,6 +1363,7 @@ msgstr "Vasak Shift" msgid "Left Windows" msgstr "Vasak Windowsi nupp" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menüü" @@ -1434,6 +1456,7 @@ msgstr "Paus" msgid "Play" msgstr "Mängi" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Prindi" @@ -1470,6 +1493,7 @@ msgstr "Parem Windowsi nupp" msgid "Scroll Lock" msgstr "Scroll lukk" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Vali" @@ -1707,10 +1731,15 @@ msgstr "Vaigistatud" msgid "Sound Volume: " msgstr "Hääle Volüüm: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "et" @@ -2084,8 +2113,8 @@ msgstr "Muhkkaardistamine" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4730,7 +4759,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6101,20 +6130,20 @@ msgstr "" msgid "cURL timeout" msgstr "" +#~ msgid "Darkness sharpness" +#~ msgstr "Pimeduse teravus" + +#~ msgid "Enable VBO" +#~ msgstr "Luba VBO" + #, fuzzy -#~ msgid "Toggle Cinematic" -#~ msgstr "Lülita kiirus sisse" +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Lubab filmic tone mapping" #, fuzzy #~ msgid "Select Package File:" #~ msgstr "Vali modifikatsiooni fail:" #, fuzzy -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Lubab filmic tone mapping" - -#~ msgid "Enable VBO" -#~ msgstr "Luba VBO" - -#~ msgid "Darkness sharpness" -#~ msgstr "Pimeduse teravus" +#~ msgid "Toggle Cinematic" +#~ msgstr "Lülita kiirus sisse" diff --git a/po/eu/minetest.po b/po/eu/minetest.po index d26c363a7..f309d4269 100644 --- a/po/eu/minetest.po +++ b/po/eu/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Basque "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "lehenespenak" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -619,6 +630,7 @@ msgstr "" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -863,6 +875,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "" @@ -897,6 +917,7 @@ msgstr "" msgid "- Public: " msgstr "" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1321,6 +1342,7 @@ msgstr "Ezkerreko maius." msgid "Left Windows" msgstr "Ezkerreko leihoa" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1413,6 +1435,7 @@ msgstr "" msgid "Play" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Inprimatu" @@ -1449,6 +1472,7 @@ msgstr "Eskuineko leihoa" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Hautatu" @@ -1683,10 +1707,15 @@ msgstr "" msgid "Sound Volume: " msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "eu" @@ -2060,8 +2089,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4702,7 +4731,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/fil/minetest.po b/po/fil/minetest.po index ec99743d0..df9f52b7f 100644 --- a/po/fil/minetest.po +++ b/po/fil/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Filipino (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Filipino "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -612,6 +623,7 @@ msgstr "" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -856,6 +868,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -890,6 +910,7 @@ msgstr "" msgid "- Public: " msgstr "" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1314,6 +1335,7 @@ msgstr "" msgid "Left Windows" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1406,6 +1428,7 @@ msgstr "" msgid "Play" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1442,6 +1465,7 @@ msgstr "" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "" @@ -1676,10 +1700,15 @@ msgstr "" msgid "Sound Volume: " msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "fil" @@ -2053,8 +2082,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4659,7 +4688,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/fr/minetest.po b/po/fr/minetest.po index 85bd20888..928e8ffaf 100644 --- a/po/fr/minetest.po +++ b/po/fr/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: French (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-04-03 20:24+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: French "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "Valeur absolue" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "par défaut" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "eased" @@ -624,6 +635,7 @@ msgstr "Nom / Mot de passe" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "JcJ activé" @@ -869,6 +881,14 @@ msgstr "Le fichier de mot de passe fourni n'a pas pu être ouvert : " msgid "Provided world path doesn't exist: " msgstr "Le chemin du monde spécifié n'existe pas : " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -905,6 +925,7 @@ msgstr "- Port : " msgid "- Public: " msgstr "- Public : " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- JcJ : " @@ -1352,6 +1373,7 @@ msgstr "Shift gauche" msgid "Left Windows" msgstr "Windows gauche" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menu" @@ -1444,6 +1466,7 @@ msgstr "Pause" msgid "Play" msgstr "Jouer" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Capture d'écran" @@ -1480,6 +1503,7 @@ msgstr "Windows droite" msgid "Scroll Lock" msgstr "Verr. défilement" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Sélectionner" @@ -1721,10 +1745,15 @@ msgstr "Muet" msgid "Sound Volume: " msgstr "Volume du son : " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Entrer " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "fr" @@ -2169,9 +2198,10 @@ msgid "Bumpmapping" msgstr "Bump mapping" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5341,7 +5371,7 @@ msgstr "" #: src/settings_translation_file.cpp #, fuzzy -msgid "Near clipping plane" +msgid "Near plane" msgstr "Plan à proximité" #: src/settings_translation_file.cpp @@ -7021,111 +7051,21 @@ msgstr "Limite parallèle de cURL" msgid "cURL timeout" msgstr "Délais d'interruption de cURL" -#~ msgid "Toggle Cinematic" -#~ msgstr "Mode cinématique" - -#~ msgid "Select Package File:" -#~ msgstr "Sélectionner le fichier du mod :" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "" -#~ "Coordonnée Y de la limite supérieure des grandes grottes pseudo-" -#~ "aléatoires." - -#~ msgid "Waving Water" -#~ msgstr "Eau ondulante" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Si les donjons font parfois saillie du terrain." - -#~ msgid "Projecting dungeons" -#~ msgstr "Projection des donjons" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Hauteur (Y) auquel les ombres portées s’étendent." - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Hauteur (Y) du point de flottaison et de la surface des lacs." - -#~ msgid "Waving water" -#~ msgstr "Vagues" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "" -#~ "Variation de la hauteur des collines et de la profondeur des lacs sur les " -#~ "terrains plats flottants." - #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Hauteur maximum typique, au-dessus et au-dessous du point médian, du " -#~ "terrain de montagne flottantes." +#~ "Ajuster la correction gamma. Les valeurs plus basses sont plus claires.\n" +#~ "Ce paramètre s'applique au client seulement et est ignoré par le serveur." -#~ msgid "This font will be used for certain languages." -#~ msgstr "Cette police sera utilisée pour certaines langues." - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Force de la courbe de lumière mi-boost." - -#~ msgid "Shadow limit" -#~ msgstr "Limite des ombres" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Chemin vers police TrueType ou Bitmap." - -#~ msgid "Lightness sharpness" -#~ msgstr "Démarcation de la luminosité" - -#~ msgid "Lava depth" -#~ msgstr "Profondeur de lave" - -#~ msgid "IPv6 support." -#~ msgstr "Support IPv6." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Niveau d'opacité de l'ombre de la police (entre 0 et 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Hauteur des montagnes flottantes" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Densité des montagnes flottantes" - -#~ msgid "Floatland mountain density" -#~ msgstr "Densité des montagnes flottantes" - -#~ msgid "Floatland level" -#~ msgstr "Hauteur des terrains flottants" - -#~ msgid "Floatland base noise" -#~ msgstr "Le bruit de base des terres flottantes" - -#~ msgid "Floatland base height noise" -#~ msgstr "Le bruit de hauteur de base des terres flottantes" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Autorise le mappage tonal cinématographique" - -#~ msgid "Enable VBO" -#~ msgstr "Activer Vertex Buffer Object: objet tampon de vertex" - -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." #~ msgstr "" -#~ "Défini les zones de terrain plat flottant.\n" -#~ "Des terrains plats flottants apparaissent lorsque le bruit > 0." +#~ "Modifie la façon dont les terres flottantes montagneuses s’effilent au-" +#~ "dessus et au-dessous du point médian." -#~ msgid "Darkness sharpness" -#~ msgstr "Démarcation de l'obscurité" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Contrôle la largeur des tunnels, une valeur plus petite crée des tunnels " -#~ "plus larges." +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Milieu de la courbe de lumière mi-boost." #~ msgid "" #~ "Controls the density of mountain-type floatlands.\n" @@ -7134,18 +7074,108 @@ msgstr "Délais d'interruption de cURL" #~ "Contrôle la densité des terrains montagneux sur les terres flottantes.\n" #~ "C'est un décalage ajouté à la valeur du bruit 'mgv7_np_mountain'." -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Milieu de la courbe de lumière mi-boost." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." #~ msgstr "" -#~ "Modifie la façon dont les terres flottantes montagneuses s’effilent au-" -#~ "dessus et au-dessous du point médian." +#~ "Contrôle la largeur des tunnels, une valeur plus petite crée des tunnels " +#~ "plus larges." + +#~ msgid "Darkness sharpness" +#~ msgstr "Démarcation de l'obscurité" #~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." #~ msgstr "" -#~ "Ajuster la correction gamma. Les valeurs plus basses sont plus claires.\n" -#~ "Ce paramètre s'applique au client seulement et est ignoré par le serveur." +#~ "Défini les zones de terrain plat flottant.\n" +#~ "Des terrains plats flottants apparaissent lorsque le bruit > 0." + +#~ msgid "Enable VBO" +#~ msgstr "Activer Vertex Buffer Object: objet tampon de vertex" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Autorise le mappage tonal cinématographique" + +#~ msgid "Floatland base height noise" +#~ msgstr "Le bruit de hauteur de base des terres flottantes" + +#~ msgid "Floatland base noise" +#~ msgstr "Le bruit de base des terres flottantes" + +#~ msgid "Floatland level" +#~ msgstr "Hauteur des terrains flottants" + +#~ msgid "Floatland mountain density" +#~ msgstr "Densité des montagnes flottantes" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "Densité des montagnes flottantes" + +#~ msgid "Floatland mountain height" +#~ msgstr "Hauteur des montagnes flottantes" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Niveau d'opacité de l'ombre de la police (entre 0 et 255)." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "IPv6 support." +#~ msgstr "Support IPv6." + +#~ msgid "Lava depth" +#~ msgstr "Profondeur de lave" + +#~ msgid "Lightness sharpness" +#~ msgstr "Démarcation de la luminosité" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Chemin vers police TrueType ou Bitmap." + +#~ msgid "Shadow limit" +#~ msgstr "Limite des ombres" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Force de la courbe de lumière mi-boost." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Cette police sera utilisée pour certaines langues." + +#~ msgid "" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "" +#~ "Hauteur maximum typique, au-dessus et au-dessous du point médian, du " +#~ "terrain de montagne flottantes." + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Variation de la hauteur des collines et de la profondeur des lacs sur les " +#~ "terrains plats flottants." + +#~ msgid "Waving water" +#~ msgstr "Vagues" + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Hauteur (Y) du point de flottaison et de la surface des lacs." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Hauteur (Y) auquel les ombres portées s’étendent." + +#~ msgid "Projecting dungeons" +#~ msgstr "Projection des donjons" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Si les donjons font parfois saillie du terrain." + +#~ msgid "Waving Water" +#~ msgstr "Eau ondulante" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "" +#~ "Coordonnée Y de la limite supérieure des grandes grottes pseudo-" +#~ "aléatoires." + +#~ msgid "Select Package File:" +#~ msgstr "Sélectionner le fichier du mod :" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Mode cinématique" diff --git a/po/he/minetest.po b/po/he/minetest.po index bfff0f466..9a4daa2c7 100644 --- a/po/he/minetest.po +++ b/po/he/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Hebrew (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2019-11-10 15:04+0000\n" "Last-Translator: Krock \n" "Language-Team: Hebrew "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -639,6 +650,7 @@ msgstr "שם/סיסמה" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP אפשר" @@ -886,6 +898,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -925,6 +945,7 @@ msgstr "פורט" msgid "- Public: " msgstr "ציבורי" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1353,6 +1374,7 @@ msgstr "" msgid "Left Windows" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1445,6 +1467,7 @@ msgstr "" msgid "Play" msgstr "שחק" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1481,6 +1504,7 @@ msgstr "" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "" @@ -1715,10 +1739,15 @@ msgstr "" msgid "Sound Volume: " msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "he" @@ -2092,8 +2121,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4710,7 +4739,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/hu/minetest.po b/po/hu/minetest.po index d22f4f337..c1c724e2c 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Hungarian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-04-03 20:24+0000\n" "Last-Translator: sfan5 \n" "Language-Team: Hungarian "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "absvalue" msgstr "abszolút érték" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "alapértelmezések" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "könyített" @@ -629,6 +640,7 @@ msgstr "Név / Jelszó" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP engedélyezve" @@ -874,6 +886,14 @@ msgstr "jelszó fájl megnyitás hiba " msgid "Provided world path doesn't exist: " msgstr "A megadott útvonalon nem létezik világ: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -910,6 +930,7 @@ msgstr "- Port: " msgid "- Public: " msgstr "- Nyilvános: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1363,6 +1384,7 @@ msgstr "Bal Shift" msgid "Left Windows" msgstr "Bal Windows" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menü" @@ -1455,6 +1477,7 @@ msgstr "Szünet" msgid "Play" msgstr "Játék" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Nyomtatás" @@ -1491,6 +1514,7 @@ msgstr "Jobb Windows" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Kiválasztás" @@ -1732,10 +1756,15 @@ msgstr "Némitva" msgid "Sound Volume: " msgstr "Hangerő: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Belépés " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "hu" @@ -2176,8 +2205,8 @@ msgstr "Bumpmappolás" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5348,7 +5377,7 @@ msgstr "" "csatlakoznak." #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6820,84 +6849,14 @@ msgstr "cURL párhuzamossági korlát" msgid "cURL timeout" msgstr "cURL időkorlátja" -#~ msgid "Toggle Cinematic" -#~ msgstr "Váltás „mozi” módba" - -#~ msgid "Select Package File:" -#~ msgstr "csomag fájl kiválasztása:" - -#~ msgid "Waving Water" -#~ msgstr "Hullámzó víz" - -#~ msgid "Waving water" -#~ msgstr "Hullámzó víz" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Ezt a betűtípust bizonyos nyelvek használják." - -#, fuzzy -#~ msgid "Shadow limit" -#~ msgstr "Térképblokk korlát" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "A TrueType betűtípus (ttf) vagy bitmap útvonala." - -#, fuzzy -#~ msgid "Lightness sharpness" -#~ msgstr "Fényélesség" - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Nagy barlang mélység" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 támogatás." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Betűtípus árnyék alfa (átlátszatlanság, 0 és 255 között)." - -#, fuzzy -#~ msgid "Floatland mountain height" -#~ msgstr "Lebegő hegyek magassága" - -#, fuzzy -#~ msgid "Floatland mountain density" -#~ msgstr "Lebegő hegyek sűrűsége" - -#~ msgid "Floatland level" -#~ msgstr "Lebegő föld szintje" - -#, fuzzy -#~ msgid "Floatland base noise" -#~ msgstr "A lebegő hegyek alapzaja" - -#, fuzzy -#~ msgid "Floatland base height noise" -#~ msgstr "A lebegő hegyek alapmagassága" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "filmes tónus effektek bekapcsolása" - -#~ msgid "Enable VBO" -#~ msgstr "VBO engedélyez" - #~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "A lebegő szigetek sima területeit határozza meg.\n" -#~ "Lapos szigetek ott fordulnak elő, ahol a zaj értéke pozitív." - -#~ msgid "Darkness sharpness" -#~ msgstr "a sötétség élessége" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "A járatok szélességét határozza meg, alacsonyabb érték szélesebb " -#~ "járatokat hoz létre." +#~ "Gamma kódolás beállítása a fényhez. Alacsonyabb számok - nagyobb " +#~ "fényerő.\n" +#~ "Ez a beállítás csak a kliensre érvényes, a szerver nem veszi figyelembe." #, fuzzy #~ msgid "" @@ -6907,11 +6866,81 @@ msgstr "cURL időkorlátja" #~ "A lebegő szigetek hegységeinek sűrűségét szabályozza.\n" #~ "Az \"np_mountain\" zaj értékéhez hozzáadott eltolás." -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." #~ msgstr "" -#~ "Gamma kódolás beállítása a fényhez. Alacsonyabb számok - nagyobb " -#~ "fényerő.\n" -#~ "Ez a beállítás csak a kliensre érvényes, a szerver nem veszi figyelembe." +#~ "A járatok szélességét határozza meg, alacsonyabb érték szélesebb " +#~ "járatokat hoz létre." + +#~ msgid "Darkness sharpness" +#~ msgstr "a sötétség élessége" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "A lebegő szigetek sima területeit határozza meg.\n" +#~ "Lapos szigetek ott fordulnak elő, ahol a zaj értéke pozitív." + +#~ msgid "Enable VBO" +#~ msgstr "VBO engedélyez" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "filmes tónus effektek bekapcsolása" + +#, fuzzy +#~ msgid "Floatland base height noise" +#~ msgstr "A lebegő hegyek alapmagassága" + +#, fuzzy +#~ msgid "Floatland base noise" +#~ msgstr "A lebegő hegyek alapzaja" + +#~ msgid "Floatland level" +#~ msgstr "Lebegő föld szintje" + +#, fuzzy +#~ msgid "Floatland mountain density" +#~ msgstr "Lebegő hegyek sűrűsége" + +#, fuzzy +#~ msgid "Floatland mountain height" +#~ msgstr "Lebegő hegyek magassága" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Betűtípus árnyék alfa (átlátszatlanság, 0 és 255 között)." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 támogatás." + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Nagy barlang mélység" + +#, fuzzy +#~ msgid "Lightness sharpness" +#~ msgstr "Fényélesség" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "A TrueType betűtípus (ttf) vagy bitmap útvonala." + +#, fuzzy +#~ msgid "Shadow limit" +#~ msgstr "Térképblokk korlát" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Ezt a betűtípust bizonyos nyelvek használják." + +#~ msgid "Waving water" +#~ msgstr "Hullámzó víz" + +#~ msgid "Waving Water" +#~ msgstr "Hullámzó víz" + +#~ msgid "Select Package File:" +#~ msgstr "csomag fájl kiválasztása:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Váltás „mozi” módba" diff --git a/po/id/minetest.po b/po/id/minetest.po index fbd070d16..e97885c11 100644 --- a/po/id/minetest.po +++ b/po/id/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Indonesian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-04-03 20:24+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Indonesian "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "Nilai mutlak" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "bawaan" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "kehalusan (eased)" @@ -618,6 +629,7 @@ msgstr "Nama/Kata sandi" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP dinyalakan" @@ -862,6 +874,14 @@ msgstr "Berkas kata sandi yang diberikan gagal dibuka: " msgid "Provided world path doesn't exist: " msgstr "Jalur dunia yang diberikan tidak ada: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -898,6 +918,7 @@ msgstr "- Porta: " msgid "- Public: " msgstr "- Publik: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1348,6 +1369,7 @@ msgstr "Shift Kiri" msgid "Left Windows" msgstr "Windows Kiri" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menu" @@ -1440,6 +1462,7 @@ msgstr "Pause" msgid "Play" msgstr "Play" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Print" @@ -1476,6 +1499,7 @@ msgstr "Windows Kanan" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Select" @@ -1525,7 +1549,7 @@ msgid "Register and Join" msgstr "Daftar dan gabung" #: src/gui/guiConfirmRegistration.cpp -#, c-format, fuzzy +#, fuzzy, c-format msgid "" "You are about to join this server with the name \"%s\" for the first time.\n" "If you proceed, a new account using your credentials will be created on this " @@ -1718,10 +1742,15 @@ msgstr "Dibisukan" msgid "Sound Volume: " msgstr "Volume suara: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Masuk " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "id" @@ -2156,8 +2185,8 @@ msgstr "Bumpmapping" #: src/settings_translation_file.cpp #, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5246,7 +5275,7 @@ msgstr "" #: src/settings_translation_file.cpp #, fuzzy -msgid "Near clipping plane" +msgid "Near plane" msgstr "Bidang dekat" #: src/settings_translation_file.cpp @@ -6829,123 +6858,6 @@ msgstr "Batas cURL paralel" msgid "cURL timeout" msgstr "Waktu habis untuk cURL" -#~ msgid "Toggle Cinematic" -#~ msgstr "Mode sinema" - -#~ msgid "Select Package File:" -#~ msgstr "Pilih berkas paket:" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Batas atas Y untuk lava dalam gua besar." - -#~ msgid "Waving Water" -#~ msgstr "Air Berombak" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Apakah dungeon terkadang muncul dari medan." - -#~ msgid "Projecting dungeons" -#~ msgstr "Dungeon yang menonjol" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Ketinggian Y tempat bayangan floatland diperpanjang." - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Ketinggian Y dari titik tengah floatland dan permukaan danau." - -#~ msgid "Waving water" -#~ msgstr "Air berombak" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "" -#~ "Variasi dari ketinggian bukit dan kedalaman danau pada medan halus " -#~ "floatland." - -#~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "" -#~ "Ketinggian maksimum secara umum, di atas dan di bawah titik tengah, dari " -#~ "gunung floatland." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Fon ini akan digunakan pada bahasa tertentu." - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Kekuatan penguatan tengah kurva cahaya." - -#~ msgid "Shadow limit" -#~ msgstr "Batas bayangan" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Jalur ke TrueTypeFont atau bitmap." - -#~ msgid "Lightness sharpness" -#~ msgstr "Kecuraman keterangan" - -#~ msgid "Lava depth" -#~ msgstr "Kedalaman lava" - -#~ msgid "IPv6 support." -#~ msgstr "Dukungan IPv6." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Keburaman bayangan fon (keopakan, dari 0 sampai 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Ketinggian gunung floatland" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Pangkat gunung floatland" - -#~ msgid "Floatland mountain density" -#~ msgstr "Kepadatan gunung floatland" - -#~ msgid "Floatland level" -#~ msgstr "Ketinggian floatland" - -#~ msgid "Floatland base noise" -#~ msgstr "Noise dasar floatland" - -#~ msgid "Floatland base height noise" -#~ msgstr "Noise ketinggian dasar floatland" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Gunakan pemetaan suasana (tone mapping) filmis" - -#~ msgid "Enable VBO" -#~ msgstr "Gunakan VBO" - -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Mengatur daerah dari medan halus floatland.\n" -#~ "Floatland halus muncul saat noise > 0." - -#~ msgid "Darkness sharpness" -#~ msgstr "Kecuraman kegelapan" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Mengatur lebar terowongan, nilai lebih kecil terowongan semakin lebar." - -#~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "Atur kepadatan floatland berbentuk gunung.\n" -#~ "Merupakan pergeseran yang ditambahkan ke nilai noise \"mgv7_np_mountain\"." - -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Titik tengah penguatan tengah kurva cahaya." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Ubah cara gunung floatland meramping di atas dan di bawah titik tengah." - #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " #~ "brighter.\n" @@ -6954,3 +6866,120 @@ msgstr "Waktu habis untuk cURL" #~ "Sesuaikan pengodean gamma untuk tabel cahaya.\n" #~ "Angka yang lebih tinggi lebih terang.\n" #~ "Pengaturan ini untuk klien saja dan diabaikan oleh peladen." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "" +#~ "Ubah cara gunung floatland meramping di atas dan di bawah titik tengah." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Titik tengah penguatan tengah kurva cahaya." + +#~ msgid "" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "Atur kepadatan floatland berbentuk gunung.\n" +#~ "Merupakan pergeseran yang ditambahkan ke nilai noise \"mgv7_np_mountain\"." + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Mengatur lebar terowongan, nilai lebih kecil terowongan semakin lebar." + +#~ msgid "Darkness sharpness" +#~ msgstr "Kecuraman kegelapan" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Mengatur daerah dari medan halus floatland.\n" +#~ "Floatland halus muncul saat noise > 0." + +#~ msgid "Enable VBO" +#~ msgstr "Gunakan VBO" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Gunakan pemetaan suasana (tone mapping) filmis" + +#~ msgid "Floatland base height noise" +#~ msgstr "Noise ketinggian dasar floatland" + +#~ msgid "Floatland base noise" +#~ msgstr "Noise dasar floatland" + +#~ msgid "Floatland level" +#~ msgstr "Ketinggian floatland" + +#~ msgid "Floatland mountain density" +#~ msgstr "Kepadatan gunung floatland" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "Pangkat gunung floatland" + +#~ msgid "Floatland mountain height" +#~ msgstr "Ketinggian gunung floatland" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Keburaman bayangan fon (keopakan, dari 0 sampai 255)." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "IPv6 support." +#~ msgstr "Dukungan IPv6." + +#~ msgid "Lava depth" +#~ msgstr "Kedalaman lava" + +#~ msgid "Lightness sharpness" +#~ msgstr "Kecuraman keterangan" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Jalur ke TrueTypeFont atau bitmap." + +#~ msgid "Shadow limit" +#~ msgstr "Batas bayangan" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Kekuatan penguatan tengah kurva cahaya." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Fon ini akan digunakan pada bahasa tertentu." + +#~ msgid "" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "" +#~ "Ketinggian maksimum secara umum, di atas dan di bawah titik tengah, dari " +#~ "gunung floatland." + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Variasi dari ketinggian bukit dan kedalaman danau pada medan halus " +#~ "floatland." + +#~ msgid "Waving water" +#~ msgstr "Air berombak" + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Ketinggian Y dari titik tengah floatland dan permukaan danau." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Ketinggian Y tempat bayangan floatland diperpanjang." + +#~ msgid "Projecting dungeons" +#~ msgstr "Dungeon yang menonjol" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Apakah dungeon terkadang muncul dari medan." + +#~ msgid "Waving Water" +#~ msgstr "Air Berombak" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Batas atas Y untuk lava dalam gua besar." + +#~ msgid "Select Package File:" +#~ msgstr "Pilih berkas paket:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Mode sinema" diff --git a/po/it/minetest.po b/po/it/minetest.po index e0b93ece3..38e282440 100644 --- a/po/it/minetest.po +++ b/po/it/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Italian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2019-11-13 16:04+0000\n" "Last-Translator: Jacques Lagrange \n" "Language-Team: Italian "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "'absvalue'" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "'defaults'" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "'eased'" @@ -619,6 +630,7 @@ msgstr "Nome / Password" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP abilitato" @@ -863,6 +875,14 @@ msgstr "Impossibile aprire il file password fornito: " msgid "Provided world path doesn't exist: " msgstr "Il percorso fornito per il mondo non esiste: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -899,6 +919,7 @@ msgstr "- Porta: " msgid "- Public: " msgstr "- Pubblico: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1349,6 +1370,7 @@ msgstr "Maiusc sinistro" msgid "Left Windows" msgstr "Windows sinistro" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menu" @@ -1441,6 +1463,7 @@ msgstr "Pausa" msgid "Play" msgstr "Play" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Stampa" @@ -1477,6 +1500,7 @@ msgstr "Windows destro" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Selezione" @@ -1717,10 +1741,15 @@ msgstr "Silenziato" msgid "Sound Volume: " msgstr "Volume suono: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Inserisci " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "it" @@ -2165,9 +2194,10 @@ msgid "Bumpmapping" msgstr "Bumpmapping" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5309,7 +5339,8 @@ msgstr "" "dei server." #: src/settings_translation_file.cpp -msgid "Near clipping plane" +#, fuzzy +msgid "Near plane" msgstr "Piano di ritaglio vicino" #: src/settings_translation_file.cpp @@ -6949,96 +6980,45 @@ msgstr "Limite parallelo cURL" msgid "cURL timeout" msgstr "Scadenza cURL" -#~ msgid "Toggle Cinematic" -#~ msgstr "Scegli cinematica" - -#~ msgid "Select Package File:" -#~ msgstr "Seleziona pacchetto file:" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y del limite superiore della lava nelle caverne grandi." - -#~ msgid "Waving Water" -#~ msgstr "Acqua ondeggiante" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Se i sotterranei saltuariamente si protendono dal terreno." - -#~ msgid "Projecting dungeons" -#~ msgstr "Sotterranei protundenti" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Livello Y a cui si estendono le ombre delle terre fluttuanti." - -#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Livello Y del punto medio delle terre fluttuanti e della superficie dei " -#~ "laghi." +#~ "Regola la codifica della gamma per le tabelle della luce. Numeri maggiori " +#~ "sono più chiari.\n" +#~ "Questa impostazione è solo per il client ed è ignorata dal server." -#~ msgid "Waving water" -#~ msgstr "Acqua ondeggiante" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." #~ msgstr "" -#~ "Variazione dell'altezza delle colline, e della profondità dei laghi sul\n" -#~ "terreno uniforme delle terre fluttuanti." +#~ "Modifica il restringimento superiore e inferiore rispetto al punto " +#~ "mediano delle terre fluttuanti di tipo montagnoso." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Centro dell'aumento mediano della curva della luce." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Altezza massima tipica, sopra e sotto il punto medio, delle montagne dei " -#~ "terreni fluttuanti." +#~ "Controlla la densità delle terre fluttuanti di tipo montuoso.\n" +#~ "È uno spostamento di rumore aggiunto al valore del rumore " +#~ "'mgv7_np_mountain'." -#~ msgid "This font will be used for certain languages." -#~ msgstr "Questo carattere sarà usato per certe Lingue." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Controlla la larghezza delle gallerie, un valore più piccolo crea " +#~ "gallerie più larghe." -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Intensità dell'aumento mediano della curva di luce." +#~ msgid "Darkness sharpness" +#~ msgstr "Nitidezza dell'oscurità" -#~ msgid "Shadow limit" -#~ msgstr "Limite dell'ombra" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Percorso del carattere TrueType o bitmap." - -#~ msgid "Lightness sharpness" -#~ msgstr "Nitidezza della luminosità" - -#~ msgid "Lava depth" -#~ msgstr "Profondità della lava" - -#~ msgid "IPv6 support." -#~ msgstr "Supporto IPv6." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Trasparenza ombreggiatura carattere (opacità, tra 0 e 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Altezza delle montagne delle terre fluttuanti" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Densità montuosa delle terre fluttuanti" - -#~ msgid "Floatland mountain density" -#~ msgstr "Densità montuosa delle terre fluttuanti" - -#~ msgid "Floatland level" -#~ msgstr "Livello delle terre fluttuanti" - -#~ msgid "Floatland base noise" -#~ msgstr "Rumore base delle terre fluttuanti" - -#~ msgid "Floatland base height noise" -#~ msgstr "Rumore base dell'altezza delle terre fluttuanti" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Attiva il filmic tone mapping" - -#~ msgid "Enable VBO" -#~ msgstr "Abilitare i VBO" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Definisce aree di terreno uniforme nelle terre fluttuanti.\n" +#~ "Le terre fluttuanti uniformi avvengono quando il rumore è > 0." #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -7049,42 +7029,93 @@ msgstr "Scadenza cURL" #~ "posizionare le caverne di liquido.\n" #~ "Limite verticale della lava nelle caverne grandi." -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Definisce aree di terreno uniforme nelle terre fluttuanti.\n" -#~ "Le terre fluttuanti uniformi avvengono quando il rumore è > 0." +#~ msgid "Enable VBO" +#~ msgstr "Abilitare i VBO" -#~ msgid "Darkness sharpness" -#~ msgstr "Nitidezza dell'oscurità" +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Attiva il filmic tone mapping" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Controlla la larghezza delle gallerie, un valore più piccolo crea " -#~ "gallerie più larghe." +#~ msgid "Floatland base height noise" +#~ msgstr "Rumore base dell'altezza delle terre fluttuanti" + +#~ msgid "Floatland base noise" +#~ msgstr "Rumore base delle terre fluttuanti" + +#~ msgid "Floatland level" +#~ msgstr "Livello delle terre fluttuanti" + +#~ msgid "Floatland mountain density" +#~ msgstr "Densità montuosa delle terre fluttuanti" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "Densità montuosa delle terre fluttuanti" + +#~ msgid "Floatland mountain height" +#~ msgstr "Altezza delle montagne delle terre fluttuanti" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Trasparenza ombreggiatura carattere (opacità, tra 0 e 255)." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "IPv6 support." +#~ msgstr "Supporto IPv6." + +#~ msgid "Lava depth" +#~ msgstr "Profondità della lava" + +#~ msgid "Lightness sharpness" +#~ msgstr "Nitidezza della luminosità" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Percorso del carattere TrueType o bitmap." + +#~ msgid "Shadow limit" +#~ msgstr "Limite dell'ombra" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Intensità dell'aumento mediano della curva di luce." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Questo carattere sarà usato per certe Lingue." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Controlla la densità delle terre fluttuanti di tipo montuoso.\n" -#~ "È uno spostamento di rumore aggiunto al valore del rumore " -#~ "'mgv7_np_mountain'." +#~ "Altezza massima tipica, sopra e sotto il punto medio, delle montagne dei " +#~ "terreni fluttuanti." -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Centro dell'aumento mediano della curva della luce." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." #~ msgstr "" -#~ "Modifica il restringimento superiore e inferiore rispetto al punto " -#~ "mediano delle terre fluttuanti di tipo montagnoso." +#~ "Variazione dell'altezza delle colline, e della profondità dei laghi sul\n" +#~ "terreno uniforme delle terre fluttuanti." -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ msgid "Waving water" +#~ msgstr "Acqua ondeggiante" + +#~ msgid "Y-level of floatland midpoint and lake surface." #~ msgstr "" -#~ "Regola la codifica della gamma per le tabelle della luce. Numeri maggiori " -#~ "sono più chiari.\n" -#~ "Questa impostazione è solo per il client ed è ignorata dal server." +#~ "Livello Y del punto medio delle terre fluttuanti e della superficie dei " +#~ "laghi." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Livello Y a cui si estendono le ombre delle terre fluttuanti." + +#~ msgid "Projecting dungeons" +#~ msgstr "Sotterranei protundenti" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Se i sotterranei saltuariamente si protendono dal terreno." + +#~ msgid "Waving Water" +#~ msgstr "Acqua ondeggiante" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y del limite superiore della lava nelle caverne grandi." + +#~ msgid "Select Package File:" +#~ msgstr "Seleziona pacchetto file:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Scegli cinematica" diff --git a/po/ja/minetest.po b/po/ja/minetest.po index b1b76593b..7d0542390 100644 --- a/po/ja/minetest.po +++ b/po/ja/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Japanese (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-01-27 13:21+0000\n" "Last-Translator: BreadW \n" "Language-Team: Japanese "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "絶対値" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "既定値" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "緩和する" @@ -615,6 +626,7 @@ msgstr "名前 / パスワード" msgid "Ping" msgstr "応答速度" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP有効" @@ -859,6 +871,14 @@ msgstr "パスワードファイルを開けませんでした: " msgid "Provided world path doesn't exist: " msgstr "ワールドが存在しません: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -895,6 +915,7 @@ msgstr "- ポート: " msgid "- Public: " msgstr "- 公開サーバ: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1345,6 +1366,7 @@ msgstr "左Shift" msgid "Left Windows" msgstr "左Windows" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Alt" @@ -1437,6 +1459,7 @@ msgstr "Pause" msgid "Play" msgstr "Play" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Print" @@ -1473,6 +1496,7 @@ msgstr "右Windows" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Select" @@ -1715,10 +1739,15 @@ msgstr "消音" msgid "Sound Volume: " msgstr "音量: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "エンター " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "ja" @@ -2145,9 +2174,10 @@ msgid "Bumpmapping" msgstr "バンプマッピング" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -3244,7 +3274,8 @@ msgid "" msgstr "" "廃止予定のLua API呼び出しの処理:\n" "- legacy: 古い振る舞いを模倣する(試みる) (リリース版の既定値)。\n" -"- log: 廃止予定の呼び出しを模倣してバックトレースを記録 (デバッグ版の既定値)。\n" +"- log: 廃止予定の呼び出しを模倣してバックトレースを記録 (デバッグ版の既定" +"値)。\n" "- error: 廃止予定の呼び出しの使用を中止する (Mod開発者向けに推奨)。" #: src/settings_translation_file.cpp @@ -5219,7 +5250,8 @@ msgid "" msgstr "プレイヤーが参加したときにサーバ一覧に表示されるサーバの名前。" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +#, fuzzy +msgid "Near plane" msgstr "クリッピング面付近" #: src/settings_translation_file.cpp @@ -5383,7 +5415,8 @@ msgid "" "unavailable." msgstr "" "フォールバックフォントのパス。\n" -"「フリータイプフォント」が有効な場合:TrueTypeフォントでなければなりません。\n" +"「フリータイプフォント」が有効な場合:TrueTypeフォントでなければなりませ" +"ん。\n" "「フリータイプフォント」が無効な場合:ビットマップまたはXMLベクターフォント\n" "でなければなりません。\n" "このフォントは特定の言語で使用されるか、規定のフォントが使用できない\n" @@ -5415,7 +5448,8 @@ msgid "" "The fallback font will be used if the font cannot be loaded." msgstr "" "既定のフォントのパス。\n" -"「フリータイプフォント」が有効な場合:TrueTypeフォントでなければなりません。\n" +"「フリータイプフォント」が有効な場合:TrueTypeフォントでなければなりませ" +"ん。\n" "「フリータイプフォント」が無効な場合:ビットマップまたはXMLベクターフォント\n" "でなければなりません。\n" "このフォールバックフォントはフォントが読み込めないときに使用されます。" @@ -5428,7 +5462,8 @@ msgid "" "This font is used for e.g. the console and profiler screen." msgstr "" "固定幅フォントのパス。\n" -"「フリータイプフォント」が有効な場合:TrueTypeフォントでなければなりません。\n" +"「フリータイプフォント」が有効な場合:TrueTypeフォントでなければなりませ" +"ん。\n" "「フリータイプフォント」が無効な場合:ビットマップまたはXMLベクターフォント\n" "でなければなりません。\n" "このフォントはコンソールや観測記録画面などで使用されます。" @@ -5888,7 +5923,9 @@ msgstr "" msgid "" "Shadow offset (in pixels) of the default font. If 0, then shadow will not be " "drawn." -msgstr "既定のフォントの影のオフセット(ピクセル単位)。 0の場合、影は描画されません。" +msgstr "" +"既定のフォントの影のオフセット(ピクセル単位)。 0の場合、影は描画されませ" +"ん。" #: src/settings_translation_file.cpp msgid "" @@ -6655,7 +6692,8 @@ msgid "" msgstr "" "フリータイプフォントを使用するかどうかは、フリータイプをサポートして\n" "コンパイルされている必要があります。 \n" -"無効にした場合、代わりにビットマップおよび XML ベクターフォントが使用されます。" +"無効にした場合、代わりにビットマップおよび XML ベクターフォントが使用されま" +"す。" #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." @@ -6811,90 +6849,39 @@ msgstr "cURL並行処理制限" msgid "cURL timeout" msgstr "cURLタイムアウト" -#~ msgid "Toggle Cinematic" -#~ msgstr "映画風モード切替" +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." +#~ msgstr "" +#~ "ライトテーブルのガンマ補正を調整します。数値が大きいほど明るくなります。\n" +#~ "この設定はクライアント専用であり、サーバでは無視されます。" -#~ msgid "Select Package File:" -#~ msgstr "パッケージファイルを選択:" +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "山型浮遊大陸が中間点の上下でどのように先細くなるかを変更します。" -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "大きな洞窟内の溶岩のY高さ上限。" - -#~ msgid "Waving Water" -#~ msgstr "揺れる水" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "ダンジョンが時折地形から突出するかどうか。" - -#~ msgid "Projecting dungeons" -#~ msgstr "突出するダンジョン" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "浮遊大陸の影が広がるYレベル。" - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "浮遊大陸の中間点と湖面のYレベル。" - -#~ msgid "Waving water" -#~ msgstr "揺れる水" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "浮遊大陸の滑らかな地形における丘の高さと湖の深さの変動。" +#~ msgid "Center of light curve mid-boost." +#~ msgstr "光度曲線ミッドブーストの中心。" #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "浮遊大陸の山の中間点の上と下の典型的な最大高さ。" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "山型浮遊大陸の密度を制御します。\n" +#~ "ノイズのオフセットは、'mgv7_np_mountain' ノイズ値に追加されます。" -#~ msgid "This font will be used for certain languages." -#~ msgstr "このフォントは特定の言語で使用されます。" +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "トンネルの幅を制御、小さい方の値ほど広いトンネルを生成します。" -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "光度曲線ミッドブーストの強さ。" +#~ msgid "Darkness sharpness" +#~ msgstr "暗さの鋭さ" -#~ msgid "Shadow limit" -#~ msgstr "影の制限" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "TrueTypeフォントまたはビットマップへのパス。" - -#~ msgid "Lightness sharpness" -#~ msgstr "明るさの鋭さ" - -#~ msgid "Lava depth" -#~ msgstr "溶岩の深さ" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 サポート。" - -#~ msgid "Gamma" -#~ msgstr "ガンマ" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "フォントの影の透過 (不透明、0~255の間)。" - -#~ msgid "Floatland mountain height" -#~ msgstr "浮遊大陸の山の高さ" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "浮遊大陸の山指数" - -#~ msgid "Floatland mountain density" -#~ msgstr "浮遊大陸の山の密度" - -#~ msgid "Floatland level" -#~ msgstr "浮遊大陸の水位" - -#~ msgid "Floatland base noise" -#~ msgstr "浮遊大陸の基準ノイズ" - -#~ msgid "Floatland base height noise" -#~ msgstr "浮遊大陸の基準高さノイズ" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "フィルム調トーンマッピング有効にする" - -#~ msgid "Enable VBO" -#~ msgstr "VBOを有効化" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "浮遊大陸の滑らかな地形の地域を定義します。\n" +#~ "ノイズが 0 より大きいとき、滑らかな浮遊大陸になります。" #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -6905,36 +6892,87 @@ msgstr "cURLタイムアウト" #~ "す。\n" #~ "大きな洞窟内の溶岩のY高さ上限。" -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "浮遊大陸の滑らかな地形の地域を定義します。\n" -#~ "ノイズが 0 より大きいとき、滑らかな浮遊大陸になります。" +#~ msgid "Enable VBO" +#~ msgstr "VBOを有効化" -#~ msgid "Darkness sharpness" -#~ msgstr "暗さの鋭さ" +#~ msgid "Enables filmic tone mapping" +#~ msgstr "フィルム調トーンマッピング有効にする" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "トンネルの幅を制御、小さい方の値ほど広いトンネルを生成します。" +#~ msgid "Floatland base height noise" +#~ msgstr "浮遊大陸の基準高さノイズ" + +#~ msgid "Floatland base noise" +#~ msgstr "浮遊大陸の基準ノイズ" + +#~ msgid "Floatland level" +#~ msgstr "浮遊大陸の水位" + +#~ msgid "Floatland mountain density" +#~ msgstr "浮遊大陸の山の密度" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "浮遊大陸の山指数" + +#~ msgid "Floatland mountain height" +#~ msgstr "浮遊大陸の山の高さ" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "フォントの影の透過 (不透明、0~255の間)。" + +#~ msgid "Gamma" +#~ msgstr "ガンマ" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 サポート。" + +#~ msgid "Lava depth" +#~ msgstr "溶岩の深さ" + +#~ msgid "Lightness sharpness" +#~ msgstr "明るさの鋭さ" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "TrueTypeフォントまたはビットマップへのパス。" + +#~ msgid "Shadow limit" +#~ msgstr "影の制限" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "光度曲線ミッドブーストの強さ。" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "このフォントは特定の言語で使用されます。" #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "山型浮遊大陸の密度を制御します。\n" -#~ "ノイズのオフセットは、'mgv7_np_mountain' ノイズ値に追加されます。" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "浮遊大陸の山の中間点の上と下の典型的な最大高さ。" -#~ msgid "Center of light curve mid-boost." -#~ msgstr "光度曲線ミッドブーストの中心。" +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "浮遊大陸の滑らかな地形における丘の高さと湖の深さの変動。" -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "山型浮遊大陸が中間点の上下でどのように先細くなるかを変更します。" +#~ msgid "Waving water" +#~ msgstr "揺れる水" -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "ライトテーブルのガンマ補正を調整します。数値が大きいほど明るくなります。\n" -#~ "この設定はクライアント専用であり、サーバでは無視されます。" +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "浮遊大陸の中間点と湖面のYレベル。" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "浮遊大陸の影が広がるYレベル。" + +#~ msgid "Projecting dungeons" +#~ msgstr "突出するダンジョン" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "ダンジョンが時折地形から突出するかどうか。" + +#~ msgid "Waving Water" +#~ msgstr "揺れる水" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "大きな洞窟内の溶岩のY高さ上限。" + +#~ msgid "Select Package File:" +#~ msgstr "パッケージファイルを選択:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "映画風モード切替" diff --git a/po/ja_KS/minetest.po b/po/ja_KS/minetest.po index d4a10a617..e77b335a7 100644 --- a/po/ja_KS/minetest.po +++ b/po/ja_KS/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Japanese (Kansai) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Japanese (Kansai) "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -611,6 +622,7 @@ msgstr "" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -855,6 +867,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -889,6 +909,7 @@ msgstr "" msgid "- Public: " msgstr "" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1313,6 +1334,7 @@ msgstr "" msgid "Left Windows" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1405,6 +1427,7 @@ msgstr "" msgid "Play" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1441,6 +1464,7 @@ msgstr "" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "" @@ -1675,10 +1699,15 @@ msgstr "" msgid "Sound Volume: " msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "ja_KS" @@ -2052,8 +2081,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4658,7 +4687,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/jbo/minetest.po b/po/jbo/minetest.po index 384ac68e5..eea36c7fb 100644 --- a/po/jbo/minetest.po +++ b/po/jbo/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Lojban (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-15 18:36+0000\n" "Last-Translator: Robin Townsend \n" "Language-Team: Lojban "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -633,6 +644,7 @@ msgstr "cmene .i lerpoijaspu" msgid "Ping" msgstr ".pin. temci" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -903,6 +915,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -939,6 +959,7 @@ msgstr "- judrnporte: " msgid "- Public: " msgstr "- gubni: " +#. ~ PvP = Player versus Player #: src/client/game.cpp #, fuzzy msgid "- PvP: " @@ -1379,6 +1400,7 @@ msgstr "" msgid "Left Windows" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1472,6 +1494,7 @@ msgstr "" msgid "Play" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1509,6 +1532,7 @@ msgstr "" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "" @@ -1764,10 +1788,15 @@ msgstr "ko da'ergau le batke" msgid "Sound Volume: " msgstr "lo ni sance " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "jbo" @@ -2146,8 +2175,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4774,7 +4803,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/kk/minetest.po b/po/kk/minetest.po index 90a282677..ec85fafb6 100644 --- a/po/kk/minetest.po +++ b/po/kk/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Kazakh (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Kazakh "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -611,6 +622,7 @@ msgstr "" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -855,6 +867,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -889,6 +909,7 @@ msgstr "" msgid "- Public: " msgstr "" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1313,6 +1334,7 @@ msgstr "" msgid "Left Windows" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1405,6 +1427,7 @@ msgstr "" msgid "Play" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1441,6 +1464,7 @@ msgstr "" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "" @@ -1675,10 +1699,15 @@ msgstr "" msgid "Sound Volume: " msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "kk" @@ -2052,8 +2081,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4658,7 +4687,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/kn/minetest.po b/po/kn/minetest.po index e72e01826..cf3d15ad7 100644 --- a/po/kn/minetest.po +++ b/po/kn/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Kannada (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2019-11-10 15:04+0000\n" "Last-Translator: Krock \n" "Language-Team: Kannada "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -624,6 +635,7 @@ msgstr "" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -868,6 +880,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -902,6 +922,7 @@ msgstr "" msgid "- Public: " msgstr "" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1326,6 +1347,7 @@ msgstr "" msgid "Left Windows" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1418,6 +1440,7 @@ msgstr "" msgid "Play" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1454,6 +1477,7 @@ msgstr "" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "" @@ -1688,10 +1712,15 @@ msgstr "" msgid "Sound Volume: " msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "kn" @@ -2065,8 +2094,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4671,7 +4700,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/ko/minetest.po b/po/ko/minetest.po index 499d57dcb..1887912cb 100644 --- a/po/ko/minetest.po +++ b/po/ko/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Korean (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: Korean "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "defaults" msgstr "기본 게임" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -665,6 +676,7 @@ msgstr "이름/비밀번호" msgid "Ping" msgstr "핑" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP 가능" @@ -915,6 +927,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "월드 경로가 존재하지 않습니다: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -953,6 +973,7 @@ msgstr "- 포트: " msgid "- Public: " msgstr "일반" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1422,6 +1443,7 @@ msgstr "왼쪽 쉬프트" msgid "Left Windows" msgstr "왼쪽 창" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "메뉴" @@ -1516,6 +1538,7 @@ msgstr "일시 중지" msgid "Play" msgstr "시작" +#. ~ "Print screen" key #: src/client/keycode.cpp #, fuzzy msgid "Print" @@ -1554,6 +1577,7 @@ msgstr "오른쪽 창" msgid "Scroll Lock" msgstr "스크롤 락" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "선택" @@ -1802,10 +1826,15 @@ msgstr "음소거" msgid "Sound Volume: " msgstr "볼륨 조절: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "들어가기 " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "ko" @@ -2206,8 +2235,8 @@ msgstr "범프맵핑" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5180,7 +5209,7 @@ msgid "" msgstr "서버이름은 플레이어가 서버 리스트에 들어갈 때 나타납니다." #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6676,53 +6705,53 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Toggle Cinematic" -#~ msgstr "시네마틱 스위치" +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "터널 너비를 조절, 작은 수치는 넓은 터널을 만듭니다." -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "선택한 모드 파일:" +#~ msgid "Enable VBO" +#~ msgstr "VBO 적용" -#~ msgid "Waving Water" -#~ msgstr "물결 효과" +#~ msgid "Floatland level" +#~ msgstr "Floatland의 높이" -#~ msgid "Waving water" -#~ msgstr "물결 효과" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "이 글꼴은 특정 언어에 사용 됩니다." - -#~ msgid "Shadow limit" -#~ msgstr "그림자 제한" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "TrueTypeFont 또는 비트맵의 경로입니다." - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "큰 동굴 깊이" - -#~ msgid "Gamma" -#~ msgstr "감마" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "글꼴 그림자 투명도 (불투명 함, 0과 255 사이)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Floatland의 산 높이" +#~ msgid "Floatland mountain density" +#~ msgstr "Floatland의 산 밀집도" #, fuzzy #~ msgid "Floatland mountain exponent" #~ msgstr "Floatland의 산 밀집도" -#~ msgid "Floatland mountain density" -#~ msgstr "Floatland의 산 밀집도" +#~ msgid "Floatland mountain height" +#~ msgstr "Floatland의 산 높이" -#~ msgid "Floatland level" -#~ msgstr "Floatland의 높이" +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "글꼴 그림자 투명도 (불투명 함, 0과 255 사이)." -#~ msgid "Enable VBO" -#~ msgstr "VBO 적용" +#~ msgid "Gamma" +#~ msgstr "감마" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "터널 너비를 조절, 작은 수치는 넓은 터널을 만듭니다." +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "큰 동굴 깊이" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "TrueTypeFont 또는 비트맵의 경로입니다." + +#~ msgid "Shadow limit" +#~ msgstr "그림자 제한" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "이 글꼴은 특정 언어에 사용 됩니다." + +#~ msgid "Waving water" +#~ msgstr "물결 효과" + +#~ msgid "Waving Water" +#~ msgstr "물결 효과" + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "선택한 모드 파일:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "시네마틱 스위치" diff --git a/po/ky/minetest.po b/po/ky/minetest.po index 0210492ee..98ec32412 100644 --- a/po/ky/minetest.po +++ b/po/ky/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Kyrgyz (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2019-11-10 15:04+0000\n" "Last-Translator: Krock \n" "Language-Team: Kyrgyz "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -648,6 +659,7 @@ msgstr "Аты/сырсөзү" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua #, fuzzy msgid "PvP enabled" @@ -924,6 +936,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -964,6 +984,7 @@ msgstr "" msgid "- Public: " msgstr "Жалпылык" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1423,6 +1444,7 @@ msgstr "Сол Shift" msgid "Left Windows" msgstr "Сол Windows" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Меню" @@ -1516,6 +1538,7 @@ msgstr "Пауза" msgid "Play" msgstr "Ойноо" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Басма" @@ -1552,6 +1575,7 @@ msgstr "Оң Windows" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Тандоо" @@ -1798,10 +1822,15 @@ msgstr "баскычты басыңыз" msgid "Sound Volume: " msgstr "Үн көлөмү: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "ky" @@ -2183,8 +2212,8 @@ msgstr "Mip-текстуралоо" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4824,7 +4853,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6193,17 +6222,17 @@ msgid "cURL timeout" msgstr "" #, fuzzy -#~ msgid "Toggle Cinematic" -#~ msgstr "Тез басууга которуу" - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Дүйнөнү тандаңыз:" +#~ msgid "Enable VBO" +#~ msgstr "Баарын күйгүзүү" #, fuzzy #~ msgid "Enables filmic tone mapping" #~ msgstr "Убалды күйгүзүү" #, fuzzy -#~ msgid "Enable VBO" -#~ msgstr "Баарын күйгүзүү" +#~ msgid "Select Package File:" +#~ msgstr "Дүйнөнү тандаңыз:" + +#, fuzzy +#~ msgid "Toggle Cinematic" +#~ msgstr "Тез басууга которуу" diff --git a/po/lo/minetest.po b/po/lo/minetest.po index 1452369a8..8eb422943 100644 --- a/po/lo/minetest.po +++ b/po/lo/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Lao (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Lao "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -611,6 +622,7 @@ msgstr "" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -855,6 +867,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -889,6 +909,7 @@ msgstr "" msgid "- Public: " msgstr "" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1313,6 +1334,7 @@ msgstr "" msgid "Left Windows" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1405,6 +1427,7 @@ msgstr "" msgid "Play" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1441,6 +1464,7 @@ msgstr "" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "" @@ -1675,10 +1699,15 @@ msgstr "" msgid "Sound Volume: " msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "lo" @@ -2052,8 +2081,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4658,7 +4687,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/lt/minetest.po b/po/lt/minetest.po index 3209a5679..c907439bd 100644 --- a/po/lt/minetest.po +++ b/po/lt/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Lithuanian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-02-22 19:27+0000\n" "Last-Translator: An0n3m0us \n" "Language-Team: Lithuanian "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "defaults" msgstr "keisti žaidimą" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -676,6 +687,7 @@ msgstr "Vardas / Slaptažodis :" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP įjungtas" @@ -933,6 +945,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "Pateiktas pasaulio kelias neegzistuoja: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -974,6 +994,7 @@ msgstr "Prievadas" msgid "- Public: " msgstr "Viešas" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1445,6 +1466,7 @@ msgstr "Kairysis Shift" msgid "Left Windows" msgstr "Kairieji langai" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Meniu" @@ -1538,6 +1560,7 @@ msgstr "Pause" msgid "Play" msgstr "Žaisti" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Spausdinti" @@ -1574,6 +1597,7 @@ msgstr "Dešinieji langai" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Pasirinkti" @@ -1820,10 +1844,15 @@ msgstr "paspauskite klavišą" msgid "Sound Volume: " msgstr "Garso lygis: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Įvesti" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "lt" @@ -2202,8 +2231,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4853,7 +4882,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6220,17 +6249,17 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Toggle Cinematic" -#~ msgstr "Įjungti kinematografinį" - #, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Pasirinkite papildinio failą:" +#~ msgid "Enable VBO" +#~ msgstr "Įjungti papildinį" #, fuzzy #~ msgid "Enables filmic tone mapping" #~ msgstr "Leisti sužeidimus" #, fuzzy -#~ msgid "Enable VBO" -#~ msgstr "Įjungti papildinį" +#~ msgid "Select Package File:" +#~ msgstr "Pasirinkite papildinio failą:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Įjungti kinematografinį" diff --git a/po/minetest.pot b/po/minetest.pot index 8732b061c..7157641b0 100644 --- a/po/minetest.pot +++ b/po/minetest.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -342,14 +342,25 @@ msgstr "" msgid "Lacunarity" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" +#. ~ "absvalue" is a noise parameter flag. +#. It is short for "absolute value". +#. It can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" @@ -610,6 +621,7 @@ msgstr "" msgid "Damage enabled" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -858,6 +870,14 @@ msgstr "" msgid "Invalid gamespec." msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "" @@ -1181,6 +1201,7 @@ msgstr "" msgid "- Creative Mode: " msgstr "" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1268,6 +1289,7 @@ msgstr "" msgid "Control" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1316,10 +1338,12 @@ msgstr "" msgid "Down" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1678,10 +1702,15 @@ msgstr "" msgid "Muted" msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "" @@ -3105,13 +3134,13 @@ msgid "View distance in nodes." msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" diff --git a/po/ms/minetest.po b/po/ms/minetest.po index dbd9fd5b3..86b79c739 100644 --- a/po/ms/minetest.po +++ b/po/ms/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Malay (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-02-18 06:32+0000\n" "Last-Translator: Muhammad Nur Hidayat Yasuyoshi \n" "Language-Team: Malay "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "Nilai mutlak" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "lalai" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "tumpul" @@ -618,6 +629,7 @@ msgstr "Nama / Kata laluan" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "Boleh Berlawan PvP" @@ -863,6 +875,14 @@ msgstr "Fail kata laluan yang disediakan gagal dibuka: " msgid "Provided world path doesn't exist: " msgstr "Laluan dunia diberi tidak wujud: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -899,6 +919,7 @@ msgstr "- Port: " msgid "- Public: " msgstr "- Awam: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1351,6 +1372,7 @@ msgstr "Shift Kiri" msgid "Left Windows" msgstr "Windows Kiri" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menu" @@ -1443,6 +1465,7 @@ msgstr "Pause" msgid "Play" msgstr "Mula Main" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Cetak" @@ -1479,6 +1502,7 @@ msgstr "Windows Kanan" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Pilih kekunci" @@ -1720,10 +1744,15 @@ msgstr "Dibisukan" msgid "Sound Volume: " msgstr "Kekuatan Bunyi: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Masuk " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "ms" @@ -2155,9 +2184,10 @@ msgid "Bumpmapping" msgstr "Pemetaan timbul" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -3281,8 +3311,8 @@ msgstr "" "Cara pengendalian panggilan API Lua yang terkecam:\n" "- legacy: (cuba untuk) meniru tingkah laku yang lama (lalai untuk " "terbitan).\n" -"- log: meniru dan menulis log runut balik kesemua panggilan terkecam (" -"lalai untuk nyahpepijat).\n" +"- log: meniru dan menulis log runut balik kesemua panggilan terkecam " +"(lalai untuk nyahpepijat).\n" "- error: gugurkan penggunaan panggilan terkecam (dicadangkan untuk " "pembangun mods)." @@ -5285,7 +5315,8 @@ msgstr "" "senarai pelayan." #: src/settings_translation_file.cpp -msgid "Near clipping plane" +#, fuzzy +msgid "Near plane" msgstr "Satah dekat ketipan" #: src/settings_translation_file.cpp @@ -6924,95 +6955,43 @@ msgstr "Had cURL selari" msgid "cURL timeout" msgstr "Had masa cURL" -#~ msgid "Toggle Cinematic" -#~ msgstr "Togol Sinematik" - -#~ msgid "Select Package File:" -#~ msgstr "Pilih Fail Pakej:" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Had Y pengatas lava dalam gua besar." - -#~ msgid "Waving Water" -#~ msgstr "Air Bergelora" - -#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Sama ada kurungan bawah tanah kadang-kala terlunjur daripada rupa bumi." +#~ "Laraskan pengekodan gama untuk jadual cahaya. Nombor lebih tinggi lebih " +#~ "cerah.\n" +#~ "Tetapan ini hanya untuk klien dan diabaikan oleh pelayan permainan." -#~ msgid "Projecting dungeons" -#~ msgstr "Kurungan bawah tanah melunjur" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Aras Y di mana bayang tanah terapung diperluaskan." - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Aras Y untuk titik tengah tanah terapung dan permukaan tasik." - -#~ msgid "Waving water" -#~ msgstr "Air bergelora" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." #~ msgstr "" -#~ "Variasi ketinggian bukit dan kedalaman tasik rupa bumi lembut tanah " -#~ "terapung." +#~ "Ubah cara tanah terapung jenis gunung menirus di atas dan bawah titik " +#~ "tengah." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Titik tengah tolakan-tengah lengkung cahaya." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Ketinggian maksimum biasa, di atas dan bawah titik tengah, untuk gunung " -#~ "tanah terapung." +#~ "Mengawal ketumpatan rupa bumi tanah terapung bergunung.\n" +#~ "Nilainya ialah ofset yang menambah kepada nilai hingar 'mgv7_np_mountain'." -#~ msgid "This font will be used for certain languages." -#~ msgstr "Fon ini akan digunakan untuk sesetengah bahasa." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Mengawal lebar terowong, nilai lebih kecil mencipta terowong lebih lebar." -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Kekuatan tolakan tengah lengkung cahaya." +#~ msgid "Darkness sharpness" +#~ msgstr "Ketajaman kegelapan" -#~ msgid "Shadow limit" -#~ msgstr "Had bayang" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Laluan ke fon TrueType atau peta bit." - -#~ msgid "Lightness sharpness" -#~ msgstr "Ketajaman pencahayaan" - -#~ msgid "Lava depth" -#~ msgstr "Kedalaman lava" - -#~ msgid "IPv6 support." -#~ msgstr "Sokongan IPv6." - -#~ msgid "Gamma" -#~ msgstr "Gama" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Nilai alfa bayang fon (kelegapan, antara 0 dan 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Ketinggian gunung tanah terapung" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Eksponen gunung tanah terapung" - -#~ msgid "Floatland mountain density" -#~ msgstr "Ketumpatan gunung tanah terapung" - -#~ msgid "Floatland level" -#~ msgstr "Aras tanah terapung" - -#~ msgid "Floatland base noise" -#~ msgstr "Hingar asas tanah terapung" - -#~ msgid "Floatland base height noise" -#~ msgstr "Hingar ketinggian asas tanah terapung" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Membolehkan pemetaan tona sinematik" - -#~ msgid "Enable VBO" -#~ msgstr "Membolehkan VBO" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Mentakrifkan kawasan rupa bumi lembut tanah terapung.\n" +#~ "Tanag terapung lembut berlaku apabila hingar > 0." #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -7023,40 +7002,92 @@ msgstr "Had masa cURL" #~ "pentakrifan biom menggantikan cara asal.\n" #~ "Had Y atasan lava di gua-gua besar." -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Mentakrifkan kawasan rupa bumi lembut tanah terapung.\n" -#~ "Tanag terapung lembut berlaku apabila hingar > 0." +#~ msgid "Enable VBO" +#~ msgstr "Membolehkan VBO" -#~ msgid "Darkness sharpness" -#~ msgstr "Ketajaman kegelapan" +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Membolehkan pemetaan tona sinematik" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Mengawal lebar terowong, nilai lebih kecil mencipta terowong lebih lebar." +#~ msgid "Floatland base height noise" +#~ msgstr "Hingar ketinggian asas tanah terapung" + +#~ msgid "Floatland base noise" +#~ msgstr "Hingar asas tanah terapung" + +#~ msgid "Floatland level" +#~ msgstr "Aras tanah terapung" + +#~ msgid "Floatland mountain density" +#~ msgstr "Ketumpatan gunung tanah terapung" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "Eksponen gunung tanah terapung" + +#~ msgid "Floatland mountain height" +#~ msgstr "Ketinggian gunung tanah terapung" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Nilai alfa bayang fon (kelegapan, antara 0 dan 255)." + +#~ msgid "Gamma" +#~ msgstr "Gama" + +#~ msgid "IPv6 support." +#~ msgstr "Sokongan IPv6." + +#~ msgid "Lava depth" +#~ msgstr "Kedalaman lava" + +#~ msgid "Lightness sharpness" +#~ msgstr "Ketajaman pencahayaan" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Laluan ke fon TrueType atau peta bit." + +#~ msgid "Shadow limit" +#~ msgstr "Had bayang" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Kekuatan tolakan tengah lengkung cahaya." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Fon ini akan digunakan untuk sesetengah bahasa." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Mengawal ketumpatan rupa bumi tanah terapung bergunung.\n" -#~ "Nilainya ialah ofset yang menambah kepada nilai hingar 'mgv7_np_mountain'." +#~ "Ketinggian maksimum biasa, di atas dan bawah titik tengah, untuk gunung " +#~ "tanah terapung." -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Titik tengah tolakan-tengah lengkung cahaya." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." #~ msgstr "" -#~ "Ubah cara tanah terapung jenis gunung menirus di atas dan bawah titik " -#~ "tengah." +#~ "Variasi ketinggian bukit dan kedalaman tasik rupa bumi lembut tanah " +#~ "terapung." -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ msgid "Waving water" +#~ msgstr "Air bergelora" + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Aras Y untuk titik tengah tanah terapung dan permukaan tasik." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Aras Y di mana bayang tanah terapung diperluaskan." + +#~ msgid "Projecting dungeons" +#~ msgstr "Kurungan bawah tanah melunjur" + +#~ msgid "Whether dungeons occasionally project from the terrain." #~ msgstr "" -#~ "Laraskan pengekodan gama untuk jadual cahaya. Nombor lebih tinggi lebih " -#~ "cerah.\n" -#~ "Tetapan ini hanya untuk klien dan diabaikan oleh pelayan permainan." +#~ "Sama ada kurungan bawah tanah kadang-kala terlunjur daripada rupa bumi." + +#~ msgid "Waving Water" +#~ msgstr "Air Bergelora" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Had Y pengatas lava dalam gua besar." + +#~ msgid "Select Package File:" +#~ msgstr "Pilih Fail Pakej:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Togol Sinematik" diff --git a/po/my/minetest.po b/po/my/minetest.po index 242c9a5b4..ae8d1a720 100644 --- a/po/my/minetest.po +++ b/po/my/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Burmese (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Burmese "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -611,6 +622,7 @@ msgstr "" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -855,6 +867,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -889,6 +909,7 @@ msgstr "" msgid "- Public: " msgstr "" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1313,6 +1334,7 @@ msgstr "" msgid "Left Windows" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1405,6 +1427,7 @@ msgstr "" msgid "Play" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1441,6 +1464,7 @@ msgstr "" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "" @@ -1675,10 +1699,15 @@ msgstr "" msgid "Sound Volume: " msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "my" @@ -2052,8 +2081,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4658,7 +4687,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/nb/minetest.po b/po/nb/minetest.po index 9c2b14149..638afc5ff 100644 --- a/po/nb/minetest.po +++ b/po/nb/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Norwegian Bokmål (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: Liet Kynes \n" "Language-Team: Norwegian Bokmål "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "Absoluttverdi" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "Forvalg" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "myknet" @@ -618,6 +629,7 @@ msgstr "Navn / passord" msgid "Ping" msgstr "Latens" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "Alle mot alle er på" @@ -862,6 +874,14 @@ msgstr "Passordfilen kunne ikke åpnes: " msgid "Provided world path doesn't exist: " msgstr "Angitt sti til verdenen finnes ikke: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -898,6 +918,7 @@ msgstr "- Port: " msgid "- Public: " msgstr "- Offentlig: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- Alle mot alle (PvP): " @@ -1348,6 +1369,7 @@ msgstr "Venstre Shift" msgid "Left Windows" msgstr "Venstre Super" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Meny" @@ -1440,6 +1462,7 @@ msgstr "Pause" msgid "Play" msgstr "Spill" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Skriv ut" @@ -1476,6 +1499,7 @@ msgstr "Høyre Super" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Velg" @@ -1718,10 +1742,15 @@ msgstr "Av" msgid "Sound Volume: " msgstr "Lydstyrke: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Enter " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "nb" @@ -1849,7 +1878,8 @@ msgstr "3D-støytall som definerer terrenget." #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." -msgstr "3D-støytall for fjelloverheng, klipper o. l. Vanligvis små variasjoner." +msgstr "" +"3D-støytall for fjelloverheng, klipper o. l. Vanligvis små variasjoner." #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." @@ -1872,8 +1902,8 @@ msgstr "" "For øyeblikket støttes følgende alternativer:\n" "- none: Ingen 3D-utdata.\n" "- anaglyph: Cyan/magenta farge-3D.\n" -"- interlaced: Skjermstøtte for partall/oddetall-linjebasert polarisering." -"\n" +"- interlaced: Skjermstøtte for partall/oddetall-linjebasert " +"polarisering.\n" "- topbottom: Del skjermen i topp og bunn.\n" "- sidebyside: Del skjermen side om side.\n" "- crossview: Skjele-3d\n" @@ -2156,8 +2186,8 @@ msgstr "Teksturpåføring (bump mapping)" #: src/settings_translation_file.cpp #, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4206,8 +4236,8 @@ msgstr "" "Sniketast.\n" "Brukes også for å gå ned på stiger og i vann dersom aux1_descends ikke " "brukes.\n" -"See http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4975,7 +5005,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6362,20 +6392,20 @@ msgstr "Maksimal parallellisering i cURL" msgid "cURL timeout" msgstr "cURL-tidsgrense" -#~ msgid "Select Package File:" -#~ msgstr "Velg pakkefil:" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y-verdi for øvre grense for lava i store grotter." - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Hvilket Y-nivå som skyggen til luftøyer når." - -#~ msgid "IPv6 support." -#~ msgstr "IPv6-støtte." +#~ msgid "Enable VBO" +#~ msgstr "Aktiver VBO" #~ msgid "Enables filmic tone mapping" #~ msgstr "Aktiver filmatisk toneoversettelse" -#~ msgid "Enable VBO" -#~ msgstr "Aktiver VBO" +#~ msgid "IPv6 support." +#~ msgstr "IPv6-støtte." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Hvilket Y-nivå som skyggen til luftøyer når." + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y-verdi for øvre grense for lava i store grotter." + +#~ msgid "Select Package File:" +#~ msgstr "Velg pakkefil:" diff --git a/po/nl/minetest.po b/po/nl/minetest.po index d3fec167c..1828e58d4 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Dutch (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: Dutch "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "Standaard" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "makkelijker" @@ -639,6 +650,7 @@ msgstr "Naam / Wachtwoord" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "Spelergevechten aangeschakeld" @@ -888,6 +900,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "Het gespecificeerde wereld-pad bestaat niet: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp #, fuzzy msgid "needs_fallback_font" @@ -928,6 +948,7 @@ msgstr "- Poort: " msgid "- Public: " msgstr "- Publiek: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1402,6 +1423,7 @@ msgstr "Linker Shift" msgid "Left Windows" msgstr "Linker Windowstoets" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menu" @@ -1496,6 +1518,7 @@ msgstr "Pauze" msgid "Play" msgstr "Spelen" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Print" @@ -1532,6 +1555,7 @@ msgstr "Rechter Windowstoets" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Selecteren" @@ -1782,10 +1806,15 @@ msgstr "Dempen" msgid "Sound Volume: " msgstr "Geluidsvolume: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Enter " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "nl" @@ -2224,8 +2253,8 @@ msgstr "Bumpmapping" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5457,7 +5486,7 @@ msgstr "" "inloggen." #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -7025,112 +7054,6 @@ msgstr "Maximaal parallellisme in cURL" msgid "cURL timeout" msgstr "cURL timeout" -#~ msgid "Toggle Cinematic" -#~ msgstr "Cinematic modus aan/uit" - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Selecteer Modbestand:" - -#, fuzzy -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Minimale diepte van grote semi-willekeurige grotten." - -#~ msgid "Waving Water" -#~ msgstr "Golvend water" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Y-niveau tot waar de schaduw van drijvend land reikt." - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Y-niveau van drijvend land middelpunt en vijver oppervlak." - -#~ msgid "Waving water" -#~ msgstr "Golvend water" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "" -#~ "Variatie van de heuvel hoogte en vijver diepte op drijvend egaal terrein." - -#, fuzzy -#~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "" -#~ "Typisch maximum hoogte, boven en onder het middelpunt van drijvend berg " -#~ "terrein." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Dit font wordt gebruikt voor bepaalde talen." - -#~ msgid "Shadow limit" -#~ msgstr "Schaduw limiet" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Pad van TrueType font of bitmap." - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Diepte van grote grotten" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 ondersteuning." - -#, fuzzy -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Fontschaduw alphawaarde (ondoorzichtigheid, tussen 0 en 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Drijvend gebergte hoogte" - -#, fuzzy -#~ msgid "Floatland mountain exponent" -#~ msgstr "Drijvend gebergte dichtheid" - -#~ msgid "Floatland mountain density" -#~ msgstr "Drijvend gebergte dichtheid" - -#, fuzzy -#~ msgid "Floatland level" -#~ msgstr "Waterniveau" - -#~ msgid "Floatland base noise" -#~ msgstr "Drijvend land basis ruis" - -#~ msgid "Floatland base height noise" -#~ msgstr "Drijvend land basis hoogte ruis" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Schakelt filmisch tone-mapping in" - -#~ msgid "Enable VBO" -#~ msgstr "VBO aanzetten" - -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Bepaalt gebieden van drijvend glijdend terrein.\n" -#~ "Drijvend glijdend terrein ontstaat wanneer ruis > 0." - -#, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "Steilheid Van de meren" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Bepaalt breedte van tunnels, een kleinere waarde maakt bredere tunnels." - -#, fuzzy -#~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "Bepaalt de dichtheid van drijvende bergen.\n" -#~ "Dit wordt bijgevoegd bij de 'np_mountain' ruis waarde." - #, fuzzy #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " @@ -7140,3 +7063,109 @@ msgstr "cURL timeout" #~ "Aangepaste gamma voor de licht-tabellen. Lagere waardes zijn helderder.\n" #~ "Deze instelling wordt enkel gebruikt door de cliënt, en wordt genegeerd " #~ "door de server." + +#, fuzzy +#~ msgid "" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "Bepaalt de dichtheid van drijvende bergen.\n" +#~ "Dit wordt bijgevoegd bij de 'np_mountain' ruis waarde." + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Bepaalt breedte van tunnels, een kleinere waarde maakt bredere tunnels." + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "Steilheid Van de meren" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Bepaalt gebieden van drijvend glijdend terrein.\n" +#~ "Drijvend glijdend terrein ontstaat wanneer ruis > 0." + +#~ msgid "Enable VBO" +#~ msgstr "VBO aanzetten" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Schakelt filmisch tone-mapping in" + +#~ msgid "Floatland base height noise" +#~ msgstr "Drijvend land basis hoogte ruis" + +#~ msgid "Floatland base noise" +#~ msgstr "Drijvend land basis ruis" + +#, fuzzy +#~ msgid "Floatland level" +#~ msgstr "Waterniveau" + +#~ msgid "Floatland mountain density" +#~ msgstr "Drijvend gebergte dichtheid" + +#, fuzzy +#~ msgid "Floatland mountain exponent" +#~ msgstr "Drijvend gebergte dichtheid" + +#~ msgid "Floatland mountain height" +#~ msgstr "Drijvend gebergte hoogte" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Fontschaduw alphawaarde (ondoorzichtigheid, tussen 0 en 255)." + +#, fuzzy +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 ondersteuning." + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Diepte van grote grotten" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Pad van TrueType font of bitmap." + +#~ msgid "Shadow limit" +#~ msgstr "Schaduw limiet" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Dit font wordt gebruikt voor bepaalde talen." + +#, fuzzy +#~ msgid "" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "" +#~ "Typisch maximum hoogte, boven en onder het middelpunt van drijvend berg " +#~ "terrein." + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Variatie van de heuvel hoogte en vijver diepte op drijvend egaal terrein." + +#~ msgid "Waving water" +#~ msgstr "Golvend water" + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Y-niveau van drijvend land middelpunt en vijver oppervlak." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Y-niveau tot waar de schaduw van drijvend land reikt." + +#~ msgid "Waving Water" +#~ msgstr "Golvend water" + +#, fuzzy +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Minimale diepte van grote semi-willekeurige grotten." + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Selecteer Modbestand:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Cinematic modus aan/uit" diff --git a/po/nn/minetest.po b/po/nn/minetest.po index b6bc835f5..f2894f74d 100644 --- a/po/nn/minetest.po +++ b/po/nn/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Norwegian Nynorsk (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: sfan5 \n" "Language-Team: Norwegian Nynorsk "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "Absolutt verdi" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "Standard" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "letta" @@ -625,6 +636,7 @@ msgstr "Namn/Passord" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "Spelar mot spelar aktivert" @@ -870,6 +882,14 @@ msgstr "Passord dokumentet du ga går ikkje an å åpne: " msgid "Provided world path doesn't exist: " msgstr "Verds-ruta du ga finnes ikkje: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -906,6 +926,7 @@ msgstr "- Port: " msgid "- Public: " msgstr "- Offentleg: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- Spelar mot spelar (PvP): " @@ -1357,6 +1378,7 @@ msgstr "Venstre skift" msgid "Left Windows" msgstr "Venstre, meta knapp" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Meny" @@ -1449,6 +1471,7 @@ msgstr "Pause" msgid "Play" msgstr "Spel" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Skriv ut" @@ -1485,6 +1508,7 @@ msgstr "Høgre, meta knapp" msgid "Scroll Lock" msgstr "Skrolle feste" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Velj" @@ -1727,10 +1751,15 @@ msgstr "Målbindt" msgid "Sound Volume: " msgstr "Lydstyrke: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Gå " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "nn-NO" @@ -2104,8 +2133,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4710,7 +4739,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6059,8 +6088,8 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Toggle Cinematic" -#~ msgstr "Slå på/av kameramodus" - #~ msgid "Select Package File:" #~ msgstr "Velje eit pakke dokument:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Slå på/av kameramodus" diff --git a/po/pl/minetest.po b/po/pl/minetest.po index c7eb20fab..4448fa404 100644 --- a/po/pl/minetest.po +++ b/po/pl/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Polish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: sfan5 \n" "Language-Team: Polish "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "wartość bezwzględna" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "domyślne" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "wygładzony" @@ -624,6 +635,7 @@ msgstr "Nazwa gracza / Hasło" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP włączone" @@ -869,6 +881,14 @@ msgstr "Nie udało się otworzyć dostarczonego pliku z hasłem " msgid "Provided world path doesn't exist: " msgstr "Podana ścieżka świata nie istnieje: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -905,6 +925,7 @@ msgstr "- Port: " msgid "- Public: " msgstr "- Publiczne: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "Gracz przeciwko graczowi: " @@ -1355,6 +1376,7 @@ msgstr "Lewy Shift" msgid "Left Windows" msgstr "Lewy Windows" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menu" @@ -1447,6 +1469,7 @@ msgstr "Pause" msgid "Play" msgstr "Graj" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Drukuj" @@ -1483,6 +1506,7 @@ msgstr "Prawy Windows" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Wybierz" @@ -1724,10 +1748,15 @@ msgstr "Wyciszony" msgid "Sound Volume: " msgstr "Głośność: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Enter " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "pl" @@ -2174,8 +2203,8 @@ msgstr "Mapowanie wypukłości" #: src/settings_translation_file.cpp #, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5382,7 +5411,7 @@ msgstr "" #: src/settings_translation_file.cpp #, fuzzy -msgid "Near clipping plane" +msgid "Near plane" msgstr "Najbliższy wymiar" #: src/settings_translation_file.cpp @@ -6950,127 +6979,6 @@ msgstr "Limit równoległy cURL" msgid "cURL timeout" msgstr "Limit czasu cURL" -#~ msgid "Toggle Cinematic" -#~ msgstr "Przełącz na tryb Cinematic" - -#~ msgid "Select Package File:" -#~ msgstr "Wybierz plik paczki:" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y górnej granicy lawy dużych jaskiń." - -#~ msgid "Waving Water" -#~ msgstr "Falująca woda" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Określa czy lochy mają być czasem przez generowane teren." - -#~ msgid "Projecting dungeons" -#~ msgstr "Projekcja lochów" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Wysokość do której rozciągają się cienie wznoszącego terenu." - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "" -#~ "Wysokość średniego punktu wznoszącego się terenu oraz powierzchni jezior." - -#~ msgid "Waving water" -#~ msgstr "Falująca woda" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "" -#~ "Zmienność wysokości wzgórz oraz głębokości jezior na gładkim terenie " -#~ "wznoszącym się." - -#~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "" -#~ "Maksymalna, standardowa wysokość, powyżej lub poniżej średniego punktu " -#~ "górzystego terenu." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Ta czcionka zostanie użyta w niektórych językach." - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Siłą przyśpieszenia środkowego krzywej światła." - -#~ msgid "Shadow limit" -#~ msgstr "Limit cieni" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Ścieżka do pliku .ttf lub bitmapy." - -#~ msgid "Lightness sharpness" -#~ msgstr "Ostrość naświetlenia" - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Głębia dużej jaskini" - -#~ msgid "IPv6 support." -#~ msgstr "Wsparcie IPv6." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Kanał alfa cienia czcionki (nieprzeźroczystość, od 0 do 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Wysokość gór latających wysp" - -#, fuzzy -#~ msgid "Floatland mountain exponent" -#~ msgstr "Gęstość gór na latających wyspach" - -#~ msgid "Floatland mountain density" -#~ msgstr "Gęstość gór na latających wyspach" - -#~ msgid "Floatland level" -#~ msgstr "Poziom wznoszonego terenu" - -#~ msgid "Floatland base noise" -#~ msgstr "Podstawowy szum wznoszącego się terenu" - -#~ msgid "Floatland base height noise" -#~ msgstr "Podstawowy szum wysokości wznoszącego się terenu" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Włącz filmic tone mapping" - -#~ msgid "Enable VBO" -#~ msgstr "Włącz VBO" - -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Określa obszary wznoszącego się gładkiego terenu.\n" -#~ "Wygładzone powierzchnie pojawiają się gdy szum > 0." - -#~ msgid "Darkness sharpness" -#~ msgstr "Ostrość ciemności" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Kontroluje szerokość tuneli, mniejsze wartości tworzą szersze tunele." - -#~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "Kontroluje gęstość wznoszącego się terenu górzystego.\n" -#~ "Jest to wartość dodana do wartość szumu 'np_mountain'." - -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Centrum przyśpieszenia środkowego krzywej światła." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Zmienia sposób w jaki podobne do gór latające wyspy zwężają się ku " -#~ "środkowi nad i pod punktem środkowym." - #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " #~ "brighter.\n" @@ -7079,3 +6987,124 @@ msgstr "Limit czasu cURL" #~ "Ustaw kodowanie gamma dla tablic świateł. Wyższe wartości to większa " #~ "jasność.\n" #~ "To ustawienie jest tylko dla klientów, ignorowane przez serwer." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "" +#~ "Zmienia sposób w jaki podobne do gór latające wyspy zwężają się ku " +#~ "środkowi nad i pod punktem środkowym." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Centrum przyśpieszenia środkowego krzywej światła." + +#~ msgid "" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "Kontroluje gęstość wznoszącego się terenu górzystego.\n" +#~ "Jest to wartość dodana do wartość szumu 'np_mountain'." + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Kontroluje szerokość tuneli, mniejsze wartości tworzą szersze tunele." + +#~ msgid "Darkness sharpness" +#~ msgstr "Ostrość ciemności" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Określa obszary wznoszącego się gładkiego terenu.\n" +#~ "Wygładzone powierzchnie pojawiają się gdy szum > 0." + +#~ msgid "Enable VBO" +#~ msgstr "Włącz VBO" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Włącz filmic tone mapping" + +#~ msgid "Floatland base height noise" +#~ msgstr "Podstawowy szum wysokości wznoszącego się terenu" + +#~ msgid "Floatland base noise" +#~ msgstr "Podstawowy szum wznoszącego się terenu" + +#~ msgid "Floatland level" +#~ msgstr "Poziom wznoszonego terenu" + +#~ msgid "Floatland mountain density" +#~ msgstr "Gęstość gór na latających wyspach" + +#, fuzzy +#~ msgid "Floatland mountain exponent" +#~ msgstr "Gęstość gór na latających wyspach" + +#~ msgid "Floatland mountain height" +#~ msgstr "Wysokość gór latających wysp" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Kanał alfa cienia czcionki (nieprzeźroczystość, od 0 do 255)." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "IPv6 support." +#~ msgstr "Wsparcie IPv6." + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Głębia dużej jaskini" + +#~ msgid "Lightness sharpness" +#~ msgstr "Ostrość naświetlenia" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Ścieżka do pliku .ttf lub bitmapy." + +#~ msgid "Shadow limit" +#~ msgstr "Limit cieni" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Siłą przyśpieszenia środkowego krzywej światła." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Ta czcionka zostanie użyta w niektórych językach." + +#~ msgid "" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "" +#~ "Maksymalna, standardowa wysokość, powyżej lub poniżej średniego punktu " +#~ "górzystego terenu." + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Zmienność wysokości wzgórz oraz głębokości jezior na gładkim terenie " +#~ "wznoszącym się." + +#~ msgid "Waving water" +#~ msgstr "Falująca woda" + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "" +#~ "Wysokość średniego punktu wznoszącego się terenu oraz powierzchni jezior." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Wysokość do której rozciągają się cienie wznoszącego terenu." + +#~ msgid "Projecting dungeons" +#~ msgstr "Projekcja lochów" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Określa czy lochy mają być czasem przez generowane teren." + +#~ msgid "Waving Water" +#~ msgstr "Falująca woda" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y górnej granicy lawy dużych jaskiń." + +#~ msgid "Select Package File:" +#~ msgstr "Wybierz plik paczki:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Przełącz na tryb Cinematic" diff --git a/po/pt/minetest.po b/po/pt/minetest.po index 80739054a..69f0e9912 100644 --- a/po/pt/minetest.po +++ b/po/pt/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Portuguese (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: ssantos \n" "Language-Team: Portuguese "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "valor absoluto" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "Padrões" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "amenizado" @@ -621,6 +632,7 @@ msgstr "Nome / Palavra-passe" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP ativado" @@ -865,6 +877,14 @@ msgstr "Ficheiro de palavra-passe fornecido falhou em abrir : " msgid "Provided world path doesn't exist: " msgstr "O caminho fornecido do mundo não existe: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -901,6 +921,7 @@ msgstr "-Porta: " msgid "- Public: " msgstr "- Público: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1364,6 +1385,7 @@ msgstr "Shift Esquerdo" msgid "Left Windows" msgstr "Tecla WINDOWS esquerda" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menu" @@ -1456,6 +1478,7 @@ msgstr "Pausa" msgid "Play" msgstr "Jogar" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Tecla Print Screen" @@ -1492,6 +1515,7 @@ msgstr "Tecla WINDOWS direita" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Seleccionar" @@ -1732,10 +1756,15 @@ msgstr "Mutado" msgid "Sound Volume: " msgstr "Volume do som: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Enter " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "pt" @@ -2171,9 +2200,10 @@ msgid "Bumpmapping" msgstr "Bump mapping" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5301,7 +5331,8 @@ msgstr "" "servidores." #: src/settings_translation_file.cpp -msgid "Near clipping plane" +#, fuzzy +msgid "Near plane" msgstr "Plano de corte próximo" #: src/settings_translation_file.cpp @@ -6906,95 +6937,42 @@ msgstr "limite paralelo de cURL" msgid "cURL timeout" msgstr "Tempo limite de cURL" -#~ msgid "Toggle Cinematic" -#~ msgstr "Ativar/Desativar câmera cinemática" - -#~ msgid "Select Package File:" -#~ msgstr "Selecionar o ficheiro do pacote:" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Limite Y máximo de lava em grandes cavernas." - -#~ msgid "Waving Water" -#~ msgstr "Água ondulante" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Se dungeons ocasionalmente se projetam do terreno." - -#~ msgid "Projecting dungeons" -#~ msgstr "Projetando dungeons" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Nível Y para o qual as sombras de ilhas flutuantes se estendem." - -#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Nível em Y do ponto médio da montanha flutuante e da superfície do lago." +#~ "Ajustar a gama de codificação para a tabela de claridade. Os números mais " +#~ "elevados são mais brilhantes.\n" +#~ "Esta configuração é somente para o cliente e é ignorada pelo servidor." -#~ msgid "Waving water" -#~ msgstr "Balançar das Ondas" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." #~ msgstr "" -#~ "Variação da altura da colina e profundidade do lago no terreno liso da " -#~ "Terra Flutuante." +#~ "Altera como terras flutuantes montanhosas afunilam acima e abaixo do " +#~ "ponto médio." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Centro do aumento da curva de luz." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Altura máxima típica, acima e abaixo do ponto médio, do terreno da " -#~ "montanha flutuante." +#~ "Controla a densidade do terreno montanhoso nas ilhas flutuantes.\n" +#~ "É um parâmetro adicionado ao valor de ruído 'mgv7_np_mountain'." -#~ msgid "This font will be used for certain languages." -#~ msgstr "Esta fonte será usada para determinados idiomas." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "Controla a largura dos túneis, um valor menor cria túneis maiores." -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Força do aumento médio da curva de luz." +#~ msgid "Darkness sharpness" +#~ msgstr "Nitidez da escuridão" -#~ msgid "Shadow limit" -#~ msgstr "Limite de mapblock" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Caminho para TrueTypeFont ou bitmap." - -#~ msgid "Lightness sharpness" -#~ msgstr "Nitidez da iluminação" - -#~ msgid "Lava depth" -#~ msgstr "Profundidade da lava" - -#~ msgid "IPv6 support." -#~ msgstr "Suporte IPv6." - -#~ msgid "Gamma" -#~ msgstr "Gama" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Opacidade da sombra da fonte (entre 0 e 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Altura da terra flutuante montanhosa" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Expoente de terras flutuantes montanhosas" - -#~ msgid "Floatland mountain density" -#~ msgstr "Densidade da terra flutuante montanhosa" - -#~ msgid "Floatland level" -#~ msgstr "Nível de água" - -#~ msgid "Floatland base noise" -#~ msgstr "Ruído base de terra flutuante" - -#~ msgid "Floatland base height noise" -#~ msgstr "Altura base de ruído de terra flutuante" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Ativa mapeamento de tons fílmico" - -#~ msgid "Enable VBO" -#~ msgstr "Ativar VBO" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Define áreas de terra flutuante em terreno suavizado.\n" +#~ "Terrenos suavizados ocorrem quando o ruído é menor que zero." #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -7005,39 +6983,92 @@ msgstr "Tempo limite de cURL" #~ "biomas.\n" #~ "Y do limite superior de lava em grandes cavernas." -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Define áreas de terra flutuante em terreno suavizado.\n" -#~ "Terrenos suavizados ocorrem quando o ruído é menor que zero." +#~ msgid "Enable VBO" +#~ msgstr "Ativar VBO" -#~ msgid "Darkness sharpness" -#~ msgstr "Nitidez da escuridão" +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Ativa mapeamento de tons fílmico" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "Controla a largura dos túneis, um valor menor cria túneis maiores." +#~ msgid "Floatland base height noise" +#~ msgstr "Altura base de ruído de terra flutuante" + +#~ msgid "Floatland base noise" +#~ msgstr "Ruído base de terra flutuante" + +#~ msgid "Floatland level" +#~ msgstr "Nível de água" + +#~ msgid "Floatland mountain density" +#~ msgstr "Densidade da terra flutuante montanhosa" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "Expoente de terras flutuantes montanhosas" + +#~ msgid "Floatland mountain height" +#~ msgstr "Altura da terra flutuante montanhosa" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Opacidade da sombra da fonte (entre 0 e 255)." + +#~ msgid "Gamma" +#~ msgstr "Gama" + +#~ msgid "IPv6 support." +#~ msgstr "Suporte IPv6." + +#~ msgid "Lava depth" +#~ msgstr "Profundidade da lava" + +#~ msgid "Lightness sharpness" +#~ msgstr "Nitidez da iluminação" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Caminho para TrueTypeFont ou bitmap." + +#~ msgid "Shadow limit" +#~ msgstr "Limite de mapblock" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Força do aumento médio da curva de luz." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Esta fonte será usada para determinados idiomas." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Controla a densidade do terreno montanhoso nas ilhas flutuantes.\n" -#~ "É um parâmetro adicionado ao valor de ruído 'mgv7_np_mountain'." +#~ "Altura máxima típica, acima e abaixo do ponto médio, do terreno da " +#~ "montanha flutuante." -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Centro do aumento da curva de luz." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." #~ msgstr "" -#~ "Altera como terras flutuantes montanhosas afunilam acima e abaixo do " -#~ "ponto médio." +#~ "Variação da altura da colina e profundidade do lago no terreno liso da " +#~ "Terra Flutuante." -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ msgid "Waving water" +#~ msgstr "Balançar das Ondas" + +#~ msgid "Y-level of floatland midpoint and lake surface." #~ msgstr "" -#~ "Ajustar a gama de codificação para a tabela de claridade. Os números mais " -#~ "elevados são mais brilhantes.\n" -#~ "Esta configuração é somente para o cliente e é ignorada pelo servidor." +#~ "Nível em Y do ponto médio da montanha flutuante e da superfície do lago." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Nível Y para o qual as sombras de ilhas flutuantes se estendem." + +#~ msgid "Projecting dungeons" +#~ msgstr "Projetando dungeons" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Se dungeons ocasionalmente se projetam do terreno." + +#~ msgid "Waving Water" +#~ msgstr "Água ondulante" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Limite Y máximo de lava em grandes cavernas." + +#~ msgid "Select Package File:" +#~ msgstr "Selecionar o ficheiro do pacote:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Ativar/Desativar câmera cinemática" diff --git a/po/pt_BR/minetest.po b/po/pt_BR/minetest.po index 384cfec25..460c51886 100644 --- a/po/pt_BR/minetest.po +++ b/po/pt_BR/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Portuguese (Brazil) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2019-12-11 13:36+0000\n" "Last-Translator: ramon.venson \n" "Language-Team: Portuguese (Brazil) "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "valor absoluto" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "Padrões" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "amenizado" @@ -623,6 +634,7 @@ msgstr "Nome / Senha" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP habilitado" @@ -869,6 +881,14 @@ msgstr "Arquivo de senha fornecido falhou em abrir : " msgid "Provided world path doesn't exist: " msgstr "O caminho do mundo providenciado não existe. " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -905,6 +925,7 @@ msgstr "-Porta: " msgid "- Public: " msgstr "- Público: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1368,6 +1389,7 @@ msgstr "Shift esquerdo" msgid "Left Windows" msgstr "Windows esquerdo" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menu" @@ -1460,6 +1482,7 @@ msgstr "Pausar" msgid "Play" msgstr "Jogar" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Print Screen" @@ -1496,6 +1519,7 @@ msgstr "Windows direito" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Tecla Select" @@ -1738,10 +1762,15 @@ msgstr "Mutado" msgid "Sound Volume: " msgstr "Volume do som: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Entrar " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "pt_BR" @@ -2181,8 +2210,8 @@ msgstr "Bump mapping" #: src/settings_translation_file.cpp #, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5283,7 +5312,7 @@ msgstr "" #: src/settings_translation_file.cpp #, fuzzy -msgid "Near clipping plane" +msgid "Near plane" msgstr "plano próximo" #: src/settings_translation_file.cpp @@ -6888,125 +6917,6 @@ msgstr "limite paralelo de cURL" msgid "cURL timeout" msgstr "Tempo limite de cURL" -#~ msgid "Toggle Cinematic" -#~ msgstr "Alternar modo de câmera cinemática" - -#~ msgid "Select Package File:" -#~ msgstr "Selecionar o arquivo do pacote:" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Limite Y máximo de lava em grandes cavernas." - -#~ msgid "Waving Water" -#~ msgstr "Ondas na água" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Se dungeons ocasionalmente se projetam do terreno." - -#~ msgid "Projecting dungeons" -#~ msgstr "Projetando dungeons" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Nível Y para o qual as sombras de ilhas flutuantes se estendem." - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "" -#~ "Nível em Y do ponto médio da montanha flutuante e da superfície do lago." - -#~ msgid "Waving water" -#~ msgstr "Balanço da água" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "" -#~ "Variação da altura da colina e profundidade do lago no terreno liso da " -#~ "Terra Flutuante." - -#~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "" -#~ "Altura máxima típica, acima e abaixo do ponto médio, do terreno da " -#~ "montanha flutuante." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Esta fonte será usada para determinados idiomas." - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Força do aumento médio da curva de luz." - -#~ msgid "Shadow limit" -#~ msgstr "Limite de mapblock" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Caminho para TrueTypeFont ou bitmap." - -#~ msgid "Lightness sharpness" -#~ msgstr "Nitidez da iluminação" - -#~ msgid "Lava depth" -#~ msgstr "Profundidade da lava" - -#~ msgid "IPv6 support." -#~ msgstr "Suporte a IPv6." - -#~ msgid "Gamma" -#~ msgstr "Gama" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Fonte alpha de sombra (opacidade, entre 0 e 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Altura da Ilha Flutuante montanhosa" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Expoente de terras flutuantes montanhosas" - -#~ msgid "Floatland mountain density" -#~ msgstr "Densidade da Ilha Flutuante montanhosa" - -#~ msgid "Floatland level" -#~ msgstr "Nível de água" - -#~ msgid "Floatland base noise" -#~ msgstr "Ruído base de Ilha Flutuante" - -#~ msgid "Floatland base height noise" -#~ msgstr "Altura base de ruído de Ilha Flutuante" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Habilitar efeito \"filmic tone mapping\"" - -#~ msgid "Enable VBO" -#~ msgstr "Habilitar VBO" - -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Define áreas de Ilha Flutuante em terreno suavizado.\n" -#~ "Terrenos suavizados ocorrem quando o ruído é menor que zero." - -#~ msgid "Darkness sharpness" -#~ msgstr "Nitidez da escuridão" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Controla a largura dos túneis, um valor menor cria túneis mais largos." - -#~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "Controla a densidade do terreno montanhoso nas ilhas flutuantes.\n" -#~ "É um parâmetro adicionado ao valor de ruído 'mgv7_np_mountain'." - -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Centro do aumento da curva de luz." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Altera como terras flutuantes montanhosas afunilam acima e abaixo do " -#~ "ponto médio." - #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " #~ "brighter.\n" @@ -7015,3 +6925,122 @@ msgstr "Tempo limite de cURL" #~ "Ajustar a gama de codificação para a tabela de claridade. Os números mais " #~ "elevados são mais brilhantes.\n" #~ "Esta configuração é somente para o cliente e é ignorada pelo servidor." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "" +#~ "Altera como terras flutuantes montanhosas afunilam acima e abaixo do " +#~ "ponto médio." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Centro do aumento da curva de luz." + +#~ msgid "" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "Controla a densidade do terreno montanhoso nas ilhas flutuantes.\n" +#~ "É um parâmetro adicionado ao valor de ruído 'mgv7_np_mountain'." + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Controla a largura dos túneis, um valor menor cria túneis mais largos." + +#~ msgid "Darkness sharpness" +#~ msgstr "Nitidez da escuridão" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Define áreas de Ilha Flutuante em terreno suavizado.\n" +#~ "Terrenos suavizados ocorrem quando o ruído é menor que zero." + +#~ msgid "Enable VBO" +#~ msgstr "Habilitar VBO" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Habilitar efeito \"filmic tone mapping\"" + +#~ msgid "Floatland base height noise" +#~ msgstr "Altura base de ruído de Ilha Flutuante" + +#~ msgid "Floatland base noise" +#~ msgstr "Ruído base de Ilha Flutuante" + +#~ msgid "Floatland level" +#~ msgstr "Nível de água" + +#~ msgid "Floatland mountain density" +#~ msgstr "Densidade da Ilha Flutuante montanhosa" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "Expoente de terras flutuantes montanhosas" + +#~ msgid "Floatland mountain height" +#~ msgstr "Altura da Ilha Flutuante montanhosa" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Fonte alpha de sombra (opacidade, entre 0 e 255)." + +#~ msgid "Gamma" +#~ msgstr "Gama" + +#~ msgid "IPv6 support." +#~ msgstr "Suporte a IPv6." + +#~ msgid "Lava depth" +#~ msgstr "Profundidade da lava" + +#~ msgid "Lightness sharpness" +#~ msgstr "Nitidez da iluminação" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Caminho para TrueTypeFont ou bitmap." + +#~ msgid "Shadow limit" +#~ msgstr "Limite de mapblock" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Força do aumento médio da curva de luz." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Esta fonte será usada para determinados idiomas." + +#~ msgid "" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "" +#~ "Altura máxima típica, acima e abaixo do ponto médio, do terreno da " +#~ "montanha flutuante." + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Variação da altura da colina e profundidade do lago no terreno liso da " +#~ "Terra Flutuante." + +#~ msgid "Waving water" +#~ msgstr "Balanço da água" + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "" +#~ "Nível em Y do ponto médio da montanha flutuante e da superfície do lago." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Nível Y para o qual as sombras de ilhas flutuantes se estendem." + +#~ msgid "Projecting dungeons" +#~ msgstr "Projetando dungeons" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Se dungeons ocasionalmente se projetam do terreno." + +#~ msgid "Waving Water" +#~ msgstr "Ondas na água" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Limite Y máximo de lava em grandes cavernas." + +#~ msgid "Select Package File:" +#~ msgstr "Selecionar o arquivo do pacote:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Alternar modo de câmera cinemática" diff --git a/po/ro/minetest.po b/po/ro/minetest.po index 1ce08ce4a..b3b4fd273 100644 --- a/po/ro/minetest.po +++ b/po/ro/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Romanian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-14 10:32+0000\n" "Last-Translator: Gmail a - 2 - a Boxa \n" "Language-Team: Romanian "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "implicite" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "uşura" @@ -655,6 +667,7 @@ msgstr "Nume / Parolă" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP activat" @@ -915,6 +928,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -955,6 +976,7 @@ msgstr "" msgid "- Public: " msgstr "Public" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1415,6 +1437,7 @@ msgstr "Shift Stânga" msgid "Left Windows" msgstr "Windows Stânga" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Meniu" @@ -1508,6 +1531,7 @@ msgstr "Pauză" msgid "Play" msgstr "Joacă" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Print" @@ -1544,6 +1568,7 @@ msgstr "Windows Dreapta" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Selectează" @@ -1792,10 +1817,15 @@ msgstr "apasă o tastă" msgid "Sound Volume: " msgstr "Volum sunet: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "ro" @@ -2177,8 +2207,8 @@ msgstr "Mip Mapping" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4846,7 +4876,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6223,21 +6253,21 @@ msgid "cURL timeout" msgstr "" #, fuzzy -#~ msgid "Toggle Cinematic" -#~ msgstr "Intră pe rapid" - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Selectează Fișierul Modului:" - -#, fuzzy -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Activează Daune" +#~ msgid "Darkness sharpness" +#~ msgstr "Mapgen" #, fuzzy #~ msgid "Enable VBO" #~ msgstr "Activează MP" #, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "Mapgen" +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Activează Daune" + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Selectează Fișierul Modului:" + +#, fuzzy +#~ msgid "Toggle Cinematic" +#~ msgstr "Intră pe rapid" diff --git a/po/ru/minetest.po b/po/ru/minetest.po index bcb767e0b..e89a8ebe1 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Russian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-04-02 14:09+0000\n" "Last-Translator: Tiller Luna \n" "Language-Team: Russian =2 && n%10<=" -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\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 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp @@ -407,14 +407,25 @@ msgstr "Z" msgid "Z spread" msgstr "Разброс по Z" +#. ~ "absvalue" is a noise parameter flag. +#. It is short for "absolute value". +#. It can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "абсолютная величина" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "стандартные" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "облегчённый" @@ -630,6 +641,7 @@ msgstr "Имя / Пароль" msgid "Ping" msgstr "Пинг" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP разрешён" @@ -874,6 +886,14 @@ msgstr "Не удалось открыть указанный файл с пар msgid "Provided world path doesn't exist: " msgstr "По этому пути мира нет: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -910,6 +930,7 @@ msgstr "- Порт: " msgid "- Public: " msgstr "- Публичность: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1361,6 +1382,7 @@ msgstr "Левый Shift" msgid "Left Windows" msgstr "Левый Win" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menu" @@ -1453,6 +1475,7 @@ msgstr "Пауза" msgid "Play" msgstr "Играть" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Print" @@ -1489,6 +1512,7 @@ msgstr "Правый Win" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Выбор" @@ -1731,10 +1755,15 @@ msgstr "Заглушить" msgid "Sound Volume: " msgstr "Громкость звука: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Введите " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "ru" @@ -2167,9 +2196,10 @@ msgid "Bumpmapping" msgstr "Бампмаппинг" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5259,7 +5289,8 @@ msgid "" msgstr "Имя сервера, отображаемое при входе и в списке серверов." #: src/settings_translation_file.cpp -msgid "Near clipping plane" +#, fuzzy +msgid "Near plane" msgstr "Близкая плоскость отсечения" #: src/settings_translation_file.cpp @@ -6865,92 +6896,42 @@ msgstr "Лимит одновременных соединений cURL" msgid "cURL timeout" msgstr "cURL тайм-аут" -#~ msgid "Toggle Cinematic" -#~ msgstr "Кино" - -#~ msgid "Select Package File:" -#~ msgstr "Выберите файл дополнения:" - -#, fuzzy -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Верхний предел по Y для больших псевдослучайных пещер." - -#~ msgid "Waving Water" -#~ msgstr "Волны на воде" - -#~ msgid "Projecting dungeons" -#~ msgstr "Проступающие подземелья" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Y-уровень, на который распространяются тени с плавающей точкой." - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Y-уровень середины поплавка и поверхности озера." - -#~ msgid "Waving water" -#~ msgstr "Волны на воде" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Вариация высоты холмов и глубин озёр на гладкой местности парящих " -#~ "островов." +#~ "Регулирует гамма-кодировку таблиц освещения. Более высокие значения " +#~ "ярче.\n" +#~ "Этот параметр предназначен только для клиента и игнорируется сервером." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "Управляет сужением островов горного типа ниже средней точки." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Центр среднего подъёма кривой света." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Типичная максимальная высота, выше и ниже средней точки гор парящих " -#~ "островов." +#~ "Контролирует плотность горной местности парящих островов.\n" +#~ "Является смещением, добавляемым к значению шума 'mgv7_np_mountain'." -#~ msgid "This font will be used for certain languages." -#~ msgstr "Этот шрифт будет использован для некоторых языков." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Контролирует ширину тоннелей. Меньшие значения создают более широкие " +#~ "тоннели." -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Сила среднего подъёма кривой света." +#~ msgid "Darkness sharpness" +#~ msgstr "Резкость темноты" -#~ msgid "Shadow limit" -#~ msgstr "Лимит теней" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Путь к шрифту TrueType или картинке со шрифтом." - -#~ msgid "Lightness sharpness" -#~ msgstr "Резкость освещённости" - -#~ msgid "Lava depth" -#~ msgstr "Глубина лавы" - -#~ msgid "IPv6 support." -#~ msgstr "Поддержка IPv6." - -#~ msgid "Gamma" -#~ msgstr "Гамма" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Прозрачность тени шрифта (непрозрачность от 0 до 255)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Высота гор на парящих островах" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Экспонента гор на парящих островах" - -#~ msgid "Floatland mountain density" -#~ msgstr "Плотность гор на парящих островах" - -#~ msgid "Floatland level" -#~ msgstr "Уровень парящих островов" - -#~ msgid "Floatland base noise" -#~ msgstr "Базовый шум парящих островов" - -#~ msgid "Floatland base height noise" -#~ msgstr "Шум базовой высоты парящих островов" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Включить кинематографическое тональное отображение" - -#~ msgid "Enable VBO" -#~ msgstr "Включить объекты буфера вершин (VBO)" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Определяет области гладкой поверхности на парящих островах.\n" +#~ "Гладкие парящие острова появляются, когда шум больше ноля." #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -6961,39 +6942,89 @@ msgstr "cURL тайм-аут" #~ "определений биома.\n" #~ "Y верхней границы лавы в больших пещерах." -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Определяет области гладкой поверхности на парящих островах.\n" -#~ "Гладкие парящие острова появляются, когда шум больше ноля." +#~ msgid "Enable VBO" +#~ msgstr "Включить объекты буфера вершин (VBO)" -#~ msgid "Darkness sharpness" -#~ msgstr "Резкость темноты" +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Включить кинематографическое тональное отображение" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Контролирует ширину тоннелей. Меньшие значения создают более широкие " -#~ "тоннели." +#~ msgid "Floatland base height noise" +#~ msgstr "Шум базовой высоты парящих островов" + +#~ msgid "Floatland base noise" +#~ msgstr "Базовый шум парящих островов" + +#~ msgid "Floatland level" +#~ msgstr "Уровень парящих островов" + +#~ msgid "Floatland mountain density" +#~ msgstr "Плотность гор на парящих островах" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "Экспонента гор на парящих островах" + +#~ msgid "Floatland mountain height" +#~ msgstr "Высота гор на парящих островах" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Прозрачность тени шрифта (непрозрачность от 0 до 255)." + +#~ msgid "Gamma" +#~ msgstr "Гамма" + +#~ msgid "IPv6 support." +#~ msgstr "Поддержка IPv6." + +#~ msgid "Lava depth" +#~ msgstr "Глубина лавы" + +#~ msgid "Lightness sharpness" +#~ msgstr "Резкость освещённости" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Путь к шрифту TrueType или картинке со шрифтом." + +#~ msgid "Shadow limit" +#~ msgstr "Лимит теней" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Сила среднего подъёма кривой света." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Этот шрифт будет использован для некоторых языков." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Контролирует плотность горной местности парящих островов.\n" -#~ "Является смещением, добавляемым к значению шума 'mgv7_np_mountain'." +#~ "Типичная максимальная высота, выше и ниже средней точки гор парящих " +#~ "островов." -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Центр среднего подъёма кривой света." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "Управляет сужением островов горного типа ниже средней точки." - -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." #~ msgstr "" -#~ "Регулирует гамма-кодировку таблиц освещения. Более высокие значения " -#~ "ярче.\n" -#~ "Этот параметр предназначен только для клиента и игнорируется сервером." +#~ "Вариация высоты холмов и глубин озёр на гладкой местности парящих " +#~ "островов." + +#~ msgid "Waving water" +#~ msgstr "Волны на воде" + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Y-уровень середины поплавка и поверхности озера." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Y-уровень, на который распространяются тени с плавающей точкой." + +#~ msgid "Projecting dungeons" +#~ msgstr "Проступающие подземелья" + +#~ msgid "Waving Water" +#~ msgstr "Волны на воде" + +#, fuzzy +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Верхний предел по Y для больших псевдослучайных пещер." + +#~ msgid "Select Package File:" +#~ msgstr "Выберите файл дополнения:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Кино" diff --git a/po/sl/minetest.po b/po/sl/minetest.po index d7597da82..b429ee0bd 100644 --- a/po/sl/minetest.po +++ b/po/sl/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Slovenian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2019-11-29 23:04+0000\n" "Last-Translator: Matej Mlinar \n" "Language-Team: Slovenian "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "Absolutna vrednost" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "Privzeta/standardna vrednost (defaults)" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -624,6 +635,7 @@ msgstr "Ime / Geslo" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "Igra PvP je omogočena" @@ -870,6 +882,14 @@ msgstr "Ni bilo mogoče odpreti datoteke z geslom: " msgid "Provided world path doesn't exist: " msgstr "Podana pot do sveta ne obstaja: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -906,6 +926,7 @@ msgstr "– Vrata: " msgid "- Public: " msgstr "– Javno: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "– Igra PvP: " @@ -1359,6 +1380,7 @@ msgstr "Leva tipka Shift" msgid "Left Windows" msgstr "Leva tipka Win" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Meni" @@ -1451,6 +1473,7 @@ msgstr "Premor" msgid "Play" msgstr "Igraj" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Natisni" @@ -1487,6 +1510,7 @@ msgstr "Desna tipka Win" msgid "Scroll Lock" msgstr "Tipka zaklepa drsnika" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Izberi" @@ -1727,10 +1751,15 @@ msgstr "Utišano" msgid "Sound Volume: " msgstr "Glasnost zvoka: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Vpis " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "sl" @@ -2112,8 +2141,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4763,7 +4792,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6122,18 +6151,18 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Toggle Cinematic" -#~ msgstr "Preklopi gladek pogled" - -#~ msgid "Select Package File:" -#~ msgstr "Izberi datoteko paketa:" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 podpora." +#~ msgid "Darkness sharpness" +#~ msgstr "Ostrina teme" #, fuzzy #~ msgid "Enable VBO" #~ msgstr "Omogoči VBO" -#~ msgid "Darkness sharpness" -#~ msgstr "Ostrina teme" +#~ msgid "IPv6 support." +#~ msgstr "IPv6 podpora." + +#~ msgid "Select Package File:" +#~ msgstr "Izberi datoteko paketa:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Preklopi gladek pogled" diff --git a/po/sr_Cyrl/minetest.po b/po/sr_Cyrl/minetest.po index fa65323dc..4fc40b2c6 100644 --- a/po/sr_Cyrl/minetest.po +++ b/po/sr_Cyrl/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Serbian (cyrillic) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: Serbian (cyrillic) "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "defaults" msgstr "Уобичајена игра" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -669,6 +680,7 @@ msgstr "Име / Шифра" msgid "Ping" msgstr "Одзив" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "Туча омогућена" @@ -918,6 +930,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "Дата локација света не постоји: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "" @@ -954,6 +974,7 @@ msgstr "- Порт: " msgid "- Public: " msgstr "- Јавни: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- Играч против играча: " @@ -1420,6 +1441,7 @@ msgstr "Леви Shift" msgid "Left Windows" msgstr "Леви Windows" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Мени" @@ -1513,6 +1535,7 @@ msgstr "Заустави" msgid "Play" msgstr "Играј" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Прикажи" @@ -1549,6 +1572,7 @@ msgstr "Десни Windows" msgid "Scroll Lock" msgstr "Закључавање скроловања" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Одабери" @@ -1795,10 +1819,15 @@ msgstr "Изкључи звук" msgid "Sound Volume: " msgstr "Јачина звука: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Уреду " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "sr_Cyrl" @@ -2212,8 +2241,8 @@ msgstr "Рељефна тектура" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4853,7 +4882,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6234,15 +6263,13 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Toggle Cinematic" -#~ msgstr "Укључи/Искључи Cinematic мод" - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Изаберите фајл мода:" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "Контролише ширину тунела, мања вредност ствара шире тунеле." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." +#~ msgstr "" +#~ "Подеси осветљење унутар игре. Веће вредности су светлије.\n" +#~ "Ово подешавање је само за клијента, сервер га игнорише." #, fuzzy #~ msgid "" @@ -6252,10 +6279,12 @@ msgstr "" #~ "Контролише густину планинског терена на лебдећим острвима.\n" #~ "Као одступање се додаје на вредност 'np_mountain' семена." -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "Подеси осветљење унутар игре. Веће вредности су светлије.\n" -#~ "Ово подешавање је само за клијента, сервер га игнорише." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "Контролише ширину тунела, мања вредност ствара шире тунеле." + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Изаберите фајл мода:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Укључи/Искључи Cinematic мод" diff --git a/po/sv/minetest.po b/po/sv/minetest.po index 224ed9d05..d0a04e119 100644 --- a/po/sv/minetest.po +++ b/po/sv/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Swedish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: sfan5 \n" "Language-Team: Swedish "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "defaults" msgstr "Standardspel" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -646,6 +657,7 @@ msgstr "Namn / Lösenord" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP aktiverat" @@ -894,6 +906,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "Den angivna sökvägen för världen existerar inte: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -934,6 +954,7 @@ msgstr "Port" msgid "- Public: " msgstr "Offentlig " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1400,6 +1421,7 @@ msgstr "Vänster Shift" msgid "Left Windows" msgstr "Vänster Windowstangent" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Meny" @@ -1492,6 +1514,7 @@ msgstr "Paus" msgid "Play" msgstr "Spela" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Skriv ut" @@ -1528,6 +1551,7 @@ msgstr "Höger Windowstangent" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Välj" @@ -1773,10 +1797,15 @@ msgstr "Tysta" msgid "Sound Volume: " msgstr "Ljudvolym: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Enter " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "sv" @@ -2196,8 +2225,8 @@ msgstr "Bumpmappning" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4853,7 +4882,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6234,26 +6263,13 @@ msgstr "cURL parallellgräns" msgid "cURL timeout" msgstr "cURL-timeout" -#~ msgid "Toggle Cinematic" -#~ msgstr "Slå av/på Filmisk Kamera" - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Välj modfil:" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Y-nivå till vilket luftöars skuggor når." - #~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Definierar områden för luftöars jämna terräng.\n" -#~ "Jämna luftöar förekommer när oljud > 0." - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Kontrollerar bredd av tunnlar, mindre värden skapar bredare tunnlar." +#~ "Justera gammakodningen för ljustabeller. Högre tal är ljusare.\n" +#~ "Denna inställning påverkar endast klienten och ignoreras av servern." #, fuzzy #~ msgid "" @@ -6263,10 +6279,23 @@ msgstr "cURL-timeout" #~ "Kontrollerar densiteten av luftöars bergsterräng.\n" #~ "Är en förskjutning adderad till oljudsvärdet för 'np_mountain'." -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." #~ msgstr "" -#~ "Justera gammakodningen för ljustabeller. Högre tal är ljusare.\n" -#~ "Denna inställning påverkar endast klienten och ignoreras av servern." +#~ "Kontrollerar bredd av tunnlar, mindre värden skapar bredare tunnlar." + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Definierar områden för luftöars jämna terräng.\n" +#~ "Jämna luftöar förekommer när oljud > 0." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Y-nivå till vilket luftöars skuggor når." + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Välj modfil:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Slå av/på Filmisk Kamera" diff --git a/po/sw/minetest.po b/po/sw/minetest.po index f803b9ad5..db8fcd3d9 100644 --- a/po/sw/minetest.po +++ b/po/sw/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Swahili (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: Swahili "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy msgid "defaults" msgstr "Chaguo-msingi mchezo" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -666,6 +677,7 @@ msgstr "Jina / nenosiri" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP kuwezeshwa" @@ -916,6 +928,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "Njia ya dunia iliyotolewa haipo:" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -957,6 +977,7 @@ msgstr "Bandari" msgid "- Public: " msgstr "Umma" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1432,6 +1453,7 @@ msgstr "Kisogezi kushoto" msgid "Left Windows" msgstr "Windows kushoto" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menyu" @@ -1525,6 +1547,7 @@ msgstr "Sitisha" msgid "Play" msgstr "Kucheza" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Chapa" @@ -1561,6 +1584,7 @@ msgstr "Windows kulia" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Teua" @@ -1809,10 +1833,15 @@ msgstr "Ufunguo wa matumizi" msgid "Sound Volume: " msgstr "Kiwango sauti:" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Ingiza" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "sw" @@ -2230,8 +2259,8 @@ msgstr "Bumpmapping" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5357,7 +5386,7 @@ msgstr "" "Jina la seva, kuonyeshwa wakati wachezaji kujiunga na katika serverlist ya." #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6887,64 +6916,6 @@ msgstr "cURL kikomo sambamba" msgid "cURL timeout" msgstr "muda wa kuisha wa cURL" -#~ msgid "Toggle Cinematic" -#~ msgstr "Togoa Cinematic" - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Teua faili ya Moduli:" - -#, fuzzy -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y ya upper kikomo ya kubwa pseudorandom cellars." - -#~ msgid "Waving Water" -#~ msgstr "Waving maji" - -#~ msgid "Waving water" -#~ msgstr "Waving maji" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Fonti hii itatumika kwa lugha fulani." - -#, fuzzy -#~ msgid "Shadow limit" -#~ msgstr "Kikomo cha Mapblock" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Njia ya TrueTypeFont au vitone michoro." - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Kina ya pango kubwa" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 msaada." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Fonti kivuli Alfa (opaqueness kati ya 0 na 255)." - -#, fuzzy -#~ msgid "Floatland level" -#~ msgstr "Kiwango cha maji" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Huwezesha toni filmic ramani" - -#~ msgid "Enable VBO" -#~ msgstr "Wezesha VBO" - -#, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "Mwandishi ramani ziwa gorofa mwinuko" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Vidhibiti vya upana wa vichuguu, thamani ndogo huunda vichuguu pana." - #, fuzzy #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " @@ -6953,3 +6924,61 @@ msgstr "muda wa kuisha wa cURL" #~ msgstr "" #~ "Rekebisha simbiko gamma kwa majedwali mwanga. Idadi ya chini ni mkali.\n" #~ "Kipimo hiki ni kwa ajili ya mteja tu na ni kupuuzwa na seva." + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Vidhibiti vya upana wa vichuguu, thamani ndogo huunda vichuguu pana." + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "Mwandishi ramani ziwa gorofa mwinuko" + +#~ msgid "Enable VBO" +#~ msgstr "Wezesha VBO" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Huwezesha toni filmic ramani" + +#, fuzzy +#~ msgid "Floatland level" +#~ msgstr "Kiwango cha maji" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Fonti kivuli Alfa (opaqueness kati ya 0 na 255)." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 msaada." + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Kina ya pango kubwa" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Njia ya TrueTypeFont au vitone michoro." + +#, fuzzy +#~ msgid "Shadow limit" +#~ msgstr "Kikomo cha Mapblock" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Fonti hii itatumika kwa lugha fulani." + +#~ msgid "Waving water" +#~ msgstr "Waving maji" + +#~ msgid "Waving Water" +#~ msgstr "Waving maji" + +#, fuzzy +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y ya upper kikomo ya kubwa pseudorandom cellars." + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Teua faili ya Moduli:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Togoa Cinematic" diff --git a/po/th/minetest.po b/po/th/minetest.po index 086a54845..737bf865f 100644 --- a/po/th/minetest.po +++ b/po/th/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Thai (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Thai "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "ค่าผันแปรการสุ่มสร้างแผนที่" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "เริ่มต้น" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "ความนุ่มนวลของพื้นผิวบนทางลาด" @@ -620,6 +631,7 @@ msgstr "ชื่อ / รหัสผ่าน" msgid "Ping" msgstr "เวลาตอบสนอง" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "PvP เปิดใช้งาน" @@ -869,6 +881,14 @@ msgstr "รหัสผ่านให้ไฟล์ไม่สามารถ msgid "Provided world path doesn't exist: " msgstr "โลกมีเส้นไม่มี: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -906,6 +926,7 @@ msgstr "-พอร์ต: " msgid "- Public: " msgstr "-ประชาชน: " +#. ~ PvP = Player versus Player #: src/client/game.cpp #, fuzzy msgid "- PvP: " @@ -1366,6 +1387,7 @@ msgstr "ด้านซ้าย Shift" msgid "Left Windows" msgstr "หน้าต่างซ้าย" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "เมนู" @@ -1474,6 +1496,7 @@ msgstr "หยุด" msgid "Play" msgstr "เล่น" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "พิมพ์" @@ -1511,6 +1534,7 @@ msgstr "หน้าต่างขวา" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "เลือก" @@ -1753,10 +1777,15 @@ msgstr "เสียง" msgid "Sound Volume: " msgstr "ระดับเสียง " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "ป้อน " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "th" @@ -2161,8 +2190,8 @@ msgstr "Bumpmapping" #: src/settings_translation_file.cpp #, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5070,7 +5099,7 @@ msgstr "ชื่อของเซิร์ฟเวอร์ที่จะแ #: src/settings_translation_file.cpp #, fuzzy -msgid "Near clipping plane" +msgid "Near plane" msgstr "ใกล้เครื่องบิน" #: src/settings_translation_file.cpp @@ -6540,48 +6569,6 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Toggle Cinematic" -#~ msgstr "สลับโรงภาพยนตร์" - -#~ msgid "Select Package File:" -#~ msgstr "เลือกแฟ้มแพคเกจ:" - -#~ msgid "Waving Water" -#~ msgstr "น้ำโบก" - -#~ msgid "Waving water" -#~ msgstr "โบกน้ำ" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "แบบอักษรนี้จะใช้สำหรับบางภาษา" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "ความแข็งแรงของแสงโค้งกลาง - เพิ่ม" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "เส้นทางแบบอักษร." - -#~ msgid "Lightness sharpness" -#~ msgstr "ความคมชัดของแสง" - -#~ msgid "Gamma" -#~ msgstr "แกมมา" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "ตัวอักษรเงาอัลฟา (ความทึบระหว่าง 0 และ 255)." - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "เปิดใช้งานการจับคู่โทนภาพยนตร์" - -#~ msgid "Enable VBO" -#~ msgstr "ทำให้สามารถ VBO" - -#~ msgid "Darkness sharpness" -#~ msgstr "ความมืดมิด" - -#~ msgid "Center of light curve mid-boost." -#~ msgstr "กึ่งกลางของเส้นโค้งแสง - กลางเพิ่ม" - #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " #~ "brighter.\n" @@ -6589,3 +6576,45 @@ msgstr "" #~ msgstr "" #~ "ปรับการเข้ารหัสแกมม่าสำหรับตารางแสง ตัวเลขที่สูงกว่านั้นจะสว่างกว่า\n" #~ "การตั้งค่านี้มีไว้สำหรับไคลเอ็นต์เท่านั้นและเซิร์ฟเวอร์จะเพิกเฉย" + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "กึ่งกลางของเส้นโค้งแสง - กลางเพิ่ม" + +#~ msgid "Darkness sharpness" +#~ msgstr "ความมืดมิด" + +#~ msgid "Enable VBO" +#~ msgstr "ทำให้สามารถ VBO" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "เปิดใช้งานการจับคู่โทนภาพยนตร์" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "ตัวอักษรเงาอัลฟา (ความทึบระหว่าง 0 และ 255)." + +#~ msgid "Gamma" +#~ msgstr "แกมมา" + +#~ msgid "Lightness sharpness" +#~ msgstr "ความคมชัดของแสง" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "เส้นทางแบบอักษร." + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "ความแข็งแรงของแสงโค้งกลาง - เพิ่ม" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "แบบอักษรนี้จะใช้สำหรับบางภาษา" + +#~ msgid "Waving water" +#~ msgstr "โบกน้ำ" + +#~ msgid "Waving Water" +#~ msgstr "น้ำโบก" + +#~ msgid "Select Package File:" +#~ msgstr "เลือกแฟ้มแพคเกจ:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "สลับโรงภาพยนตร์" diff --git a/po/tr/minetest.po b/po/tr/minetest.po index b6402dfc8..5005ea098 100644 --- a/po/tr/minetest.po +++ b/po/tr/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Turkish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-01-27 13:21+0000\n" "Last-Translator: monolifed \n" "Language-Team: Turkish "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "mutlak değer" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "öntanımlılar" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "rahat" @@ -617,6 +628,7 @@ msgstr "Ad / Şifre" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "Savaş etkin" @@ -861,6 +873,14 @@ msgstr "Sağlanan şifre dosyası açılamadı: " msgid "Provided world path doesn't exist: " msgstr "Belirtilen dünya konumu yok: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -897,6 +917,7 @@ msgstr "- Port: " msgid "- Public: " msgstr "- Herkes: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- Savaş: " @@ -1347,6 +1368,7 @@ msgstr "Sol Shift" msgid "Left Windows" msgstr "Sol Windows" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Menü" @@ -1439,6 +1461,7 @@ msgstr "Duraklat" msgid "Play" msgstr "Oyna" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Yazdır" @@ -1475,6 +1498,7 @@ msgstr "Sağ Windows" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Seç" @@ -1714,10 +1738,15 @@ msgstr "Ses Kısık" msgid "Sound Volume: " msgstr "Ses Seviyesi: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Gir " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "tr" @@ -2150,9 +2179,10 @@ msgid "Bumpmapping" msgstr "Tümsek eşleme" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -5250,7 +5280,8 @@ msgstr "" "Oyuncular katılındığında ve sunucu listesinde görüntülenecek sunucu adı." #: src/settings_translation_file.cpp -msgid "Near clipping plane" +#, fuzzy +msgid "Near plane" msgstr "Yakın kırpma düzlemi" #: src/settings_translation_file.cpp @@ -6865,93 +6896,44 @@ msgstr "cURL paralel sınırı" msgid "cURL timeout" msgstr "cURL zaman aşımı" -#~ msgid "Toggle Cinematic" -#~ msgstr "Sinematik Aç/Kapa" - -#~ msgid "Select Package File:" -#~ msgstr "Paket Dosyası Seç:" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Büyük mağaralardaki lavın üst sınırının Y'si." - -#~ msgid "Waving Water" -#~ msgstr "Dalgalanan Su" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Zindanların bazen araziden yansıyıp yansımayacağı." - -#~ msgid "Projecting dungeons" -#~ msgstr "İzdüşüm zindanlar" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Yüzenkara gölgelerinin uzanacağı Y-seviyesi." - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Yüzenkara orta noktasının ve göl yüzeyinin Y-seviyesi." - -#~ msgid "Waving water" -#~ msgstr "Dalgalanan su" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Tepe yüksekliğinin ve göl derinliğinin yüzenkara düz arazide değişimi." +#~ "Işık tabloları için gama kodlamayı ayarlayın. Daha yüksek sayılar daha " +#~ "aydınlıktır.\n" +#~ "Bu ayar yalnızca istemci içindir ve sunucu tarafından yok sayılır." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "" +#~ "Dağ-türü yüzerkaraların orta noktanın üstünde ve altında nasıl " +#~ "konikleştiğini değiştirir." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Işık eğrisi orta-artırmanın merkezi." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Yüzenkara dağların, orta noktanın altındaki ve üstündeki, tipik maksimum " -#~ "yüksekliği." +#~ "Dağ-türü yüzenkaraların yoğunluğunu denetler.\n" +#~ "'mgv7_np_mountain' gürültü değerine eklenen bir gürültü kaydırmadır." -#~ msgid "This font will be used for certain languages." -#~ msgstr "Belirli diller için bu yazı tipi kullanılacak." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Tünellerin genişliğini denetler, daha küçük bir değer daha geniş tüneller " +#~ "yaratır." -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Işık eğrisi orta-artırmanın kuvveti." +#~ msgid "Darkness sharpness" +#~ msgstr "Karanlık keskinliği" -#~ msgid "Shadow limit" -#~ msgstr "Gölge sınırı" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "TrueTypeFont veya bitmap konumu." - -#~ msgid "Lightness sharpness" -#~ msgstr "Aydınlık keskinliği" - -#~ msgid "Lava depth" -#~ msgstr "Lav derinliği" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 desteği." - -#~ msgid "Gamma" -#~ msgstr "Gama" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Yazı tipi gölge saydamlığı (solukluk, 0 ve 255 arası)." - -#~ msgid "Floatland mountain height" -#~ msgstr "Yüzenkara dağ yüksekliği" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Yüzenkara dağ eksponenti" - -#~ msgid "Floatland mountain density" -#~ msgstr "Yüzenkara dağ yoğunluğu" - -#~ msgid "Floatland level" -#~ msgstr "Yüzenkara seviyesi" - -#~ msgid "Floatland base noise" -#~ msgstr "Yüzenkara taban gürültüsü" - -#~ msgid "Floatland base height noise" -#~ msgstr "Yüzenkara taban yükseklik gürültüsü" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Filmsel ton eşlemeyi etkinleştirir" - -#~ msgid "Enable VBO" -#~ msgstr "VBO'yu etkinleştir" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Yüzenkara düz arazilerin alanlarını belirler.\n" +#~ "Gürültü > 0 iken düz yüzenkaralar oluşur." #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -6962,41 +6944,90 @@ msgstr "cURL zaman aşımı" #~ "sıvılarını tanımlayın ve bulun.\n" #~ "Büyük mağaralarda lav üst sınırının Y'si." -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Yüzenkara düz arazilerin alanlarını belirler.\n" -#~ "Gürültü > 0 iken düz yüzenkaralar oluşur." +#~ msgid "Enable VBO" +#~ msgstr "VBO'yu etkinleştir" -#~ msgid "Darkness sharpness" -#~ msgstr "Karanlık keskinliği" +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Filmsel ton eşlemeyi etkinleştirir" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Tünellerin genişliğini denetler, daha küçük bir değer daha geniş tüneller " -#~ "yaratır." +#~ msgid "Floatland base height noise" +#~ msgstr "Yüzenkara taban yükseklik gürültüsü" + +#~ msgid "Floatland base noise" +#~ msgstr "Yüzenkara taban gürültüsü" + +#~ msgid "Floatland level" +#~ msgstr "Yüzenkara seviyesi" + +#~ msgid "Floatland mountain density" +#~ msgstr "Yüzenkara dağ yoğunluğu" + +#~ msgid "Floatland mountain exponent" +#~ msgstr "Yüzenkara dağ eksponenti" + +#~ msgid "Floatland mountain height" +#~ msgstr "Yüzenkara dağ yüksekliği" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Yazı tipi gölge saydamlığı (solukluk, 0 ve 255 arası)." + +#~ msgid "Gamma" +#~ msgstr "Gama" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 desteği." + +#~ msgid "Lava depth" +#~ msgstr "Lav derinliği" + +#~ msgid "Lightness sharpness" +#~ msgstr "Aydınlık keskinliği" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "TrueTypeFont veya bitmap konumu." + +#~ msgid "Shadow limit" +#~ msgstr "Gölge sınırı" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Işık eğrisi orta-artırmanın kuvveti." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Belirli diller için bu yazı tipi kullanılacak." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Dağ-türü yüzenkaraların yoğunluğunu denetler.\n" -#~ "'mgv7_np_mountain' gürültü değerine eklenen bir gürültü kaydırmadır." +#~ "Yüzenkara dağların, orta noktanın altındaki ve üstündeki, tipik maksimum " +#~ "yüksekliği." -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Işık eğrisi orta-artırmanın merkezi." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." #~ msgstr "" -#~ "Dağ-türü yüzerkaraların orta noktanın üstünde ve altında nasıl " -#~ "konikleştiğini değiştirir." +#~ "Tepe yüksekliğinin ve göl derinliğinin yüzenkara düz arazide değişimi." -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "Işık tabloları için gama kodlamayı ayarlayın. Daha yüksek sayılar daha " -#~ "aydınlıktır.\n" -#~ "Bu ayar yalnızca istemci içindir ve sunucu tarafından yok sayılır." +#~ msgid "Waving water" +#~ msgstr "Dalgalanan su" + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Yüzenkara orta noktasının ve göl yüzeyinin Y-seviyesi." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Yüzenkara gölgelerinin uzanacağı Y-seviyesi." + +#~ msgid "Projecting dungeons" +#~ msgstr "İzdüşüm zindanlar" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Zindanların bazen araziden yansıyıp yansımayacağı." + +#~ msgid "Waving Water" +#~ msgstr "Dalgalanan Su" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Büyük mağaralardaki lavın üst sınırının Y'si." + +#~ msgid "Select Package File:" +#~ msgstr "Paket Dosyası Seç:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Sinematik Aç/Kapa" diff --git a/po/uk/minetest.po b/po/uk/minetest.po index a584fddb8..28a2e01cd 100644 --- a/po/uk/minetest.po +++ b/po/uk/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Ukrainian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: sfan5 \n" "Language-Team: Ukrainian =2 && n%10<=" -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\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 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp @@ -402,14 +402,25 @@ msgstr "" msgid "Z spread" msgstr "" +#. ~ "absvalue" is a noise parameter flag. +#. It is short for "absolute value". +#. It can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "Абс. величина" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "Стандартно" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -620,6 +631,7 @@ msgstr "Ім'я / Пароль" msgid "Ping" msgstr "Пінг" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "Бої увімкнено" @@ -864,6 +876,14 @@ msgstr "Не вдалося відкрити файл паролю: " msgid "Provided world path doesn't exist: " msgstr "Вказаний шлях до світу не існує: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "no" @@ -900,6 +920,7 @@ msgstr "- Порт: " msgid "- Public: " msgstr "- Публічний: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP (бої): " @@ -1350,6 +1371,7 @@ msgstr "Лівий Shift" msgid "Left Windows" msgstr "Лівий Win" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Меню" @@ -1442,6 +1464,7 @@ msgstr "Пауза" msgid "Play" msgstr "Грати" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "Print Screen" @@ -1478,6 +1501,7 @@ msgstr "Правий Win" msgid "Scroll Lock" msgstr "Scroll Lock" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "Обрати" @@ -1719,10 +1743,15 @@ msgstr "Звук вимкнено" msgid "Sound Volume: " msgstr "Гучність звуку: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "Ввід " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "uk" @@ -2107,8 +2136,8 @@ msgstr "Бамп-маппінг" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4719,7 +4748,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6073,20 +6102,20 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Toggle Cinematic" -#~ msgstr "Кінематографічний режим" - -#~ msgid "Content Store" -#~ msgstr "Додатки" - -#~ msgid "Select Package File:" -#~ msgstr "Виберіть файл пакунку:" - -#~ msgid "Lava depth" -#~ msgstr "Глибина лави" +#~ msgid "Enable VBO" +#~ msgstr "Увімкнути VBO" #~ msgid "IPv6 support." #~ msgstr "Підтримка IPv6." -#~ msgid "Enable VBO" -#~ msgstr "Увімкнути VBO" +#~ msgid "Lava depth" +#~ msgstr "Глибина лави" + +#~ msgid "Select Package File:" +#~ msgstr "Виберіть файл пакунку:" + +#~ msgid "Content Store" +#~ msgstr "Додатки" + +#~ msgid "Toggle Cinematic" +#~ msgstr "Кінематографічний режим" diff --git a/po/vi/minetest.po b/po/vi/minetest.po index 29e68265a..7a5ad2659 100644 --- a/po/vi/minetest.po +++ b/po/vi/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Vietnamese (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Vietnamese "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "" @@ -619,6 +630,7 @@ msgstr "" msgid "Ping" msgstr "" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "" @@ -863,6 +875,14 @@ msgstr "" msgid "Provided world path doesn't exist: " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "" @@ -897,6 +917,7 @@ msgstr "" msgid "- Public: " msgstr "" +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "" @@ -1321,6 +1342,7 @@ msgstr "" msgid "Left Windows" msgstr "" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "" @@ -1413,6 +1435,7 @@ msgstr "" msgid "Play" msgstr "" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "" @@ -1449,6 +1472,7 @@ msgstr "" msgid "Scroll Lock" msgstr "" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "" @@ -1683,10 +1707,15 @@ msgstr "" msgid "Sound Volume: " msgstr "" +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "" +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "vi" @@ -2060,8 +2089,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -4666,7 +4695,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index 7918dfcb7..e7f1a8eec 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-03-08 15:32+0000\n" "Last-Translator: wzy2006 <3450354617@qq.com>\n" "Language-Team: Chinese (Simplified) "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "绝对值" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "默认值" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "缓解" @@ -612,6 +623,7 @@ msgstr "用户名/密码" msgid "Ping" msgstr "应答速度" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "启用玩家对战" @@ -856,6 +868,14 @@ msgstr "提供的密码文件无法打开: " msgid "Provided world path doesn't exist: " msgstr "提供的世界路径不存在: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -892,6 +912,7 @@ msgstr "- 端口: " msgid "- Public: " msgstr "- 公共服务器: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- 玩家对战: " @@ -1342,6 +1363,7 @@ msgstr "左Shift键" msgid "Left Windows" msgstr "左Windows键" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "菜单" @@ -1434,6 +1456,7 @@ msgstr "Pause键" msgid "Play" msgstr "开始游戏" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "打印" @@ -1470,6 +1493,7 @@ msgstr "右Windows键" msgid "Scroll Lock" msgstr "Scroll Lock键" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "选择键" @@ -1706,10 +1730,15 @@ msgstr "静音" msgid "Sound Volume: " msgstr "音量: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "输入 " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "zh_CN" @@ -2135,9 +2164,10 @@ msgid "Bumpmapping" msgstr "凹凸贴图" #: src/settings_translation_file.cpp +#, fuzzy msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -3818,8 +3848,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "视野缩小键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3828,8 +3858,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "音量减小键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3838,8 +3868,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "丢弃所选物品键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3848,8 +3878,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "视野扩大键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3858,8 +3888,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "音量增大键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3868,8 +3898,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "跳跃键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3878,8 +3908,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "快速模式移动键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3890,8 +3920,8 @@ msgid "" msgstr "" "后退键。\n" "在按下时也会取消自动前进。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3900,8 +3930,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "前进键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3910,8 +3940,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "向左键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3920,8 +3950,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "向右键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3930,8 +3960,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "静音键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3940,8 +3970,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "打开聊天窗口输入命令键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3950,8 +3980,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "打开聊天窗口输入本地命令键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3960,8 +3990,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "打开聊天窗口键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3970,8 +4000,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "打开物品清单键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3980,8 +4010,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第11个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3990,8 +4020,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第12个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4000,8 +4030,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第13个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4010,8 +4040,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第14个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4020,8 +4050,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第15个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4030,8 +4060,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第16个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4040,8 +4070,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第17个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4050,8 +4080,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第18个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4060,8 +4090,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第19个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4070,8 +4100,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第20个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4080,8 +4110,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第21个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4090,8 +4120,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第22个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4100,8 +4130,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第23个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4110,8 +4140,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第24个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4120,8 +4150,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第25个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4130,8 +4160,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第26个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4140,8 +4170,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第27个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4150,8 +4180,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第28个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4160,8 +4190,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第29个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4170,8 +4200,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第30个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4180,8 +4210,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第31个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4190,8 +4220,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第32个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4200,8 +4230,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第8个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4210,8 +4240,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第5个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4220,8 +4250,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第1个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4230,8 +4260,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第4个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4240,8 +4270,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏下一个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4250,8 +4280,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第9个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4260,8 +4290,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏上一个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4270,8 +4300,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第2个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4280,8 +4310,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第7个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4290,8 +4320,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第6个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4300,8 +4330,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第10个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4310,8 +4340,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "选择快捷栏第3个位置键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4323,8 +4353,8 @@ msgid "" msgstr "" "下蹲键。\n" "若aux1_descends禁用,也可用于向下攀爬、在水中向下游。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4333,8 +4363,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "第一人称第三人称镜头切换键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4343,8 +4373,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "截屏键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4353,8 +4383,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关自动前进键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4363,8 +4393,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关电影模式键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4373,8 +4403,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关小地图键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4383,8 +4413,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关快速移动键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4393,8 +4423,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关飞行键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4403,8 +4433,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关穿墙模式键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4413,8 +4443,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关仰角移动模式键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4423,8 +4453,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关相机更新键。仅用于开发。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4433,8 +4463,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关聊天显示键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4443,8 +4473,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关调试信息键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4453,8 +4483,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关雾显示键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4463,8 +4493,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关HUD显示键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4473,8 +4503,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关大型聊天控制台显示键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4483,8 +4513,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关性能分析图显示键。仅用于开发。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4493,8 +4523,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关无限视野键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4503,8 +4533,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "开关缩放(如有可能)键。\n" -"见http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"见http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Kick players who sent more than X messages per 10 seconds." @@ -5184,7 +5214,8 @@ msgid "" msgstr "服务器名称,将显示在提供给玩家的服务器列表。" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +#, fuzzy +msgid "Near plane" msgstr "靠近裁切平面" #: src/settings_translation_file.cpp @@ -6650,68 +6681,13 @@ msgstr "cURL 并发限制" msgid "cURL timeout" msgstr "cURL 超时" -#~ msgid "Toggle Cinematic" -#~ msgstr "切换电影模式" - -#~ msgid "Select Package File:" -#~ msgstr "选择包文件:" - -#, fuzzy -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "大型随机洞穴的Y轴最大值。" - -#~ msgid "Waving Water" -#~ msgstr "流动的水面" - -#~ msgid "Waving water" -#~ msgstr "摇动水" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "用于特定语言的字体。" - -#, fuzzy -#~ msgid "Shadow limit" -#~ msgstr "地图块限制" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "TrueType 字体或位图的路径。" - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "巨大洞穴深度" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 支持。" - -#~ msgid "Gamma" -#~ msgstr "伽马" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "字体阴影不透明度(0-255)。" - -#, fuzzy -#~ msgid "Floatland level" -#~ msgstr "水级别" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "启用电影基调映射" - -#~ msgid "Enable VBO" -#~ msgstr "启用 VBO" - #~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "定义 floatland 平滑地形的区域。\n" -#~ "当噪音0时, 平滑的 floatlands 发生。" - -#, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "地图生成器平面湖坡度" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "控制隧道宽度,较小的值创建更宽的隧道。" +#~ "调整亮度表的伽玛编码。较高的数值会较亮。\n" +#~ "这个设定是给客户端使用的,会被服务器忽略。" #, fuzzy #~ msgid "" @@ -6721,10 +6697,65 @@ msgstr "cURL 超时" #~ "控制 floatland 地形的密度。\n" #~ "是添加到 \"np_mountain\" 噪声值的偏移量。" +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "控制隧道宽度,较小的值创建更宽的隧道。" + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "地图生成器平面湖坡度" + #~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." #~ msgstr "" -#~ "调整亮度表的伽玛编码。较高的数值会较亮。\n" -#~ "这个设定是给客户端使用的,会被服务器忽略。" +#~ "定义 floatland 平滑地形的区域。\n" +#~ "当噪音0时, 平滑的 floatlands 发生。" + +#~ msgid "Enable VBO" +#~ msgstr "启用 VBO" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "启用电影基调映射" + +#, fuzzy +#~ msgid "Floatland level" +#~ msgstr "水级别" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "字体阴影不透明度(0-255)。" + +#~ msgid "Gamma" +#~ msgstr "伽马" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 支持。" + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "巨大洞穴深度" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "TrueType 字体或位图的路径。" + +#, fuzzy +#~ msgid "Shadow limit" +#~ msgstr "地图块限制" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "用于特定语言的字体。" + +#~ msgid "Waving water" +#~ msgstr "摇动水" + +#~ msgid "Waving Water" +#~ msgstr "流动的水面" + +#, fuzzy +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "大型随机洞穴的Y轴最大值。" + +#~ msgid "Select Package File:" +#~ msgstr "选择包文件:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "切换电影模式" diff --git a/po/zh_TW/minetest.po b/po/zh_TW/minetest.po index 5e670c2fa..5a2892465 100644 --- a/po/zh_TW/minetest.po +++ b/po/zh_TW/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Chinese (Traditional) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-01-18 20:21+0000\n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-01-29 13:50+0000\n" "Last-Translator: pan93412 \n" "Language-Team: Chinese (Traditional) "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" msgstr "絕對值" +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" msgstr "預設值" +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" msgstr "緩解 (eased)" @@ -614,6 +625,7 @@ msgstr "名稱/密碼" msgid "Ping" msgstr "Ping" +#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" msgstr "已啟用 PvP" @@ -858,6 +870,14 @@ msgstr "無法開啟提供的密碼檔案: " msgid "Provided world path doesn't exist: " msgstr "提供的世界路徑不存在: " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" msgstr "yes" @@ -894,6 +914,7 @@ msgstr "- 連線埠: " msgid "- Public: " msgstr "- 公開: " +#. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " msgstr "- PvP: " @@ -1344,6 +1365,7 @@ msgstr "左 Shift" msgid "Left Windows" msgstr "左 Windows 鍵" +#. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "選單" @@ -1436,6 +1458,7 @@ msgstr "暫停" msgid "Play" msgstr "遊玩" +#. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" msgstr "列印" @@ -1472,6 +1495,7 @@ msgstr "右 Windows 鍵" msgid "Scroll Lock" msgstr "捲動鎖定鍵" +#. ~ Key name #: src/client/keycode.cpp msgid "Select" msgstr "選擇" @@ -1709,10 +1733,15 @@ msgstr "已靜音" msgid "Sound Volume: " msgstr "音量: " +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " msgstr "輸入 " +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" msgstr "zh_TW" @@ -2133,8 +2162,8 @@ msgstr "映射貼圖" #: src/settings_translation_file.cpp msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.5.\n" -"Most users will not need to change this.\n" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" @@ -2917,7 +2946,8 @@ msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the\n" "Multiplayer Tab." -msgstr "在 用戶端/伺服器清單/ 中的檔案包含了顯示在多人遊戲分頁中您最愛的伺服器。" +msgstr "" +"在 用戶端/伺服器清單/ 中的檔案包含了顯示在多人遊戲分頁中您最愛的伺服器。" #: src/settings_translation_file.cpp #, fuzzy @@ -3949,8 +3979,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 11 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3959,8 +3989,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 12 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3969,8 +3999,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 13 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3979,8 +4009,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 14 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3989,8 +4019,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 15 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -3999,8 +4029,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 16 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4009,8 +4039,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 17 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4019,8 +4049,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 18 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4029,8 +4059,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 19 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4039,8 +4069,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 20 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4049,8 +4079,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 21 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4059,8 +4089,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 22 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4069,8 +4099,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 23 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4079,8 +4109,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 24 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4089,8 +4119,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 25 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4099,8 +4129,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 26 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4109,8 +4139,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 27 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4119,8 +4149,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 28 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4129,8 +4159,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 29 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4139,8 +4169,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 30 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4149,8 +4179,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 31 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4159,8 +4189,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 32 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4169,8 +4199,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 8 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4179,8 +4209,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 5 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4189,8 +4219,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 1 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4199,8 +4229,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 4 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4209,8 +4239,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "在快捷列選取下一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4219,8 +4249,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 9 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4229,8 +4259,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "在快捷列選取上一個物品的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4239,8 +4269,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 2 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4249,8 +4279,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 7 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4259,8 +4289,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 6 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4269,8 +4299,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 10 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4279,8 +4309,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "選取快捷列中第 3 個槽的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4373,8 +4403,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "切換穿牆模式的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4383,8 +4413,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "切換 Pitch Move 模式的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4403,8 +4433,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "用來切換聊天顯示的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4423,8 +4453,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "切換顯示霧氣的按鍵。\n" -"請見 http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"請見 http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -5164,7 +5194,7 @@ msgid "" msgstr "伺服器名稱,當玩家加入時會顯示,也會顯示在伺服器清單中。" #: src/settings_translation_file.cpp -msgid "Near clipping plane" +msgid "Near plane" msgstr "" #: src/settings_translation_file.cpp @@ -6681,97 +6711,13 @@ msgstr "cURL 並行限制" msgid "cURL timeout" msgstr "cURL 逾時" -#~ msgid "Toggle Cinematic" -#~ msgstr "切換過場動畫" - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "選取 Mod 檔案:" - -#, fuzzy -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "大型偽隨機洞穴的 Y 上限。" - -#~ msgid "Waving Water" -#~ msgstr "波動的水" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "浮地陰影擴展的 Y 高度。" - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "浮地中點與湖表面的 Y 高度。" - -#~ msgid "Waving water" -#~ msgstr "波動的水" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "在平整浮地地形的山丘高度與湖泊深度變化。" - -#, fuzzy #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "浮地山區域的典型最大高度,高於與低於中點。" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "這個字型將會被用於特定的語言。" - -#~ msgid "Shadow limit" -#~ msgstr "陰影限制" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "TrueType 字型或點陣字的路徑。" - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "大型洞穴深度" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 支援。" - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "字型陰影 alpha(不透明度,介於 0 到 255)。" - -#~ msgid "Floatland mountain height" -#~ msgstr "浮地山高度" - -#, fuzzy -#~ msgid "Floatland mountain exponent" -#~ msgstr "浮地山密度" - -#~ msgid "Floatland mountain density" -#~ msgstr "浮地山密度" - -#~ msgid "Floatland level" -#~ msgstr "浮地高度" - -#~ msgid "Floatland base noise" -#~ msgstr "浮地基礎噪音" - -#~ msgid "Floatland base height noise" -#~ msgstr "浮地基礎高度噪音" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "啟用電影色調映射" - -#~ msgid "Enable VBO" -#~ msgstr "啟用 VBO" - -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "定義浮地的平整地形區。\n" -#~ "平整的浮地會在噪音 > 0 時產生。" - -#, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "湖泊坡度" - -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "控制隧道的寬度,較小的值會創造出較寬的隧道。" +#~ "調整亮度表的伽瑪編碼。較高的數值會較亮。\n" +#~ "這個設定是給客戶端使用的,會被伺服器忽略。" #, fuzzy #~ msgid "" @@ -6781,10 +6727,94 @@ msgstr "cURL 逾時" #~ "控制山地的浮地密度。\n" #~ "是加入到 'np_mountain' 噪音值的補償。" +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "控制隧道的寬度,較小的值會創造出較寬的隧道。" + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "湖泊坡度" + #~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." #~ msgstr "" -#~ "調整亮度表的伽瑪編碼。較高的數值會較亮。\n" -#~ "這個設定是給客戶端使用的,會被伺服器忽略。" +#~ "定義浮地的平整地形區。\n" +#~ "平整的浮地會在噪音 > 0 時產生。" + +#~ msgid "Enable VBO" +#~ msgstr "啟用 VBO" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "啟用電影色調映射" + +#~ msgid "Floatland base height noise" +#~ msgstr "浮地基礎高度噪音" + +#~ msgid "Floatland base noise" +#~ msgstr "浮地基礎噪音" + +#~ msgid "Floatland level" +#~ msgstr "浮地高度" + +#~ msgid "Floatland mountain density" +#~ msgstr "浮地山密度" + +#, fuzzy +#~ msgid "Floatland mountain exponent" +#~ msgstr "浮地山密度" + +#~ msgid "Floatland mountain height" +#~ msgstr "浮地山高度" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "字型陰影 alpha(不透明度,介於 0 到 255)。" + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 支援。" + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "大型洞穴深度" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "TrueType 字型或點陣字的路徑。" + +#~ msgid "Shadow limit" +#~ msgstr "陰影限制" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "這個字型將會被用於特定的語言。" + +#, fuzzy +#~ msgid "" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "浮地山區域的典型最大高度,高於與低於中點。" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "在平整浮地地形的山丘高度與湖泊深度變化。" + +#~ msgid "Waving water" +#~ msgstr "波動的水" + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "浮地中點與湖表面的 Y 高度。" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "浮地陰影擴展的 Y 高度。" + +#~ msgid "Waving Water" +#~ msgstr "波動的水" + +#, fuzzy +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "大型偽隨機洞穴的 Y 上限。" + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "選取 Mod 檔案:" + +#~ msgid "Toggle Cinematic" +#~ msgstr "切換過場動畫" From fe21aa1f4a92f54df2ed0f240472ce9a42fe473c Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 3 Apr 2020 23:20:11 +0200 Subject: [PATCH 046/424] Utility script to help with Weblate commit import --- util/reorder_translation_commits.py | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100755 util/reorder_translation_commits.py diff --git a/util/reorder_translation_commits.py b/util/reorder_translation_commits.py new file mode 100755 index 000000000..465cf0b93 --- /dev/null +++ b/util/reorder_translation_commits.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +import sys +import subprocess + +ret = subprocess.run(["git", "config", "rebase.instructionFormat"], capture_output=True) +if ret.returncode != 0 or ret.stdout.decode('ascii').strip() != "(%an <%ae>) %s": + print("Git is using the wrong rebase instruction format, reconfigure it.") + exit(1) + +try: + f = open(".git/rebase-merge/git-rebase-todo", "r") +except: + print("Initiate the rebase first!") + exit(1) +lines = list(s.strip("\r\n") for s in f.readlines()) +f.close() + +for i in range(len(lines)): + line = lines[i] + if line.startswith("#") or " Translated using Weblate " not in line: continue + pos = line.rfind("(") + lang = line[pos:] + author = line[line.find("("):line.rfind(")", 0, pos)+1] + # try to grab the next commit by the same author for the same language + for j in range(i+1, len(lines)): + if lines[j].startswith("#") or not lines[j].endswith(lang): continue + if author in lines[j]: + lines.insert(i+1, "f " + lines.pop(j)[5:]) + break + +with open(".git/rebase-merge/git-rebase-todo", "w") as f: + f.write("\n".join(lines) + "\n") +print("You can now continue with the rebase.") From b8d29ab0aff9fd141e9b59e941c47f4b2d3d5bfc Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 4 Apr 2020 00:16:18 +0200 Subject: [PATCH 047/424] Fix failing build due to translation file error --- po/es/minetest.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/po/es/minetest.po b/po/es/minetest.po index 03ea55523..eb20451a6 100644 --- a/po/es/minetest.po +++ b/po/es/minetest.po @@ -4549,7 +4549,7 @@ msgid "" msgstr "" "Tecla para activar/desactivar el modo cinemático.\n" "Véase http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3\n" +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" From 307d7376cf88f3ef30a73f4500971e3a77977068 Mon Sep 17 00:00:00 2001 From: LNJ Date: Sat, 4 Apr 2020 15:52:41 +0200 Subject: [PATCH 048/424] Fix 'the the' typos in comments (#9554) --- src/mapgen/mapgen_valleys.cpp | 2 +- src/script/common/c_internal.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mapgen/mapgen_valleys.cpp b/src/mapgen/mapgen_valleys.cpp index 2b8703fa5..ff908b7bb 100644 --- a/src/mapgen/mapgen_valleys.cpp +++ b/src/mapgen/mapgen_valleys.cpp @@ -390,7 +390,7 @@ int MapgenValleys::generateTerrain() // Rivers are placed where 'river' is negative if (river < 0.0f) { - // Use the the function -sqrt(1-x^2) which models a circle + // Use the function -sqrt(1-x^2) which models a circle float tr = river / river_size_factor + 1.0f; float depth = (river_depth_bed * std::sqrt(std::fmax(0.0f, 1.0f - tr * tr))); diff --git a/src/script/common/c_internal.cpp b/src/script/common/c_internal.cpp index a7dcf9b5f..b19af9f82 100644 --- a/src/script/common/c_internal.cpp +++ b/src/script/common/c_internal.cpp @@ -47,7 +47,7 @@ int script_exception_wrapper(lua_State *L, lua_CFunction f) /* * Note that we can't get tracebacks for LUA_ERRMEM or LUA_ERRERR (without * hacking Lua internals). For LUA_ERRMEM, this is because memory errors will - * not execute the the error handler, and by the time lua_pcall returns the + * not execute the error handler, and by the time lua_pcall returns the * execution stack will have already been unwound. For LUA_ERRERR, there was * another error while trying to generate a backtrace from a LUA_ERRRUN. It is * presumed there is an error with the internal Lua state and thus not possible From 86a0e991efff2fc616372f566a301352be28dae9 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Sat, 4 Apr 2020 16:17:15 +0200 Subject: [PATCH 049/424] Fix cursor still visible after closing formspec while on HyperText (#9583) --- src/gui/guiHyperText.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gui/guiHyperText.cpp b/src/gui/guiHyperText.cpp index 482b74f04..85e562dad 100644 --- a/src/gui/guiHyperText.cpp +++ b/src/gui/guiHyperText.cpp @@ -1054,12 +1054,14 @@ void GUIHyperText::checkHover(s32 X, s32 Y) } } +#ifndef HAVE_TOUCHSCREENGUI if (m_drawer.m_hovertag) RenderingEngine::get_raw_device()->getCursorControl()->setActiveIcon( gui::ECI_HAND); else RenderingEngine::get_raw_device()->getCursorControl()->setActiveIcon( gui::ECI_NORMAL); +#endif } bool GUIHyperText::OnEvent(const SEvent &event) @@ -1075,8 +1077,12 @@ bool GUIHyperText::OnEvent(const SEvent &event) if (event.EventType == EET_GUI_EVENT && event.GUIEvent.EventType == EGET_ELEMENT_LEFT) { m_drawer.m_hovertag = nullptr; - RenderingEngine::get_raw_device()->getCursorControl()->setActiveIcon( - gui::ECI_NORMAL); +#ifndef HAVE_TOUCHSCREENGUI + gui::ICursorControl *cursor_control = + RenderingEngine::get_raw_device()->getCursorControl(); + if (cursor_control->isVisible()) + cursor_control->setActiveIcon(gui::ECI_NORMAL); +#endif } if (event.EventType == EET_MOUSE_INPUT_EVENT) { From d5c441253669c9f88dea948d261e0d8934d28fb9 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 4 Apr 2020 21:27:23 +0200 Subject: [PATCH 050/424] Revert collision tweaks #9365 and #9327 (#9591) This reverts commit df74d369a395f0b99bd23fa3e7fb4c628c3df336. This reverts commit 908e76247922d4adf879b3996c4f75bdbb4e536d. Restores the original collision detection bugs to release 5.2.0 prior the large collision detection fix. --- src/collision.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/collision.cpp b/src/collision.cpp index a4c5454ae..a443be7ab 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -415,12 +415,12 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, Collision uncertainty radius Make it a bit larger than the maximum distance of movement */ - //f32 d = pos_max_d * 1.1f; + f32 d = pos_max_d * 1.1f; + // A fairly large value in here makes moving smoother + //f32 d = 0.15*BS; - - f32 d = 0.3f; // Temporary fix, any nonzero d causes collision glitches, the more the greater it is. - // ultimately it has to be determined if any uncertainty is involved, and if it is, eliminated - // and d & pos_max_d params removed from function calls. + // This should always apply, otherwise there are glitches + assert(d > pos_max_d); // invariant int loopcount = 0; From ea30b89d3fcaf599a4d4c4e2f12f01a1d59f1072 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 4 Apr 2020 21:27:30 +0200 Subject: [PATCH 051/424] Builtin: Make item entities glow less (#9594) minor adjustment to #9200 --- builtin/game/item_entity.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtin/game/item_entity.lua b/builtin/game/item_entity.lua index 1d66799f6..968daac97 100644 --- a/builtin/game/item_entity.lua +++ b/builtin/game/item_entity.lua @@ -59,7 +59,7 @@ core.register_entity(":__builtin:item", { local size = 0.2 + 0.1 * (count / max_count) ^ (1 / 3) local coll_height = size * 0.75 local def = core.registered_nodes[itemname] - local glow = def and def.light_source + local glow = def and math.floor(def.light_source / 2 + 0.5) self.object:set_properties({ is_visible = true, From 0eb3072819e500ea6cc70c7031079472ec2ea569 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Sun, 5 Apr 2020 15:04:41 +0200 Subject: [PATCH 052/424] Hypertext: Fix hovercolor not working in global tag (#9582) --- src/gui/guiHyperText.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gui/guiHyperText.cpp b/src/gui/guiHyperText.cpp index 85e562dad..e107b5a3e 100644 --- a/src/gui/guiHyperText.cpp +++ b/src/gui/guiHyperText.cpp @@ -107,7 +107,7 @@ ParsedText::ParsedText(const wchar_t *text) m_root_tag.style["underline"] = "false"; m_root_tag.style["halign"] = "left"; m_root_tag.style["color"] = "#EEEEEE"; - m_root_tag.style["hovercolor"] = m_root_tag.style["color"]; + m_root_tag.style["hovercolor"] = "#FF0000"; m_active_tags.push_front(&m_root_tag); m_style = m_root_tag.style; @@ -115,7 +115,6 @@ ParsedText::ParsedText(const wchar_t *text) // Default simple tags definitions StyleList style; - style["hovercolor"] = "#FF0000"; style["color"] = "#0000FF"; style["underline"] = "true"; m_elementtags["action"] = style; From e6e1c1281dd7c8d362120f289e76e9653f0713d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sat, 4 Apr 2020 04:50:12 +0000 Subject: [PATCH 053/424] Translated using Weblate (Turkish) Currently translated at 100.0% (1288 of 1288 strings) --- po/tr/minetest.po | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/po/tr/minetest.po b/po/tr/minetest.po index 5005ea098..92f5b7431 100644 --- a/po/tr/minetest.po +++ b/po/tr/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Turkish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-01-27 13:21+0000\n" -"Last-Translator: monolifed \n" +"PO-Revision-Date: 2020-04-04 06:53+0000\n" +"Last-Translator: Oğuz Ersen \n" "Language-Team: Turkish \n" "Language: tr\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -2179,16 +2179,16 @@ msgid "Bumpmapping" msgstr "Tümsek eşleme" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" -"Nodlar arasındaki, kamera 'yakın kırpma düzlem' uzaklığı, 0 ile 0,5 " +"Nodlar arasındaki, kamera 'yakın kırpma düzlem' uzaklığı, 0 ile 0,25 " "arasında.\n" -"Çoğu kullanıcının bunu değiştirmesi gerekmez.\n" +"Yalnızca GLES platformlarında çalışır. Çoğu kullanıcının bunu değiştirmesi " +"gerekmez.\n" "Artırma, zayıf GPU'larda görüntü bozulmalarını azaltabilir.\n" "0,1 = Öntanımlı, 0,25 = Zayıf tabletler için iyi değer." @@ -5280,7 +5280,6 @@ msgstr "" "Oyuncular katılındığında ve sunucu listesinde görüntülenecek sunucu adı." #: src/settings_translation_file.cpp -#, fuzzy msgid "Near plane" msgstr "Yakın kırpma düzlemi" From 7aec5f43bea48e92905a21ea14d92f2024bd6b18 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 4 Apr 2020 18:15:01 +0000 Subject: [PATCH 054/424] Translated using Weblate (German) Currently translated at 100.0% (1288 of 1288 strings) --- po/de/minetest.po | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/po/de/minetest.po b/po/de/minetest.po index 9cc758e0c..382f4dfbe 100644 --- a/po/de/minetest.po +++ b/po/de/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: German (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-03-06 05:32+0000\n" -"Last-Translator: Robin Townsend \n" +"PO-Revision-Date: 2020-04-04 19:54+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: German \n" "Language: de\n" @@ -132,7 +132,7 @@ msgstr "Keine harten Abhängigkeiten" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "Keine Modpack-Beschreibung verfügbar." +msgstr "Keine Beschreibung für das Modpack verfügbar." #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" @@ -481,7 +481,7 @@ msgstr "Online-Inhalte durchsuchen" #: builtin/mainmenu/tab_content.lua msgid "Content" -msgstr "Inhalt" +msgstr "Inhalte" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" @@ -1016,7 +1016,7 @@ msgstr "Debug-Infos und Profiler-Graph verborgen" #: src/client/game.cpp msgid "Debug info shown" -msgstr "Debug-Info angezeigt" +msgstr "Debug-Infos angezeigt" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" @@ -2205,7 +2205,6 @@ msgid "Bumpmapping" msgstr "Bumpmapping" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Only works on GLES platforms. Most users will not need to change this.\n" @@ -2213,8 +2212,9 @@ msgid "" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" "Distanz von der Kamera zur vorderen Clippingebene in Blöcken, zwischen 0 und " -"0.5.\n" -"Die meisten Benutzer müssen dies nicht ändern.\n" +"0.25.\n" +"Funktioniert nur auf GLES-Plattformen. Die meisten Benutzer müssen dies " +"nicht ändern.\n" "Eine Erhöhung dieses Wertes kann Artefakte auf schwächeren GPUs reduzieren.\n" "0.1 = Standard, 0.25 = Guter Wert für schwächere Tablets." @@ -5383,9 +5383,8 @@ msgstr "" "Spieler angezeigt." #: src/settings_translation_file.cpp -#, fuzzy msgid "Near plane" -msgstr "Vordere Clippingebene" +msgstr "Vordere Ebene" #: src/settings_translation_file.cpp msgid "Network" From 40dccc0f5441b7f6e684e2be98eb9810ae0ef2e9 Mon Sep 17 00:00:00 2001 From: BreadW Date: Sun, 5 Apr 2020 01:33:05 +0000 Subject: [PATCH 055/424] Translated using Weblate (Japanese) Currently translated at 100.0% (1288 of 1288 strings) --- po/ja/minetest.po | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/po/ja/minetest.po b/po/ja/minetest.po index 7d0542390..b335da6d5 100644 --- a/po/ja/minetest.po +++ b/po/ja/minetest.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Japanese (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-01-27 13:21+0000\n" +"PO-Revision-Date: 2020-04-05 05:27+0000\n" "Last-Translator: BreadW \n" "Language-Team: Japanese \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -2174,14 +2174,14 @@ msgid "Bumpmapping" msgstr "バンプマッピング" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" -"カメラと '近くのクリッピング面' の距離、0~0.5の間のノード数です。\n" +"カメラと '近クリッピング面' の距離、0~0.25の間のノード数で、\n" +"GLESプラットフォームでのみ機能します。\n" "ほとんどのユーザーはこれを変更する必要はありません。\n" "増加すると、低性能GPUでの画像の乱れを減らすことができます。\n" "0.1 = 既定値、0.25 = 低性能タブレットに適した値です。" @@ -5250,9 +5250,8 @@ msgid "" msgstr "プレイヤーが参加したときにサーバ一覧に表示されるサーバの名前。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Near plane" -msgstr "クリッピング面付近" +msgstr "近くの面" #: src/settings_translation_file.cpp msgid "Network" From 09b8f5d1be236990e86e800052b2c476cee22e7a Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sun, 5 Apr 2020 17:30:44 +0100 Subject: [PATCH 056/424] Update credits for 5.2.0 (#9593) --- builtin/mainmenu/tab_credits.lua | 81 ++++++++++++++------------------ 1 file changed, 34 insertions(+), 47 deletions(-) diff --git a/builtin/mainmenu/tab_credits.lua b/builtin/mainmenu/tab_credits.lua index 58db129fb..962d2a3b4 100644 --- a/builtin/mainmenu/tab_credits.lua +++ b/builtin/mainmenu/tab_credits.lua @@ -20,51 +20,31 @@ local core_developers = { "Perttu Ahola (celeron55) ", "sfan5 ", - "ShadowNinja ", "Nathanaël Courant (Nore/Ekdohibs) ", "Loic Blot (nerzhul/nrz) ", "paramat", "Auke Kok (sofar) ", - "rubenwardy ", + "Andrew Ward (rubenwardy) ", "Krock/SmallJoker ", "Lars Hofhansl ", } local active_contributors = { - "numberZero [Audiovisuals: meshgen]", - "stujones11 [Android UX improvements]", - "red-001 [CSM & Menu fixes]", - "Paul Ouellette (pauloue) [Docs, fixes]", - "Dániel Juhász (juhdanad) [Audiovisuals: lighting]", - "Hybrid Dog [API]", - "srifqi [Android]", - "Vincent Glize (Dumbeldor) [Cleanups, CSM APIs]", - "Ben Deutsch [Rendering, Fixes, SQLite auth]", - "Wuzzy [Translation, Slippery]", - "ANAND (ClobberXD) [Docs, Fixes]", - "Shara/Ezhh [Docs, Game API]", - "DTA7 [Fixes, mute key]", - "Thomas-S [Disconnected, Formspecs]", - "Raymoo [Tool Capabilities]", - "Elijah Duffy (octacian) [Mainmenu]", - "noob3167 [Fixes]", - "adelcoding1 [Formspecs]", - "adrido [Windows Installer, Formspecs]", - "Rui [Sound Pitch]", - "Jean-Patrick G (kilbith) [Audiovisuals]", - "Esteban (EXio4) [Cleanups]", - "Vaughan Lapsley (vlapsley) [Carpathian mapgen]", - "CoderForTheBetter [Add set_rotation]", - "Quentin Bazin (Unarelith) [Cleanups]", + "Hugues Ross [Formspecs]", "Maksim (MoNTE48) [Android]", - "Gaël-de-Sailly [Mapgen, pitch fly]", - "zeuner [Docs, Fixes]", - "ThomasMonroe314 (tre) [Fixes]", - "Rob Blanckaert (basicer) [Fixes]", - "Jozef Behran (osjc) [Fixes]", - "random-geek [Fixes]", - "Pedro Gimeno (pgimeno) [Fixes]", - "lisacvuk [Fixes]", + "DS [Formspecs]", + "pyrollo [Formspecs: Hypertext]", + "v-rob [Formspecs]", + "Jordach [set_sky]", + "random-geek [Formspecs]", + "Wuzzy [Pathfinder, builtin, translations]", + "ANAND (ClobberXD) [Fixes, per-player FOV]", + "Warr1024 [Fixes]", + "Paul Ouellette (pauloue) [Fixes, Script API]", + "Jean-Patrick G (kilbith) [Audiovisuals]", + "HybridDog [Script API]", + "dcbrwn [Object shading]", + "srifqi [Fixes]", } local previous_core_developers = { @@ -79,24 +59,31 @@ local previous_core_developers = { "Ryan Kwolek (kwolekr) ", "sapier", "Zeno", + "ShadowNinja ", } local previous_contributors = { - "Gregory Currie (gregorycu) [optimisation]", - "Diego Martínez (kaeza) ", - "T4im [Profiler]", - "TeTpaAka [Hand overriding, nametag colors]", - "Duane Robertson [MGValleys]", - "neoascetic [OS X Fixes]", - "TriBlade9 [Audiovisuals]", - "Jurgen Doser (doserj) [Fixes]", - "MirceaKitsune [Audiovisuals]", - "Guiseppe Bilotta (Oblomov) [Fixes]", - "matttpt [Fixes]", "Nils Dagsson Moskopp (erlehmann) [Minetest Logo]", + "Dániel Juhász (juhdanad) ", + "red-001 ", + "numberZero [Audiovisuals: meshgen]", + "Giuseppe Bilotta", + "MirceaKitsune ", + "Constantin Wenger (SpeedProg)", + "Ciaran Gultnieks (CiaranG)", + "stujones11 [Android UX improvements]", "Jeija [HTTP, particles]", - "bigfoot547 [CSM]", + "Vincent Glize (Dumbeldor) [Cleanups, CSM APIs]", + "Ben Deutsch [Rendering, Fixes, SQLite auth]", + "TeTpaAka [Hand overriding, nametag colors]", + "Rui [Sound Pitch]", + "Duane Robertson [MGValleys]", + "Raymoo [Tool Capabilities]", "Rogier [Fixes]", + "Gregory Currie (gregorycu) [optimisation]", + "TriBlade9 [Audiovisuals]", + "T4im [Profiler]", + "Jurgen Doser (doserj) ", } local function buildCreditList(source) From 24147d99c00b3b7677a2c2f8f47e036a6371d03b Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 5 Apr 2020 18:31:50 +0200 Subject: [PATCH 057/424] Bump version to 5.2.0 --- CMakeLists.txt | 2 +- build/android/build.gradle | 2 +- misc/net.minetest.minetest.appdata.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f36037ef..7613e684c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ set(VERSION_PATCH 0) set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string") # Change to false for releases -set(DEVELOPMENT_BUILD TRUE) +set(DEVELOPMENT_BUILD FALSE) set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") if(VERSION_EXTRA) diff --git a/build/android/build.gradle b/build/android/build.gradle index 3601434f5..fa74cd497 100644 --- a/build/android/build.gradle +++ b/build/android/build.gradle @@ -28,7 +28,7 @@ android { buildToolsVersion '29.0.2' defaultConfig { - versionCode 25 + versionCode 26 versionName "${System.env.VERSION_STR}.${versionCode}" minSdkVersion 14 targetSdkVersion 29 diff --git a/misc/net.minetest.minetest.appdata.xml b/misc/net.minetest.minetest.appdata.xml index f41762564..6239c7115 100644 --- a/misc/net.minetest.minetest.appdata.xml +++ b/misc/net.minetest.minetest.appdata.xml @@ -62,6 +62,6 @@ minetest sfan5@live.de - + From 528b162d9fb5acd517b3af1e5de79ec170903af8 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 5 Apr 2020 18:31:52 +0200 Subject: [PATCH 058/424] Continue with 5.3.0-dev --- CMakeLists.txt | 4 ++-- doc/client_lua_api.txt | 2 +- doc/menu_lua_api.txt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7613e684c..bf409c124 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,12 +16,12 @@ set(CLANG_MINIMUM_VERSION "3.4") # Also remember to set PROTOCOL_VERSION in network/networkprotocol.h when releasing set(VERSION_MAJOR 5) -set(VERSION_MINOR 2) +set(VERSION_MINOR 3) set(VERSION_PATCH 0) set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string") # Change to false for releases -set(DEVELOPMENT_BUILD FALSE) +set(DEVELOPMENT_BUILD TRUE) set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") if(VERSION_EXTRA) diff --git a/doc/client_lua_api.txt b/doc/client_lua_api.txt index c24de8d85..3612f851b 100644 --- a/doc/client_lua_api.txt +++ b/doc/client_lua_api.txt @@ -1,4 +1,4 @@ -Minetest Lua Client Modding API Reference 5.2.0 +Minetest Lua Client Modding API Reference 5.3.0 ================================================ * More information at * Developer Wiki: diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt index 4861ed0d9..df6424ad7 100644 --- a/doc/menu_lua_api.txt +++ b/doc/menu_lua_api.txt @@ -1,4 +1,4 @@ -Minetest Lua Mainmenu API Reference 5.2.0 +Minetest Lua Mainmenu API Reference 5.3.0 ========================================= Introduction From faedde08f96b671078d9d3273da468db3454713c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 6 Apr 2020 16:05:27 +0200 Subject: [PATCH 059/424] Some minor Lua API documentation clarifications (#9461) See #5854 --- doc/lua_api.txt | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index bd95062a5..d0b07a4b2 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1010,22 +1010,24 @@ The function of `param2` is determined by `paramtype2` in node definition. * Values range 0 - 179. The value stored in `param2` is multiplied by two to get the actual rotation in degrees of the node. * `paramtype2 = "meshoptions"` - * Only valid for "plantlike" drawtype. The value of `param2` becomes a - bitfield which can be used to change how the client draws plantlike nodes. - * Bits 0, 1 and 2 form a mesh selector. - Currently the following meshes are choosable: + * Only valid for "plantlike" drawtype. `param2` encodes the shape and + optional modifiers of the "plant". `param2` is a bitfield. + * Bits 0 to 2 select the shape. + Use only one of the values below: * 0 = a "x" shaped plant (ordinary plant) * 1 = a "+" shaped plant (just rotated 45 degrees) * 2 = a "*" shaped plant with 3 faces instead of 2 * 3 = a "#" shaped plant with 4 faces instead of 2 * 4 = a "#" shaped plant with 4 faces that lean outwards * 5-7 are unused and reserved for future meshes. - * Bits 3 through 7 are optional flags that can be combined and give these - effects: - * bit 3 (0x08) - Makes the plant slightly vary placement horizontally - * bit 4 (0x10) - Makes the plant mesh 1.4x larger - * bit 5 (0x20) - Moves each face randomly a small bit down (1/8 max) - * bits 6-7 are reserved for future use. + * Bits 3 to 7 are used to enable any number of optional modifiers. + Just add the corresponding value(s) below to `param2`: + * 8 - Makes the plant slightly vary placement horizontally + * 16 - Makes the plant mesh 1.4x larger + * 32 - Moves each face randomly a small bit down (1/8 max) + * values 64 and 128 (bits 6-7) are reserved for future use. + * Example: `param2 = 0` selects a normal "x" shaped plant + * Example: `param2 = 17` selects a "+" shaped plant, 1.4x larger (1+16) * `paramtype2 = "color"` * `param2` tells which color is picked from the palette. The palette should have 256 pixels. @@ -2332,8 +2334,8 @@ Elements * `name` fieldname data is transferred to Lua * `caption 1`...: name shown on top of tab * `current_tab`: index of selected tab 1... -* `transparent` (optional): show transparent -* `draw_border` (optional): draw border +* `transparent` (optional): if true, tabs are semi-transparent +* `draw_border` (optional): if true, draw a thin line at tab base ### `tabheader[,;;;,,...,;;;]` @@ -7020,6 +7022,7 @@ Used by `minetest.register_node`. -- node is deleted from the world or the drops are added. This is -- generally the result of either the node being dug or an attached node -- becoming detached. + -- oldmeta is the NodeMetaRef of the oldnode before deletion. -- drops is a table of ItemStacks, so any metadata to be preserved can -- be added directly to one or more of the dropped items. See -- "ItemStackMetaRef". @@ -7044,10 +7047,14 @@ Used by `minetest.register_node`. on_punch = function(pos, node, puncher, pointed_thing), -- default: minetest.node_punch + -- Called when puncher (an ObjectRef) punches the node at pos. -- By default calls minetest.register_on_punchnode callbacks. on_rightclick = function(pos, node, clicker, itemstack, pointed_thing), -- default: nil + -- Called when clicker (an ObjectRef) "rightclicks" + -- ("rightclick" here stands for the placement key) while pointing at + -- the node at pos with 'node' being the node table. -- itemstack will hold clicker's wielded item. -- Shall return the leftover itemstack. -- Note: pointed_thing can be nil, if a mod calls this function. From f91124a0c0d8c448b3d3d0767b3c8b2352c92d6e Mon Sep 17 00:00:00 2001 From: Wren Turkal Date: Mon, 6 Apr 2020 07:06:16 -0700 Subject: [PATCH 060/424] Add allowed_mapgens option in game.conf. (#9263) The game.conf has a disallowed_mapgens option. However, some games require a certain mapgen to be used, like the CTF plugin. This change adds an option to specify allowed mapgens so that the setting can be specified in a way that needn't be updated as map generators are added to Minetest. --- builtin/mainmenu/dlg_create_world.lua | 13 +++++++++++++ doc/lua_api.txt | 8 ++++++++ 2 files changed, 21 insertions(+) diff --git a/builtin/mainmenu/dlg_create_world.lua b/builtin/mainmenu/dlg_create_world.lua index 31d41d693..f28ae6960 100644 --- a/builtin/mainmenu/dlg_create_world.lua +++ b/builtin/mainmenu/dlg_create_world.lua @@ -39,11 +39,24 @@ local function create_world_formspec(dialogdata) local gamepath = game_by_gameidx.path local gameconfig = Settings(gamepath.."/game.conf") + local allowed_mapgens = (gameconfig:get("allowed_mapgens") or ""):split() + for key, value in pairs(allowed_mapgens) do + allowed_mapgens[key] = value:trim() + end + local disallowed_mapgens = (gameconfig:get("disallowed_mapgens") or ""):split() for key, value in pairs(disallowed_mapgens) do disallowed_mapgens[key] = value:trim() end + if #allowed_mapgens > 0 then + for i = #mapgens, 1, -1 do + if table.indexof(allowed_mapgens, mapgens[i]) == -1 then + table.remove(mapgens, i) + end + end + end + if disallowed_mapgens then for i = #mapgens, 1, -1 do if table.indexof(disallowed_mapgens, mapgens[i]) > 0 then diff --git a/doc/lua_api.txt b/doc/lua_api.txt index d0b07a4b2..ce9fc61b2 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -64,9 +64,17 @@ The game directory can contain the following files: * `game.conf`, with the following keys: * `name`: Required, human readable name e.g. `name = Minetest` * `description`: Short description to be shown in the content tab + * `allowed_mapgens = ` + e.g. `allowed_mapgens = v5,v6,flat` + Mapgens not in this list are removed from the list of mapgens for + the game. + If not specified, all mapgens are allowed. * `disallowed_mapgens = ` e.g. `disallowed_mapgens = v5,v6,flat` These mapgens are removed from the list of mapgens for the game. + When both `allowed_mapgens` and `disallowed_mapgens` are + specified, `allowed_mapgens` is applied before + `disallowed_mapgens`. * `minetest.conf`: Used to set default settings when running this game. * `settingtypes.txt`: From 661b4a1837067082a76114c08a7aebec83bc2b58 Mon Sep 17 00:00:00 2001 From: Danila Shutov Date: Mon, 6 Apr 2020 17:06:40 +0300 Subject: [PATCH 061/424] Add tone mapping for entities (#9521) fixes #9301 --- .../object_shader/opengl_fragment.glsl | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/client/shaders/object_shader/opengl_fragment.glsl b/client/shaders/object_shader/opengl_fragment.glsl index bb9e40637..32f3e974e 100644 --- a/client/shaders/object_shader/opengl_fragment.glsl +++ b/client/shaders/object_shader/opengl_fragment.glsl @@ -25,6 +25,38 @@ const float BS = 10.0; const float fogStart = FOG_START; const float fogShadingParameter = 1 / ( 1 - fogStart); +#ifdef ENABLE_TONE_MAPPING + +/* Hable's UC2 Tone mapping parameters + A = 0.22; + B = 0.30; + C = 0.10; + D = 0.20; + E = 0.01; + F = 0.30; + W = 11.2; + equation used: ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F +*/ + +vec3 uncharted2Tonemap(vec3 x) +{ + return ((x * (0.22 * x + 0.03) + 0.002) / (x * (0.22 * x + 0.3) + 0.06)) - 0.03333; +} + +vec4 applyToneMapping(vec4 color) +{ + color = vec4(pow(color.rgb, vec3(2.2)), color.a); + const float gamma = 1.6; + const float exposureBias = 5.5; + color.rgb = uncharted2Tonemap(exposureBias * color.rgb); + // Precalculated white_scale from + //vec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W)); + vec3 whiteScale = vec3(1.036015346); + color.rgb *= whiteScale; + return vec4(pow(color.rgb, vec3(1.0 / gamma)), color.a); +} +#endif + void get_texture_flags() { vec4 flags = texture2D(textureFlags, vec2(0.0, 0.0)); @@ -114,6 +146,11 @@ void main(void) vec4 col = vec4(color.rgb, base.a); col.rgb *= emissiveColor.rgb * vIDiff; + +#ifdef ENABLE_TONE_MAPPING + col = applyToneMapping(col); +#endif + // Due to a bug in some (older ?) graphics stacks (possibly in the glsl compiler ?), // the fog will only be rendered correctly if the last operation before the // clamp() is an addition. Else, the clamp() seems to be ignored. From f45ba78a72d86fd481a2d2064ac63858d69ad7ee Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 6 Apr 2020 16:54:12 +0200 Subject: [PATCH 062/424] Allow relative directories for `screenshot_path`, tweak default path (#9122) This will likely be more intuitive for users and should play better with sandboxed distributions such as Flatpak. In addition, the screenshot directory will now be created if it doesn't exist already. --- builtin/settingtypes.txt | 5 +++-- src/client/client.cpp | 13 ++++++++++++- src/defaultsettings.cpp | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 1f2889b45..a6cf8de60 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -903,8 +903,9 @@ fallback_font_shadow_alpha (Fallback font shadow alpha) int 128 0 255 # This font will be used for certain languages or if the default font is unavailable. fallback_font_path (Fallback font path) filepath fonts/DroidSansFallbackFull.ttf -# Path to save screenshots at. -screenshot_path (Screenshot folder) path +# Path to save screenshots at. Can be an absolute or relative path. +# The folder will be created if it doesn't already exist. +screenshot_path (Screenshot folder) path screenshots # Format of screenshots. screenshot_format (Screenshot format) enum png png,jpg,bmp,pcx,ppm,tga diff --git a/src/client/client.cpp b/src/client/client.cpp index c6d28ce80..e15391dde 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -1780,13 +1780,24 @@ void Client::makeScreenshot() char timetstamp_c[64]; strftime(timetstamp_c, sizeof(timetstamp_c), "%Y%m%d_%H%M%S", tm); - std::string filename_base = g_settings->get("screenshot_path") + std::string screenshot_dir; + + if (fs::IsPathAbsolute(g_settings->get("screenshot_path"))) + screenshot_dir = g_settings->get("screenshot_path"); + else + screenshot_dir = porting::path_user + DIR_DELIM + g_settings->get("screenshot_path"); + + std::string filename_base = screenshot_dir + DIR_DELIM + std::string("screenshot_") + std::string(timetstamp_c); std::string filename_ext = "." + g_settings->get("screenshot_format"); std::string filename; + // Create the directory if it doesn't already exist. + // Otherwise, saving the screenshot would fail. + fs::CreateDir(screenshot_dir); + u32 quality = (u32)g_settings->getS32("screenshot_quality"); quality = MYMIN(MYMAX(quality, 0), 100) / 100.0 * 255; diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 472522bf4..b6b1ce1f2 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -48,7 +48,7 @@ void set_default_settings(Settings *settings) settings->setDefault("pitch_move", "false"); settings->setDefault("fast_move", "false"); settings->setDefault("noclip", "false"); - settings->setDefault("screenshot_path", "."); + settings->setDefault("screenshot_path", "screenshots"); settings->setDefault("screenshot_format", "png"); settings->setDefault("screenshot_quality", "0"); settings->setDefault("client_unload_unused_data_timeout", "600"); From 143a37e947d809ac68da56bac0f61cf8b5fd0d46 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Mon, 6 Apr 2020 15:54:27 +0100 Subject: [PATCH 063/424] Clarify use of minetest.request_insecure_environment() (#9597) --- doc/lua_api.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index ce9fc61b2..6ba87d619 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -5413,8 +5413,8 @@ Misc. insecure functions if the calling mod has been listed as trusted in the `secure.trusted_mods` setting or security is disabled, otherwise returns `nil`. - * Only works at init time and must be called from the mod's main scope (not - from a function). + * Only works at init time and must be called from the mod's main scope + (ie: the init.lua of the mod, not from another Lua file or within a function). * **DO NOT ALLOW ANY OTHER MODS TO ACCESS THE RETURNED ENVIRONMENT, STORE IT IN A LOCAL VARIABLE!** @@ -6002,7 +6002,7 @@ object you are working with still exists. * `sky_color`: A table containing the following values, alpha is ignored: * `day_sky`: ColorSpec, for the top half of the `"regular"` sky during the day. (default: `#8cbafa`) - * `day_horizon`: ColorSpec, for the bottom half of the + * `day_horizon`: ColorSpec, for the bottom half of the `"regular"` sky during the day. (default: `#9bc1f0`) * `dawn_sky`: ColorSpec, for the top half of the `"regular"` sky during dawn/sunset. (default: `#b4bafa`) @@ -6020,7 +6020,7 @@ object you are working with still exists. sky during the night. (default: `#4090ff`) The resulting sky color will be a dark version of the ColorSpec. Warning: The darkening of the ColorSpec is subject to change. - * `indoors`: ColorSpec, for when you're either indoors or + * `indoors`: ColorSpec, for when you're either indoors or underground. Only applies to the `"regular"` sky. (default: `#646464`) * `fog_sun_tint`: ColorSpec, changes the fog tinting for the sun @@ -6064,7 +6064,7 @@ object you are working with still exists. * `parameters` is a table with the following optional fields: * `visible`: Boolean for whether the stars are visible. (default: `true`) - * `count`: Integer number to set the number of stars in + * `count`: Integer number to set the number of stars in the skybox. Only applies to `"skybox"` and `"regular"` sky types. (default: `1000`) * `star_color`: ColorSpec, sets the colors of the stars, From 3494475df108e3401c6c8463a0aeae0f227fd1fa Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 8 Apr 2020 20:12:58 +0200 Subject: [PATCH 064/424] Miscellaneous networking improvements (#9611) fixes #2862 --- src/network/clientopcodes.cpp | 18 +++++++++++--- src/network/connection.cpp | 35 ++++++++++++++++---------- src/network/connection.h | 16 ++++++------ src/network/connectionthreads.cpp | 41 +++++++++++++++++++++---------- src/network/serveropcodes.cpp | 20 +++++++++++---- 5 files changed, 87 insertions(+), 43 deletions(-) diff --git a/src/network/clientopcodes.cpp b/src/network/clientopcodes.cpp index 431455b76..0f20047c0 100644 --- a/src/network/clientopcodes.cpp +++ b/src/network/clientopcodes.cpp @@ -126,6 +126,16 @@ const ToClientCommandHandler toClientCommandTable[TOCLIENT_NUM_MSG_TYPES] = const static ServerCommandFactory null_command_factory = { "TOSERVER_NULL", 0, false }; +/* + Channels used for Client -> Server communication + 2: Notifications back to the server (e.g. GOTBLOCKS) + 1: Init and Authentication + 0: everything else + + Packet order is only guaranteed inside a channel, so packets that operate on + the same objects are *required* to be in the same channel. +*/ + const ServerCommandFactory serverCommandFactoryTable[TOSERVER_NUM_MSG_TYPES] = { null_command_factory, // 0x00 @@ -143,7 +153,7 @@ const ServerCommandFactory serverCommandFactoryTable[TOSERVER_NUM_MSG_TYPES] = null_command_factory, // 0x0c null_command_factory, // 0x0d null_command_factory, // 0x0e - null_command_factory, // 0x0F + null_command_factory, // 0x0f null_command_factory, // 0x10 { "TOSERVER_INIT2", 1, true }, // 0x11 null_command_factory, // 0x12 @@ -186,7 +196,7 @@ const ServerCommandFactory serverCommandFactoryTable[TOSERVER_NUM_MSG_TYPES] = { "TOSERVER_PLAYERITEM", 0, true }, // 0x37 { "TOSERVER_RESPAWN", 0, true }, // 0x38 { "TOSERVER_INTERACT", 0, true }, // 0x39 - { "TOSERVER_REMOVED_SOUNDS", 1, true }, // 0x3a + { "TOSERVER_REMOVED_SOUNDS", 2, true }, // 0x3a { "TOSERVER_NODEMETA_FIELDS", 0, true }, // 0x3b { "TOSERVER_INVENTORY_FIELDS", 0, true }, // 0x3c null_command_factory, // 0x3d @@ -194,8 +204,8 @@ const ServerCommandFactory serverCommandFactoryTable[TOSERVER_NUM_MSG_TYPES] = null_command_factory, // 0x3f { "TOSERVER_REQUEST_MEDIA", 1, true }, // 0x40 null_command_factory, // 0x41 - { "TOSERVER_BREATH", 0, true }, // 0x42 old TOSERVER_BREATH. Ignored by servers - { "TOSERVER_CLIENT_READY", 0, true }, // 0x43 + null_command_factory, // 0x42 + { "TOSERVER_CLIENT_READY", 1, true }, // 0x43 null_command_factory, // 0x44 null_command_factory, // 0x45 null_command_factory, // 0x46 diff --git a/src/network/connection.cpp b/src/network/connection.cpp index 36124ce3c..15eda7725 100644 --- a/src/network/connection.cpp +++ b/src/network/connection.cpp @@ -924,7 +924,7 @@ UDPPeer::UDPPeer(u16 a_id, Address a_address, Connection* connection) : Peer(a_address,a_id,connection) { for (Channel &channel : channels) - channel.setWindowSize(g_settings->getU16("max_packets_per_iteration")); + channel.setWindowSize(START_RELIABLE_WINDOW_SIZE); } bool UDPPeer::getAddress(MTProtocols type,Address& toset) @@ -975,22 +975,29 @@ void UDPPeer::PutReliableSendCommand(ConnectionCommand &c, if (m_pending_disconnect) return; - if ( channels[c.channelnum].queued_commands.empty() && + Channel &chan = channels[c.channelnum]; + + if (chan.queued_commands.empty() && /* don't queue more packets then window size */ - (channels[c.channelnum].queued_reliables.size() - < (channels[c.channelnum].getWindowSize()/2))) { + (chan.queued_reliables.size() < chan.getWindowSize() / 2)) { LOG(dout_con<getDesc() <<" processing reliable command for peer id: " << c.peer_id <<" data size: " << c.data.getSize() << std::endl); if (!processReliableSendCommand(c,max_packet_size)) { - channels[c.channelnum].queued_commands.push_back(c); + chan.queued_commands.push_back(c); } } else { LOG(dout_con<getDesc() <<" Queueing reliable command for peer id: " << c.peer_id <<" data size: " << c.data.getSize() <= chan.getWindowSize() / 2) { + LOG(derr_con << m_connection->getDesc() + << "Possible packet stall to peer id: " << c.peer_id + << " queued_commands=" << chan.queued_commands.size() + << std::endl); + } } } @@ -1001,6 +1008,8 @@ bool UDPPeer::processReliableSendCommand( if (m_pending_disconnect) return true; + Channel &chan = channels[c.channelnum]; + u32 chunksize_max = max_packet_size - BASE_HEADER_SIZE - RELIABLE_HEADER_SIZE; @@ -1008,13 +1017,13 @@ bool UDPPeer::processReliableSendCommand( sanity_check(c.data.getSize() < MAX_RELIABLE_WINDOW_SIZE*512); std::list> originals; - u16 split_sequence_number = channels[c.channelnum].readNextSplitSeqNum(); + u16 split_sequence_number = chan.readNextSplitSeqNum(); if (c.raw) { originals.emplace_back(c.data); } else { makeAutoSplitPacket(c.data, chunksize_max,split_sequence_number, &originals); - channels[c.channelnum].setNextSplitSeqNum(split_sequence_number); + chan.setNextSplitSeqNum(split_sequence_number); } bool have_sequence_number = true; @@ -1023,7 +1032,7 @@ bool UDPPeer::processReliableSendCommand( volatile u16 initial_sequence_number = 0; for (SharedBuffer &original : originals) { - u16 seqnum = channels[c.channelnum].getOutgoingSequenceNumber(have_sequence_number); + u16 seqnum = chan.getOutgoingSequenceNumber(have_sequence_number); /* oops, we don't have enough sequence numbers to send this packet */ if (!have_sequence_number) @@ -1055,10 +1064,10 @@ bool UDPPeer::processReliableSendCommand( // << " channel: " << (c.channelnum&0xFF) // << " seqnum: " << readU16(&p.data[BASE_HEADER_SIZE+1]) // << std::endl) - channels[c.channelnum].queued_reliables.push(p); + chan.queued_reliables.push(p); pcount++; } - sanity_check(channels[c.channelnum].queued_reliables.size() < 0xFFFF); + sanity_check(chan.queued_reliables.size() < 0xFFFF); return true; } @@ -1073,7 +1082,7 @@ bool UDPPeer::processReliableSendCommand( toadd.pop(); bool successfully_put_back_sequence_number - = channels[c.channelnum].putBackSequenceNumber( + = chan.putBackSequenceNumber( (initial_sequence_number+toadd.size() % (SEQNUM_MAX+1))); FATAL_ERROR_IF(!successfully_put_back_sequence_number, "error"); @@ -1081,7 +1090,7 @@ bool UDPPeer::processReliableSendCommand( // DO NOT REMOVE n_queued! It avoids a deadlock of async locked // 'log_message_mutex' and 'm_list_mutex'. - u32 n_queued = channels[c.channelnum].outgoing_reliables_sent.size(); + u32 n_queued = chan.outgoing_reliables_sent.size(); LOG(dout_con<getDesc() << " Windowsize exceeded on reliable sending " diff --git a/src/network/connection.h b/src/network/connection.h index 0b12bf701..85f021c4c 100644 --- a/src/network/connection.h +++ b/src/network/connection.h @@ -141,7 +141,6 @@ private: === NOTES === A packet is sent through a channel to a peer with a basic header: -TODO: Should we have a receiver_peer_id also? Header (7 bytes): [0] u32 protocol_id [4] session_t sender_peer_id @@ -152,8 +151,7 @@ sender_peer_id: value 1 (PEER_ID_SERVER) is reserved for server these constants are defined in constants.h channel: - The lower the number, the higher the priority is. - Only channels 0, 1 and 2 exist. + Channel numbers have no intrinsic meaning. Currently only 0, 1, 2 exist. */ #define BASE_HEADER_SIZE 7 #define CHANNEL_COUNT 3 @@ -386,12 +384,14 @@ struct ConnectionCommand } }; -/* maximum window size to use, 0xFFFF is theoretical maximum don't think about +/* maximum window size to use, 0xFFFF is theoretical maximum. don't think about * touching it, the less you're away from it the more likely data corruption * will occur */ #define MAX_RELIABLE_WINDOW_SIZE 0x8000 - /* starting value for window size */ +/* starting value for window size */ +#define START_RELIABLE_WINDOW_SIZE 0x400 +/* minimum value for window size */ #define MIN_RELIABLE_WINDOW_SIZE 0x40 class Channel @@ -555,15 +555,15 @@ class Peer { bool isTimedOut(float timeout); - unsigned int m_increment_packets_remaining = 9; - unsigned int m_increment_bytes_remaining = 0; + unsigned int m_increment_packets_remaining = 0; virtual u16 getNextSplitSequenceNumber(u8 channel) { return 0; }; virtual void setNextSplitSequenceNumber(u8 channel, u16 seqnum) {}; virtual SharedBuffer addSplitPacket(u8 channel, const BufferedPacket &toadd, bool reliable) { - fprintf(stderr,"Peer: addSplitPacket called, this is supposed to be never called!\n"); + errorstream << "Peer::addSplitPacket called," + << " this is supposed to be never called!" << std::endl; return SharedBuffer(0); }; diff --git a/src/network/connectionthreads.cpp b/src/network/connectionthreads.cpp index f8b58c025..48a4f51ab 100644 --- a/src/network/connectionthreads.cpp +++ b/src/network/connectionthreads.cpp @@ -73,6 +73,7 @@ ConnectionSendThread::ConnectionSendThread(unsigned int max_packet_size, m_timeout(timeout), m_max_data_packets_per_iteration(g_settings->getU16("max_packets_per_iteration")) { + SANITY_CHECK(m_max_data_packets_per_iteration > 1); } void *ConnectionSendThread::run() @@ -107,8 +108,13 @@ void *ConnectionSendThread::run() curtime = porting::getTimeMs(); float dtime = CALC_DTIME(lasttime, curtime); - /* first do all the reliable stuff */ + /* first resend timed-out packets */ runTimeouts(dtime); + if (m_iteration_packets_avaialble == 0) { + LOG(warningstream << m_connection->getDesc() + << " Packet quota used up after re-sending packets, " + << "max=" << m_max_data_packets_per_iteration << std::endl); + } /* translate commands to packets */ ConnectionCommand c = m_connection->m_command_queue.pop_frontNoEx(0); @@ -121,7 +127,7 @@ void *ConnectionSendThread::run() c = m_connection->m_command_queue.pop_frontNoEx(0); } - /* send non reliable packets */ + /* send queued packets */ sendPackets(dtime); END_DEBUG_EXCEPTION_HANDLER @@ -644,6 +650,9 @@ void ConnectionSendThread::sendPackets(float dtime) std::list pendingDisconnect; std::map pending_unreliable; + const unsigned int peer_packet_quota = m_iteration_packets_avaialble + / MYMAX(peerIds.size(), 1); + for (session_t peerId : peerIds) { PeerHelper peer = m_connection->getPeerNoEx(peerId); //peer may have been removed @@ -653,8 +662,7 @@ void ConnectionSendThread::sendPackets(float dtime) << std::endl); continue; } - peer->m_increment_packets_remaining = - m_iteration_packets_avaialble / m_connection->m_peers.size(); + peer->m_increment_packets_remaining = peer_packet_quota; UDPPeer *udpPeer = dynamic_cast(&peer); @@ -751,23 +759,30 @@ void ConnectionSendThread::sendPackets(float dtime) } /* send acks immediately */ - if (packet.ack) { + if (packet.ack || peer->m_increment_packets_remaining > 0 || stopRequested()) { rawSendAsPacket(packet.peer_id, packet.channelnum, packet.data, packet.reliable); - peer->m_increment_packets_remaining = - MYMIN(0, peer->m_increment_packets_remaining--); - } else if ( - (peer->m_increment_packets_remaining > 0) || - (stopRequested())) { - rawSendAsPacket(packet.peer_id, packet.channelnum, - packet.data, packet.reliable); - peer->m_increment_packets_remaining--; + if (peer->m_increment_packets_remaining > 0) + peer->m_increment_packets_remaining--; } else { m_outgoing_queue.push(packet); pending_unreliable[packet.peer_id] = true; } } + if (peer_packet_quota > 0) { + for (session_t peerId : peerIds) { + PeerHelper peer = m_connection->getPeerNoEx(peerId); + if (!peer) + continue; + if (peer->m_increment_packets_remaining == 0) { + LOG(warningstream << m_connection->getDesc() + << " Packet quota used up for peer_id=" << peerId + << ", was " << peer_packet_quota << " pkts" << std::endl); + } + } + } + for (session_t peerId : pendingDisconnect) { if (!pending_unreliable[peerId]) { m_connection->deletePeer(peerId, false); diff --git a/src/network/serveropcodes.cpp b/src/network/serveropcodes.cpp index cca2e56ea..6ee4ff256 100644 --- a/src/network/serveropcodes.cpp +++ b/src/network/serveropcodes.cpp @@ -111,6 +111,16 @@ const ToServerCommandHandler toServerCommandTable[TOSERVER_NUM_MSG_TYPES] = const static ClientCommandFactory null_command_factory = { "TOCLIENT_NULL", 0, false }; +/* + Channels used for Server -> Client communication + 2: Bulk data (mapblocks, media, ...) + 1: HUD packets + 0: everything else + + Packet order is only guaranteed inside a channel, so packets that operate on + the same objects are *required* to be in the same channel. +*/ + const ClientCommandFactory clientCommandFactoryTable[TOCLIENT_NUM_MSG_TYPES] = { null_command_factory, // 0x00 @@ -163,7 +173,7 @@ const ClientCommandFactory clientCommandFactoryTable[TOCLIENT_NUM_MSG_TYPES] = { "TOCLIENT_CHAT_MESSAGE", 0, true }, // 0x2F null_command_factory, // 0x30 { "TOCLIENT_ACTIVE_OBJECT_REMOVE_ADD", 0, true }, // 0x31 - { "TOCLIENT_ACTIVE_OBJECT_MESSAGES", 0, true }, // 0x32 Special packet, sent by 0 (rel) and 1 (unrel) channel + { "TOCLIENT_ACTIVE_OBJECT_MESSAGES", 0, true }, // 0x32 (may be sent as unrel over channel 1 too) { "TOCLIENT_HP", 0, true }, // 0x33 { "TOCLIENT_MOVE_PLAYER", 0, true }, // 0x34 { "TOCLIENT_ACCESS_DENIED_LEGACY", 0, true }, // 0x35 @@ -176,7 +186,7 @@ const ClientCommandFactory clientCommandFactoryTable[TOCLIENT_NUM_MSG_TYPES] = { "TOCLIENT_ANNOUNCE_MEDIA", 0, true }, // 0x3C { "TOCLIENT_ITEMDEF", 0, true }, // 0x3D null_command_factory, // 0x3E - { "TOCLIENT_PLAY_SOUND", 0, true }, // 0x3f + { "TOCLIENT_PLAY_SOUND", 0, true }, // 0x3f (may be sent as unrel too) { "TOCLIENT_STOP_SOUND", 0, true }, // 0x40 { "TOCLIENT_PRIVILEGES", 0, true }, // 0x41 { "TOCLIENT_INVENTORY_FORMSPEC", 0, true }, // 0x42 @@ -188,9 +198,9 @@ const ClientCommandFactory clientCommandFactoryTable[TOCLIENT_NUM_MSG_TYPES] = null_command_factory, // 0x48 { "TOCLIENT_HUDADD", 1, true }, // 0x49 { "TOCLIENT_HUDRM", 1, true }, // 0x4a - { "TOCLIENT_HUDCHANGE", 0, true }, // 0x4b - { "TOCLIENT_HUD_SET_FLAGS", 0, true }, // 0x4c - { "TOCLIENT_HUD_SET_PARAM", 0, true }, // 0x4d + { "TOCLIENT_HUDCHANGE", 1, true }, // 0x4b + { "TOCLIENT_HUD_SET_FLAGS", 1, true }, // 0x4c + { "TOCLIENT_HUD_SET_PARAM", 1, true }, // 0x4d { "TOCLIENT_BREATH", 0, true }, // 0x4e { "TOCLIENT_SET_SKY", 0, true }, // 0x4f { "TOCLIENT_OVERRIDE_DAY_NIGHT_RATIO", 0, true }, // 0x50 From de73f989eb1397b1103236031fd91309b294583c Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 8 Apr 2020 20:13:23 +0200 Subject: [PATCH 065/424] Overall improvements to log messages (#9598) Hide some unnecessarily verbose ones behind --trace or disable them entirely. Remove duplicate ones. Improve their contents in some places. --- src/client/client.cpp | 40 ++++++++++++++++++++--------- src/client/client.h | 19 +++----------- src/client/content_cao.cpp | 6 ++--- src/client/fontengine.cpp | 2 +- src/client/game.cpp | 3 +-- src/client/renderingengine.cpp | 20 ++------------- src/client/sound_openal.cpp | 16 +++++++----- src/client/tile.cpp | 9 ++++--- src/content/subgames.cpp | 2 +- src/content_sao.cpp | 12 ++++----- src/craftdef.cpp | 4 +-- src/emerge.cpp | 1 - src/itemdef.cpp | 6 ++--- src/main.cpp | 8 +----- src/map.cpp | 8 +++--- src/network/clientpackethandler.cpp | 8 +++--- src/network/connectionthreads.cpp | 3 +-- src/nodedef.cpp | 2 +- src/script/cpp_api/s_env.cpp | 2 +- src/script/lua_api/l_item.cpp | 1 - src/server.cpp | 17 ++++++------ src/server/mods.cpp | 9 +++---- 22 files changed, 87 insertions(+), 111 deletions(-) diff --git a/src/client/client.cpp b/src/client/client.cpp index e15391dde..c9cd24cb3 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -60,6 +60,20 @@ with this program; if not, write to the Free Software Foundation, Inc., extern gui::IGUIEnvironment* guienv; +/* + Utility classes +*/ + +void PacketCounter::print(std::ostream &o) const +{ + for (const auto &it : m_packets) { + auto name = it.first >= TOCLIENT_NUM_MSG_TYPES ? "?" + : toClientCommandTable[it.first].name; + o << "cmd " << it.first << " (" << name << ") count " + << it.second << std::endl; + } +} + /* Client */ @@ -336,12 +350,12 @@ void Client::step(float dtime) { float &counter = m_packetcounter_timer; counter -= dtime; - if(counter <= 0.0) + if(counter <= 0.0f) { - counter = 20.0; + counter = 30.0f; infostream << "Client packetcounter (" << m_packetcounter_timer - << "):"<getFloat("server_map_save_interval"); + int n = 0; for (std::unordered_map::const_iterator it = m_mod_storages.begin(); it != m_mod_storages.end(); ++it) { if (it->second->isModified()) { it->second->save(getModStoragePath()); + n++; } } + if (n > 0) + infostream << "Saved " << n << " modified mod storages." << std::endl; } // Write server map @@ -653,8 +670,8 @@ bool Client::loadMedia(const std::string &data, const std::string &filename) }; name = removeStringEnd(filename, image_ext); if (!name.empty()) { - verbosestream<<"Client: Attempting to load image " - <<"file \""<loadSoundData(name, data); - return true; + TRACESTREAM(<< "Client: Attempting to load sound " + << "file \"" << filename << "\"" << std::endl); + return m_sound->loadSoundData(name, data); } const char *model_ext[] = { @@ -714,8 +730,8 @@ bool Client::loadMedia(const std::string &data, const std::string &filename) }; name = removeStringEnd(filename, translate_ext); if (!name.empty()) { - verbosestream << "Client: Loading translation: " - << "\"" << filename << "\"" << std::endl; + TRACESTREAM(<< "Client: Loading translation: " + << "\"" << filename << "\"" << std::endl); g_translations->loadTranslation(data); return true; } diff --git a/src/client/client.h b/src/client/client.h index 1291b944c..eea78d456 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -82,30 +82,19 @@ public: void add(u16 command) { - std::map::iterator n = m_packets.find(command); - if(n == m_packets.end()) - { + auto n = m_packets.find(command); + if (n == m_packets.end()) m_packets[command] = 1; - } else - { n->second++; - } } void clear() { - for (auto &m_packet : m_packets) { - m_packet.second = 0; - } + m_packets.clear(); } - void print(std::ostream &o) - { - for (const auto &m_packet : m_packets) { - o << "cmd "<< m_packet.first <<" count "<< m_packet.second << std::endl; - } - } + void print(std::ostream &o) const; private: // command, count diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index d148df522..8509eccb5 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -576,9 +576,10 @@ void GenericCAO::addToScene(ITextureSource *tsrc) m_visuals_expired = false; - if (!m_prop.is_visible) { + if (!m_prop.is_visible) return; - } + + infostream << "GenericCAO::addToScene(): " << m_prop.visual << std::endl; if (m_enable_shaders) { IShaderSource *shader_source = m_client->getShaderSource(); @@ -593,7 +594,6 @@ void GenericCAO::addToScene(ITextureSource *tsrc) } auto grabMatrixNode = [this] { - infostream << "GenericCAO::addToScene(): " << m_prop.visual << std::endl; m_matrixnode = RenderingEngine::get_scene_manager()-> addDummyTransformationSceneNode(); m_matrixnode->grab(); diff --git a/src/client/fontengine.cpp b/src/client/fontengine.cpp index 2b5841cd8..61d52cc2f 100644 --- a/src/client/fontengine.cpp +++ b/src/client/fontengine.cpp @@ -239,7 +239,7 @@ void FontEngine::updateSkin() FATAL_ERROR_IF(font == NULL, "Could not create/get font"); u32 text_height = font->getDimension(L"Hello, world!").Height; - infostream << "text_height=" << text_height << std::endl; + infostream << "FontEngine: measured text_height=" << text_height << std::endl; } /******************************************************************************/ diff --git a/src/client/game.cpp b/src/client/game.cpp index 0201ded69..437cc7871 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -2010,7 +2010,6 @@ void Game::processItemSelection(u16 *new_playeritem) for (u16 i = 0; i <= max_item; i++) { if (wasKeyDown((GameKeyType) (KeyType::SLOT_1 + i))) { *new_playeritem = i; - infostream << "Selected item: " << new_playeritem << std::endl; break; } } @@ -2039,7 +2038,7 @@ void Game::openInventory() if (!player || !player->getCAO()) return; - infostream << "the_game: " << "Launching inventory" << std::endl; + infostream << "Game: Launching inventory" << std::endl; PlayerInventoryFormSource *fs_src = new PlayerInventoryFormSource(client); diff --git a/src/client/renderingengine.cpp b/src/client/renderingengine.cpp index 6e6509eeb..8b7bbf328 100644 --- a/src/client/renderingengine.cpp +++ b/src/client/renderingengine.cpp @@ -226,27 +226,17 @@ bool RenderingEngine::setupTopLevelWindow(const std::string &name) { // FIXME: It would make more sense for there to be a switch of some // sort here that would call the correct toplevel setup methods for - // the environment Minetest is running in but for now not deviating - // from the original pattern. + // the environment Minetest is running in. /* Setting Xorg properties for the top level window */ setupTopLevelXorgWindow(name); - /* Done with Xorg properties */ /* Setting general properties for the top level window */ verbosestream << "Client: Configuring general top level" << " window properties" << std::endl; - bool result = setWindowIcon(); - verbosestream << "Client: Finished configuring general top level" - << " window properties" - << std::endl; - /* Done with general properties */ - - // FIXME: setWindowIcon returns a bool result but it is unused. - // For now continue to return this result. return result; } @@ -262,7 +252,7 @@ void RenderingEngine::setupTopLevelXorgWindow(const std::string &name) return; } - verbosestream << "Client: Configuring Xorg specific top level" + verbosestream << "Client: Configuring X11-specific top level" << " window properties" << std::endl; @@ -309,8 +299,6 @@ void RenderingEngine::setupTopLevelXorgWindow(const std::string &name) Atom NET_WM_PID = XInternAtom(x11_dpl, "_NET_WM_PID", false); pid_t pid = getpid(); - infostream << "Client: PID is '" << static_cast(pid) << "'" - << std::endl; XChangeProperty(x11_dpl, x11_win, NET_WM_PID, XA_CARDINAL, 32, PropModeReplace, @@ -327,10 +315,6 @@ void RenderingEngine::setupTopLevelXorgWindow(const std::string &name) XChangeProperty (x11_dpl, x11_win, WM_CLIENT_LEADER, XA_WINDOW, 32, PropModeReplace, reinterpret_cast(&x11_win), 1); - - verbosestream << "Client: Finished configuring Xorg specific top level" - << " window properties" - << std::endl; #endif } diff --git a/src/client/sound_openal.cpp b/src/client/sound_openal.cpp index 8e696f302..d0f935a7a 100644 --- a/src/client/sound_openal.cpp +++ b/src/client/sound_openal.cpp @@ -165,8 +165,8 @@ SoundBuffer *load_opened_ogg_file(OggVorbis_File *oggFile, << "preparing sound buffer" << std::endl; } - infostream << "Audio file " - << filename_for_logging << " loaded" << std::endl; + //infostream << "Audio file " + // << filename_for_logging << " loaded" << std::endl; // Clean up! ov_clear(oggFile); @@ -498,9 +498,11 @@ public: // Remove stopped sounds void maintain() { - verbosestream<<"OpenALSoundManager::maintain(): " - < del_list; for (const auto &sp : m_sounds_playing) { int id = sp.first; @@ -530,7 +532,7 @@ public: SoundBuffer *buf = load_ogg_from_file(filepath); if (buf) addBuffer(name, buf); - return false; + return !!buf; } bool loadSoundData(const std::string &name, @@ -539,7 +541,7 @@ public: SoundBuffer *buf = load_ogg_from_buffer(filedata, name); if (buf) addBuffer(name, buf); - return false; + return !!buf; } void updateListener(const v3f &pos, const v3f &vel, const v3f &at, const v3f &up) diff --git a/src/client/tile.cpp b/src/client/tile.cpp index 3189ab28c..0fa7a4ae2 100644 --- a/src/client/tile.cpp +++ b/src/client/tile.cpp @@ -471,8 +471,8 @@ TextureSource::~TextureSource() driver->removeTexture(t); } - infostream << "~TextureSource() "<< textures_before << "/" - << driver->getTextureCount() << std::endl; + infostream << "~TextureSource() before cleanup: "<< textures_before + << " after: " << driver->getTextureCount() << std::endl; } u32 TextureSource::getTextureId(const std::string &name) @@ -763,6 +763,9 @@ void TextureSource::rebuildImagesAndTextures() video::IVideoDriver *driver = RenderingEngine::get_video_driver(); sanity_check(driver); + infostream << "TextureSource: recreating " << m_textureinfo_cache.size() + << " textures" << std::endl; + // Recreate textures for (TextureInfo &ti : m_textureinfo_cache) { video::IImage *img = generateImage(ti.name); @@ -1270,8 +1273,6 @@ bool TextureSource::generateImagePart(std::string part_of_name, video::IImage *img = generateImage(filename); if (img) { core::dimension2d dim = img->getDimension(); - infostream<<"Size "< pos_base(x, y); video::IImage *img2 = driver->createImage(video::ECF_A8R8G8B8, dim); diff --git a/src/content/subgames.cpp b/src/content/subgames.cpp index bf947cf85..170f54e20 100644 --- a/src/content/subgames.cpp +++ b/src/content/subgames.cpp @@ -253,7 +253,7 @@ std::vector getAvailableWorlds() worldspaths.insert(porting::path_user + DIR_DELIM + "worlds"); infostream << "Searching worlds..." << std::endl; for (const std::string &worldspath : worldspaths) { - infostream << " In " << worldspath << ": " << std::endl; + infostream << " In " << worldspath << ": "; std::vector dirvector = fs::GetDirListing(worldspath); for (const fs::DirListNode &dln : dirvector) { if (!dln.dir) diff --git a/src/content_sao.cpp b/src/content_sao.cpp index 75c3eaf37..680bf372a 100644 --- a/src/content_sao.cpp +++ b/src/content_sao.cpp @@ -711,13 +711,11 @@ float LuaEntitySAO::getMinimumSavedMovement() std::string LuaEntitySAO::getDescription() { - std::ostringstream os(std::ios::binary); - os<<"LuaEntitySAO at ("; - os<<(m_base_position.X/BS)<<","; - os<<(m_base_position.Y/BS)<<","; - os<<(m_base_position.Z/BS); - os<<")"; - return os.str(); + std::ostringstream oss; + oss << "LuaEntitySAO \"" << m_init_name << "\" "; + auto pos = floatToInt(m_base_position, BS); + oss << "at " << PP(pos); + return oss.str(); } void LuaEntitySAO::setHP(s32 hp, const PlayerHPChangeReason &reason) diff --git a/src/craftdef.cpp b/src/craftdef.cpp index 0181ceb60..210605198 100644 --- a/src/craftdef.cpp +++ b/src/craftdef.cpp @@ -1066,8 +1066,8 @@ public: } virtual void registerCraft(CraftDefinition *def, IGameDef *gamedef) { - verbosestream << "registerCraft: registering craft definition: " - << def->dump() << std::endl; + TRACESTREAM(<< "registerCraft: registering craft definition: " + << def->dump() << std::endl); m_craft_defs[(int) CRAFT_HASH_TYPE_UNHASHED][0].push_back(def); CraftInput input; diff --git a/src/emerge.cpp b/src/emerge.cpp index fc1da4ee7..4835c3fad 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -136,7 +136,6 @@ EmergeManager::EmergeManager(Server *server) nthreads = Thread::getNumberOfProcessors() - 2; if (nthreads < 1) nthreads = 1; - verbosestream << "Using " << nthreads << " emerge threads." << std::endl; m_qlimit_total = g_settings->getU16("emergequeue_limit_total"); if (!g_settings->getU16NoEx("emergequeue_limit_diskonly", m_qlimit_diskonly)) diff --git a/src/itemdef.cpp b/src/itemdef.cpp index 0d0afeb2b..ba7bd6a0b 100644 --- a/src/itemdef.cpp +++ b/src/itemdef.cpp @@ -463,7 +463,7 @@ public: } virtual void registerItem(const ItemDefinition &def) { - verbosestream<<"ItemDefManager: registering \""< "< " << convert_to << std::endl); m_aliases[name] = convert_to; } } diff --git a/src/main.cpp b/src/main.cpp index 1993f7c24..8df2fe7d3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -207,9 +207,6 @@ int main(int argc, char *argv[]) sanity_check(!game_params.world_path.empty()); - infostream << "Using commanded world path [" - << game_params.world_path << "]" << std::endl; - if (game_params.is_dedicated_server) return run_dedicated_server(game_params, cmd_args) ? 0 : 1; @@ -686,8 +683,6 @@ static bool auto_select_world(GameParams *game_params) // No world was specified; try to select it automatically // Get information about available worlds - verbosestream << _("Determining world path") << std::endl; - std::vector worldspecs = getAvailableWorlds(); std::string world_path; @@ -708,7 +703,7 @@ static bool auto_select_world(GameParams *game_params) // This is the ultimate default world path world_path = porting::path_user + DIR_DELIM + "worlds" + DIR_DELIM + "world"; - infostream << "Creating default world at [" + infostream << "Using default world at [" << world_path << "]" << std::endl; } @@ -770,7 +765,6 @@ static bool determine_subgame(GameParams *game_params) assert(game_params->world_path != ""); // Pre-condition - verbosestream << _("Determining gameid/gamespec") << std::endl; // If world doesn't exist if (!game_params->world_path.empty() && !getWorldExists(game_params->world_path)) { diff --git a/src/map.cpp b/src/map.cpp index 40aba067e..eb69955ee 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1827,10 +1827,10 @@ void ServerMap::save(ModifiedState save_level) */ if(save_level == MOD_STATE_CLEAN || block_count != 0) { - infostream<<"ServerMap: Written: " - <id << " has timed out." - << " (source=peer->timeout_counter)" << std::endl; // Add peer to the list timeouted_peers.push_back(peer->id); @@ -292,7 +291,7 @@ void ConnectionSendThread::runTimeouts(float dtime) // Remove timed out peers for (u16 timeouted_peer : timeouted_peers) { - LOG(derr_con << m_connection->getDesc() + LOG(dout_con << m_connection->getDesc() << "RunTimeouts(): Removing peer " << timeouted_peer << std::endl); m_connection->deletePeer(timeouted_peer, true); } diff --git a/src/nodedef.cpp b/src/nodedef.cpp index 977a4533d..b6eca9497 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -1458,7 +1458,7 @@ void NodeDefManager::deSerialize(std::istream &is) m_content_features.resize((u32)(i) + 1); m_content_features[i] = f; addNameIdMapping(i, f.name); - verbosestream << "deserialized " << f.name << std::endl; + TRACESTREAM(<< "NodeDef: deserialized " << f.name << std::endl); getNodeBoxUnion(f.selection_box, f, &m_selection_box_union); fixSelectionBoxIntUnion(); diff --git a/src/script/cpp_api/s_env.cpp b/src/script/cpp_api/s_env.cpp index ab3b5fe46..8da5debaa 100644 --- a/src/script/cpp_api/s_env.cpp +++ b/src/script/cpp_api/s_env.cpp @@ -86,7 +86,7 @@ void ScriptApiEnv::player_event(ServerActiveObject *player, const std::string &t void ScriptApiEnv::initializeEnvironment(ServerEnvironment *env) { SCRIPTAPI_PRECHECKHEADER - verbosestream << "scriptapi_add_environment" << std::endl; + verbosestream << "ScriptApiEnv: Environment initialized" << std::endl; setEnv(env); /* diff --git a/src/script/lua_api/l_item.cpp b/src/script/lua_api/l_item.cpp index 0c174feca..ff77cba32 100644 --- a/src/script/lua_api/l_item.cpp +++ b/src/script/lua_api/l_item.cpp @@ -522,7 +522,6 @@ int ModApiItemMod::l_register_item_raw(lua_State *L) lua_getfield(L, table, "name"); if(lua_isstring(L, -1)){ name = readParam(L, -1); - verbosestream<<"register_item_raw: "<getFloat("server_map_save_interval"); + int n = 0; for (std::unordered_map::const_iterator it = m_mod_storages.begin(); it != m_mod_storages.end(); ++it) { if (it->second->isModified()) { it->second->save(getModStoragePath()); + n++; } } + if (n > 0) + infostream << "Saved " << n << " modified mod storages." << std::endl; } } @@ -809,7 +812,6 @@ void Server::AsyncRunStep(bool initial_step) disable_single_change_sending ? 5 : 30); break; case MEET_BLOCK_NODE_METADATA_CHANGED: { - verbosestream << "Server: MEET_BLOCK_NODE_METADATA_CHANGED" << std::endl; prof.add("MEET_BLOCK_NODE_METADATA_CHANGED", 1); if (!event->is_private_change) { // Don't send the change yet. Collect them to eliminate dupes. @@ -825,7 +827,6 @@ void Server::AsyncRunStep(bool initial_step) break; } case MEET_OTHER: - infostream << "Server: MEET_OTHER" << std::endl; prof.add("MEET_OTHER", 1); for (const v3s16 &modified_block : event->modified_blocks) { m_clients.markBlockposAsNotSent(modified_block); @@ -2535,9 +2536,6 @@ void Server::fillMediaCache() void Server::sendMediaAnnouncement(session_t peer_id, const std::string &lang_code) { - verbosestream << "Server: Announcing files to id(" << peer_id << ")" - << std::endl; - // Make packet NetworkPacket pkt(TOCLIENT_ANNOUNCE_MEDIA, 0, peer_id); @@ -2560,6 +2558,9 @@ void Server::sendMediaAnnouncement(session_t peer_id, const std::string &lang_co pkt << g_settings->get("remote_media"); Send(&pkt); + + verbosestream << "Server: Announcing files to id(" << peer_id + << "): count=" << media_sent << " size=" << pkt.getSize() << std::endl; } struct SendableMedia @@ -2938,10 +2939,8 @@ void Server::UpdateCrafting(RemotePlayer *player) if (!clist || clist->getSize() == 0) return; - if (!clist->checkModified()) { - verbosestream << "Skip Server::UpdateCrafting(): list unmodified" << std::endl; + if (!clist->checkModified()) return; - } // Get a preview for crafting ItemStack preview; diff --git a/src/server/mods.cpp b/src/server/mods.cpp index c5616dcd6..c8d8a28e2 100644 --- a/src/server/mods.cpp +++ b/src/server/mods.cpp @@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "log.h" #include "scripting_server.h" #include "content/subgames.h" +#include "porting.h" /** * Manage server mods @@ -66,14 +67,10 @@ void ServerModManager::loadMods(ServerScripting *script) "Only characters [a-z0-9_] are allowed."); } std::string script_path = mod.path + DIR_DELIM + "init.lua"; - infostream << " [" << padStringRight(mod.name, 12) << "] [\"" - << script_path << "\"]" << std::endl; - auto t = std::chrono::steady_clock::now(); + auto t = porting::getTimeMs(); script->loadMod(script_path, mod.name); infostream << "Mod \"" << mod.name << "\" loaded after " - << std::chrono::duration_cast( - std::chrono::steady_clock::now() - t).count() * 0.001f - << " seconds" << std::endl; + << (porting::getTimeMs() - t) << " ms" << std::endl; } // Run a callback when mods are loaded From 659245acc7dcc28e345b8dfa50571102f4f07728 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 8 Apr 2020 20:14:08 +0200 Subject: [PATCH 066/424] Work around LuaJIT issues on aarch64 (#9614) - Move the text segment below the 47-bit limit, needed for script_exception_wrapper which must be lightuserdata - Replace CUSTOM_RIDX_SCRIPTAPI with full userdata --- src/CMakeLists.txt | 10 ++++++++-- src/script/common/c_internal.h | 9 +++++++++ src/script/cpp_api/s_base.cpp | 4 ++++ src/script/cpp_api/s_security.cpp | 7 ++++++- src/script/lua_api/l_base.cpp | 7 ++++++- 5 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6afa5b8fe..d579bb965 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -661,7 +661,7 @@ endif() # Set some optimizations and tweaks -include(CheckCXXCompilerFlag) +include(CheckCSourceCompiles) if(MSVC) # Visual Studio @@ -695,13 +695,19 @@ else() else() set(RELEASE_WARNING_FLAGS "") endif() - if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(WARNING_FLAGS "${WARNING_FLAGS} -Wsign-compare") endif() + if(APPLE AND USE_LUAJIT) # required per http://luajit.org/install.html SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pagezero_size 10000 -image_base 100000000") + elseif(UNIX AND USE_LUAJIT) + check_c_source_compiles("#ifndef __aarch64__\n#error\n#endif\nint main(){}" IS_AARCH64) + if(IS_AARCH64) + # Move text segment below LuaJIT's 47-bit limit (see issue #9367) + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Ttext-segment=0x200000000") + endif() endif() if(MINGW) diff --git a/src/script/common/c_internal.h b/src/script/common/c_internal.h index d8cf3fe76..747400769 100644 --- a/src/script/common/c_internal.h +++ b/src/script/common/c_internal.h @@ -54,6 +54,15 @@ extern "C" { #define CUSTOM_RIDX_CURRENT_MOD_NAME (CUSTOM_RIDX_BASE + 2) #define CUSTOM_RIDX_BACKTRACE (CUSTOM_RIDX_BASE + 3) +// Determine if CUSTOM_RIDX_SCRIPTAPI will hold a light or full userdata +#if defined(__aarch64__) && USE_LUAJIT +/* LuaJIT has a 47-bit limit for lightuserdata on this platform and we cannot + * assume that the ScriptApi class was allocated at a fitting address. */ +#define INDIRECT_SCRIPTAPI_RIDX 1 +#else +#define INDIRECT_SCRIPTAPI_RIDX 0 +#endif + // Pushes the error handler onto the stack and returns its index #define PUSH_ERROR_HANDLER(L) \ (lua_rawgeti((L), LUA_REGISTRYINDEX, CUSTOM_RIDX_BACKTRACE), lua_gettop((L))) diff --git a/src/script/cpp_api/s_base.cpp b/src/script/cpp_api/s_base.cpp index ecb1ba39b..f234a15d4 100644 --- a/src/script/cpp_api/s_base.cpp +++ b/src/script/cpp_api/s_base.cpp @@ -90,7 +90,11 @@ ScriptApiBase::ScriptApiBase(ScriptingType type): luaL_openlibs(m_luastack); // Make the ScriptApiBase* accessible to ModApiBase +#if INDIRECT_SCRIPTAPI_RIDX + *(void **)(lua_newuserdata(m_luastack, sizeof(void *))) = this; +#else lua_pushlightuserdata(m_luastack, this); +#endif lua_rawseti(m_luastack, LUA_REGISTRYINDEX, CUSTOM_RIDX_SCRIPTAPI); // Add and save an error handler diff --git a/src/script/cpp_api/s_security.cpp b/src/script/cpp_api/s_security.cpp index b5abcfb5d..2afa3a191 100644 --- a/src/script/cpp_api/s_security.cpp +++ b/src/script/cpp_api/s_security.cpp @@ -499,7 +499,12 @@ bool ScriptApiSecurity::checkPath(lua_State *L, const char *path, // Get server from registry lua_rawgeti(L, LUA_REGISTRYINDEX, CUSTOM_RIDX_SCRIPTAPI); - ScriptApiBase *script = (ScriptApiBase *) lua_touserdata(L, -1); + ScriptApiBase *script; +#if INDIRECT_SCRIPTAPI_RIDX + script = (ScriptApiBase *) *(void**)(lua_touserdata(L, -1)); +#else + script = (ScriptApiBase *) lua_touserdata(L, -1); +#endif lua_pop(L, 1); const IGameDef *gamedef = script->getGameDef(); if (!gamedef) diff --git a/src/script/lua_api/l_base.cpp b/src/script/lua_api/l_base.cpp index 8486fc7bc..c980bba39 100644 --- a/src/script/lua_api/l_base.cpp +++ b/src/script/lua_api/l_base.cpp @@ -30,7 +30,12 @@ ScriptApiBase *ModApiBase::getScriptApiBase(lua_State *L) { // Get server from registry lua_rawgeti(L, LUA_REGISTRYINDEX, CUSTOM_RIDX_SCRIPTAPI); - ScriptApiBase *sapi_ptr = (ScriptApiBase*) lua_touserdata(L, -1); + ScriptApiBase *sapi_ptr; +#if INDIRECT_SCRIPTAPI_RIDX + sapi_ptr = (ScriptApiBase*) *(void**)(lua_touserdata(L, -1)); +#else + sapi_ptr = (ScriptApiBase*) lua_touserdata(L, -1); +#endif lua_pop(L, 1); return sapi_ptr; } From d6ad587ab82cdbd129cc1d4de654114c8b6174f4 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 8 Apr 2020 21:05:27 +0200 Subject: [PATCH 067/424] Travis: Build clang jobs with LuaJIT enabled for better coverage --- util/travis/common.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/util/travis/common.sh b/util/travis/common.sh index b186632e1..cf9ce020e 100644 --- a/util/travis/common.sh +++ b/util/travis/common.sh @@ -18,11 +18,17 @@ set_linux_compiler_env() { # Linux build only install_linux_deps() { - sudo apt-get update - sudo apt-get install libirrlicht-dev cmake libbz2-dev libpng-dev \ + local pkgs=(libirrlicht-dev cmake libbz2-dev libpng-dev \ libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev \ libhiredis-dev libogg-dev libgmp-dev libvorbis-dev libopenal-dev \ - gettext libpq-dev postgresql-server-dev-all libleveldb-dev + gettext libpq-dev postgresql-server-dev-all libleveldb-dev) + # for better coverage, build some jobs with luajit + if [[ "$CC" == "clang"* && -z "$VALGRIND$FREETYPE" ]]; then + pkgs+=(libluajit-5.1-dev) + fi + + sudo apt-get update + sudo apt-get install -y --no-install-recommends ${pkgs[@]} } # Mac OSX build only From c1742b0901a0271b0d86b02b1f52c3428c0af291 Mon Sep 17 00:00:00 2001 From: DS Date: Wed, 8 Apr 2020 22:44:52 +0200 Subject: [PATCH 068/424] Allow to select en as language in settings menu (#9604) fixes #9599 --- builtin/settingtypes.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index a6cf8de60..101b32a24 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -1373,7 +1373,7 @@ name (Player name) string # Set the language. Leave empty to use the system language. # A restart is required after changing this. -language (Language) enum ,ar,ca,cs,da,de,dv,el,eo,es,et,eu,fil,fr,hu,id,it,ja,ja_KS,jbo,kk,kn,lo,lt,ms,my,nb,nl,nn,pl,pt,pt_BR,ro,ru,sl,sr_Cyrl,sv,sw,th,tr,uk,vi +language (Language) enum ,ar,ca,cs,da,de,dv,el,en,eo,es,et,eu,fil,fr,hu,id,it,ja,ja_KS,jbo,kk,kn,lo,lt,ms,my,nb,nl,nn,pl,pt,pt_BR,ro,ru,sl,sr_Cyrl,sv,sw,th,tr,uk,vi # Level of logging to be written to debug.txt: # - (no logging) From 3ad5388c6d3894e2f4aa7158cc2b62b626f0f967 Mon Sep 17 00:00:00 2001 From: TheTermos <55103816+TheTermos@users.noreply.github.com> Date: Wed, 8 Apr 2020 22:45:05 +0200 Subject: [PATCH 069/424] Collision various fixes (#9343) --- src/client/localplayer.h | 2 + src/collision.cpp | 222 +++++++++++++++----------------- src/collision.h | 2 +- src/unittest/test_collision.cpp | 64 ++++----- 4 files changed, 141 insertions(+), 149 deletions(-) diff --git a/src/client/localplayer.h b/src/client/localplayer.h index 95dceb1f4..d88ae17ac 100644 --- a/src/client/localplayer.h +++ b/src/client/localplayer.h @@ -141,6 +141,8 @@ public: void setCollisionbox(const aabb3f &box) { m_collisionbox = box; } + const aabb3f& getCollisionbox() const { return m_collisionbox; } + float getZoomFOV() const { return m_zoom_fov; } void setZoomFOV(float zoom_fov) { m_zoom_fov = zoom_fov; } diff --git a/src/collision.cpp b/src/collision.cpp index a443be7ab..0d37ea436 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -25,16 +25,13 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "gamedef.h" #ifndef SERVER #include "client/clientenvironment.h" +#include "client/localplayer.h" #endif #include "serverenvironment.h" #include "serverobject.h" #include "util/timetaker.h" #include "profiler.h" -// float error is 10 - 9.96875 = 0.03125 -//#define COLL_ZERO 0.032 // broken unit tests -#define COLL_ZERO 0 - struct NearbyCollisionInfo { NearbyCollisionInfo(bool is_ul, bool is_obj, int bouncy, @@ -61,118 +58,102 @@ struct NearbyCollisionInfo { // The time after which the collision occurs is stored in dtime. CollisionAxis axisAlignedCollision( const aabb3f &staticbox, const aabb3f &movingbox, - const v3f &speed, f32 d, f32 *dtime) + const v3f &speed, f32 *dtime) { //TimeTaker tt("axisAlignedCollision"); - f32 xsize = (staticbox.MaxEdge.X - staticbox.MinEdge.X) - COLL_ZERO; // reduce box size for solve collision stuck (flying sand) - f32 ysize = (staticbox.MaxEdge.Y - staticbox.MinEdge.Y); // - COLL_ZERO; // Y - no sense for falling, but maybe try later - f32 zsize = (staticbox.MaxEdge.Z - staticbox.MinEdge.Z) - COLL_ZERO; - aabb3f relbox( - movingbox.MinEdge.X - staticbox.MinEdge.X, - movingbox.MinEdge.Y - staticbox.MinEdge.Y, - movingbox.MinEdge.Z - staticbox.MinEdge.Z, - movingbox.MaxEdge.X - staticbox.MinEdge.X, - movingbox.MaxEdge.Y - staticbox.MinEdge.Y, - movingbox.MaxEdge.Z - staticbox.MinEdge.Z + movingbox.MaxEdge.X - movingbox.MinEdge.X + staticbox.MaxEdge.X - staticbox.MinEdge.X, // sum of the widths + movingbox.MaxEdge.Y - movingbox.MinEdge.Y + staticbox.MaxEdge.Y - staticbox.MinEdge.Y, + movingbox.MaxEdge.Z - movingbox.MinEdge.Z + staticbox.MaxEdge.Z - staticbox.MinEdge.Z, + std::max(movingbox.MaxEdge.X, staticbox.MaxEdge.X) - std::min(movingbox.MinEdge.X, staticbox.MinEdge.X), //outer bounding 'box' dimensions + std::max(movingbox.MaxEdge.Y, staticbox.MaxEdge.Y) - std::min(movingbox.MinEdge.Y, staticbox.MinEdge.Y), + std::max(movingbox.MaxEdge.Z, staticbox.MaxEdge.Z) - std::min(movingbox.MinEdge.Z, staticbox.MinEdge.Z) ); - if(speed.X > 0) // Check for collision with X- plane - { - if (relbox.MaxEdge.X <= d) { - *dtime = -relbox.MaxEdge.X / speed.X; - if ((relbox.MinEdge.Y + speed.Y * (*dtime) < ysize) && - (relbox.MaxEdge.Y + speed.Y * (*dtime) > COLL_ZERO) && - (relbox.MinEdge.Z + speed.Z * (*dtime) < zsize) && - (relbox.MaxEdge.Z + speed.Z * (*dtime) > COLL_ZERO)) - return COLLISION_AXIS_X; - } - else if(relbox.MinEdge.X > xsize) - { - return COLLISION_AXIS_NONE; - } - } - else if(speed.X < 0) // Check for collision with X+ plane - { - if (relbox.MinEdge.X >= xsize - d) { - *dtime = (xsize - relbox.MinEdge.X) / speed.X; - if ((relbox.MinEdge.Y + speed.Y * (*dtime) < ysize) && - (relbox.MaxEdge.Y + speed.Y * (*dtime) > COLL_ZERO) && - (relbox.MinEdge.Z + speed.Z * (*dtime) < zsize) && - (relbox.MaxEdge.Z + speed.Z * (*dtime) > COLL_ZERO)) - return COLLISION_AXIS_X; - } - else if(relbox.MaxEdge.X < 0) - { - return COLLISION_AXIS_NONE; + const f32 dtime_max = *dtime; + const f32 inner_margin = -1.5f; + f32 distance; + f32 time; + + if (speed.X) { + distance = relbox.MaxEdge.X - relbox.MinEdge.X; + + *dtime = distance >= 0 ? std::abs(distance / speed.X) : -std::abs(distance / speed.X); + time = std::max(*dtime, 0.0f); + + if (distance > inner_margin) { + if (*dtime <= dtime_max) { + if ((speed.X > 0 && staticbox.MaxEdge.X > movingbox.MaxEdge.X) || + (speed.X < 0 && staticbox.MinEdge.X < movingbox.MinEdge.X)) { + if ( + (std::max(movingbox.MaxEdge.Y + speed.Y * time, staticbox.MaxEdge.Y) + - std::min(movingbox.MinEdge.Y + speed.Y * time, staticbox.MinEdge.Y) + - relbox.MinEdge.Y < 0) && + (std::max(movingbox.MaxEdge.Z + speed.Z * time, staticbox.MaxEdge.Z) + - std::min(movingbox.MinEdge.Z + speed.Z * time, staticbox.MinEdge.Z) + - relbox.MinEdge.Z < 0) + ) + return COLLISION_AXIS_X; + } + } else { + return COLLISION_AXIS_NONE; + } } } // NO else if here - if(speed.Y > 0) // Check for collision with Y- plane - { - if (relbox.MaxEdge.Y <= d) { - *dtime = -relbox.MaxEdge.Y / speed.Y; - if ((relbox.MinEdge.X + speed.X * (*dtime) < xsize) && - (relbox.MaxEdge.X + speed.X * (*dtime) > COLL_ZERO) && - (relbox.MinEdge.Z + speed.Z * (*dtime) < zsize) && - (relbox.MaxEdge.Z + speed.Z * (*dtime) > COLL_ZERO)) - return COLLISION_AXIS_Y; - } - else if(relbox.MinEdge.Y > ysize) - { - return COLLISION_AXIS_NONE; - } - } - else if(speed.Y < 0) // Check for collision with Y+ plane - { - if (relbox.MinEdge.Y >= ysize - d) { - *dtime = (ysize - relbox.MinEdge.Y) / speed.Y; - if ((relbox.MinEdge.X + speed.X * (*dtime) < xsize) && - (relbox.MaxEdge.X + speed.X * (*dtime) > COLL_ZERO) && - (relbox.MinEdge.Z + speed.Z * (*dtime) < zsize) && - (relbox.MaxEdge.Z + speed.Z * (*dtime) > COLL_ZERO)) - return COLLISION_AXIS_Y; - } - else if(relbox.MaxEdge.Y < 0) - { - return COLLISION_AXIS_NONE; + if (speed.Y) { + distance = relbox.MaxEdge.Y - relbox.MinEdge.Y; + + *dtime = distance >= 0 ? std::abs(distance / speed.Y) : -std::abs(distance / speed.Y); + time = std::max(*dtime, 0.0f); + + if (distance > inner_margin) { + if (*dtime <= dtime_max) { + if ((speed.Y > 0 && staticbox.MaxEdge.Y > movingbox.MaxEdge.Y) || + (speed.Y < 0 && staticbox.MinEdge.Y < movingbox.MinEdge.Y)) { + if ( + (std::max(movingbox.MaxEdge.X + speed.X * time, staticbox.MaxEdge.X) + - std::min(movingbox.MinEdge.X + speed.X * time, staticbox.MinEdge.X) + - relbox.MinEdge.X < 0) && + (std::max(movingbox.MaxEdge.Z + speed.Z * time, staticbox.MaxEdge.Z) + - std::min(movingbox.MinEdge.Z + speed.Z * time, staticbox.MinEdge.Z) + - relbox.MinEdge.Z < 0) + ) + return COLLISION_AXIS_Y; + } + } else { + return COLLISION_AXIS_NONE; + } } } // NO else if here - if(speed.Z > 0) // Check for collision with Z- plane - { - if (relbox.MaxEdge.Z <= d) { - *dtime = -relbox.MaxEdge.Z / speed.Z; - if ((relbox.MinEdge.X + speed.X * (*dtime) < xsize) && - (relbox.MaxEdge.X + speed.X * (*dtime) > COLL_ZERO) && - (relbox.MinEdge.Y + speed.Y * (*dtime) < ysize) && - (relbox.MaxEdge.Y + speed.Y * (*dtime) > COLL_ZERO)) - return COLLISION_AXIS_Z; + if (speed.Z) { + distance = relbox.MaxEdge.Z - relbox.MinEdge.Z; + + *dtime = distance >= 0 ? std::abs(distance / speed.Z) : -std::abs(distance / speed.Z); + time = std::max(*dtime, 0.0f); + + if (distance > inner_margin) { + if (*dtime <= dtime_max) { + if ((speed.Z > 0 && staticbox.MaxEdge.Z > movingbox.MaxEdge.Z) || + (speed.Z < 0 && staticbox.MinEdge.Z < movingbox.MinEdge.Z)) { + if ( + (std::max(movingbox.MaxEdge.X + speed.X * time, staticbox.MaxEdge.X) + - std::min(movingbox.MinEdge.X + speed.X * time, staticbox.MinEdge.X) + - relbox.MinEdge.X < 0) && + (std::max(movingbox.MaxEdge.Y + speed.Y * time, staticbox.MaxEdge.Y) + - std::min(movingbox.MinEdge.Y + speed.Y * time, staticbox.MinEdge.Y) + - relbox.MinEdge.Y < 0) + ) + return COLLISION_AXIS_Z; + } + } } - //else if(relbox.MinEdge.Z > zsize) - //{ - // return COLLISION_AXIS_NONE; - //} - } - else if(speed.Z < 0) // Check for collision with Z+ plane - { - if (relbox.MinEdge.Z >= zsize - d) { - *dtime = (zsize - relbox.MinEdge.Z) / speed.Z; - if ((relbox.MinEdge.X + speed.X * (*dtime) < xsize) && - (relbox.MaxEdge.X + speed.X * (*dtime) > COLL_ZERO) && - (relbox.MinEdge.Y + speed.Y * (*dtime) < ysize) && - (relbox.MaxEdge.Y + speed.Y * (*dtime) > COLL_ZERO)) - return COLLISION_AXIS_Z; - } - //else if(relbox.MaxEdge.Z < 0) - //{ - // return COLLISION_AXIS_NONE; - //} } return COLLISION_AXIS_NONE; @@ -405,22 +386,25 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, } } } +#ifndef SERVER + if (self && c_env) { + LocalPlayer *lplayer = c_env->getLocalPlayer(); + if (lplayer->getParent() == nullptr) { + aabb3f lplayer_collisionbox = lplayer->getCollisionbox(); + v3f lplayer_pos = lplayer->getPosition(); + lplayer_collisionbox.MinEdge += lplayer_pos; + lplayer_collisionbox.MaxEdge += lplayer_pos; + cinfo.emplace_back(false, true, 0, v3s16(), lplayer_collisionbox); + } + } +#endif } //tt3 /* Collision detection */ - /* - Collision uncertainty radius - Make it a bit larger than the maximum distance of movement - */ - f32 d = pos_max_d * 1.1f; - // A fairly large value in here makes moving smoother - //f32 d = 0.15*BS; - - // This should always apply, otherwise there are glitches - assert(d > pos_max_d); // invariant + f32 d = 0.0f; int loopcount = 0; @@ -450,9 +434,9 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, continue; // Find nearest collision of the two boxes (raytracing-like) - f32 dtime_tmp; + f32 dtime_tmp = nearest_dtime; CollisionAxis collided = axisAlignedCollision(box_info.box, - movingbox, *speed_f, d, &dtime_tmp); + movingbox, *speed_f, &dtime_tmp); if (collided == -1 || dtime_tmp >= nearest_dtime) continue; @@ -470,11 +454,18 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, // Otherwise, a collision occurred. NearbyCollisionInfo &nearest_info = cinfo[nearest_boxindex]; const aabb3f& cbox = nearest_info.box; + + //movingbox except moved to the horizontal position it would be after step up + aabb3f stepbox = movingbox; + stepbox.MinEdge.X += speed_f->X * dtime; + stepbox.MinEdge.Z += speed_f->Z * dtime; + stepbox.MaxEdge.X += speed_f->X * dtime; + stepbox.MaxEdge.Z += speed_f->Z * dtime; // Check for stairs. bool step_up = (nearest_collided != COLLISION_AXIS_Y) && // must not be Y direction (movingbox.MinEdge.Y < cbox.MaxEdge.Y) && (movingbox.MinEdge.Y + stepheight > cbox.MaxEdge.Y) && - (!wouldCollideWithCeiling(cinfo, movingbox, + (!wouldCollideWithCeiling(cinfo, stepbox, cbox.MaxEdge.Y - movingbox.MinEdge.Y, d)); @@ -483,7 +474,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, // Move to the point of collision and reduce dtime by nearest_dtime if (nearest_dtime < 0) { - // Handle negative nearest_dtime (can be caused by the d allowance) + // Handle negative nearest_dtime if (!step_up) { if (nearest_collided == COLLISION_AXIS_X) pos_f->X += speed_f->X * nearest_dtime; @@ -562,9 +553,8 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, Object touches ground if object's minimum Y is near node's maximum Y and object's X-Z-area overlaps with the node's X-Z-area. - - Use 0.15*BS so that it is easier to get on a node. */ + if (cbox.MaxEdge.X - d > box.MinEdge.X && cbox.MinEdge.X + d < box.MaxEdge.X && cbox.MaxEdge.Z - d > box.MinEdge.Z && cbox.MinEdge.Z + d < box.MaxEdge.Z) { @@ -574,7 +564,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, box.MinEdge += *pos_f; box.MaxEdge += *pos_f; } - if (std::fabs(cbox.MaxEdge.Y - box.MinEdge.Y) < 0.15f * BS) { + if (std::fabs(cbox.MaxEdge.Y - box.MinEdge.Y) < 0.05f) { result.touching_ground = true; if (box_info.is_object) diff --git a/src/collision.h b/src/collision.h index 85df02c96..fa47cccc1 100644 --- a/src/collision.h +++ b/src/collision.h @@ -77,7 +77,7 @@ collisionMoveResult collisionMoveSimple(Environment *env,IGameDef *gamedef, // dtime receives time until first collision, invalid if -1 is returned CollisionAxis axisAlignedCollision( const aabb3f &staticbox, const aabb3f &movingbox, - const v3f &speed, f32 d, f32 *dtime); + const v3f &speed, f32 *dtime); // Helper function: // Checks if moving the movingbox up by the given distance would hit a ceiling. diff --git a/src/unittest/test_collision.cpp b/src/unittest/test_collision.cpp index 332d3fa13..2f39c2489 100644 --- a/src/unittest/test_collision.cpp +++ b/src/unittest/test_collision.cpp @@ -50,38 +50,38 @@ void TestCollision::testAxisAlignedCollision() aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx-2, by, bz, bx-1, by+1, bz+1); v3f v(1, 0, 0); - f32 dtime = 0; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); + f32 dtime = 1.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == 0); UASSERT(fabs(dtime - 1.000) < 0.001); } { aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx-2, by, bz, bx-1, by+1, bz+1); v3f v(-1, 0, 0); - f32 dtime = 0; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == -1); + f32 dtime = 1.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == -1); } { aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx-2, by+1.5, bz, bx-1, by+2.5, bz-1); v3f v(1, 0, 0); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == -1); + f32 dtime = 1.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == -1); } { aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx-2, by-1.5, bz, bx-1.5, by+0.5, bz+1); v3f v(0.5, 0.1, 0); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); + f32 dtime = 3.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == 0); UASSERT(fabs(dtime - 3.000) < 0.001); } { aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx-2, by-1.5, bz, bx-1.5, by+0.5, bz+1); v3f v(0.5, 0.1, 0); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); + f32 dtime = 3.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == 0); UASSERT(fabs(dtime - 3.000) < 0.001); } @@ -90,38 +90,38 @@ void TestCollision::testAxisAlignedCollision() aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx+2, by, bz, bx+3, by+1, bz+1); v3f v(-1, 0, 0); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); + f32 dtime = 1.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == 0); UASSERT(fabs(dtime - 1.000) < 0.001); } { aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx+2, by, bz, bx+3, by+1, bz+1); v3f v(1, 0, 0); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == -1); + f32 dtime = 1.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == -1); } { aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx+2, by, bz+1.5, bx+3, by+1, bz+3.5); v3f v(-1, 0, 0); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == -1); + f32 dtime = 1.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == -1); } { aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx+2, by-1.5, bz, bx+2.5, by-0.5, bz+1); v3f v(-0.5, 0.2, 0); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 1); // Y, not X! + f32 dtime = 2.5f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == 1); // Y, not X! UASSERT(fabs(dtime - 2.500) < 0.001); } { aabb3f s(bx, by, bz, bx+1, by+1, bz+1); aabb3f m(bx+2, by-1.5, bz, bx+2.5, by-0.5, bz+1); v3f v(-0.5, 0.3, 0); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); + f32 dtime = 2.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == 0); UASSERT(fabs(dtime - 2.000) < 0.001); } @@ -132,48 +132,48 @@ void TestCollision::testAxisAlignedCollision() aabb3f s(bx, by, bz, bx+2, by+2, bz+2); aabb3f m(bx+2.3, by+2.29, bz+2.29, bx+4.2, by+4.2, bz+4.2); v3f v(-1./3, -1./3, -1./3); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); + f32 dtime = 1.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == 0); UASSERT(fabs(dtime - 0.9) < 0.001); } { aabb3f s(bx, by, bz, bx+2, by+2, bz+2); aabb3f m(bx+2.29, by+2.3, bz+2.29, bx+4.2, by+4.2, bz+4.2); v3f v(-1./3, -1./3, -1./3); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 1); + f32 dtime = 1.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == 1); UASSERT(fabs(dtime - 0.9) < 0.001); } { aabb3f s(bx, by, bz, bx+2, by+2, bz+2); aabb3f m(bx+2.29, by+2.29, bz+2.3, bx+4.2, by+4.2, bz+4.2); v3f v(-1./3, -1./3, -1./3); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 2); + f32 dtime = 1.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == 2); UASSERT(fabs(dtime - 0.9) < 0.001); } { aabb3f s(bx, by, bz, bx+2, by+2, bz+2); aabb3f m(bx-4.2, by-4.2, bz-4.2, bx-2.3, by-2.29, bz-2.29); v3f v(1./7, 1./7, 1./7); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 0); + f32 dtime = 17.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == 0); UASSERT(fabs(dtime - 16.1) < 0.001); } { aabb3f s(bx, by, bz, bx+2, by+2, bz+2); aabb3f m(bx-4.2, by-4.2, bz-4.2, bx-2.29, by-2.3, bz-2.29); v3f v(1./7, 1./7, 1./7); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 1); + f32 dtime = 17.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == 1); UASSERT(fabs(dtime - 16.1) < 0.001); } { aabb3f s(bx, by, bz, bx+2, by+2, bz+2); aabb3f m(bx-4.2, by-4.2, bz-4.2, bx-2.29, by-2.29, bz-2.3); v3f v(1./7, 1./7, 1./7); - f32 dtime; - UASSERT(axisAlignedCollision(s, m, v, 0, &dtime) == 2); + f32 dtime = 17.0f; + UASSERT(axisAlignedCollision(s, m, v, &dtime) == 2); UASSERT(fabs(dtime - 16.1) < 0.001); } } From 12275e235a17e84805f4b3b667e1ddbdf9499fc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Thu, 9 Apr 2020 20:46:06 +0200 Subject: [PATCH 070/424] Automated build changes (#9619) * Automated build changes * drop a useless ubuntu non lts version * update gitlab ci syntax to modern one * add debian 10 step on the gitlab ci pipeline * switch docker build to Debian 10 * add .gradle folder to gitignore --- .gitignore | 2 + .gitlab-ci.yml | 126 ++++++++++++++++++++----------------------------- Dockerfile | 2 +- 3 files changed, 54 insertions(+), 76 deletions(-) diff --git a/.gitignore b/.gitignore index ce0838357..fb0b8ae4a 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,8 @@ gtags.files *.project # Visual Studio Code .vscode/ +# Gradle +.gradle ## Files related to Minetest development cycle /*.patch diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e4691284f..9781f9f85 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,7 +12,7 @@ variables: MINETEST_GAME_REPO: "https://github.com/minetest/minetest_game.git" CONTAINER_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH -.build_template: &build_definition +.build_template: stage: build script: - mkdir cmakebuild @@ -27,7 +27,7 @@ variables: paths: - artifact/* -.debpkg_template: &debpkg_template +.debpkg_template: stage: package before_script: - apt-get update -y @@ -47,7 +47,7 @@ variables: paths: - ./*.deb -.debpkg_install: &debpkg_install +.debpkg_install: stage: deploy before_script: - apt-get update -y @@ -62,7 +62,7 @@ variables: # Jessie build:debian-8: - <<: *build_definition + extends: .build_template image: debian:8 before_script: - echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu trusty main" > /etc/apt/sources.list.d/uptodate-toolchain.list @@ -74,46 +74,70 @@ build:debian-8: CXX: g++-6 package:debian-8: + extends: .debpkg_template image: debian:8 dependencies: - build:debian-8 variables: LEVELDB_PKG: libleveldb1 - <<: *debpkg_template deploy:debian-8: + extends: .debpkg_install image: debian:8 dependencies: - package:debian-8 variables: LEVELDB_PKG: libleveldb1 - <<: *debpkg_install # Stretch build:debian-9: - <<: *build_definition + extends: .build_template image: debian:9 before_script: - apt-get update -y - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev package:debian-9: + extends: .debpkg_template image: debian:9 dependencies: - build:debian-9 variables: LEVELDB_PKG: libleveldb1v5 - <<: *debpkg_template deploy:debian-9: + extends: .debpkg_install image: debian:9 dependencies: - package:debian-9 variables: LEVELDB_PKG: libleveldb1v5 - <<: *debpkg_install +# Stretch + +build:debian-10: + extends: .build_template + image: debian:10 + before_script: + - apt-get update -y + - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev + +package:debian-10: + extends: .debpkg_template + image: debian:10 + dependencies: + - build:debian-10 + variables: + LEVELDB_PKG: libleveldb1d + +deploy:debian-10: + extends: .debpkg_install + image: debian:10 + dependencies: + - package:debian-10 + variables: + LEVELDB_PKG: libleveldb1d ## ## Ubuntu ## @@ -121,7 +145,7 @@ deploy:debian-9: # Trusty build:ubuntu-14.04: - <<: *build_definition + extends: .build_template image: ubuntu:trusty before_script: - echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu trusty main" > /etc/apt/sources.list.d/uptodate-toolchain.list @@ -133,102 +157,53 @@ build:ubuntu-14.04: CXX: g++-6 package:ubuntu-14.04: + extends: .debpkg_template image: ubuntu:trusty dependencies: - build:ubuntu-14.04 variables: LEVELDB_PKG: libleveldb1 - <<: *debpkg_template deploy:ubuntu-14.04: + extends: .debpkg_install image: ubuntu:trusty dependencies: - package:ubuntu-14.04 variables: LEVELDB_PKG: libleveldb1 - <<: *debpkg_install # Xenial build:ubuntu-16.04: - <<: *build_definition + extends: .build_template image: ubuntu:xenial before_script: - apt-get update -y - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev package:ubuntu-16.04: + extends: .debpkg_template image: ubuntu:xenial dependencies: - build:ubuntu-16.04 variables: LEVELDB_PKG: libleveldb1v5 - <<: *debpkg_template deploy:ubuntu-16.04: + extends: .debpkg_install image: ubuntu:xenial dependencies: - package:ubuntu-16.04 variables: LEVELDB_PKG: libleveldb1v5 - <<: *debpkg_install - -# Yakkety - -#build:ubuntu-16.10: -# <<: *build_definition -# image: ubuntu:yakkety -# before_script: -# - apt-get update -y -# - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev - -#package:ubuntu-16.10: -# image: ubuntu:yakkety -# dependencies: -# - build:ubuntu-16.10 -# variables: -# LEVELDB_PKG: libleveldb1v5 -# <<: *debpkg_template - -#deploy:ubuntu-16.10: -# image: ubuntu:yakkety -# dependencies: -# - package:ubuntu-16.10 -# variables: -# LEVELDB_PKG: libleveldb1v5 -# <<: *debpkg_install - -# Zesty - -#build:ubuntu-17.04: -# <<: *build_definition -# image: ubuntu:zesty -# before_script: -# - apt-get update -y -# - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev - -#package:ubuntu-17.04: -# image: ubuntu:zesty -# dependencies: -# - build:ubuntu-17.04 -# variables: -# LEVELDB_PKG: libleveldb1v5 -# <<: *debpkg_template - -#deploy:ubuntu-17.04: -# image: ubuntu:zesty -# dependencies: -# - package:ubuntu-17.04 -# variables: -# LEVELDB_PKG: libleveldb1v5 -# <<: *debpkg_install ## ## Fedora ## +# Do we need to support this old version ? build:fedora-24: - <<: *build_definition + extends: .build_template image: fedora:24 before_script: - dnf -y install make automake gcc gcc-c++ kernel-devel cmake libcurl* openal* libvorbis* libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel irrlicht-devel bzip2-libs gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel doxygen spatialindex-devel bzip2-devel @@ -238,7 +213,7 @@ build:fedora-24: ## Mingw for Windows ## -.generic_win_template: &generic_win_template +.generic_win_template: image: ubuntu:bionic before_script: - apt-get update -y @@ -247,8 +222,8 @@ build:fedora-24: - sed -e "s|%PREFIX%|${WIN_ARCH}-w64-mingw32|" -e "s|%ROOTPATH%|/usr/${WIN_ARCH}-w64-mingw32|" < util/travis/toolchain_mingw.cmake.in > ${TOOLCHAIN_OUTPUT} - tar -xaf mingw.tar.xz -C /usr -.build_win_template: &build_win_template - <<: *generic_win_template +.build_win_template: + extends: .generic_win_template stage: build artifacts: when: on_success @@ -256,8 +231,8 @@ build:fedora-24: paths: - build/* -.package_win_template: &package_win_template - <<: *generic_win_template +.package_win_template: + extends: .generic_win_template stage: package script: - cd build/minetest/_build @@ -275,7 +250,7 @@ build:fedora-24: - minetest-win-*/* build:win32: - <<: *build_win_template + extends: .build_win_template script: - ./util/buildbot/buildwin32.sh build variables: @@ -284,7 +259,7 @@ build:win32: TOOLCHAIN_OUTPUT: "util/buildbot/toolchain_mingw.cmake" package:win32: - <<: *package_win_template + extends: .package_win_template dependencies: - build:win32 variables: @@ -293,7 +268,7 @@ package:win32: TOOLCHAIN_OUTPUT: "util/buildbot/toolchain_mingw.cmake" build:win64: - <<: *build_win_template + extends: .build_win_template script: - ./util/buildbot/buildwin64.sh build variables: @@ -302,7 +277,7 @@ build:win64: TOOLCHAIN_OUTPUT: "util/buildbot/toolchain_mingw64.cmake" package:win64: - <<: *package_win_template + extends: .package_win_template dependencies: - build:win64 variables: @@ -338,3 +313,4 @@ pages: - public only: - master + diff --git a/Dockerfile b/Dockerfile index 37b90e483..8c82f856c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:stretch +FROM debian:buster USER root RUN apt-get update -y && \ From 2349d31bae1bfc4d58fd88efbc88261e69b11dad Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Fri, 10 Apr 2020 16:08:48 +0200 Subject: [PATCH 071/424] Install the `locale` directory in a standard location without subfolder (#9618) Other established FOSS projects don't seem to be doing this. --- CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bf409c124..8cf89dd17 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,7 +102,7 @@ elseif(UNIX) # Linux, BSD etc set(XDG_APPS_DIR "${CMAKE_INSTALL_PREFIX}/share/applications") set(APPDATADIR "${CMAKE_INSTALL_PREFIX}/share/metainfo") set(ICONDIR "${CMAKE_INSTALL_PREFIX}/share/icons") - set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/locale") + set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/locale") endif() endif() @@ -325,4 +325,3 @@ if(DOXYGEN_FOUND) COMMENT "Generating API documentation with Doxygen" VERBATIM ) endif() - From f648fb76aef96a1da608c64346fc65d4dd44caa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Fri, 10 Apr 2020 19:49:20 +0200 Subject: [PATCH 072/424] Drop genericobject.{cpp,h} (#9629) * Drop genericobject.{cpp,h} This file is not for generic object but for ActiveObject message passing. Put ownership of the various commands to the right objects and cleanup the related code. * Protect ServerActiveObject::m_messages_out * typo fix --- build/android/jni/Android.mk | 1 - src/CMakeLists.txt | 1 - src/activeobject.h | 16 ++ src/client/clientenvironment.cpp | 2 +- src/client/content_cao.cpp | 38 ++-- src/client/content_cao.h | 1 + src/content_sao.cpp | 266 ++++++++++++++++++------- src/content_sao.h | 19 ++ src/genericobject.cpp | 207 ------------------- src/genericobject.h | 87 -------- src/network/networkprotocol.h | 8 +- src/server.cpp | 7 +- src/serverenvironment.cpp | 5 +- src/serverobject.cpp | 31 +++ src/serverobject.h | 16 +- util/travis/clang-format-whitelist.txt | 2 - 16 files changed, 300 insertions(+), 407 deletions(-) delete mode 100644 src/genericobject.cpp delete mode 100644 src/genericobject.h diff --git a/build/android/jni/Android.mk b/build/android/jni/Android.mk index 72b0daab6..a2f32440a 100644 --- a/build/android/jni/Android.mk +++ b/build/android/jni/Android.mk @@ -176,7 +176,6 @@ LOCAL_SRC_FILES := \ jni/src/environment.cpp \ jni/src/face_position_cache.cpp \ jni/src/filesys.cpp \ - jni/src/genericobject.cpp \ jni/src/gettext.cpp \ jni/src/gui/guiAnimatedImage.cpp \ jni/src/gui/guiBackgroundImage.cpp \ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d579bb965..4b1d6d647 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -384,7 +384,6 @@ set(common_SRCS environment.cpp face_position_cache.cpp filesys.cpp - genericobject.cpp gettext.cpp httpfetch.cpp hud.cpp diff --git a/src/activeobject.h b/src/activeobject.h index 4a2de92cd..c83243f86 100644 --- a/src/activeobject.h +++ b/src/activeobject.h @@ -55,6 +55,22 @@ struct ActiveObjectMessage std::string datastring; }; +enum ActiveObjectCommand { + AO_CMD_SET_PROPERTIES, + AO_CMD_UPDATE_POSITION, + AO_CMD_SET_TEXTURE_MOD, + AO_CMD_SET_SPRITE, + AO_CMD_PUNCHED, + AO_CMD_UPDATE_ARMOR_GROUPS, + AO_CMD_SET_ANIMATION, + AO_CMD_SET_BONE_POSITION, + AO_CMD_ATTACH_TO, + AO_CMD_SET_PHYSICS_OVERRIDE, + AO_CMD_UPDATE_NAMETAG_ATTRIBUTES, + AO_CMD_SPAWN_INFANT, + AO_CMD_SET_ANIMATION_SPEED +}; + /* Parent class for ServerActiveObject and ClientActiveObject */ diff --git a/src/client/clientenvironment.cpp b/src/client/clientenvironment.cpp index 52d133781..6840f2db3 100644 --- a/src/client/clientenvironment.cpp +++ b/src/client/clientenvironment.cpp @@ -450,7 +450,7 @@ void ClientEnvironment::addActiveObject(u16 id, u8 type, // Object initialized: if ((obj = getActiveObject(new_id))) { // Final step is to update all children which are already known - // Data provided by GENERIC_CMD_SPAWN_INFANT + // Data provided by AO_CMD_SPAWN_INFANT const auto &children = obj->getAttachmentChildIds(); for (auto c_id : children) { if (auto *o = getActiveObject(c_id)) diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index 8509eccb5..798899f9a 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -304,7 +304,6 @@ void TestCAO::processMessage(const std::string &data) GenericCAO */ -#include "genericobject.h" #include "clientobject.h" GenericCAO::GenericCAO(Client *client, ClientEnvironment *env): @@ -1421,14 +1420,23 @@ void GenericCAO::updateAttachments() } } +void GenericCAO::readAOMessageProperties(std::istream &is) +{ + // Reset object properties first + m_prop = ObjectProperties(); + + // Then read the whole new stream + m_prop.deSerialize(is); +} + void GenericCAO::processMessage(const std::string &data) { //infostream<<"GenericCAO: Got message"<physics_override_sneak_glitch = sneak_glitch; player->physics_override_new_move = new_move; } - } else if (cmd == GENERIC_CMD_SET_ANIMATION) { + } else if (cmd == AO_CMD_SET_ANIMATION) { // TODO: change frames send as v2s32 value v2f range = readV2F32(is); if (!m_is_local_player) { @@ -1565,17 +1573,17 @@ void GenericCAO::processMessage(const std::string &data) updateAnimation(); } } - } else if (cmd == GENERIC_CMD_SET_ANIMATION_SPEED) { + } else if (cmd == AO_CMD_SET_ANIMATION_SPEED) { m_animation_speed = readF32(is); updateAnimationSpeed(); - } else if (cmd == GENERIC_CMD_SET_BONE_POSITION) { + } else if (cmd == AO_CMD_SET_BONE_POSITION) { std::string bone = deSerializeString(is); v3f position = readV3F32(is); v3f rotation = readV3F32(is); m_bone_position[bone] = core::vector2d(position, rotation); updateBonePosition(); - } else if (cmd == GENERIC_CMD_ATTACH_TO) { + } else if (cmd == AO_CMD_ATTACH_TO) { u16 parent_id = readS16(is); std::string bone = deSerializeString(is); v3f position = readV3F32(is); @@ -1586,7 +1594,7 @@ void GenericCAO::processMessage(const std::string &data) // localplayer itself can't be attached to localplayer if (!m_is_local_player) m_is_visible = !m_attached_to_local; - } else if (cmd == GENERIC_CMD_PUNCHED) { + } else if (cmd == AO_CMD_PUNCHED) { u16 result_hp = readU16(is); // Use this instead of the send damage to not interfere with prediction @@ -1624,7 +1632,7 @@ void GenericCAO::processMessage(const std::string &data) if (!m_is_player) clearChildAttachments(); } - } else if (cmd == GENERIC_CMD_UPDATE_ARMOR_GROUPS) { + } else if (cmd == AO_CMD_UPDATE_ARMOR_GROUPS) { m_armor_groups.clear(); int armor_groups_size = readU16(is); for(int i=0; inametag_pos = pos; } - } else if (cmd == GENERIC_CMD_SPAWN_INFANT) { + } else if (cmd == AO_CMD_SPAWN_INFANT) { u16 child_id = readU16(is); u8 type = readU8(is); // maybe this will be useful later (void)type; diff --git a/src/client/content_cao.h b/src/client/content_cao.h index 7c29cbf17..c53b81433 100644 --- a/src/client/content_cao.h +++ b/src/client/content_cao.h @@ -68,6 +68,7 @@ struct SmoothTranslatorWrappedv3f : SmoothTranslator class GenericCAO : public ClientActiveObject { private: + void readAOMessageProperties(std::istream &is); // Only set at initialization std::string m_name = ""; bool m_is_player = false; diff --git a/src/content_sao.cpp b/src/content_sao.cpp index 680bf372a..be7674f52 100644 --- a/src/content_sao.cpp +++ b/src/content_sao.cpp @@ -27,7 +27,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "remoteplayer.h" #include "server.h" #include "scripting_server.h" -#include "genericobject.h" #include "settings.h" #include #include @@ -289,6 +288,120 @@ void UnitSAO::notifyObjectPropertiesModified() m_properties_sent = false; } +std::string UnitSAO::generateUpdateAttachmentCommand() const +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_ATTACH_TO); + // parameters + writeS16(os, m_attachment_parent_id); + os << serializeString(m_attachment_bone); + writeV3F32(os, m_attachment_position); + writeV3F32(os, m_attachment_rotation); + return os.str(); +} + +std::string UnitSAO::generateUpdateBonePositionCommand(const std::string &bone, + const v3f &position, const v3f &rotation) +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_SET_BONE_POSITION); + // parameters + os << serializeString(bone); + writeV3F32(os, position); + writeV3F32(os, rotation); + return os.str(); +} + + +std::string UnitSAO::generateUpdateAnimationSpeedCommand() const +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_SET_ANIMATION_SPEED); + // parameters + writeF32(os, m_animation_speed); + return os.str(); +} + +std::string UnitSAO::generateUpdateAnimationCommand() const +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_SET_ANIMATION); + // parameters + writeV2F32(os, m_animation_range); + writeF32(os, m_animation_speed); + writeF32(os, m_animation_blend); + // these are sent inverted so we get true when the server sends nothing + writeU8(os, !m_animation_loop); + return os.str(); +} + + +std::string UnitSAO::generateUpdateArmorGroupsCommand() const +{ + std::ostringstream os(std::ios::binary); + writeU8(os, AO_CMD_UPDATE_ARMOR_GROUPS); + writeU16(os, m_armor_groups.size()); + for (const auto &armor_group : m_armor_groups) { + os<>::const_iterator ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii){ - std::string str = gob_cmd_update_bone_position((*ii).first, + std::string str = generateUpdateBonePositionCommand((*ii).first, (*ii).second.X, (*ii).second.Y); // create message and add to list ActiveObjectMessage aom(getId(), true, str); @@ -538,7 +647,7 @@ void LuaEntitySAO::step(float dtime, bool send_recommended) if (!m_attachment_sent) { m_attachment_sent = true; - std::string str = gob_cmd_update_attachment(m_attachment_parent_id, m_attachment_bone, m_attachment_position, m_attachment_rotation); + std::string str = generateUpdateAttachmentCommand(); // create message and add to list ActiveObjectMessage aom(getId(), true, str); m_messages_out.push(aom); @@ -560,16 +669,14 @@ std::string LuaEntitySAO::getClientInitializationData(u16 protocol_version) std::ostringstream msg_os(std::ios::binary); msg_os << serializeLongString(getPropertyPacket()); // message 1 - msg_os << serializeLongString(gob_cmd_update_armor_groups(m_armor_groups)); // 2 - msg_os << serializeLongString(gob_cmd_update_animation( - m_animation_range, m_animation_speed, m_animation_blend, m_animation_loop)); // 3 + msg_os << serializeLongString(generateUpdateArmorGroupsCommand()); // 2 + msg_os << serializeLongString(generateUpdateAnimationCommand()); // 3 for (std::unordered_map>::const_iterator ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) { - msg_os << serializeLongString(gob_cmd_update_bone_position((*ii).first, + msg_os << serializeLongString(generateUpdateBonePositionCommand((*ii).first, (*ii).second.X, (*ii).second.Y)); // m_bone_position.size } - msg_os << serializeLongString(gob_cmd_update_attachment(m_attachment_parent_id, - m_attachment_bone, m_attachment_position, m_attachment_rotation)); // 4 + msg_os << serializeLongString(generateUpdateAttachmentCommand()); // 4 int message_count = 4 + m_bone_position.size(); for (std::unordered_set::const_iterator ii = m_attachment_child_ids.begin(); (ii != m_attachment_child_ids.end()); ++ii) { @@ -577,12 +684,11 @@ std::string LuaEntitySAO::getClientInitializationData(u16 protocol_version) message_count++; // TODO after a protocol bump: only send the object initialization data // to older clients (superfluous since this message exists) - msg_os << serializeLongString(gob_cmd_update_infant(*ii, obj->getSendType(), - obj->getClientInitializationData(protocol_version))); + msg_os << serializeLongString(obj->generateUpdateInfantCommand(*ii, protocol_version)); } } - msg_os << serializeLongString(gob_cmd_set_texture_mod(m_current_texture_modifier)); + msg_os << serializeLongString(generateSetTextureModCommand()); message_count++; writeU8(os, message_count); @@ -655,10 +761,8 @@ u16 LuaEntitySAO::punch(v3f dir, setHP((s32)getHP() - result.damage, PlayerHPChangeReason(PlayerHPChangeReason::PLAYER_PUNCH, puncher)); - std::string str = gob_cmd_punched(getHP()); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + sendPunchCommand(); } } @@ -750,11 +854,9 @@ v3f LuaEntitySAO::getAcceleration() void LuaEntitySAO::setTextureMod(const std::string &mod) { - std::string str = gob_cmd_set_texture_mod(mod); m_current_texture_modifier = mod; // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, generateSetTextureModCommand()); } std::string LuaEntitySAO::getTextureMod() const @@ -762,18 +864,42 @@ std::string LuaEntitySAO::getTextureMod() const return m_current_texture_modifier; } + +std::string LuaEntitySAO::generateSetTextureModCommand() const +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_SET_TEXTURE_MOD); + // parameters + os << serializeString(m_current_texture_modifier); + return os.str(); +} + +std::string LuaEntitySAO::generateSetSpriteCommand(v2s16 p, u16 num_frames, + f32 framelength, bool select_horiz_by_yawpitch) +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_SET_SPRITE); + // parameters + writeV2S16(os, p); + writeU16(os, num_frames); + writeF32(os, framelength); + writeU8(os, select_horiz_by_yawpitch); + return os.str(); +} + void LuaEntitySAO::setSprite(v2s16 p, int num_frames, float framelength, bool select_horiz_by_yawpitch) { - std::string str = gob_cmd_set_sprite( + std::string str = generateSetSpriteCommand( p, num_frames, framelength, select_horiz_by_yawpitch ); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, str); } std::string LuaEntitySAO::getName() @@ -783,7 +909,7 @@ std::string LuaEntitySAO::getName() std::string LuaEntitySAO::getPropertyPacket() { - return gob_cmd_set_properties(m_prop); + return generateSetPropertiesCommand(m_prop); } void LuaEntitySAO::sendPosition(bool do_interpolate, bool is_movement_end) @@ -802,7 +928,7 @@ void LuaEntitySAO::sendPosition(bool do_interpolate, bool is_movement_end) float update_interval = m_env->getSendRecommendedInterval(); - std::string str = gob_cmd_update_position( + std::string str = generateUpdatePositionCommand( m_base_position, m_velocity, m_acceleration, @@ -812,8 +938,7 @@ void LuaEntitySAO::sendPosition(bool do_interpolate, bool is_movement_end) update_interval ); // create message and add to list - ActiveObjectMessage aom(getId(), false, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), false, str); } bool LuaEntitySAO::getCollisionBox(aabb3f *toset) const @@ -949,28 +1074,23 @@ std::string PlayerSAO::getClientInitializationData(u16 protocol_version) std::ostringstream msg_os(std::ios::binary); msg_os << serializeLongString(getPropertyPacket()); // message 1 - msg_os << serializeLongString(gob_cmd_update_armor_groups(m_armor_groups)); // 2 - msg_os << serializeLongString(gob_cmd_update_animation( - m_animation_range, m_animation_speed, m_animation_blend, m_animation_loop)); // 3 + msg_os << serializeLongString(generateUpdateArmorGroupsCommand()); // 2 + msg_os << serializeLongString(generateUpdateAnimationCommand()); // 3 for (std::unordered_map>::const_iterator ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) { - msg_os << serializeLongString(gob_cmd_update_bone_position((*ii).first, + msg_os << serializeLongString(generateUpdateBonePositionCommand((*ii).first, (*ii).second.X, (*ii).second.Y)); // m_bone_position.size } - msg_os << serializeLongString(gob_cmd_update_attachment(m_attachment_parent_id, - m_attachment_bone, m_attachment_position, m_attachment_rotation)); // 4 - msg_os << serializeLongString(gob_cmd_update_physics_override(m_physics_override_speed, - m_physics_override_jump, m_physics_override_gravity, m_physics_override_sneak, - m_physics_override_sneak_glitch, m_physics_override_new_move)); // 5 - // (GENERIC_CMD_UPDATE_NAMETAG_ATTRIBUTES) : Deprecated, for backwards compatibility only. - msg_os << serializeLongString(gob_cmd_update_nametag_attributes(m_prop.nametag_color)); // 6 + msg_os << serializeLongString(generateUpdateAttachmentCommand()); // 4 + msg_os << serializeLongString(generateUpdatePhysicsOverrideCommand()); // 5 + // (AO_CMD_UPDATE_NAMETAG_ATTRIBUTES) : Deprecated, for backwards compatibility only. + msg_os << serializeLongString(generateUpdateNametagAttributesCommand(m_prop.nametag_color)); // 6 int message_count = 6 + m_bone_position.size(); for (std::unordered_set::const_iterator ii = m_attachment_child_ids.begin(); ii != m_attachment_child_ids.end(); ++ii) { if (ServerActiveObject *obj = m_env->getActiveObject(*ii)) { message_count++; - msg_os << serializeLongString(gob_cmd_update_infant(*ii, obj->getSendType(), - obj->getClientInitializationData(protocol_version))); + msg_os << serializeLongString(obj->generateUpdateInfantCommand(*ii, protocol_version)); } } @@ -1116,7 +1236,7 @@ void PlayerSAO::step(float dtime, bool send_recommended) else pos = m_base_position; - std::string str = gob_cmd_update_position( + std::string str = generateUpdatePositionCommand( pos, v3f(0.0f, 0.0f, 0.0f), v3f(0.0f, 0.0f, 0.0f), @@ -1126,61 +1246,63 @@ void PlayerSAO::step(float dtime, bool send_recommended) update_interval ); // create message and add to list - ActiveObjectMessage aom(getId(), false, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), false, str); } if (!m_armor_groups_sent) { m_armor_groups_sent = true; - std::string str = gob_cmd_update_armor_groups( - m_armor_groups); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, generateUpdateArmorGroupsCommand()); } if (!m_physics_override_sent) { m_physics_override_sent = true; - std::string str = gob_cmd_update_physics_override(m_physics_override_speed, - m_physics_override_jump, m_physics_override_gravity, - m_physics_override_sneak, m_physics_override_sneak_glitch, - m_physics_override_new_move); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, generateUpdatePhysicsOverrideCommand()); } if (!m_animation_sent) { m_animation_sent = true; - std::string str = gob_cmd_update_animation( - m_animation_range, m_animation_speed, m_animation_blend, m_animation_loop); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, generateUpdateAnimationCommand()); } if (!m_bone_position_sent) { m_bone_position_sent = true; for (std::unordered_map>::const_iterator ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) { - std::string str = gob_cmd_update_bone_position((*ii).first, + std::string str = generateUpdateBonePositionCommand((*ii).first, (*ii).second.X, (*ii).second.Y); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, str); } } if (!m_attachment_sent) { m_attachment_sent = true; - std::string str = gob_cmd_update_attachment(m_attachment_parent_id, - m_attachment_bone, m_attachment_position, m_attachment_rotation); + std::string str = generateUpdateAttachmentCommand(); // create message and add to list ActiveObjectMessage aom(getId(), true, str); m_messages_out.push(aom); } } +std::string PlayerSAO::generateUpdatePhysicsOverrideCommand() const +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_SET_PHYSICS_OVERRIDE); + // parameters + writeF32(os, m_physics_override_speed); + writeF32(os, m_physics_override_jump); + writeF32(os, m_physics_override_gravity); + // these are sent inverted so we get true when the server sends nothing + writeU8(os, !m_physics_override_sneak); + writeU8(os, !m_physics_override_sneak_glitch); + writeU8(os, !m_physics_override_new_move); + return os.str(); +} + void PlayerSAO::setBasePosition(const v3f &position) { if (m_player && position != m_base_position) @@ -1284,10 +1406,8 @@ u16 PlayerSAO::punch(v3f dir, // No effect if PvP disabled or if immortal if (isImmortal() || !g_settings->getBool("enable_pvp")) { if (puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) { - std::string str = gob_cmd_punched(getHP()); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + sendPunchCommand(); return 0; } } @@ -1307,10 +1427,8 @@ u16 PlayerSAO::punch(v3f dir, PlayerHPChangeReason(PlayerHPChangeReason::PLAYER_PUNCH, puncher)); } else { // override client prediction if (puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) { - std::string str = gob_cmd_punched(getHP()); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + sendPunchCommand(); } } @@ -1408,7 +1526,7 @@ void PlayerSAO::unlinkPlayerSessionAndSave() std::string PlayerSAO::getPropertyPacket() { m_prop.is_visible = (true); - return gob_cmd_set_properties(m_prop); + return generateSetPropertiesCommand(m_prop); } void PlayerSAO::setMaxSpeedOverride(const v3f &vel) diff --git a/src/content_sao.h b/src/content_sao.h index e9047daf0..e0304299a 100644 --- a/src/content_sao.h +++ b/src/content_sao.h @@ -67,6 +67,19 @@ public: ServerActiveObject *getParent() const; ObjectProperties* accessObjectProperties(); void notifyObjectPropertiesModified(); + + std::string generateUpdateAttachmentCommand() const; + std::string generateUpdateAnimationSpeedCommand() const; + std::string generateUpdateAnimationCommand() const; + std::string generateUpdateArmorGroupsCommand() const; + static std::string generateUpdatePositionCommand(const v3f &position, const v3f &velocity, + const v3f &acceleration, const v3f &rotation, bool do_interpolate, + bool is_movement_end, f32 update_interval); + std::string generateSetPropertiesCommand(const ObjectProperties &prop) const; + void sendPunchCommand(); + static std::string generateUpdateBonePositionCommand(const std::string &bone, + const v3f &position, const v3f &rotation); + protected: u16 m_hp = 1; @@ -98,6 +111,8 @@ protected: private: void onAttach(int parent_id); void onDetach(int parent_id); + + std::string generatePunchCommand(u16 result_hp) const; }; /* @@ -155,6 +170,9 @@ public: private: std::string getPropertyPacket(); void sendPosition(bool do_interpolate, bool is_movement_end); + std::string generateSetTextureModCommand() const; + static std::string generateSetSpriteCommand(v2s16 p, u16 num_frames, f32 framelength, + bool select_horiz_by_yawpitch); std::string m_init_name; std::string m_init_state; @@ -350,6 +368,7 @@ public: private: std::string getPropertyPacket(); void unlinkPlayerSessionAndSave(); + std::string generateUpdatePhysicsOverrideCommand() const; RemotePlayer *m_player = nullptr; session_t m_peer_id = 0; diff --git a/src/genericobject.cpp b/src/genericobject.cpp deleted file mode 100644 index 49d16001f..000000000 --- a/src/genericobject.cpp +++ /dev/null @@ -1,207 +0,0 @@ -/* -Minetest -Copyright (C) 2013 celeron55, Perttu Ahola - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2.1 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include "genericobject.h" -#include -#include "util/serialize.h" - -std::string gob_cmd_set_properties(const ObjectProperties &prop) -{ - std::ostringstream os(std::ios::binary); - writeU8(os, GENERIC_CMD_SET_PROPERTIES); - prop.serialize(os); - return os.str(); -} - -ObjectProperties gob_read_set_properties(std::istream &is) -{ - ObjectProperties prop; - prop.deSerialize(is); - return prop; -} - -std::string gob_cmd_update_position( - v3f position, - v3f velocity, - v3f acceleration, - v3f rotation, - bool do_interpolate, - bool is_movement_end, - f32 update_interval -){ - std::ostringstream os(std::ios::binary); - // command - writeU8(os, GENERIC_CMD_UPDATE_POSITION); - // pos - writeV3F32(os, position); - // velocity - writeV3F32(os, velocity); - // acceleration - writeV3F32(os, acceleration); - // rotation - writeV3F32(os, rotation); - // do_interpolate - writeU8(os, do_interpolate); - // is_end_position (for interpolation) - writeU8(os, is_movement_end); - // update_interval (for interpolation) - writeF32(os, update_interval); - return os.str(); -} - -std::string gob_cmd_set_texture_mod(const std::string &mod) -{ - std::ostringstream os(std::ios::binary); - // command - writeU8(os, GENERIC_CMD_SET_TEXTURE_MOD); - // parameters - os< - -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. -*/ - -#pragma once - -#include -#include "irrlichttypes_bloated.h" -#include -#include "itemgroup.h" - -enum GenericCMD { - GENERIC_CMD_SET_PROPERTIES, - GENERIC_CMD_UPDATE_POSITION, - GENERIC_CMD_SET_TEXTURE_MOD, - GENERIC_CMD_SET_SPRITE, - GENERIC_CMD_PUNCHED, - GENERIC_CMD_UPDATE_ARMOR_GROUPS, - GENERIC_CMD_SET_ANIMATION, - GENERIC_CMD_SET_BONE_POSITION, - GENERIC_CMD_ATTACH_TO, - GENERIC_CMD_SET_PHYSICS_OVERRIDE, - GENERIC_CMD_UPDATE_NAMETAG_ATTRIBUTES, - GENERIC_CMD_SPAWN_INFANT, - GENERIC_CMD_SET_ANIMATION_SPEED -}; - -#include "object_properties.h" -std::string gob_cmd_set_properties(const ObjectProperties &prop); -ObjectProperties gob_read_set_properties(std::istream &is); - -std::string gob_cmd_update_position( - v3f position, - v3f velocity, - v3f acceleration, - v3f rotation, - bool do_interpolate, - bool is_movement_end, - f32 update_interval -); - -std::string gob_cmd_set_texture_mod(const std::string &mod); - -std::string gob_cmd_set_sprite( - v2s16 p, - u16 num_frames, - f32 framelength, - bool select_horiz_by_yawpitch -); - -std::string gob_cmd_punched(u16 result_hp); - -std::string gob_cmd_update_armor_groups(const ItemGroupList &armor_groups); - -std::string gob_cmd_update_physics_override(float physics_override_speed, - float physics_override_jump, float physics_override_gravity, - bool sneak, bool sneak_glitch, bool new_move); - -std::string gob_cmd_update_animation(v2f frames, float frame_speed, float frame_blend, bool frame_loop); - -std::string gob_cmd_update_animation_speed(float frame_speed); - -std::string gob_cmd_update_bone_position(const std::string &bone, v3f position, - v3f rotation); - -std::string gob_cmd_update_attachment(int parent_id, const std::string &bone, - v3f position, v3f rotation); - -std::string gob_cmd_update_nametag_attributes(video::SColor color); - -std::string gob_cmd_update_infant(u16 id, u8 type, - const std::string &client_initialization_data); diff --git a/src/network/networkprotocol.h b/src/network/networkprotocol.h index d3799868b..7223ce05c 100644 --- a/src/network/networkprotocol.h +++ b/src/network/networkprotocol.h @@ -70,8 +70,8 @@ with this program; if not, write to the Free Software Foundation, Inc., 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 + AO_CMD_SET_ANIMATION + AO_CMD_SET_BONE_POSITION GENERIC_CMD_SET_ATTACHMENT PROTOCOL_VERSION 15: Serialization format changes @@ -87,7 +87,7 @@ with this program; if not, write to the Free Software Foundation, Inc., damageGroups added to ToolCapabilities sound_place added to ItemDefinition PROTOCOL_VERSION 19: - GENERIC_CMD_SET_PHYSICS_OVERRIDE + AO_CMD_SET_PHYSICS_OVERRIDE PROTOCOL_VERSION 20: TOCLIENT_HUDADD TOCLIENT_HUDRM @@ -131,7 +131,7 @@ with this program; if not, write to the Free Software Foundation, Inc., Add TOCLIENT_HELLO for presenting server to client after client presentation Add TOCLIENT_AUTH_ACCEPT to accept connection from client - Rename GENERIC_CMD_SET_ATTACHMENT to GENERIC_CMD_ATTACH_TO + Rename GENERIC_CMD_SET_ATTACHMENT to AO_CMD_ATTACH_TO PROTOCOL_VERSION 26: Add TileDef tileable_horizontal, tileable_vertical flags PROTOCOL_VERSION 27: diff --git a/src/server.cpp b/src/server.cpp index 9eea45b31..062fe0798 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -35,7 +35,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "filesys.h" #include "mapblock.h" #include "serverobject.h" -#include "genericobject.h" #include "settings.h" #include "profiler.h" #include "log.h" @@ -721,7 +720,7 @@ void Server::AsyncRunStep(bool initial_step) // Go through every message for (const ActiveObjectMessage &aom : *list) { // Send position updates to players who do not see the attachment - if (aom.datastring[0] == GENERIC_CMD_UPDATE_POSITION) { + if (aom.datastring[0] == AO_CMD_UPDATE_POSITION) { if (sao->getId() == player->getId()) continue; @@ -1819,9 +1818,7 @@ void Server::SendPlayerHP(session_t peer_id) m_script->player_event(playersao,"health_changed"); // Send to other clients - std::string str = gob_cmd_punched(playersao->getHP()); - ActiveObjectMessage aom(playersao->getId(), true, str); - playersao->m_messages_out.push(aom); + playersao->sendPunchCommand(); } void Server::SendPlayerBreath(PlayerSAO *sao) diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 333d32ff5..2d3ee078e 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -1420,10 +1420,7 @@ void ServerEnvironment::step(float dtime) // Step object obj->step(dtime, send_recommended); // Read messages from object - while (!obj->m_messages_out.empty()) { - this->m_active_object_messages.push(obj->m_messages_out.front()); - obj->m_messages_out.pop(); - } + obj->dumpAOMessagesToQueue(m_active_object_messages); }; m_ao_manager.step(dtime, cb_state); } diff --git a/src/serverobject.cpp b/src/serverobject.cpp index 1ed33f66b..119a41b7b 100644 --- a/src/serverobject.cpp +++ b/src/serverobject.cpp @@ -81,3 +81,34 @@ bool ServerActiveObject::setWieldedItem(const ItemStack &item) { return false; } + +std::string ServerActiveObject::generateUpdateInfantCommand(u16 infant_id, u16 protocol_version) +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_SPAWN_INFANT); + // parameters + writeU16(os, infant_id); + writeU8(os, getSendType()); + os << serializeLongString(getClientInitializationData(protocol_version)); + return os.str(); +} + +std::string ServerActiveObject::generateUpdateNametagAttributesCommand(const video::SColor &color) const +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_UPDATE_NAMETAG_ATTRIBUTES); + // parameters + writeU8(os, 1); // version for forward compatibility + writeARGB8(os, color); + return os.str(); +} + +void ServerActiveObject::dumpAOMessagesToQueue(std::queue &queue) +{ + while (!m_messages_out.empty()) { + queue.push(m_messages_out.front()); + m_messages_out.pop(); + } +} \ No newline at end of file diff --git a/src/serverobject.h b/src/serverobject.h index 48689fcb4..2e013a6b6 100644 --- a/src/serverobject.h +++ b/src/serverobject.h @@ -113,7 +113,7 @@ public: The return value of this is passed to the client-side object when it is created */ - virtual std::string getClientInitializationData(u16 protocol_version){return "";} + virtual std::string getClientInitializationData(u16 protocol_version) {return "";} /* The return value of this is passed to the server-side object @@ -192,6 +192,10 @@ public: m_attached_particle_spawners.erase(id); } + std::string generateUpdateInfantCommand(u16 infant_id, u16 protocol_version); + std::string generateUpdateNametagAttributesCommand(const video::SColor &color) const; + + void dumpAOMessagesToQueue(std::queue &queue); /* Number of players which know about this object. Object won't be @@ -236,11 +240,6 @@ public: */ v3s16 m_static_block = v3s16(1337,1337,1337); - /* - Queue of messages to be sent to the client - */ - std::queue m_messages_out; - protected: virtual void onAttach(int parent_id) {} virtual void onDetach(int parent_id) {} @@ -255,6 +254,11 @@ protected: v3f m_base_position; std::unordered_set m_attached_particle_spawners; + /* + Queue of messages to be sent to the client + */ + std::queue m_messages_out; + private: // Used for creating objects based on type static std::map m_types; diff --git a/util/travis/clang-format-whitelist.txt b/util/travis/clang-format-whitelist.txt index 05b4a96c4..7b2fd8236 100644 --- a/util/travis/clang-format-whitelist.txt +++ b/util/travis/clang-format-whitelist.txt @@ -151,8 +151,6 @@ src/fontengine.h src/game.cpp src/gamedef.h src/game.h -src/genericobject.cpp -src/genericobject.h src/gettext.cpp src/gettext.h src/gui/guiAnimatedImage.cpp From 35e778ee9ff2e0e9ab096eaf2d1a903c5eaa42b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Fri, 10 Apr 2020 20:10:51 +0200 Subject: [PATCH 073/424] Move clientsimpleobject.h to client folder (#9630) This file is only called from client folder, retrieve its friends :) --- src/{ => client}/clientsimpleobject.h | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{ => client}/clientsimpleobject.h (100%) diff --git a/src/clientsimpleobject.h b/src/client/clientsimpleobject.h similarity index 100% rename from src/clientsimpleobject.h rename to src/client/clientsimpleobject.h From aa3cf400e2ca4096517e926dbae5b6337b2f1876 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 10 Apr 2020 20:36:16 +0200 Subject: [PATCH 074/424] Print error if invalid mapgen alias was detected (#9579) --- src/mapgen/mapgen.cpp | 7 +++++++ src/mapgen/mapgen_v6.cpp | 15 +++++++++++++++ src/mapgen/treegen.cpp | 17 +++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/src/mapgen/mapgen.cpp b/src/mapgen/mapgen.cpp index 79c429ff6..6c426ba41 100644 --- a/src/mapgen/mapgen.cpp +++ b/src/mapgen/mapgen.cpp @@ -629,6 +629,13 @@ MapgenBasic::MapgenBasic(int mapgenid, MapgenParams *params, EmergeManager *emer // Lava falls back to water as both are suitable as cave liquids. if (c_lava_source == CONTENT_IGNORE) c_lava_source = c_water_source; + + if (c_stone == CONTENT_IGNORE) + errorstream << "Mapgen: Mapgen alias 'mapgen_stone' is invalid!" << std::endl; + if (c_water_source == CONTENT_IGNORE) + errorstream << "Mapgen: Mapgen alias 'mapgen_water_source' is invalid!" << std::endl; + if (c_river_water_source == CONTENT_IGNORE) + warningstream << "Mapgen: Mapgen alias 'mapgen_river_water_source' is invalid!" << std::endl; } diff --git a/src/mapgen/mapgen_v6.cpp b/src/mapgen/mapgen_v6.cpp index 653adc8ec..8a863c044 100644 --- a/src/mapgen/mapgen_v6.cpp +++ b/src/mapgen/mapgen_v6.cpp @@ -132,6 +132,21 @@ MapgenV6::MapgenV6(MapgenV6Params *params, EmergeManager *emerge) c_stair_cobble = c_cobble; if (c_stair_desert_stone == CONTENT_IGNORE) c_stair_desert_stone = c_desert_stone; + + if (c_stone == CONTENT_IGNORE) + errorstream << "Mapgen v6: Mapgen alias 'mapgen_stone' is invalid!" << std::endl; + if (c_dirt == CONTENT_IGNORE) + errorstream << "Mapgen v6: Mapgen alias 'mapgen_dirt' is invalid!" << std::endl; + if (c_dirt_with_grass == CONTENT_IGNORE) + errorstream << "Mapgen v6: Mapgen alias 'mapgen_dirt_with_grass' is invalid!" << std::endl; + if (c_sand == CONTENT_IGNORE) + errorstream << "Mapgen v6: Mapgen alias 'mapgen_sand' is invalid!" << std::endl; + if (c_water_source == CONTENT_IGNORE) + errorstream << "Mapgen v6: Mapgen alias 'mapgen_water_source' is invalid!" << std::endl; + if (c_lava_source == CONTENT_IGNORE) + errorstream << "Mapgen v6: Mapgen alias 'mapgen_lava_source' is invalid!" << std::endl; + if (c_cobble == CONTENT_IGNORE) + errorstream << "Mapgen v6: Mapgen alias 'mapgen_cobble' is invalid!" << std::endl; } diff --git a/src/mapgen/treegen.cpp b/src/mapgen/treegen.cpp index 0d8af2851..89bdef73b 100644 --- a/src/mapgen/treegen.cpp +++ b/src/mapgen/treegen.cpp @@ -44,6 +44,12 @@ void make_tree(MMVManip &vmanip, v3s16 p0, bool is_apple_tree, MapNode treenode(ndef->getId("mapgen_tree")); MapNode leavesnode(ndef->getId("mapgen_leaves")); MapNode applenode(ndef->getId("mapgen_apple")); + if (treenode == CONTENT_IGNORE) + errorstream << "Treegen: Mapgen alias 'mapgen_tree' is invalid!" << std::endl; + if (leavesnode == CONTENT_IGNORE) + errorstream << "Treegen: Mapgen alias 'mapgen_leaves' is invalid!" << std::endl; + if (applenode == CONTENT_IGNORE) + errorstream << "Treegen: Mapgen alias 'mapgen_apple' is invalid!" << std::endl; PseudoRandom pr(seed); s16 trunk_h = pr.range(4, 5); @@ -145,6 +151,9 @@ treegen::error make_ltree(MMVManip &vmanip, v3s16 p0, const NodeDefManager *ndef, TreeDef tree_definition) { MapNode dirtnode(ndef->getId("mapgen_dirt")); + if (dirtnode == CONTENT_IGNORE) + errorstream << "Treegen (make_ltree): Mapgen alias 'mapgen_dirt' is invalid!" << std::endl; + s32 seed; if (tree_definition.explicit_seed) seed = tree_definition.seed + 14002; @@ -662,6 +671,10 @@ void make_jungletree(MMVManip &vmanip, v3s16 p0, const NodeDefManager *ndef, c_tree = ndef->getId("mapgen_tree"); if (c_leaves == CONTENT_IGNORE) c_leaves = ndef->getId("mapgen_leaves"); + if (c_tree == CONTENT_IGNORE) + errorstream << "Treegen: Mapgen alias 'mapgen_jungletree' is invalid!" << std::endl; + if (c_leaves == CONTENT_IGNORE) + errorstream << "Treegen: Mapgen alias 'mapgen_jungleleaves' is invalid!" << std::endl; MapNode treenode(c_tree); MapNode leavesnode(c_leaves); @@ -765,6 +778,10 @@ void make_pine_tree(MMVManip &vmanip, v3s16 p0, const NodeDefManager *ndef, c_leaves = ndef->getId("mapgen_leaves"); if (c_snow == CONTENT_IGNORE) c_snow = CONTENT_AIR; + if (c_tree == CONTENT_IGNORE) + errorstream << "Treegen: Mapgen alias 'mapgen_pine_tree' is invalid!" << std::endl; + if (c_leaves == CONTENT_IGNORE) + errorstream << "Treegen: Mapgen alias 'mapgen_pine_needles' is invalid!" << std::endl; MapNode treenode(c_tree); MapNode leavesnode(c_leaves); From f105bc8dc2444d98a9cd74a2caa0013ce2e07008 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 10 Apr 2020 21:45:07 +0200 Subject: [PATCH 075/424] A few initialization cleanups --- src/client/client.cpp | 8 ++++++-- src/client/game.cpp | 5 ++++- src/script/scripting_client.cpp | 8 +++++--- src/script/scripting_client.h | 3 +++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/client/client.cpp b/src/client/client.cpp index c9cd24cb3..c3e2a4d2a 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -178,7 +178,7 @@ void Client::loadMods() infostream << mod.name << " "; infostream << std::endl; - // Load and run "mod" scripts + // Load "mod" scripts for (const ModSpec &mod : m_mods) { if (!string_allowed(mod.name, MODNAME_ALLOWED_CHARS)) { throw ModError("Error loading mod \"" + mod.name + @@ -188,7 +188,7 @@ void Client::loadMods() scanModIntoMemory(mod.name, mod.path); } - // Load and run "mod" scripts + // Run them for (const ModSpec &mod : m_mods) m_script->loadModFromMemory(mod.name); @@ -197,10 +197,14 @@ void Client::loadMods() // Run a callback when mods are loaded m_script->on_mods_loaded(); + + // Create objects if they're ready if (m_state == LC_Ready) m_script->on_client_ready(m_env.getLocalPlayer()); if (m_camera) m_script->on_camera_ready(m_camera); + if (m_minimap) + m_script->on_minimap_ready(m_minimap); } bool Client::checkBuiltinIntegrity() diff --git a/src/client/game.cpp b/src/client/game.cpp index 437cc7871..505108caf 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -1407,8 +1407,11 @@ bool Game::createClient(const std::string &playername, } mapper = client->getMinimap(); - if (mapper) + if (mapper) { mapper->setMinimapMode(MINIMAP_MODE_OFF); + if (client->modsLoaded()) + client->getScript()->on_minimap_ready(mapper); + } return true; } diff --git a/src/script/scripting_client.cpp b/src/script/scripting_client.cpp index 1288b1df7..6643a9509 100644 --- a/src/script/scripting_client.cpp +++ b/src/script/scripting_client.cpp @@ -55,9 +55,6 @@ ClientScripting::ClientScripting(Client *client): InitializeModApi(L, top); lua_pop(L, 1); - if (client->getMinimap()) - LuaMinimap::create(L, client->getMinimap()); - // Push builtin initialization type lua_pushstring(L, "client"); lua_setglobal(L, "INIT"); @@ -94,3 +91,8 @@ void ClientScripting::on_camera_ready(Camera *camera) { LuaCamera::create(getStack(), camera); } + +void ClientScripting::on_minimap_ready(Minimap *minimap) +{ + LuaMinimap::create(getStack(), minimap); +} diff --git a/src/script/scripting_client.h b/src/script/scripting_client.h index cfecfa165..3088029f0 100644 --- a/src/script/scripting_client.h +++ b/src/script/scripting_client.h @@ -28,6 +28,8 @@ with this program; if not, write to the Free Software Foundation, Inc., class Client; class LocalPlayer; class Camera; +class Minimap; + class ClientScripting: virtual public ScriptApiBase, public ScriptApiSecurity, @@ -38,6 +40,7 @@ public: ClientScripting(Client *client); void on_client_ready(LocalPlayer *localplayer); void on_camera_ready(Camera *camera); + void on_minimap_ready(Minimap *minimap); private: virtual void InitializeModApi(lua_State *L, int top); From 054c5dfaa35dd79560a465ccc0ef214cb5f34c88 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 10 Apr 2020 22:06:24 +0200 Subject: [PATCH 076/424] scriptapi: Sort out ServerEnvironment / Environment distinction properly The API implementation is shared between CSM and SSM. Functions should retrieve a plain env when they do not need any server-specific functions. --- src/environment.cpp | 18 ++++++++++++ src/environment.h | 10 +++++++ src/script/lua_api/l_env.cpp | 50 +++++++++++---------------------- src/script/lua_api/l_internal.h | 29 +++++++++++++++++-- src/script/lua_api/l_object.cpp | 2 +- src/serverenvironment.cpp | 18 ------------ src/serverenvironment.h | 10 ------- 7 files changed, 72 insertions(+), 65 deletions(-) diff --git a/src/environment.cpp b/src/environment.cpp index 906f35219..c997be3ff 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -83,6 +83,24 @@ float Environment::getTimeOfDayF() return m_time_of_day_f; } +bool Environment::line_of_sight(v3f pos1, v3f pos2, v3s16 *p) +{ + // Iterate trough nodes on the line + voxalgo::VoxelLineIterator iterator(pos1 / BS, (pos2 - pos1) / BS); + do { + MapNode n = getMap().getNode(iterator.m_current_node_pos); + + // Return non-air + if (n.param0 != CONTENT_AIR) { + if (p) + *p = iterator.m_current_node_pos; + return false; + } + iterator.next(); + } while (iterator.m_current_index <= iterator.m_last_index); + return true; +} + /* Check if a node is pointable */ diff --git a/src/environment.h b/src/environment.h index f568ba228..91c33ba15 100644 --- a/src/environment.h +++ b/src/environment.h @@ -76,6 +76,16 @@ public: u32 getDayCount(); + /*! + * Returns false if the given line intersects with a + * non-air node, true otherwise. + * \param pos1 start of the line + * \param pos2 end of the line + * \param p output, position of the first non-air node + * the line intersects + */ + bool line_of_sight(v3f pos1, v3f pos2, v3s16 *p = nullptr); + /*! * Gets the objects pointed by the shootline as * pointed things. diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index 3169fa4cf..31e582d3d 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -139,8 +139,7 @@ void LuaLBM::trigger(ServerEnvironment *env, v3s16 p, MapNode n) int LuaRaycast::l_next(lua_State *L) { - MAP_LOCK_REQUIRED; - GET_ENV_PTR; + GET_PLAIN_ENV_PTR; bool csm = false; #ifndef SERVER @@ -384,7 +383,7 @@ int ModApiEnvMod::l_get_node_or_nil(lua_State *L) // timeofday: nil = current time, 0 = night, 0.5 = day int ModApiEnvMod::l_get_node_light(lua_State *L) { - GET_ENV_PTR; + GET_PLAIN_ENV_PTR; // Do it v3s16 pos = read_v3s16(L, 1); @@ -488,10 +487,7 @@ int ModApiEnvMod::l_punch_node(lua_State *L) // pos = {x=num, y=num, z=num} int ModApiEnvMod::l_get_node_max_level(lua_State *L) { - Environment *env = getEnv(L); - if (!env) { - return 0; - } + GET_PLAIN_ENV_PTR; v3s16 pos = read_v3s16(L, 1); MapNode n = env->getMap().getNode(pos); @@ -503,10 +499,7 @@ int ModApiEnvMod::l_get_node_max_level(lua_State *L) // pos = {x=num, y=num, z=num} int ModApiEnvMod::l_get_node_level(lua_State *L) { - Environment *env = getEnv(L); - if (!env) { - return 0; - } + GET_PLAIN_ENV_PTR; v3s16 pos = read_v3s16(L, 1); MapNode n = env->getMap().getNode(pos); @@ -551,7 +544,7 @@ int ModApiEnvMod::l_add_node_level(lua_State *L) // find_nodes_with_meta(pos1, pos2) int ModApiEnvMod::l_find_nodes_with_meta(lua_State *L) { - GET_ENV_PTR; + GET_PLAIN_ENV_PTR; std::vector positions = env->getMap().findNodesWithMetadata( check_v3s16(L, 1), check_v3s16(L, 2)); @@ -728,10 +721,7 @@ int ModApiEnvMod::l_set_timeofday(lua_State *L) // get_timeofday() -> 0...1 int ModApiEnvMod::l_get_timeofday(lua_State *L) { - Environment *env = getEnv(L); - if (!env) { - return 0; - } + GET_PLAIN_ENV_PTR; // Do it int timeofday_mh = env->getTimeOfDay(); @@ -743,10 +733,7 @@ int ModApiEnvMod::l_get_timeofday(lua_State *L) // get_day_count() -> int int ModApiEnvMod::l_get_day_count(lua_State *L) { - Environment *env = getEnv(L); - if (!env) { - return 0; - } + GET_PLAIN_ENV_PTR; lua_pushnumber(L, env->getDayCount()); return 1; @@ -767,12 +754,9 @@ int ModApiEnvMod::l_get_gametime(lua_State *L) // nodenames: eg. {"ignore", "group:tree"} or "default:dirt" int ModApiEnvMod::l_find_node_near(lua_State *L) { - Environment *env = getEnv(L); - if (!env) { - return 0; - } + GET_PLAIN_ENV_PTR; - const NodeDefManager *ndef = getGameDef(L)->ndef(); + const NodeDefManager *ndef = env->getGameDef()->ndef(); v3s16 pos = read_v3s16(L, 1); int radius = luaL_checkinteger(L, 2); std::vector filter; @@ -815,20 +799,19 @@ int ModApiEnvMod::l_find_node_near(lua_State *L) // nodenames: eg. {"ignore", "group:tree"} or "default:dirt" int ModApiEnvMod::l_find_nodes_in_area(lua_State *L) { - GET_ENV_PTR; + GET_PLAIN_ENV_PTR; v3s16 minp = read_v3s16(L, 1); v3s16 maxp = read_v3s16(L, 2); sortBoxVerticies(minp, maxp); + const NodeDefManager *ndef = env->getGameDef()->ndef(); + #ifndef SERVER - const NodeDefManager *ndef = getClient(L) ? getClient(L)->ndef() : getServer(L)->ndef(); if (getClient(L)) { minp = getClient(L)->CSMClampPos(minp); maxp = getClient(L)->CSMClampPos(maxp); } -#else - const NodeDefManager *ndef = getServer(L)->ndef(); #endif v3s16 cube = maxp - minp + 1; @@ -892,20 +875,19 @@ int ModApiEnvMod::l_find_nodes_in_area_under_air(lua_State *L) * TODO */ - GET_ENV_PTR; + GET_PLAIN_ENV_PTR; v3s16 minp = read_v3s16(L, 1); v3s16 maxp = read_v3s16(L, 2); sortBoxVerticies(minp, maxp); + const NodeDefManager *ndef = env->getGameDef()->ndef(); + #ifndef SERVER - const NodeDefManager *ndef = getClient(L) ? getClient(L)->ndef() : getServer(L)->ndef(); if (getClient(L)) { minp = getClient(L)->CSMClampPos(minp); maxp = getClient(L)->CSMClampPos(maxp); } -#else - const NodeDefManager *ndef = getServer(L)->ndef(); #endif v3s16 cube = maxp - minp + 1; @@ -1034,7 +1016,7 @@ int ModApiEnvMod::l_clear_objects(lua_State *L) // line_of_sight(pos1, pos2) -> true/false, pos int ModApiEnvMod::l_line_of_sight(lua_State *L) { - GET_ENV_PTR; + GET_PLAIN_ENV_PTR; // read position 1 from lua v3f pos1 = checkFloatPos(L, 1); diff --git a/src/script/lua_api/l_internal.h b/src/script/lua_api/l_internal.h index bbedfe46e..a86eeaf79 100644 --- a/src/script/lua_api/l_internal.h +++ b/src/script/lua_api/l_internal.h @@ -32,14 +32,39 @@ with this program; if not, write to the Free Software Foundation, Inc., #define luamethod_aliased(class, name, alias) {#name, class::l_##name}, {#alias, class::l_##name} #define API_FCT(name) registerFunction(L, #name, l_##name, top) -#define MAP_LOCK_REQUIRED -#define NO_MAP_LOCK_REQUIRED +// For future use +#define MAP_LOCK_REQUIRED ((void)0) +#define NO_MAP_LOCK_REQUIRED ((void)0) +/* In debug mode ensure no code tries to retrieve the server env when it isn't + * actually available (in CSM) */ +#if !defined(SERVER) && !defined(NDEBUG) +#define DEBUG_ASSERT_NO_CLIENTAPI \ + FATAL_ERROR_IF(getClient(L) != nullptr, "Tried " \ + "to retrieve ServerEnvironment on client") +#else +#define DEBUG_ASSERT_NO_CLIENTAPI ((void)0) +#endif + +// Retrieve ServerEnvironment pointer as `env` (no map lock) #define GET_ENV_PTR_NO_MAP_LOCK \ + DEBUG_ASSERT_NO_CLIENTAPI; \ ServerEnvironment *env = (ServerEnvironment *)getEnv(L); \ if (env == NULL) \ return 0 +// Retrieve ServerEnvironment pointer as `env` #define GET_ENV_PTR \ MAP_LOCK_REQUIRED; \ GET_ENV_PTR_NO_MAP_LOCK + +// Retrieve Environment pointer as `env` (no map lock) +#define GET_PLAIN_ENV_PTR_NO_MAP_LOCK \ + Environment *env = (Environment *)getEnv(L); \ + if (env == NULL) \ + return 0 + +// Retrieve Environment pointer as `env` +#define GET_PLAIN_ENV_PTR \ + MAP_LOCK_REQUIRED; \ + GET_PLAIN_ENV_PTR_NO_MAP_LOCK diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index 23ed1ffe0..5cd978d73 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -533,7 +533,7 @@ int ObjectRef::l_set_local_animation(lua_State *L) // get_local_animation(self) int ObjectRef::l_get_local_animation(lua_State *L) { - NO_MAP_LOCK_REQUIRED + NO_MAP_LOCK_REQUIRED; ObjectRef *ref = checkobject(L, 1); RemotePlayer *player = getplayer(ref); if (player == NULL) diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 2d3ee078e..0ccbd772b 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -545,24 +545,6 @@ bool ServerEnvironment::removePlayerFromDatabase(const std::string &name) return m_player_database->removePlayer(name); } -bool ServerEnvironment::line_of_sight(v3f pos1, v3f pos2, v3s16 *p) -{ - // Iterate trough nodes on the line - voxalgo::VoxelLineIterator iterator(pos1 / BS, (pos2 - pos1) / BS); - do { - MapNode n = getMap().getNode(iterator.m_current_node_pos); - - // Return non-air - if (n.param0 != CONTENT_AIR) { - if (p) - *p = iterator.m_current_node_pos; - return false; - } - iterator.next(); - } while (iterator.m_current_index <= iterator.m_last_index); - return true; -} - void ServerEnvironment::kickAllPlayers(AccessDeniedCode reason, const std::string &str_reason, bool reconnect) { diff --git a/src/serverenvironment.h b/src/serverenvironment.h index 3c7b7d059..bf10e3ca8 100644 --- a/src/serverenvironment.h +++ b/src/serverenvironment.h @@ -334,16 +334,6 @@ public: // This makes stuff happen void step(f32 dtime); - /*! - * Returns false if the given line intersects with a - * non-air node, true otherwise. - * \param pos1 start of the line - * \param pos2 end of the line - * \param p output, position of the first non-air node - * the line intersects - */ - bool line_of_sight(v3f pos1, v3f pos2, v3s16 *p = NULL); - u32 getGameTime() const { return m_game_time; } void reportMaxLagEstimate(float f) { m_max_lag_estimate = f; } From 5f3a17eb65c1ad9259f03bde346a8d69fe0c1069 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 10 Apr 2020 22:53:08 +0200 Subject: [PATCH 077/424] Implement minetest.sound_fade() --- doc/client_lua_api.txt | 7 +++++++ src/script/lua_api/l_client.cpp | 22 +++++++++++++++++++--- src/script/lua_api/l_client.h | 6 ++++++ src/script/lua_api/l_nodemeta.cpp | 2 ++ 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/doc/client_lua_api.txt b/doc/client_lua_api.txt index 3612f851b..2c8ffd4d4 100644 --- a/doc/client_lua_api.txt +++ b/doc/client_lua_api.txt @@ -734,6 +734,13 @@ Call these functions only at load time! * `spec` is a `SimpleSoundSpec` * `parameters` is a sound parameter table * `minetest.sound_stop(handle)` + * `handle` is a handle returned by `minetest.sound_play` +* `minetest.sound_fade(handle, step, gain)` + * `handle` is a handle returned by `minetest.sound_play` + * `step` determines how fast a sound will fade. + Negative step will lower the sound volume, positive step will increase + the sound volume. + * `gain` the target gain for the fade. ### Timing * `minetest.after(time, func, ...)` diff --git a/src/script/lua_api/l_client.cpp b/src/script/lua_api/l_client.cpp index fba182492..e30c05260 100644 --- a/src/script/lua_api/l_client.cpp +++ b/src/script/lua_api/l_client.cpp @@ -209,7 +209,7 @@ int ModApiClient::l_gettext(lua_State *L) return 1; } -// get_node(pos) +// get_node_or_nil(pos) // pos = {x=num, y=num, z=num} int ModApiClient::l_get_node_or_nil(lua_State *L) { @@ -228,6 +228,7 @@ int ModApiClient::l_get_node_or_nil(lua_State *L) return 1; } +// get_langauge() int ModApiClient::l_get_language(lua_State *L) { #ifdef _WIN32 @@ -244,6 +245,7 @@ int ModApiClient::l_get_language(lua_State *L) return 2; } +// get_wielded_item() int ModApiClient::l_get_wielded_item(lua_State *L) { Client *client = getClient(L); @@ -266,12 +268,14 @@ int ModApiClient::l_get_meta(lua_State *L) return 1; } +// sound_play(spec, parameters) int ModApiClient::l_sound_play(lua_State *L) { ISoundManager *sound = getClient(L)->getSoundManager(); SimpleSoundSpec spec; read_soundspec(L, 1, spec); + float gain = 1.0f; float pitch = 1.0f; bool looped = false; @@ -293,21 +297,32 @@ int ModApiClient::l_sound_play(lua_State *L) } } - handle = sound->playSound(spec.name, looped, gain * spec.gain, 0.0f, pitch); + handle = sound->playSound(spec.name, looped, gain * spec.gain, spec.fade, pitch); lua_pushinteger(L, handle); return 1; } +// sound_stop(handle) int ModApiClient::l_sound_stop(lua_State *L) { - u32 handle = luaL_checkinteger(L, 1); + s32 handle = luaL_checkinteger(L, 1); getClient(L)->getSoundManager()->stopSound(handle); return 0; } +// sound_fade(handle, step, gain) +int ModApiClient::l_sound_fade(lua_State *L) +{ + s32 handle = luaL_checkinteger(L, 1); + float step = readParam(L, 2); + float gain = readParam(L, 3); + getClient(L)->getSoundManager()->fadeSound(handle, step, gain); + return 0; +} + // get_server_info() int ModApiClient::l_get_server_info(lua_State *L) { @@ -426,6 +441,7 @@ void ModApiClient::Initialize(lua_State *L, int top) API_FCT(get_meta); API_FCT(sound_play); API_FCT(sound_stop); + API_FCT(sound_fade); API_FCT(get_server_info); API_FCT(get_item_def); API_FCT(get_node_def); diff --git a/src/script/lua_api/l_client.h b/src/script/lua_api/l_client.h index 6d1f70b1d..5dc3efdad 100644 --- a/src/script/lua_api/l_client.h +++ b/src/script/lua_api/l_client.h @@ -69,6 +69,7 @@ private: // get_node(pos) static int l_get_node_or_nil(lua_State *L); + // get_language() static int l_get_language(lua_State *L); // get_wielded_item() @@ -77,10 +78,15 @@ private: // get_meta(pos) static int l_get_meta(lua_State *L); + // sound_play(spec, parameters) static int l_sound_play(lua_State *L); + // sound_stop(handle) static int l_sound_stop(lua_State *L); + // sound_fade(handle, step, gain) + static int l_sound_fade(lua_State *L); + // get_server_info() static int l_get_server_info(lua_State *L); diff --git a/src/script/lua_api/l_nodemeta.cpp b/src/script/lua_api/l_nodemeta.cpp index 229ce73db..57052cb42 100644 --- a/src/script/lua_api/l_nodemeta.cpp +++ b/src/script/lua_api/l_nodemeta.cpp @@ -55,11 +55,13 @@ Metadata* NodeMetaRef::getmeta(bool auto_create) void NodeMetaRef::clearMeta() { + SANITY_CHECK(!m_is_local); m_env->getMap().removeNodeMetadata(m_p); } void NodeMetaRef::reportMetadataChange(const std::string *name) { + SANITY_CHECK(!m_is_local); // NOTE: This same code is in rollback_interface.cpp // Inform other things that the metadata has changed NodeMetadata *meta = dynamic_cast(m_meta); From 1292bdbbcec45613c95aff9f2ea88aa49af25011 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 11 Apr 2020 00:09:11 +0200 Subject: [PATCH 078/424] Various features and fixes --- clientmods/preview/init.lua | 40 ++------------- doc/client_lua_api.txt | 31 ++++++++++-- src/script/lua_api/l_client.cpp | 26 ++++------ src/script/lua_api/l_localplayer.cpp | 74 +++++++++++++++++++++++----- src/script/lua_api/l_localplayer.h | 21 +++++++- 5 files changed, 123 insertions(+), 69 deletions(-) diff --git a/clientmods/preview/init.lua b/clientmods/preview/init.lua index 5777adcaf..d2440369a 100644 --- a/clientmods/preview/init.lua +++ b/clientmods/preview/init.lua @@ -31,6 +31,7 @@ core.after(4, function() end) core.after(1, function() + print("armor: " .. dump(core.localplayer:get_armor_groups())) id = core.localplayer:hud_add({ hud_elem_type = "text", name = "example", @@ -125,19 +126,6 @@ core.register_chatcommand("dump", { end, }) -core.register_chatcommand("colorize_test", { - func = function(param) - return true, core.colorize("red", param) - end, -}) - -core.register_chatcommand("test_node", { - func = function(param) - core.display_chat_message(dump(core.get_node({x=0, y=0, z=0}))) - core.display_chat_message(dump(core.get_node_or_nil({x=0, y=0, z=0}))) - end, -}) - local function preview_minimap() local minimap = core.ui.minimap if not minimap then @@ -157,7 +145,7 @@ end core.after(2, function() print("[PREVIEW] loaded " .. modname .. " mod") modstorage:set_string("current_mod", modname) - print(modstorage:get_string("current_mod")) + assert(modstorage:get_string("current_mod") == modname) preview_minimap() end) @@ -184,30 +172,12 @@ end) core.register_on_punchnode(function(pos, node) print("The local player punched a node!") - local itemstack = core.get_wielded_item() - --[[ - -- getters - print(dump(itemstack:is_empty())) - print(dump(itemstack:get_name())) - print(dump(itemstack:get_count())) - print(dump(itemstack:get_wear())) - print(dump(itemstack:get_meta())) - print(dump(itemstack:get_metadata() - print(dump(itemstack:is_known())) - --print(dump(itemstack:get_definition())) - print(dump(itemstack:get_tool_capabilities())) - print(dump(itemstack:to_string())) - print(dump(itemstack:to_table())) - -- setters - print(dump(itemstack:set_name("default:dirt"))) - print(dump(itemstack:set_count("95"))) - print(dump(itemstack:set_wear(934))) - print(dump(itemstack:get_meta())) - print(dump(itemstack:get_metadata())) - --]] + local itemstack = core.localplayer:get_wielded_item() print(dump(itemstack:to_table())) print("pos:" .. dump(pos)) print("node:" .. dump(node)) + local meta = core.get_meta(pos) + print("punched meta: " .. (meta and dump(meta:to_table()) or "(missing)")) return false end) diff --git a/doc/client_lua_api.txt b/doc/client_lua_api.txt index 2c8ffd4d4..71df91c68 100644 --- a/doc/client_lua_api.txt +++ b/doc/client_lua_api.txt @@ -804,8 +804,6 @@ Call these functions only at load time! * get max available level for leveled node ### Player -* `minetest.get_wielded_item()` - * Returns the itemstack the local player is holding * `minetest.send_chat_message(message)` * Act as if `message` was typed by the player into the terminal. * `minetest.run_server_chatcommand(cmd, param)` @@ -1006,6 +1004,10 @@ Methods: * returns player HP * `get_name()` * returns player name +* `get_wield_index()` + * returns the index of the wielded item +* `get_wielded_item()` + * returns the itemstack the player is holding * `is_attached()` * returns true if player is attached * `is_touching_ground()` @@ -1029,7 +1031,8 @@ Methods: jump = float, gravity = float, sneak = boolean, - sneak_glitch = boolean + sneak_glitch = boolean, + new_move = boolean, } ``` @@ -1081,8 +1084,26 @@ Methods: * returns last look horizontal angle * `get_last_look_vertical()`: * returns last look vertical angle -* `get_key_pressed()`: - * returns last key typed by the player +* `get_control()`: + * returns pressed player controls + +```lua + { + up = boolean, + down = boolean, + left = boolean, + right = boolean, + jump = boolean, + aux1 = boolean, + sneak = boolean, + zoom = boolean, + LMB = boolean, + RMB = boolean, + } +``` + +* `get_armor_groups()` + * returns a table with the armor group ratings * `hud_add(definition)` * add a HUD element described by HUD def, returns ID number on success and `nil` on failure. * See [`HUD definition`](#hud-definition-hud_add-hud_get) diff --git a/src/script/lua_api/l_client.cpp b/src/script/lua_api/l_client.cpp index e30c05260..aaced7cd0 100644 --- a/src/script/lua_api/l_client.cpp +++ b/src/script/lua_api/l_client.cpp @@ -29,7 +29,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "cpp_api/s_base.h" #include "gettext.h" #include "l_internal.h" -#include "lua_api/l_item.h" #include "lua_api/l_nodemeta.h" #include "gui/mainmenumanager.h" #include "map.h" @@ -245,25 +244,18 @@ int ModApiClient::l_get_language(lua_State *L) return 2; } -// get_wielded_item() -int ModApiClient::l_get_wielded_item(lua_State *L) -{ - Client *client = getClient(L); - LocalPlayer *player = client->getEnv().getLocalPlayer(); - if (!player) - return 0; - - ItemStack selected_item; - player->getWieldedItem(&selected_item, nullptr); - LuaItemStack::create(L, selected_item); - return 1; -} - // get_meta(pos) int ModApiClient::l_get_meta(lua_State *L) { v3s16 p = read_v3s16(L, 1); - NodeMetadata *meta = getClient(L)->getEnv().getMap().getNodeMetadata(p); + + // check restrictions first + bool pos_ok; + getClient(L)->CSMGetNode(p, &pos_ok); + if (!pos_ok) + return 0; + + NodeMetadata *meta = getEnv(L)->getMap().getNodeMetadata(p); NodeMetaRef::createClient(L, meta); return 1; } @@ -390,6 +382,7 @@ int ModApiClient::l_get_node_def(lua_State *L) return 1; } +// get_privilege_list() int ModApiClient::l_get_privilege_list(lua_State *L) { const Client *client = getClient(L); @@ -436,7 +429,6 @@ void ModApiClient::Initialize(lua_State *L, int top) API_FCT(send_respawn); API_FCT(gettext); API_FCT(get_node_or_nil); - API_FCT(get_wielded_item); API_FCT(disconnect); API_FCT(get_meta); API_FCT(sound_play); diff --git a/src/script/lua_api/l_localplayer.cpp b/src/script/lua_api/l_localplayer.cpp index 821b1cb66..851ede535 100644 --- a/src/script/lua_api/l_localplayer.cpp +++ b/src/script/lua_api/l_localplayer.cpp @@ -19,10 +19,12 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "l_localplayer.h" #include "l_internal.h" +#include "lua_api/l_item.h" #include "script/common/c_converter.h" #include "client/localplayer.h" #include "hud.h" #include "common/c_content.h" +#include "client/content_cao.h" LuaLocalPlayer::LuaLocalPlayer(LocalPlayer *m) : m_localplayer(m) { @@ -74,6 +76,26 @@ int LuaLocalPlayer::l_get_name(lua_State *L) return 1; } +// get_wield_index(self) +int LuaLocalPlayer::l_get_wield_index(lua_State *L) +{ + LocalPlayer *player = getobject(L, 1); + + lua_pushinteger(L, player->getWieldIndex()); + return 1; +} + +// get_wielded_item(self) +int LuaLocalPlayer::l_get_wielded_item(lua_State *L) +{ + LocalPlayer *player = getobject(L, 1); + + ItemStack selected_item; + player->getWieldedItem(&selected_item, nullptr); + LuaItemStack::create(L, selected_item); + return 1; +} + int LuaLocalPlayer::l_is_attached(lua_State *L) { LocalPlayer *player = getobject(L, 1); @@ -130,6 +152,7 @@ int LuaLocalPlayer::l_swimming_vertical(lua_State *L) return 1; } +// get_physics_override(self) int LuaLocalPlayer::l_get_physics_override(lua_State *L) { LocalPlayer *player = getobject(L, 1); @@ -150,14 +173,9 @@ int LuaLocalPlayer::l_get_physics_override(lua_State *L) lua_pushboolean(L, player->physics_override_sneak_glitch); lua_setfield(L, -2, "sneak_glitch"); - return 1; -} + lua_pushboolean(L, player->physics_override_new_move); + lua_setfield(L, -2, "new_move"); -int LuaLocalPlayer::l_get_override_pos(lua_State *L) -{ - LocalPlayer *player = getobject(L, 1); - - push_v3f(L, player->getPosition()); return 1; } @@ -193,14 +211,33 @@ int LuaLocalPlayer::l_get_last_look_horizontal(lua_State *L) return 1; } -int LuaLocalPlayer::l_get_key_pressed(lua_State *L) +// get_control(self) +int LuaLocalPlayer::l_get_control(lua_State *L) { LocalPlayer *player = getobject(L, 1); + const PlayerControl &c = player->getPlayerControl(); + + auto set = [L] (const char *name, bool value) { + lua_pushboolean(L, value); + lua_setfield(L, -2, name); + }; + + lua_createtable(L, 0, 12); + set("up", c.up); + set("down", c.down); + set("left", c.left); + set("right", c.right); + set("jump", c.jump); + set("aux1", c.aux1); + set("sneak", c.sneak); + set("zoom", c.zoom); + set("LMB", c.LMB); + set("RMB", c.RMB); - lua_pushinteger(L, player->last_keyPressed); return 1; } +// get_breath(self) int LuaLocalPlayer::l_get_breath(lua_State *L) { LocalPlayer *player = getobject(L, 1); @@ -209,6 +246,7 @@ int LuaLocalPlayer::l_get_breath(lua_State *L) return 1; } +// get_pos(self) int LuaLocalPlayer::l_get_pos(lua_State *L) { LocalPlayer *player = getobject(L, 1); @@ -217,6 +255,7 @@ int LuaLocalPlayer::l_get_pos(lua_State *L) return 1; } +// get_movement_acceleration(self) int LuaLocalPlayer::l_get_movement_acceleration(lua_State *L) { LocalPlayer *player = getobject(L, 1); @@ -234,6 +273,7 @@ int LuaLocalPlayer::l_get_movement_acceleration(lua_State *L) return 1; } +// get_movement_speed(self) int LuaLocalPlayer::l_get_movement_speed(lua_State *L) { LocalPlayer *player = getobject(L, 1); @@ -257,6 +297,7 @@ int LuaLocalPlayer::l_get_movement_speed(lua_State *L) return 1; } +// get_movement(self) int LuaLocalPlayer::l_get_movement(lua_State *L) { LocalPlayer *player = getobject(L, 1); @@ -278,6 +319,13 @@ int LuaLocalPlayer::l_get_movement(lua_State *L) return 1; } +// get_armor_groups(self) +int LuaLocalPlayer::l_get_armor_groups(lua_State *L) +{ + LocalPlayer *player = getobject(L, 1); + push_groups(L, player->getCAO()->getGroups()); + return 1; +} // hud_add(self, form) int LuaLocalPlayer::l_hud_add(lua_State *L) @@ -407,6 +455,8 @@ const luaL_Reg LuaLocalPlayer::methods[] = { luamethod(LuaLocalPlayer, get_velocity), luamethod(LuaLocalPlayer, get_hp), luamethod(LuaLocalPlayer, get_name), + luamethod(LuaLocalPlayer, get_wield_index), + luamethod(LuaLocalPlayer, get_wielded_item), luamethod(LuaLocalPlayer, is_attached), luamethod(LuaLocalPlayer, is_touching_ground), luamethod(LuaLocalPlayer, is_in_liquid), @@ -415,17 +465,19 @@ const luaL_Reg LuaLocalPlayer::methods[] = { luamethod(LuaLocalPlayer, is_climbing), luamethod(LuaLocalPlayer, swimming_vertical), luamethod(LuaLocalPlayer, get_physics_override), - luamethod(LuaLocalPlayer, get_override_pos), + // TODO: figure our if these are useful in any way luamethod(LuaLocalPlayer, get_last_pos), luamethod(LuaLocalPlayer, get_last_velocity), luamethod(LuaLocalPlayer, get_last_look_horizontal), luamethod(LuaLocalPlayer, get_last_look_vertical), - luamethod(LuaLocalPlayer, get_key_pressed), + // + luamethod(LuaLocalPlayer, get_control), luamethod(LuaLocalPlayer, get_breath), luamethod(LuaLocalPlayer, get_pos), luamethod(LuaLocalPlayer, get_movement_acceleration), luamethod(LuaLocalPlayer, get_movement_speed), luamethod(LuaLocalPlayer, get_movement), + luamethod(LuaLocalPlayer, get_armor_groups), luamethod(LuaLocalPlayer, hud_add), luamethod(LuaLocalPlayer, hud_remove), luamethod(LuaLocalPlayer, hud_change), diff --git a/src/script/lua_api/l_localplayer.h b/src/script/lua_api/l_localplayer.h index 01de2ed4e..4413f2bdb 100644 --- a/src/script/lua_api/l_localplayer.h +++ b/src/script/lua_api/l_localplayer.h @@ -32,12 +32,21 @@ private: // garbage collector static int gc_object(lua_State *L); + // get_velocity(self) static int l_get_velocity(lua_State *L); + // get_hp(self) static int l_get_hp(lua_State *L); + // get_name(self) static int l_get_name(lua_State *L); + // get_wield_index(self) + static int l_get_wield_index(lua_State *L); + + // get_wielded_item(self) + static int l_get_wielded_item(lua_State *L); + static int l_is_attached(lua_State *L); static int l_is_touching_ground(lua_State *L); static int l_is_in_liquid(lua_State *L); @@ -54,18 +63,28 @@ private: static int l_get_last_velocity(lua_State *L); static int l_get_last_look_vertical(lua_State *L); static int l_get_last_look_horizontal(lua_State *L); - static int l_get_key_pressed(lua_State *L); + // get_control(self) + static int l_get_control(lua_State *L); + + // get_breath(self) static int l_get_breath(lua_State *L); + // get_pos(self) static int l_get_pos(lua_State *L); + // get_movement_acceleration(self) static int l_get_movement_acceleration(lua_State *L); + // get_movement_speed(self) static int l_get_movement_speed(lua_State *L); + // get_movement(self) static int l_get_movement(lua_State *L); + // get_armor_groups(self) + static int l_get_armor_groups(lua_State *L); + // hud_add(self, id, form) static int l_hud_add(lua_State *L); From fbf74dc52456b13b0dbd7bb9d3206e5828254910 Mon Sep 17 00:00:00 2001 From: Alex <24834740+GreenXenith@users.noreply.github.com> Date: Sat, 11 Apr 2020 04:45:14 -0700 Subject: [PATCH 079/424] Use TILE_MATERIAL_ALPHA for use_texture_alpha entity flag (#9639) Fixes #9637. --- src/client/content_cao.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index 798899f9a..39ea4ab1e 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -584,7 +584,7 @@ void GenericCAO::addToScene(ITextureSource *tsrc) IShaderSource *shader_source = m_client->getShaderSource(); u32 shader_id = shader_source->getShader( "object_shader", - TILE_MATERIAL_BASIC, + (m_prop.use_texture_alpha) ? TILE_MATERIAL_ALPHA : TILE_MATERIAL_BASIC, NDT_NORMAL); m_material_type = shader_source->getShaderInfo(shader_id).material; } else { From 01b3f26c7bc62305b205136bb95a2a4550761c3c Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 11 Apr 2020 15:31:02 +0200 Subject: [PATCH 080/424] Formspec: No spec ID for static text labels Fixes #9634 --- src/gui/guiFormSpecMenu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index 59cd130ef..acb153569 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -1424,7 +1424,7 @@ void GUIFormSpecMenu::createTextField(parserData *data, FieldSpec &spec, if (!is_editable && !is_multiline) { // spec field id to 0, this stops submit searching for a value that isn't there gui::StaticText::add(Environment, spec.flabel.c_str(), rect, false, true, - this, spec.fid); + this, 0); return; } From 6d43736172f8459cb70219186ae003c56c389f2a Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Fri, 10 Apr 2020 21:25:42 +0200 Subject: [PATCH 081/424] Move serveractiveobject & unitsao Move serverobject.{cpp,h} to server/serveractiveobject.{cpp,h} Move UnitSAO class to dedicated files --- build/android/jni/Android.mk | 2 +- src/CMakeLists.txt | 1 - src/collision.cpp | 2 +- src/content_sao.cpp | 296 ---------------- src/content_sao.h | 92 +---- src/emerge.cpp | 1 - src/environment.cpp | 1 - src/inventorymanager.cpp | 2 +- src/mapgen/mapgen_v6.cpp | 1 - src/script/common/c_content.cpp | 2 +- src/script/cpp_api/s_base.cpp | 2 +- src/script/lua_api/l_object.cpp | 2 +- src/server.cpp | 2 +- src/server/CMakeLists.txt | 2 + src/server/activeobjectmgr.h | 2 +- .../serveractiveobject.cpp} | 2 +- .../serveractiveobject.h} | 0 src/server/unit_sao.cpp | 318 ++++++++++++++++++ src/server/unit_sao.h | 113 +++++++ util/travis/clang-format-whitelist.txt | 6 +- 20 files changed, 445 insertions(+), 404 deletions(-) rename src/{serverobject.cpp => server/serveractiveobject.cpp} (98%) rename src/{serverobject.h => server/serveractiveobject.h} (100%) create mode 100644 src/server/unit_sao.cpp create mode 100644 src/server/unit_sao.h diff --git a/build/android/jni/Android.mk b/build/android/jni/Android.mk index a2f32440a..32a16c174 100644 --- a/build/android/jni/Android.mk +++ b/build/android/jni/Android.mk @@ -259,7 +259,7 @@ LOCAL_SRC_FILES := \ jni/src/serverenvironment.cpp \ jni/src/serverlist.cpp \ jni/src/server/mods.cpp \ - jni/src/serverobject.cpp \ + jni/src/server/serveractiveobject.cpp \ jni/src/settings.cpp \ jni/src/staticobject.cpp \ jni/src/tileanimation.cpp \ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4b1d6d647..faa117d41 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -421,7 +421,6 @@ set(common_SRCS server.cpp serverenvironment.cpp serverlist.cpp - serverobject.cpp settings.cpp staticobject.cpp terminal_chat_console.cpp diff --git a/src/collision.cpp b/src/collision.cpp index 0d37ea436..d9fbd3202 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -28,7 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "client/localplayer.h" #endif #include "serverenvironment.h" -#include "serverobject.h" +#include "server/serveractiveobject.h" #include "util/timetaker.h" #include "profiler.h" diff --git a/src/content_sao.cpp b/src/content_sao.cpp index be7674f52..0d387b53a 100644 --- a/src/content_sao.cpp +++ b/src/content_sao.cpp @@ -106,302 +106,6 @@ private: // Prototype (registers item for deserialization) TestSAO proto_TestSAO(NULL, v3f(0,0,0)); -/* - UnitSAO - */ - -UnitSAO::UnitSAO(ServerEnvironment *env, v3f pos): - ServerActiveObject(env, pos) -{ - // Initialize something to armor groups - m_armor_groups["fleshy"] = 100; -} - -ServerActiveObject *UnitSAO::getParent() const -{ - if (!m_attachment_parent_id) - return nullptr; - // Check if the parent still exists - ServerActiveObject *obj = m_env->getActiveObject(m_attachment_parent_id); - - return obj; -} - -void UnitSAO::setArmorGroups(const ItemGroupList &armor_groups) -{ - m_armor_groups = armor_groups; - m_armor_groups_sent = false; -} - -const ItemGroupList &UnitSAO::getArmorGroups() const -{ - return m_armor_groups; -} - -void UnitSAO::setAnimation(v2f frame_range, float frame_speed, float frame_blend, bool frame_loop) -{ - // store these so they can be updated to clients - m_animation_range = frame_range; - m_animation_speed = frame_speed; - m_animation_blend = frame_blend; - m_animation_loop = frame_loop; - m_animation_sent = false; -} - -void UnitSAO::getAnimation(v2f *frame_range, float *frame_speed, float *frame_blend, bool *frame_loop) -{ - *frame_range = m_animation_range; - *frame_speed = m_animation_speed; - *frame_blend = m_animation_blend; - *frame_loop = m_animation_loop; -} - -void UnitSAO::setAnimationSpeed(float frame_speed) -{ - m_animation_speed = frame_speed; - m_animation_speed_sent = false; -} - -void UnitSAO::setBonePosition(const std::string &bone, v3f position, v3f rotation) -{ - // store these so they can be updated to clients - m_bone_position[bone] = core::vector2d(position, rotation); - m_bone_position_sent = false; -} - -void UnitSAO::getBonePosition(const std::string &bone, v3f *position, v3f *rotation) -{ - *position = m_bone_position[bone].X; - *rotation = m_bone_position[bone].Y; -} - -void UnitSAO::setAttachment(int parent_id, const std::string &bone, v3f position, v3f rotation) -{ - // Attachments need to be handled on both the server and client. - // If we just attach on the server, we can only copy the position of the parent. Attachments - // are still sent to clients at an interval so players might see them lagging, plus we can't - // read and attach to skeletal bones. - // If we just attach on the client, the server still sees the child at its original location. - // This breaks some things so we also give the server the most accurate representation - // even if players only see the client changes. - - int old_parent = m_attachment_parent_id; - m_attachment_parent_id = parent_id; - m_attachment_bone = bone; - m_attachment_position = position; - m_attachment_rotation = rotation; - m_attachment_sent = false; - - if (parent_id != old_parent) { - onDetach(old_parent); - onAttach(parent_id); - } -} - -void UnitSAO::getAttachment(int *parent_id, std::string *bone, v3f *position, - v3f *rotation) const -{ - *parent_id = m_attachment_parent_id; - *bone = m_attachment_bone; - *position = m_attachment_position; - *rotation = m_attachment_rotation; -} - -void UnitSAO::clearChildAttachments() -{ - for (int child_id : m_attachment_child_ids) { - // Child can be NULL if it was deleted earlier - if (ServerActiveObject *child = m_env->getActiveObject(child_id)) - child->setAttachment(0, "", v3f(0, 0, 0), v3f(0, 0, 0)); - } - m_attachment_child_ids.clear(); -} - -void UnitSAO::clearParentAttachment() -{ - ServerActiveObject *parent = nullptr; - if (m_attachment_parent_id) { - parent = m_env->getActiveObject(m_attachment_parent_id); - setAttachment(0, "", m_attachment_position, m_attachment_rotation); - } else { - setAttachment(0, "", v3f(0, 0, 0), v3f(0, 0, 0)); - } - // Do it - if (parent) - parent->removeAttachmentChild(m_id); -} - -void UnitSAO::addAttachmentChild(int child_id) -{ - m_attachment_child_ids.insert(child_id); -} - -void UnitSAO::removeAttachmentChild(int child_id) -{ - m_attachment_child_ids.erase(child_id); -} - -const std::unordered_set &UnitSAO::getAttachmentChildIds() const -{ - return m_attachment_child_ids; -} - -void UnitSAO::onAttach(int parent_id) -{ - if (!parent_id) - return; - - ServerActiveObject *parent = m_env->getActiveObject(parent_id); - - if (!parent || parent->isGone()) - return; // Do not try to notify soon gone parent - - if (parent->getType() == ACTIVEOBJECT_TYPE_LUAENTITY) { - // Call parent's on_attach field - m_env->getScriptIface()->luaentity_on_attach_child(parent_id, this); - } -} - -void UnitSAO::onDetach(int parent_id) -{ - if (!parent_id) - return; - - ServerActiveObject *parent = m_env->getActiveObject(parent_id); - if (getType() == ACTIVEOBJECT_TYPE_LUAENTITY) - m_env->getScriptIface()->luaentity_on_detach(m_id, parent); - - if (!parent || parent->isGone()) - return; // Do not try to notify soon gone parent - - if (parent->getType() == ACTIVEOBJECT_TYPE_LUAENTITY) - m_env->getScriptIface()->luaentity_on_detach_child(parent_id, this); -} - -ObjectProperties* UnitSAO::accessObjectProperties() -{ - return &m_prop; -} - -void UnitSAO::notifyObjectPropertiesModified() -{ - m_properties_sent = false; -} - -std::string UnitSAO::generateUpdateAttachmentCommand() const -{ - std::ostringstream os(std::ios::binary); - // command - writeU8(os, AO_CMD_ATTACH_TO); - // parameters - writeS16(os, m_attachment_parent_id); - os << serializeString(m_attachment_bone); - writeV3F32(os, m_attachment_position); - writeV3F32(os, m_attachment_rotation); - return os.str(); -} - -std::string UnitSAO::generateUpdateBonePositionCommand(const std::string &bone, - const v3f &position, const v3f &rotation) -{ - std::ostringstream os(std::ios::binary); - // command - writeU8(os, AO_CMD_SET_BONE_POSITION); - // parameters - os << serializeString(bone); - writeV3F32(os, position); - writeV3F32(os, rotation); - return os.str(); -} - - -std::string UnitSAO::generateUpdateAnimationSpeedCommand() const -{ - std::ostringstream os(std::ios::binary); - // command - writeU8(os, AO_CMD_SET_ANIMATION_SPEED); - // parameters - writeF32(os, m_animation_speed); - return os.str(); -} - -std::string UnitSAO::generateUpdateAnimationCommand() const -{ - std::ostringstream os(std::ios::binary); - // command - writeU8(os, AO_CMD_SET_ANIMATION); - // parameters - writeV2F32(os, m_animation_range); - writeF32(os, m_animation_speed); - writeF32(os, m_animation_blend); - // these are sent inverted so we get true when the server sends nothing - writeU8(os, !m_animation_loop); - return os.str(); -} - - -std::string UnitSAO::generateUpdateArmorGroupsCommand() const -{ - std::ostringstream os(std::ios::binary); - writeU8(os, AO_CMD_UPDATE_ARMOR_GROUPS); - writeU16(os, m_armor_groups.size()); - for (const auto &armor_group : m_armor_groups) { - os< &getAttachmentChildIds() const; - ServerActiveObject *getParent() const; - ObjectProperties* accessObjectProperties(); - void notifyObjectPropertiesModified(); - - std::string generateUpdateAttachmentCommand() const; - std::string generateUpdateAnimationSpeedCommand() const; - std::string generateUpdateAnimationCommand() const; - std::string generateUpdateArmorGroupsCommand() const; - static std::string generateUpdatePositionCommand(const v3f &position, const v3f &velocity, - const v3f &acceleration, const v3f &rotation, bool do_interpolate, - bool is_movement_end, f32 update_interval); - std::string generateSetPropertiesCommand(const ObjectProperties &prop) const; - void sendPunchCommand(); - static std::string generateUpdateBonePositionCommand(const std::string &bone, - const v3f &position, const v3f &rotation); - -protected: - u16 m_hp = 1; - - v3f m_rotation; - - bool m_properties_sent = true; - ObjectProperties m_prop; - - ItemGroupList m_armor_groups; - bool m_armor_groups_sent = false; - - v2f m_animation_range; - float m_animation_speed = 0.0f; - float m_animation_blend = 0.0f; - bool m_animation_loop = true; - bool m_animation_sent = false; - bool m_animation_speed_sent = false; - - // Stores position and rotation for each bone name - std::unordered_map> m_bone_position; - bool m_bone_position_sent = false; - - int m_attachment_parent_id = 0; - std::unordered_set m_attachment_child_ids; - std::string m_attachment_bone = ""; - v3f m_attachment_position; - v3f m_attachment_rotation; - bool m_attachment_sent = false; -private: - void onAttach(int parent_id); - void onDetach(int parent_id); - - std::string generatePunchCommand(u16 result_hp) const; -}; - /* LuaEntitySAO needs some internals exposed. */ diff --git a/src/emerge.cpp b/src/emerge.cpp index 4835c3fad..fe885447c 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -42,7 +42,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "profiler.h" #include "scripting_server.h" #include "server.h" -#include "serverobject.h" #include "settings.h" #include "voxel.h" diff --git a/src/environment.cpp b/src/environment.cpp index c997be3ff..6751f39e4 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -21,7 +21,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "environment.h" #include "collision.h" #include "raycast.h" -#include "serverobject.h" #include "scripting_server.h" #include "server.h" #include "daynightratio.h" diff --git a/src/inventorymanager.cpp b/src/inventorymanager.cpp index 5a24f95a4..b6f464901 100644 --- a/src/inventorymanager.cpp +++ b/src/inventorymanager.cpp @@ -22,7 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "log.h" #include "serverenvironment.h" #include "scripting_server.h" -#include "serverobject.h" +#include "server/serveractiveobject.h" #include "settings.h" #include "craftdef.h" #include "rollback_interface.h" diff --git a/src/mapgen/mapgen_v6.cpp b/src/mapgen/mapgen_v6.cpp index 8a863c044..f473f725d 100644 --- a/src/mapgen/mapgen_v6.cpp +++ b/src/mapgen/mapgen_v6.cpp @@ -27,7 +27,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapblock.h" #include "mapnode.h" #include "map.h" -//#include "serverobject.h" #include "content_sao.h" #include "nodedef.h" #include "voxelalgorithms.h" diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index accbb1a87..60f12052f 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -29,7 +29,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "server.h" #include "log.h" #include "tool.h" -#include "serverobject.h" +#include "server/serveractiveobject.h" #include "porting.h" #include "mapgen/mg_schematic.h" #include "noise.h" diff --git a/src/script/cpp_api/s_base.cpp b/src/script/cpp_api/s_base.cpp index f234a15d4..16c20eeae 100644 --- a/src/script/cpp_api/s_base.cpp +++ b/src/script/cpp_api/s_base.cpp @@ -22,7 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "cpp_api/s_security.h" #include "lua_api/l_object.h" #include "common/c_converter.h" -#include "serverobject.h" +#include "server/serveractiveobject.h" #include "filesys.h" #include "content/mods.h" #include "porting.h" diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index 5cd978d73..1ea144a1c 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common/c_content.h" #include "log.h" #include "tool.h" -#include "serverobject.h" +#include "server/serveractiveobject.h" #include "content_sao.h" #include "remoteplayer.h" #include "server.h" diff --git a/src/server.cpp b/src/server.cpp index 062fe0798..529466f6b 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -34,7 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "version.h" #include "filesys.h" #include "mapblock.h" -#include "serverobject.h" +#include "server/serveractiveobject.h" #include "settings.h" #include "profiler.h" #include "log.h" diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt index e964c69ff..9fa5ed9fa 100644 --- a/src/server/CMakeLists.txt +++ b/src/server/CMakeLists.txt @@ -1,4 +1,6 @@ set(server_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/activeobjectmgr.cpp ${CMAKE_CURRENT_SOURCE_DIR}/mods.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/serveractiveobject.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/unit_sao.cpp PARENT_SCOPE) diff --git a/src/server/activeobjectmgr.h b/src/server/activeobjectmgr.h index a502ac6ed..5fea1bea6 100644 --- a/src/server/activeobjectmgr.h +++ b/src/server/activeobjectmgr.h @@ -22,7 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include #include "../activeobjectmgr.h" -#include "serverobject.h" +#include "serveractiveobject.h" namespace server { diff --git a/src/serverobject.cpp b/src/server/serveractiveobject.cpp similarity index 98% rename from src/serverobject.cpp rename to src/server/serveractiveobject.cpp index 119a41b7b..3aa78c7d5 100644 --- a/src/serverobject.cpp +++ b/src/server/serveractiveobject.cpp @@ -17,7 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include "serverobject.h" +#include "serveractiveobject.h" #include #include "inventory.h" #include "constants.h" // BS diff --git a/src/serverobject.h b/src/server/serveractiveobject.h similarity index 100% rename from src/serverobject.h rename to src/server/serveractiveobject.h diff --git a/src/server/unit_sao.cpp b/src/server/unit_sao.cpp new file mode 100644 index 000000000..66be67522 --- /dev/null +++ b/src/server/unit_sao.cpp @@ -0,0 +1,318 @@ +/* +Minetest +Copyright (C) 2010-2013 celeron55, Perttu Ahola +Copyright (C) 2013-2020 Minetest core developers & community + +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 "unit_sao.h" +#include "scripting_server.h" +#include "serverenvironment.h" + +/* + UnitSAO + */ + +UnitSAO::UnitSAO(ServerEnvironment *env, v3f pos): + ServerActiveObject(env, pos) +{ + // Initialize something to armor groups + m_armor_groups["fleshy"] = 100; +} + +ServerActiveObject *UnitSAO::getParent() const +{ + if (!m_attachment_parent_id) + return nullptr; + // Check if the parent still exists + ServerActiveObject *obj = m_env->getActiveObject(m_attachment_parent_id); + + return obj; +} + +void UnitSAO::setArmorGroups(const ItemGroupList &armor_groups) +{ + m_armor_groups = armor_groups; + m_armor_groups_sent = false; +} + +const ItemGroupList &UnitSAO::getArmorGroups() const +{ + return m_armor_groups; +} + +void UnitSAO::setAnimation(v2f frame_range, float frame_speed, float frame_blend, bool frame_loop) +{ + // store these so they can be updated to clients + m_animation_range = frame_range; + m_animation_speed = frame_speed; + m_animation_blend = frame_blend; + m_animation_loop = frame_loop; + m_animation_sent = false; +} + +void UnitSAO::getAnimation(v2f *frame_range, float *frame_speed, float *frame_blend, bool *frame_loop) +{ + *frame_range = m_animation_range; + *frame_speed = m_animation_speed; + *frame_blend = m_animation_blend; + *frame_loop = m_animation_loop; +} + +void UnitSAO::setAnimationSpeed(float frame_speed) +{ + m_animation_speed = frame_speed; + m_animation_speed_sent = false; +} + +void UnitSAO::setBonePosition(const std::string &bone, v3f position, v3f rotation) +{ + // store these so they can be updated to clients + m_bone_position[bone] = core::vector2d(position, rotation); + m_bone_position_sent = false; +} + +void UnitSAO::getBonePosition(const std::string &bone, v3f *position, v3f *rotation) +{ + *position = m_bone_position[bone].X; + *rotation = m_bone_position[bone].Y; +} + +void UnitSAO::setAttachment(int parent_id, const std::string &bone, v3f position, v3f rotation) +{ + // Attachments need to be handled on both the server and client. + // If we just attach on the server, we can only copy the position of the parent. Attachments + // are still sent to clients at an interval so players might see them lagging, plus we can't + // read and attach to skeletal bones. + // If we just attach on the client, the server still sees the child at its original location. + // This breaks some things so we also give the server the most accurate representation + // even if players only see the client changes. + + int old_parent = m_attachment_parent_id; + m_attachment_parent_id = parent_id; + m_attachment_bone = bone; + m_attachment_position = position; + m_attachment_rotation = rotation; + m_attachment_sent = false; + + if (parent_id != old_parent) { + onDetach(old_parent); + onAttach(parent_id); + } +} + +void UnitSAO::getAttachment(int *parent_id, std::string *bone, v3f *position, + v3f *rotation) const +{ + *parent_id = m_attachment_parent_id; + *bone = m_attachment_bone; + *position = m_attachment_position; + *rotation = m_attachment_rotation; +} + +void UnitSAO::clearChildAttachments() +{ + for (int child_id : m_attachment_child_ids) { + // Child can be NULL if it was deleted earlier + if (ServerActiveObject *child = m_env->getActiveObject(child_id)) + child->setAttachment(0, "", v3f(0, 0, 0), v3f(0, 0, 0)); + } + m_attachment_child_ids.clear(); +} + +void UnitSAO::clearParentAttachment() +{ + ServerActiveObject *parent = nullptr; + if (m_attachment_parent_id) { + parent = m_env->getActiveObject(m_attachment_parent_id); + setAttachment(0, "", m_attachment_position, m_attachment_rotation); + } else { + setAttachment(0, "", v3f(0, 0, 0), v3f(0, 0, 0)); + } + // Do it + if (parent) + parent->removeAttachmentChild(m_id); +} + +void UnitSAO::addAttachmentChild(int child_id) +{ + m_attachment_child_ids.insert(child_id); +} + +void UnitSAO::removeAttachmentChild(int child_id) +{ + m_attachment_child_ids.erase(child_id); +} + +const std::unordered_set &UnitSAO::getAttachmentChildIds() const +{ + return m_attachment_child_ids; +} + +void UnitSAO::onAttach(int parent_id) +{ + if (!parent_id) + return; + + ServerActiveObject *parent = m_env->getActiveObject(parent_id); + + if (!parent || parent->isGone()) + return; // Do not try to notify soon gone parent + + if (parent->getType() == ACTIVEOBJECT_TYPE_LUAENTITY) { + // Call parent's on_attach field + m_env->getScriptIface()->luaentity_on_attach_child(parent_id, this); + } +} + +void UnitSAO::onDetach(int parent_id) +{ + if (!parent_id) + return; + + ServerActiveObject *parent = m_env->getActiveObject(parent_id); + if (getType() == ACTIVEOBJECT_TYPE_LUAENTITY) + m_env->getScriptIface()->luaentity_on_detach(m_id, parent); + + if (!parent || parent->isGone()) + return; // Do not try to notify soon gone parent + + if (parent->getType() == ACTIVEOBJECT_TYPE_LUAENTITY) + m_env->getScriptIface()->luaentity_on_detach_child(parent_id, this); +} + +ObjectProperties* UnitSAO::accessObjectProperties() +{ + return &m_prop; +} + +void UnitSAO::notifyObjectPropertiesModified() +{ + m_properties_sent = false; +} + +std::string UnitSAO::generateUpdateAttachmentCommand() const +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_ATTACH_TO); + // parameters + writeS16(os, m_attachment_parent_id); + os << serializeString(m_attachment_bone); + writeV3F32(os, m_attachment_position); + writeV3F32(os, m_attachment_rotation); + return os.str(); +} + +std::string UnitSAO::generateUpdateBonePositionCommand(const std::string &bone, + const v3f &position, const v3f &rotation) +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_SET_BONE_POSITION); + // parameters + os << serializeString(bone); + writeV3F32(os, position); + writeV3F32(os, rotation); + return os.str(); +} + + +std::string UnitSAO::generateUpdateAnimationSpeedCommand() const +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_SET_ANIMATION_SPEED); + // parameters + writeF32(os, m_animation_speed); + return os.str(); +} + +std::string UnitSAO::generateUpdateAnimationCommand() const +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_SET_ANIMATION); + // parameters + writeV2F32(os, m_animation_range); + writeF32(os, m_animation_speed); + writeF32(os, m_animation_blend); + // these are sent inverted so we get true when the server sends nothing + writeU8(os, !m_animation_loop); + return os.str(); +} + + +std::string UnitSAO::generateUpdateArmorGroupsCommand() const +{ + std::ostringstream os(std::ios::binary); + writeU8(os, AO_CMD_UPDATE_ARMOR_GROUPS); + writeU16(os, m_armor_groups.size()); + for (const auto &armor_group : m_armor_groups) { + os< +Copyright (C) 2013-2020 Minetest core developers & community + +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. +*/ + +#pragma once + +#include "object_properties.h" +#include "serveractiveobject.h" + +class UnitSAO: public ServerActiveObject +{ +public: + UnitSAO(ServerEnvironment *env, v3f pos); + virtual ~UnitSAO() = default; + + void setRotation(v3f rotation) { m_rotation = rotation; } + const v3f &getRotation() const { return m_rotation; } + v3f getRadRotation() { return m_rotation * core::DEGTORAD; } + + // Deprecated + f32 getRadYawDep() const { return (m_rotation.Y + 90.) * core::DEGTORAD; } + + u16 getHP() const { return m_hp; } + // Use a function, if isDead can be defined by other conditions + bool isDead() const { return m_hp == 0; } + + inline bool isAttached() const + { return getParent(); } + + inline bool isImmortal() const + { return itemgroup_get(getArmorGroups(), "immortal"); } + + void setArmorGroups(const ItemGroupList &armor_groups); + const ItemGroupList &getArmorGroups() const; + void setAnimation(v2f frame_range, float frame_speed, float frame_blend, bool frame_loop); + void getAnimation(v2f *frame_range, float *frame_speed, float *frame_blend, bool *frame_loop); + void setAnimationSpeed(float frame_speed); + void setBonePosition(const std::string &bone, v3f position, v3f rotation); + void getBonePosition(const std::string &bone, v3f *position, v3f *rotation); + void setAttachment(int parent_id, const std::string &bone, v3f position, v3f rotation); + void getAttachment(int *parent_id, std::string *bone, v3f *position, + v3f *rotation) const; + void clearChildAttachments(); + void clearParentAttachment(); + void addAttachmentChild(int child_id); + void removeAttachmentChild(int child_id); + const std::unordered_set &getAttachmentChildIds() const; + ServerActiveObject *getParent() const; + ObjectProperties* accessObjectProperties(); + void notifyObjectPropertiesModified(); + + std::string generateUpdateAttachmentCommand() const; + std::string generateUpdateAnimationSpeedCommand() const; + std::string generateUpdateAnimationCommand() const; + std::string generateUpdateArmorGroupsCommand() const; + static std::string generateUpdatePositionCommand(const v3f &position, const v3f &velocity, + const v3f &acceleration, const v3f &rotation, bool do_interpolate, + bool is_movement_end, f32 update_interval); + std::string generateSetPropertiesCommand(const ObjectProperties &prop) const; + void sendPunchCommand(); + static std::string generateUpdateBonePositionCommand(const std::string &bone, + const v3f &position, const v3f &rotation); + +protected: + u16 m_hp = 1; + + v3f m_rotation; + + bool m_properties_sent = true; + ObjectProperties m_prop; + + ItemGroupList m_armor_groups; + bool m_armor_groups_sent = false; + + v2f m_animation_range; + float m_animation_speed = 0.0f; + float m_animation_blend = 0.0f; + bool m_animation_loop = true; + bool m_animation_sent = false; + bool m_animation_speed_sent = false; + + // Stores position and rotation for each bone name + std::unordered_map> m_bone_position; + bool m_bone_position_sent = false; + + int m_attachment_parent_id = 0; + std::unordered_set m_attachment_child_ids; + std::string m_attachment_bone = ""; + v3f m_attachment_position; + v3f m_attachment_rotation; + bool m_attachment_sent = false; +private: + void onAttach(int parent_id); + void onDetach(int parent_id); + + std::string generatePunchCommand(u16 result_hp) const; +}; diff --git a/util/travis/clang-format-whitelist.txt b/util/travis/clang-format-whitelist.txt index 7b2fd8236..816ec2c59 100644 --- a/util/travis/clang-format-whitelist.txt +++ b/util/travis/clang-format-whitelist.txt @@ -402,16 +402,14 @@ src/script/scripting_server.cpp src/script/scripting_server.h src/serialization.cpp src/serialization.h -src/serveractiveobjectmap.cpp -src/serveractiveobjectmap.h src/server.cpp src/serverenvironment.cpp src/serverenvironment.h src/server.h src/serverlist.cpp src/serverlist.h -src/serverobject.cpp -src/serverobject.h +src/server/serveractiveobject.cpp +src/server/serveractiveobject.h src/settings.cpp src/settings.h src/settings_translation_file.cpp From 2a7267febfd5f827c8a2654cc67e5db07f59cbac Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Fri, 10 Apr 2020 21:27:13 +0200 Subject: [PATCH 082/424] Add vscode cmake plugin files to gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index fb0b8ae4a..aae9bf437 100644 --- a/.gitignore +++ b/.gitignore @@ -24,8 +24,9 @@ gtags.files .idea # Codelite *.project -# Visual Studio Code +# Visual Studio Code & plugins .vscode/ +build/.cmake/ # Gradle .gradle From c99e8df07fe88c0b19363beca09e12f151bc13d0 Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Sat, 11 Apr 2020 09:35:27 +0200 Subject: [PATCH 083/424] pass clang-format --- src/server/unit_sao.cpp | 44 ++++++++++++++++++++--------------------- src/server/unit_sao.h | 29 ++++++++++++++++----------- 2 files changed, 38 insertions(+), 35 deletions(-) diff --git a/src/server/unit_sao.cpp b/src/server/unit_sao.cpp index 66be67522..b30b7a76b 100644 --- a/src/server/unit_sao.cpp +++ b/src/server/unit_sao.cpp @@ -26,8 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., UnitSAO */ -UnitSAO::UnitSAO(ServerEnvironment *env, v3f pos): - ServerActiveObject(env, pos) +UnitSAO::UnitSAO(ServerEnvironment *env, v3f pos) : ServerActiveObject(env, pos) { // Initialize something to armor groups m_armor_groups["fleshy"] = 100; @@ -54,7 +53,8 @@ const ItemGroupList &UnitSAO::getArmorGroups() const return m_armor_groups; } -void UnitSAO::setAnimation(v2f frame_range, float frame_speed, float frame_blend, bool frame_loop) +void UnitSAO::setAnimation( + v2f frame_range, float frame_speed, float frame_blend, bool frame_loop) { // store these so they can be updated to clients m_animation_range = frame_range; @@ -64,7 +64,8 @@ void UnitSAO::setAnimation(v2f frame_range, float frame_speed, float frame_blend m_animation_sent = false; } -void UnitSAO::getAnimation(v2f *frame_range, float *frame_speed, float *frame_blend, bool *frame_loop) +void UnitSAO::getAnimation(v2f *frame_range, float *frame_speed, float *frame_blend, + bool *frame_loop) { *frame_range = m_animation_range; *frame_speed = m_animation_speed; @@ -91,14 +92,15 @@ void UnitSAO::getBonePosition(const std::string &bone, v3f *position, v3f *rotat *rotation = m_bone_position[bone].Y; } -void UnitSAO::setAttachment(int parent_id, const std::string &bone, v3f position, v3f rotation) +void UnitSAO::setAttachment( + int parent_id, const std::string &bone, v3f position, v3f rotation) { // Attachments need to be handled on both the server and client. - // If we just attach on the server, we can only copy the position of the parent. Attachments - // are still sent to clients at an interval so players might see them lagging, plus we can't - // read and attach to skeletal bones. - // If we just attach on the client, the server still sees the child at its original location. - // This breaks some things so we also give the server the most accurate representation + // If we just attach on the server, we can only copy the position of the parent. + // Attachments are still sent to clients at an interval so players might see them + // lagging, plus we can't read and attach to skeletal bones. If we just attach on + // the client, the server still sees the child at its original location. This + // breaks some things so we also give the server the most accurate representation // even if players only see the client changes. int old_parent = m_attachment_parent_id; @@ -114,8 +116,8 @@ void UnitSAO::setAttachment(int parent_id, const std::string &bone, v3f position } } -void UnitSAO::getAttachment(int *parent_id, std::string *bone, v3f *position, - v3f *rotation) const +void UnitSAO::getAttachment( + int *parent_id, std::string *bone, v3f *position, v3f *rotation) const { *parent_id = m_attachment_parent_id; *bone = m_attachment_bone; @@ -194,7 +196,7 @@ void UnitSAO::onDetach(int parent_id) m_env->getScriptIface()->luaentity_on_detach_child(parent_id, this); } -ObjectProperties* UnitSAO::accessObjectProperties() +ObjectProperties *UnitSAO::accessObjectProperties() { return &m_prop; } @@ -217,8 +219,8 @@ std::string UnitSAO::generateUpdateAttachmentCommand() const return os.str(); } -std::string UnitSAO::generateUpdateBonePositionCommand(const std::string &bone, - const v3f &position, const v3f &rotation) +std::string UnitSAO::generateUpdateBonePositionCommand( + const std::string &bone, const v3f &position, const v3f &rotation) { std::ostringstream os(std::ios::binary); // command @@ -230,7 +232,6 @@ std::string UnitSAO::generateUpdateBonePositionCommand(const std::string &bone, return os.str(); } - std::string UnitSAO::generateUpdateAnimationSpeedCommand() const { std::ostringstream os(std::ios::binary); @@ -255,23 +256,21 @@ std::string UnitSAO::generateUpdateAnimationCommand() const return os.str(); } - std::string UnitSAO::generateUpdateArmorGroupsCommand() const { std::ostringstream os(std::ios::binary); writeU8(os, AO_CMD_UPDATE_ARMOR_GROUPS); writeU16(os, m_armor_groups.size()); for (const auto &armor_group : m_armor_groups) { - os< &getAttachmentChildIds() const; ServerActiveObject *getParent() const; - ObjectProperties* accessObjectProperties(); + ObjectProperties *accessObjectProperties(); void notifyObjectPropertiesModified(); std::string generateUpdateAttachmentCommand() const; std::string generateUpdateAnimationSpeedCommand() const; std::string generateUpdateAnimationCommand() const; std::string generateUpdateArmorGroupsCommand() const; - static std::string generateUpdatePositionCommand(const v3f &position, const v3f &velocity, - const v3f &acceleration, const v3f &rotation, bool do_interpolate, - bool is_movement_end, f32 update_interval); + static std::string generateUpdatePositionCommand(const v3f &position, + const v3f &velocity, const v3f &acceleration, const v3f &rotation, + bool do_interpolate, bool is_movement_end, f32 update_interval); std::string generateSetPropertiesCommand(const ObjectProperties &prop) const; void sendPunchCommand(); static std::string generateUpdateBonePositionCommand(const std::string &bone, - const v3f &position, const v3f &rotation); + const v3f &position, const v3f &rotation); protected: u16 m_hp = 1; @@ -105,6 +109,7 @@ protected: v3f m_attachment_position; v3f m_attachment_rotation; bool m_attachment_sent = false; + private: void onAttach(int parent_id); void onDetach(int parent_id); From 894a34aef48024a752a1ef151d046955d83858d0 Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Sat, 11 Apr 2020 09:59:09 +0200 Subject: [PATCH 084/424] Move PlayerSAO to dedicated files --- src/clientiface.cpp | 3 +- src/content_sao.cpp | 676 +------------------------- src/content_sao.h | 299 ------------ src/database/database-files.cpp | 2 +- src/database/database-postgresql.cpp | 2 +- src/database/database-sqlite3.cpp | 2 +- src/network/serverpackethandler.cpp | 2 +- src/remoteplayer.cpp | 2 +- src/script/common/c_content.cpp | 3 +- src/script/cpp_api/s_base.cpp | 2 +- src/script/cpp_api/s_player.h | 1 + src/script/lua_api/l_env.cpp | 3 +- src/script/lua_api/l_object.cpp | 2 +- src/server.cpp | 2 +- src/server/CMakeLists.txt | 1 + src/server/player_sao.cpp | 695 +++++++++++++++++++++++++++ src/server/player_sao.h | 325 +++++++++++++ src/server/unit_sao.cpp | 4 - src/serverenvironment.cpp | 4 +- 19 files changed, 1038 insertions(+), 992 deletions(-) create mode 100644 src/server/player_sao.cpp create mode 100644 src/server/player_sao.h diff --git a/src/clientiface.cpp b/src/clientiface.cpp index dceaa64f2..17237f73e 100644 --- a/src/clientiface.cpp +++ b/src/clientiface.cpp @@ -19,6 +19,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include "clientiface.h" +#include "content_sao.h" #include "network/connection.h" #include "network/serveropcodes.h" #include "remoteplayer.h" @@ -27,7 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "serverenvironment.h" #include "map.h" #include "emerge.h" -#include "content_sao.h" // TODO this is used for cleanup of only +#include "server/player_sao.h" #include "log.h" #include "util/srp.h" #include "face_position_cache.h" diff --git a/src/content_sao.cpp b/src/content_sao.cpp index 0d387b53a..7ec17aa82 100644 --- a/src/content_sao.cpp +++ b/src/content_sao.cpp @@ -27,6 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "remoteplayer.h" #include "server.h" #include "scripting_server.h" +#include "server/player_sao.h" #include "settings.h" #include #include @@ -678,678 +679,3 @@ bool LuaEntitySAO::collideWithObjects() const { return m_prop.collideWithObjects; } - -/* - PlayerSAO -*/ - -// No prototype, PlayerSAO does not need to be deserialized - -PlayerSAO::PlayerSAO(ServerEnvironment *env_, RemotePlayer *player_, session_t peer_id_, - bool is_singleplayer): - UnitSAO(env_, v3f(0,0,0)), - m_player(player_), - m_peer_id(peer_id_), - m_is_singleplayer(is_singleplayer) -{ - SANITY_CHECK(m_peer_id != PEER_ID_INEXISTENT); - - m_prop.hp_max = PLAYER_MAX_HP_DEFAULT; - m_prop.breath_max = PLAYER_MAX_BREATH_DEFAULT; - m_prop.physical = false; - m_prop.collisionbox = aabb3f(-0.3f, 0.0f, -0.3f, 0.3f, 1.77f, 0.3f); - m_prop.selectionbox = aabb3f(-0.3f, 0.0f, -0.3f, 0.3f, 1.77f, 0.3f); - m_prop.pointable = true; - // Start of default appearance, this should be overwritten by Lua - m_prop.visual = "upright_sprite"; - m_prop.visual_size = v3f(1, 2, 1); - m_prop.textures.clear(); - m_prop.textures.emplace_back("player.png"); - m_prop.textures.emplace_back("player_back.png"); - m_prop.colors.clear(); - m_prop.colors.emplace_back(255, 255, 255, 255); - m_prop.spritediv = v2s16(1,1); - m_prop.eye_height = 1.625f; - // End of default appearance - m_prop.is_visible = true; - m_prop.backface_culling = false; - m_prop.makes_footstep_sound = true; - m_prop.stepheight = PLAYER_DEFAULT_STEPHEIGHT * BS; - m_hp = m_prop.hp_max; - m_breath = m_prop.breath_max; - // Disable zoom in survival mode using a value of 0 - m_prop.zoom_fov = g_settings->getBool("creative_mode") ? 15.0f : 0.0f; - - if (!g_settings->getBool("enable_damage")) - m_armor_groups["immortal"] = 1; -} - -void PlayerSAO::finalize(RemotePlayer *player, const std::set &privs) -{ - assert(player); - m_player = player; - m_privs = privs; -} - -v3f PlayerSAO::getEyeOffset() const -{ - return v3f(0, BS * m_prop.eye_height, 0); -} - -std::string PlayerSAO::getDescription() -{ - return std::string("player ") + m_player->getName(); -} - -// Called after id has been set and has been inserted in environment -void PlayerSAO::addedToEnvironment(u32 dtime_s) -{ - ServerActiveObject::addedToEnvironment(dtime_s); - ServerActiveObject::setBasePosition(m_base_position); - m_player->setPlayerSAO(this); - m_player->setPeerId(m_peer_id); - m_last_good_position = m_base_position; -} - -// Called before removing from environment -void PlayerSAO::removingFromEnvironment() -{ - ServerActiveObject::removingFromEnvironment(); - if (m_player->getPlayerSAO() == this) { - unlinkPlayerSessionAndSave(); - for (u32 attached_particle_spawner : m_attached_particle_spawners) { - m_env->deleteParticleSpawner(attached_particle_spawner, false); - } - } -} - -std::string PlayerSAO::getClientInitializationData(u16 protocol_version) -{ - std::ostringstream os(std::ios::binary); - - // Protocol >= 15 - writeU8(os, 1); // version - os << serializeString(m_player->getName()); // name - writeU8(os, 1); // is_player - writeS16(os, getId()); // id - writeV3F32(os, m_base_position); - writeV3F32(os, m_rotation); - writeU16(os, getHP()); - - std::ostringstream msg_os(std::ios::binary); - msg_os << serializeLongString(getPropertyPacket()); // message 1 - msg_os << serializeLongString(generateUpdateArmorGroupsCommand()); // 2 - msg_os << serializeLongString(generateUpdateAnimationCommand()); // 3 - for (std::unordered_map>::const_iterator - ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) { - msg_os << serializeLongString(generateUpdateBonePositionCommand((*ii).first, - (*ii).second.X, (*ii).second.Y)); // m_bone_position.size - } - msg_os << serializeLongString(generateUpdateAttachmentCommand()); // 4 - msg_os << serializeLongString(generateUpdatePhysicsOverrideCommand()); // 5 - // (AO_CMD_UPDATE_NAMETAG_ATTRIBUTES) : Deprecated, for backwards compatibility only. - msg_os << serializeLongString(generateUpdateNametagAttributesCommand(m_prop.nametag_color)); // 6 - int message_count = 6 + m_bone_position.size(); - for (std::unordered_set::const_iterator ii = m_attachment_child_ids.begin(); - ii != m_attachment_child_ids.end(); ++ii) { - if (ServerActiveObject *obj = m_env->getActiveObject(*ii)) { - message_count++; - msg_os << serializeLongString(obj->generateUpdateInfantCommand(*ii, protocol_version)); - } - } - - writeU8(os, message_count); - os.write(msg_os.str().c_str(), msg_os.str().size()); - - // return result - return os.str(); -} - -void PlayerSAO::getStaticData(std::string * result) const -{ - FATAL_ERROR("Obsolete function"); -} - -void PlayerSAO::step(float dtime, bool send_recommended) -{ - if (!isImmortal() && m_drowning_interval.step(dtime, 2.0f)) { - // Get nose/mouth position, approximate with eye position - v3s16 p = floatToInt(getEyePosition(), BS); - MapNode n = m_env->getMap().getNode(p); - const ContentFeatures &c = m_env->getGameDef()->ndef()->get(n); - // If node generates drown - if (c.drowning > 0 && m_hp > 0) { - if (m_breath > 0) - setBreath(m_breath - 1); - - // No more breath, damage player - if (m_breath == 0) { - PlayerHPChangeReason reason(PlayerHPChangeReason::DROWNING); - setHP(m_hp - c.drowning, reason); - m_env->getGameDef()->SendPlayerHPOrDie(this, reason); - } - } - } - - if (m_breathing_interval.step(dtime, 0.5f) && !isImmortal()) { - // Get nose/mouth position, approximate with eye position - v3s16 p = floatToInt(getEyePosition(), BS); - MapNode n = m_env->getMap().getNode(p); - const ContentFeatures &c = m_env->getGameDef()->ndef()->get(n); - // If player is alive & not drowning & not in ignore & not immortal, breathe - if (m_breath < m_prop.breath_max && c.drowning == 0 && - n.getContent() != CONTENT_IGNORE && m_hp > 0) - setBreath(m_breath + 1); - } - - if (!isImmortal() && m_node_hurt_interval.step(dtime, 1.0f)) { - u32 damage_per_second = 0; - std::string nodename; - // Lowest and highest damage points are 0.1 within collisionbox - float dam_top = m_prop.collisionbox.MaxEdge.Y - 0.1f; - - // Sequence of damage points, starting 0.1 above feet and progressing - // upwards in 1 node intervals, stopping below top damage point. - for (float dam_height = 0.1f; dam_height < dam_top; dam_height++) { - v3s16 p = floatToInt(m_base_position + - v3f(0.0f, dam_height * BS, 0.0f), BS); - MapNode n = m_env->getMap().getNode(p); - const ContentFeatures &c = m_env->getGameDef()->ndef()->get(n); - if (c.damage_per_second > damage_per_second) { - damage_per_second = c.damage_per_second; - nodename = c.name; - } - } - - // Top damage point - v3s16 ptop = floatToInt(m_base_position + - v3f(0.0f, dam_top * BS, 0.0f), BS); - MapNode ntop = m_env->getMap().getNode(ptop); - const ContentFeatures &c = m_env->getGameDef()->ndef()->get(ntop); - if (c.damage_per_second > damage_per_second) { - damage_per_second = c.damage_per_second; - nodename = c.name; - } - - if (damage_per_second != 0 && m_hp > 0) { - s32 newhp = (s32)m_hp - (s32)damage_per_second; - PlayerHPChangeReason reason(PlayerHPChangeReason::NODE_DAMAGE, nodename); - setHP(newhp, reason); - m_env->getGameDef()->SendPlayerHPOrDie(this, reason); - } - } - - if (!m_properties_sent) { - m_properties_sent = true; - std::string str = getPropertyPacket(); - // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); - m_env->getScriptIface()->player_event(this, "properties_changed"); - } - - // If attached, check that our parent is still there. If it isn't, detach. - if (m_attachment_parent_id && !isAttached()) { - m_attachment_parent_id = 0; - m_attachment_bone = ""; - m_attachment_position = v3f(0.0f, 0.0f, 0.0f); - m_attachment_rotation = v3f(0.0f, 0.0f, 0.0f); - setBasePosition(m_last_good_position); - m_env->getGameDef()->SendMovePlayer(m_peer_id); - } - - //dstream<<"PlayerSAO::step: dtime: "<getMaxLagEstimate() * 2.0f; - if(lag_pool_max < LAG_POOL_MIN) - lag_pool_max = LAG_POOL_MIN; - m_dig_pool.setMax(lag_pool_max); - m_move_pool.setMax(lag_pool_max); - - // Increment cheat prevention timers - m_dig_pool.add(dtime); - m_move_pool.add(dtime); - m_time_from_last_teleport += dtime; - m_time_from_last_punch += dtime; - m_nocheat_dig_time += dtime; - m_max_speed_override_time = MYMAX(m_max_speed_override_time - dtime, 0.0f); - - // Each frame, parent position is copied if the object is attached, - // otherwise it's calculated normally. - // If the object gets detached this comes into effect automatically from - // the last known origin. - if (isAttached()) { - v3f pos = m_env->getActiveObject(m_attachment_parent_id)->getBasePosition(); - m_last_good_position = pos; - setBasePosition(pos); - } - - if (!send_recommended) - return; - - if (m_position_not_sent) { - m_position_not_sent = false; - float update_interval = m_env->getSendRecommendedInterval(); - v3f pos; - // When attached, the position is only sent to clients where the - // parent isn't known - if (isAttached()) - pos = m_last_good_position; - else - pos = m_base_position; - - std::string str = generateUpdatePositionCommand( - pos, - v3f(0.0f, 0.0f, 0.0f), - v3f(0.0f, 0.0f, 0.0f), - m_rotation, - true, - false, - update_interval - ); - // create message and add to list - m_messages_out.emplace(getId(), false, str); - } - - if (!m_armor_groups_sent) { - m_armor_groups_sent = true; - // create message and add to list - m_messages_out.emplace(getId(), true, generateUpdateArmorGroupsCommand()); - } - - if (!m_physics_override_sent) { - m_physics_override_sent = true; - // create message and add to list - m_messages_out.emplace(getId(), true, generateUpdatePhysicsOverrideCommand()); - } - - if (!m_animation_sent) { - m_animation_sent = true; - // create message and add to list - m_messages_out.emplace(getId(), true, generateUpdateAnimationCommand()); - } - - if (!m_bone_position_sent) { - m_bone_position_sent = true; - for (std::unordered_map>::const_iterator - ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) { - std::string str = generateUpdateBonePositionCommand((*ii).first, - (*ii).second.X, (*ii).second.Y); - // create message and add to list - m_messages_out.emplace(getId(), true, str); - } - } - - if (!m_attachment_sent) { - m_attachment_sent = true; - std::string str = generateUpdateAttachmentCommand(); - // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); - } -} - -std::string PlayerSAO::generateUpdatePhysicsOverrideCommand() const -{ - std::ostringstream os(std::ios::binary); - // command - writeU8(os, AO_CMD_SET_PHYSICS_OVERRIDE); - // parameters - writeF32(os, m_physics_override_speed); - writeF32(os, m_physics_override_jump); - writeF32(os, m_physics_override_gravity); - // these are sent inverted so we get true when the server sends nothing - writeU8(os, !m_physics_override_sneak); - writeU8(os, !m_physics_override_sneak_glitch); - writeU8(os, !m_physics_override_new_move); - return os.str(); -} - -void PlayerSAO::setBasePosition(const v3f &position) -{ - if (m_player && position != m_base_position) - m_player->setDirty(true); - - // This needs to be ran for attachments too - ServerActiveObject::setBasePosition(position); - - // Updating is not wanted/required for player migration - if (m_env) { - m_position_not_sent = true; - } -} - -void PlayerSAO::setPos(const v3f &pos) -{ - if(isAttached()) - return; - - // Send mapblock of target location - v3s16 blockpos = v3s16(pos.X / MAP_BLOCKSIZE, pos.Y / MAP_BLOCKSIZE, pos.Z / MAP_BLOCKSIZE); - m_env->getGameDef()->SendBlock(m_peer_id, blockpos); - - setBasePosition(pos); - // Movement caused by this command is always valid - m_last_good_position = pos; - m_move_pool.empty(); - m_time_from_last_teleport = 0.0; - m_env->getGameDef()->SendMovePlayer(m_peer_id); -} - -void PlayerSAO::moveTo(v3f pos, bool continuous) -{ - if(isAttached()) - return; - - setBasePosition(pos); - // Movement caused by this command is always valid - m_last_good_position = pos; - m_move_pool.empty(); - m_time_from_last_teleport = 0.0; - m_env->getGameDef()->SendMovePlayer(m_peer_id); -} - -void PlayerSAO::setPlayerYaw(const float yaw) -{ - v3f rotation(0, yaw, 0); - if (m_player && yaw != m_rotation.Y) - m_player->setDirty(true); - - // Set player model yaw, not look view - UnitSAO::setRotation(rotation); -} - -void PlayerSAO::setFov(const float fov) -{ - if (m_player && fov != m_fov) - m_player->setDirty(true); - - m_fov = fov; -} - -void PlayerSAO::setWantedRange(const s16 range) -{ - if (m_player && range != m_wanted_range) - m_player->setDirty(true); - - m_wanted_range = range; -} - -void PlayerSAO::setPlayerYawAndSend(const float yaw) -{ - setPlayerYaw(yaw); - m_env->getGameDef()->SendMovePlayer(m_peer_id); -} - -void PlayerSAO::setLookPitch(const float pitch) -{ - if (m_player && pitch != m_pitch) - m_player->setDirty(true); - - m_pitch = pitch; -} - -void PlayerSAO::setLookPitchAndSend(const float pitch) -{ - setLookPitch(pitch); - m_env->getGameDef()->SendMovePlayer(m_peer_id); -} - -u16 PlayerSAO::punch(v3f dir, - const ToolCapabilities *toolcap, - ServerActiveObject *puncher, - float time_from_last_punch) -{ - if (!toolcap) - return 0; - - FATAL_ERROR_IF(!puncher, "Punch action called without SAO"); - - // No effect if PvP disabled or if immortal - if (isImmortal() || !g_settings->getBool("enable_pvp")) { - if (puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) { - // create message and add to list - sendPunchCommand(); - return 0; - } - } - - s32 old_hp = getHP(); - HitParams hitparams = getHitParams(m_armor_groups, toolcap, - time_from_last_punch); - - PlayerSAO *playersao = m_player->getPlayerSAO(); - - bool damage_handled = m_env->getScriptIface()->on_punchplayer(playersao, - puncher, time_from_last_punch, toolcap, dir, - hitparams.hp); - - if (!damage_handled) { - setHP((s32)getHP() - (s32)hitparams.hp, - PlayerHPChangeReason(PlayerHPChangeReason::PLAYER_PUNCH, puncher)); - } else { // override client prediction - if (puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) { - // create message and add to list - sendPunchCommand(); - } - } - - actionstream << puncher->getDescription() << " (id=" << puncher->getId() << - ", hp=" << puncher->getHP() << ") punched " << - getDescription() << " (id=" << m_id << ", hp=" << m_hp << - "), damage=" << (old_hp - (s32)getHP()) << - (damage_handled ? " (handled by Lua)" : "") << std::endl; - - return hitparams.wear; -} - -void PlayerSAO::setHP(s32 hp, const PlayerHPChangeReason &reason) -{ - s32 oldhp = m_hp; - - hp = rangelim(hp, 0, m_prop.hp_max); - - if (oldhp != hp) { - s32 hp_change = m_env->getScriptIface()->on_player_hpchange(this, hp - oldhp, reason); - if (hp_change == 0) - return; - - hp = rangelim(oldhp + hp_change, 0, m_prop.hp_max); - } - - if (hp < oldhp && isImmortal()) - return; - - m_hp = hp; - - // Update properties on death - if ((hp == 0) != (oldhp == 0)) - m_properties_sent = false; -} - -void PlayerSAO::setBreath(const u16 breath, bool send) -{ - if (m_player && breath != m_breath) - m_player->setDirty(true); - - m_breath = rangelim(breath, 0, m_prop.breath_max); - - if (send) - m_env->getGameDef()->SendPlayerBreath(this); -} - -Inventory *PlayerSAO::getInventory() const -{ - return m_player ? &m_player->inventory : nullptr; -} - -InventoryLocation PlayerSAO::getInventoryLocation() const -{ - InventoryLocation loc; - loc.setPlayer(m_player->getName()); - return loc; -} - -u16 PlayerSAO::getWieldIndex() const -{ - return m_player->getWieldIndex(); -} - -ItemStack PlayerSAO::getWieldedItem(ItemStack *selected, ItemStack *hand) const -{ - return m_player->getWieldedItem(selected, hand); -} - -bool PlayerSAO::setWieldedItem(const ItemStack &item) -{ - InventoryList *mlist = m_player->inventory.getList(getWieldList()); - if (mlist) { - mlist->changeItem(m_player->getWieldIndex(), item); - return true; - } - return false; -} - -void PlayerSAO::disconnected() -{ - m_peer_id = PEER_ID_INEXISTENT; - m_pending_removal = true; -} - -void PlayerSAO::unlinkPlayerSessionAndSave() -{ - assert(m_player->getPlayerSAO() == this); - m_player->setPeerId(PEER_ID_INEXISTENT); - m_env->savePlayer(m_player); - m_player->setPlayerSAO(NULL); - m_env->removePlayer(m_player); -} - -std::string PlayerSAO::getPropertyPacket() -{ - m_prop.is_visible = (true); - return generateSetPropertiesCommand(m_prop); -} - -void PlayerSAO::setMaxSpeedOverride(const v3f &vel) -{ - if (m_max_speed_override_time == 0.0f) - m_max_speed_override = vel; - else - m_max_speed_override += vel; - if (m_player) { - float accel = MYMIN(m_player->movement_acceleration_default, - m_player->movement_acceleration_air); - m_max_speed_override_time = m_max_speed_override.getLength() / accel / BS; - } -} - -bool PlayerSAO::checkMovementCheat() -{ - if (isAttached() || m_is_singleplayer || - g_settings->getBool("disable_anticheat")) { - m_last_good_position = m_base_position; - return false; - } - - bool cheated = false; - /* - Check player movements - - NOTE: Actually the server should handle player physics like the - client does and compare player's position to what is calculated - on our side. This is required when eg. players fly due to an - explosion. Altough a node-based alternative might be possible - too, and much more lightweight. - */ - - float override_max_H, override_max_V; - if (m_max_speed_override_time > 0.0f) { - override_max_H = MYMAX(fabs(m_max_speed_override.X), fabs(m_max_speed_override.Z)); - override_max_V = fabs(m_max_speed_override.Y); - } else { - override_max_H = override_max_V = 0.0f; - } - - float player_max_walk = 0; // horizontal movement - float player_max_jump = 0; // vertical upwards movement - - if (m_privs.count("fast") != 0) - player_max_walk = m_player->movement_speed_fast; // Fast speed - else - player_max_walk = m_player->movement_speed_walk; // Normal speed - player_max_walk *= m_physics_override_speed; - player_max_walk = MYMAX(player_max_walk, override_max_H); - - player_max_jump = m_player->movement_speed_jump * m_physics_override_jump; - // FIXME: Bouncy nodes cause practically unbound increase in Y speed, - // until this can be verified correctly, tolerate higher jumping speeds - player_max_jump *= 2.0; - player_max_jump = MYMAX(player_max_jump, override_max_V); - - // Don't divide by zero! - if (player_max_walk < 0.0001f) - player_max_walk = 0.0001f; - if (player_max_jump < 0.0001f) - player_max_jump = 0.0001f; - - v3f diff = (m_base_position - m_last_good_position); - float d_vert = diff.Y; - diff.Y = 0; - float d_horiz = diff.getLength(); - float required_time = d_horiz / player_max_walk; - - // FIXME: Checking downwards movement is not easily possible currently, - // the server could calculate speed differences to examine the gravity - if (d_vert > 0) { - // In certain cases (water, ladders) walking speed is applied vertically - float s = MYMAX(player_max_jump, player_max_walk); - required_time = MYMAX(required_time, d_vert / s); - } - - if (m_move_pool.grab(required_time)) { - m_last_good_position = m_base_position; - } else { - const float LAG_POOL_MIN = 5.0; - float lag_pool_max = m_env->getMaxLagEstimate() * 2.0; - lag_pool_max = MYMAX(lag_pool_max, LAG_POOL_MIN); - if (m_time_from_last_teleport > lag_pool_max) { - actionstream << "Player " << m_player->getName() - << " moved too fast; resetting position" - << std::endl; - cheated = true; - } - setBasePosition(m_last_good_position); - } - return cheated; -} - -bool PlayerSAO::getCollisionBox(aabb3f *toset) const -{ - //update collision box - toset->MinEdge = m_prop.collisionbox.MinEdge * BS; - toset->MaxEdge = m_prop.collisionbox.MaxEdge * BS; - - toset->MinEdge += m_base_position; - toset->MaxEdge += m_base_position; - return true; -} - -bool PlayerSAO::getSelectionBox(aabb3f *toset) const -{ - if (!m_prop.is_visible || !m_prop.pointable) { - return false; - } - - toset->MinEdge = m_prop.selectionbox.MinEdge * BS; - toset->MaxEdge = m_prop.selectionbox.MaxEdge * BS; - - return true; -} - -float PlayerSAO::getZoomFOV() const -{ - return m_prop.zoom_fov; -} diff --git a/src/content_sao.h b/src/content_sao.h index 32ab922d6..5387fd108 100644 --- a/src/content_sao.h +++ b/src/content_sao.h @@ -99,302 +99,3 @@ private: std::string m_current_texture_modifier = ""; }; -/* - PlayerSAO needs some internals exposed. -*/ - -class LagPool -{ - float m_pool = 15.0f; - float m_max = 15.0f; -public: - LagPool() = default; - - void setMax(float new_max) - { - m_max = new_max; - if(m_pool > new_max) - m_pool = new_max; - } - - void add(float dtime) - { - m_pool -= dtime; - if(m_pool < 0) - m_pool = 0; - } - - void empty() - { - m_pool = m_max; - } - - bool grab(float dtime) - { - if(dtime <= 0) - return true; - if(m_pool + dtime > m_max) - return false; - m_pool += dtime; - return true; - } -}; - -class RemotePlayer; - -class PlayerSAO : public UnitSAO -{ -public: - PlayerSAO(ServerEnvironment *env_, RemotePlayer *player_, session_t peer_id_, - bool is_singleplayer); - - ActiveObjectType getType() const - { return ACTIVEOBJECT_TYPE_PLAYER; } - ActiveObjectType getSendType() const - { return ACTIVEOBJECT_TYPE_GENERIC; } - std::string getDescription(); - - /* - Active object <-> environment interface - */ - - void addedToEnvironment(u32 dtime_s); - void removingFromEnvironment(); - bool isStaticAllowed() const { return false; } - std::string getClientInitializationData(u16 protocol_version); - void getStaticData(std::string *result) const; - void step(float dtime, bool send_recommended); - void setBasePosition(const v3f &position); - void setPos(const v3f &pos); - void moveTo(v3f pos, bool continuous); - void setPlayerYaw(const float yaw); - // Data should not be sent at player initialization - void setPlayerYawAndSend(const float yaw); - void setLookPitch(const float pitch); - // Data should not be sent at player initialization - void setLookPitchAndSend(const float pitch); - f32 getLookPitch() const { return m_pitch; } - f32 getRadLookPitch() const { return m_pitch * core::DEGTORAD; } - // Deprecated - f32 getRadLookPitchDep() const { return -1.0 * m_pitch * core::DEGTORAD; } - void setFov(const float pitch); - f32 getFov() const { return m_fov; } - void setWantedRange(const s16 range); - s16 getWantedRange() const { return m_wanted_range; } - - /* - Interaction interface - */ - - u16 punch(v3f dir, - const ToolCapabilities *toolcap, - ServerActiveObject *puncher, - float time_from_last_punch); - void rightClick(ServerActiveObject *clicker) {} - void setHP(s32 hp, const PlayerHPChangeReason &reason); - void setHPRaw(u16 hp) { m_hp = hp; } - s16 readDamage(); - u16 getBreath() const { return m_breath; } - void setBreath(const u16 breath, bool send = true); - - /* - Inventory interface - */ - Inventory *getInventory() const; - InventoryLocation getInventoryLocation() const; - void setInventoryModified() {} - std::string getWieldList() const { return "main"; } - u16 getWieldIndex() const; - ItemStack getWieldedItem(ItemStack *selected, ItemStack *hand = nullptr) const; - bool setWieldedItem(const ItemStack &item); - - /* - PlayerSAO-specific - */ - - void disconnected(); - - RemotePlayer *getPlayer() { return m_player; } - session_t getPeerID() const { return m_peer_id; } - - // Cheat prevention - - v3f getLastGoodPosition() const - { - return m_last_good_position; - } - float resetTimeFromLastPunch() - { - float r = m_time_from_last_punch; - m_time_from_last_punch = 0.0; - return r; - } - void noCheatDigStart(const v3s16 &p) - { - m_nocheat_dig_pos = p; - m_nocheat_dig_time = 0; - } - v3s16 getNoCheatDigPos() - { - return m_nocheat_dig_pos; - } - float getNoCheatDigTime() - { - return m_nocheat_dig_time; - } - void noCheatDigEnd() - { - m_nocheat_dig_pos = v3s16(32767, 32767, 32767); - } - LagPool& getDigPool() - { - return m_dig_pool; - } - void setMaxSpeedOverride(const v3f &vel); - // Returns true if cheated - bool checkMovementCheat(); - - // Other - - void updatePrivileges(const std::set &privs, - bool is_singleplayer) - { - m_privs = privs; - m_is_singleplayer = is_singleplayer; - } - - bool getCollisionBox(aabb3f *toset) const; - bool getSelectionBox(aabb3f *toset) const; - bool collideWithObjects() const { return true; } - - void finalize(RemotePlayer *player, const std::set &privs); - - v3f getEyePosition() const { return m_base_position + getEyeOffset(); } - v3f getEyeOffset() const; - float getZoomFOV() const; - - inline Metadata &getMeta() { return m_meta; } - -private: - std::string getPropertyPacket(); - void unlinkPlayerSessionAndSave(); - std::string generateUpdatePhysicsOverrideCommand() const; - - RemotePlayer *m_player = nullptr; - session_t m_peer_id = 0; - - // Cheat prevention - LagPool m_dig_pool; - LagPool m_move_pool; - v3f m_last_good_position; - float m_time_from_last_teleport = 0.0f; - float m_time_from_last_punch = 0.0f; - v3s16 m_nocheat_dig_pos = v3s16(32767, 32767, 32767); - float m_nocheat_dig_time = 0.0f; - float m_max_speed_override_time = 0.0f; - v3f m_max_speed_override = v3f(0.0f, 0.0f, 0.0f); - - // Timers - IntervalLimiter m_breathing_interval; - IntervalLimiter m_drowning_interval; - IntervalLimiter m_node_hurt_interval; - - bool m_position_not_sent = false; - - // Cached privileges for enforcement - std::set m_privs; - bool m_is_singleplayer; - - u16 m_breath = PLAYER_MAX_BREATH_DEFAULT; - f32 m_pitch = 0.0f; - f32 m_fov = 0.0f; - s16 m_wanted_range = 0.0f; - - Metadata m_meta; -public: - float m_physics_override_speed = 1.0f; - float m_physics_override_jump = 1.0f; - float m_physics_override_gravity = 1.0f; - bool m_physics_override_sneak = true; - bool m_physics_override_sneak_glitch = false; - bool m_physics_override_new_move = true; - bool m_physics_override_sent = false; -}; - - -struct PlayerHPChangeReason { - enum Type : u8 { - SET_HP, - PLAYER_PUNCH, - FALL, - NODE_DAMAGE, - DROWNING, - RESPAWN - }; - - Type type = SET_HP; - bool from_mod = false; - int lua_reference = -1; - - // For PLAYER_PUNCH - ServerActiveObject *object = nullptr; - // For NODE_DAMAGE - std::string node; - - inline bool hasLuaReference() const - { - return lua_reference >= 0; - } - - bool setTypeFromString(const std::string &typestr) - { - if (typestr == "set_hp") - type = SET_HP; - else if (typestr == "punch") - type = PLAYER_PUNCH; - else if (typestr == "fall") - type = FALL; - else if (typestr == "node_damage") - type = NODE_DAMAGE; - else if (typestr == "drown") - type = DROWNING; - else if (typestr == "respawn") - type = RESPAWN; - else - return false; - - return true; - } - - std::string getTypeAsString() const - { - switch (type) { - case PlayerHPChangeReason::SET_HP: - return "set_hp"; - case PlayerHPChangeReason::PLAYER_PUNCH: - return "punch"; - case PlayerHPChangeReason::FALL: - return "fall"; - case PlayerHPChangeReason::NODE_DAMAGE: - return "node_damage"; - case PlayerHPChangeReason::DROWNING: - return "drown"; - case PlayerHPChangeReason::RESPAWN: - return "respawn"; - default: - return "?"; - } - } - - PlayerHPChangeReason(Type type): - type(type) - {} - - PlayerHPChangeReason(Type type, ServerActiveObject *object): - type(type), object(object) - {} - - PlayerHPChangeReason(Type type, std::string node): - type(type), node(node) - {} -}; diff --git a/src/database/database-files.cpp b/src/database/database-files.cpp index d09f1c074..d2b0b1543 100644 --- a/src/database/database-files.cpp +++ b/src/database/database-files.cpp @@ -20,11 +20,11 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include #include "database-files.h" -#include "content_sao.h" #include "remoteplayer.h" #include "settings.h" #include "porting.h" #include "filesys.h" +#include "server/player_sao.h" #include "util/string.h" // !!! WARNING !!! diff --git a/src/database/database-postgresql.cpp b/src/database/database-postgresql.cpp index d7c94ff15..77385e240 100644 --- a/src/database/database-postgresql.cpp +++ b/src/database/database-postgresql.cpp @@ -36,8 +36,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "debug.h" #include "exceptions.h" #include "settings.h" -#include "content_sao.h" #include "remoteplayer.h" +#include "server/player_sao.h" Database_PostgreSQL::Database_PostgreSQL(const std::string &connect_string) : m_connect_string(connect_string) diff --git a/src/database/database-sqlite3.cpp b/src/database/database-sqlite3.cpp index 1bacdfe6c..4560743b9 100644 --- a/src/database/database-sqlite3.cpp +++ b/src/database/database-sqlite3.cpp @@ -33,8 +33,8 @@ SQLite format specification: #include "settings.h" #include "porting.h" #include "util/string.h" -#include "content_sao.h" #include "remoteplayer.h" +#include "server/player_sao.h" #include diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index 23bcc867f..b2fdb2a22 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -20,7 +20,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "chatmessage.h" #include "server.h" #include "log.h" -#include "content_sao.h" #include "emerge.h" #include "mapblock.h" #include "modchannels.h" @@ -34,6 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "network/connection.h" #include "network/networkprotocol.h" #include "network/serveropcodes.h" +#include "server/player_sao.h" #include "util/auth.h" #include "util/base64.h" #include "util/pointedthing.h" diff --git a/src/remoteplayer.cpp b/src/remoteplayer.cpp index 1a8fec68c..7a603d53e 100644 --- a/src/remoteplayer.cpp +++ b/src/remoteplayer.cpp @@ -20,13 +20,13 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "remoteplayer.h" #include -#include "content_sao.h" #include "filesys.h" #include "gamedef.h" #include "porting.h" // strlcpy #include "server.h" #include "settings.h" #include "convert_json.h" +#include "server/player_sao.h" /* RemotePlayer diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index 60f12052f..c8cd7539f 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -21,7 +21,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common/c_types.h" #include "nodedef.h" #include "object_properties.h" -#include "content_sao.h" #include "cpp_api/s_node.h" #include "lua_api/l_object.h" #include "lua_api/l_item.h" @@ -29,10 +28,10 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "server.h" #include "log.h" #include "tool.h" -#include "server/serveractiveobject.h" #include "porting.h" #include "mapgen/mg_schematic.h" #include "noise.h" +#include "server/player_sao.h" #include "util/pointedthing.h" #include "debug.h" // For FATAL_ERROR #include diff --git a/src/script/cpp_api/s_base.cpp b/src/script/cpp_api/s_base.cpp index 16c20eeae..150baf77e 100644 --- a/src/script/cpp_api/s_base.cpp +++ b/src/script/cpp_api/s_base.cpp @@ -22,7 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "cpp_api/s_security.h" #include "lua_api/l_object.h" #include "common/c_converter.h" -#include "server/serveractiveobject.h" +#include "server/player_sao.h" #include "filesys.h" #include "content/mods.h" #include "porting.h" diff --git a/src/script/cpp_api/s_player.h b/src/script/cpp_api/s_player.h index cf24ddc73..7ca3d8f30 100644 --- a/src/script/cpp_api/s_player.h +++ b/src/script/cpp_api/s_player.h @@ -28,6 +28,7 @@ struct InventoryLocation; struct ItemStack; struct ToolCapabilities; struct PlayerHPChangeReason; +class ServerActiveObject; class ScriptApiPlayer : virtual public ScriptApiBase { diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index 31e582d3d..438669feb 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -17,6 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include #include "lua_api/l_env.h" #include "lua_api/l_internal.h" #include "lua_api/l_nodemeta.h" @@ -25,7 +26,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "lua_api/l_vmanip.h" #include "common/c_converter.h" #include "common/c_content.h" -#include #include "scripting_server.h" #include "environment.h" #include "mapblock.h" @@ -39,6 +39,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "pathfinder.h" #include "face_position_cache.h" #include "remoteplayer.h" +#include "server/player_sao.h" #ifndef SERVER #include "client/client.h" #endif diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index 1ea144a1c..95c96235e 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -27,12 +27,12 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common/c_content.h" #include "log.h" #include "tool.h" -#include "server/serveractiveobject.h" #include "content_sao.h" #include "remoteplayer.h" #include "server.h" #include "hud.h" #include "scripting_server.h" +#include "server/player_sao.h" /* ObjectRef diff --git a/src/server.cpp b/src/server.cpp index 529466f6b..85d07fbc4 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -47,7 +47,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapgen/mg_biome.h" #include "content_mapnode.h" #include "content_nodemeta.h" -#include "content_sao.h" #include "content/mods.h" #include "modchannels.h" #include "serverlist.h" @@ -64,6 +63,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "chatmessage.h" #include "chat_interface.h" #include "remoteplayer.h" +#include "server/player_sao.h" class ClientNotFoundException : public BaseException { diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt index 9fa5ed9fa..26eaed5ac 100644 --- a/src/server/CMakeLists.txt +++ b/src/server/CMakeLists.txt @@ -1,6 +1,7 @@ set(server_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/activeobjectmgr.cpp ${CMAKE_CURRENT_SOURCE_DIR}/mods.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/player_sao.cpp ${CMAKE_CURRENT_SOURCE_DIR}/serveractiveobject.cpp ${CMAKE_CURRENT_SOURCE_DIR}/unit_sao.cpp PARENT_SCOPE) diff --git a/src/server/player_sao.cpp b/src/server/player_sao.cpp new file mode 100644 index 000000000..58fcea5fe --- /dev/null +++ b/src/server/player_sao.cpp @@ -0,0 +1,695 @@ +/* +Minetest +Copyright (C) 2010-2013 celeron55, Perttu Ahola +Copyright (C) 2013-2020 Minetest core developers & community + +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 "player_sao.h" +#include "nodedef.h" +#include "remoteplayer.h" +#include "scripting_server.h" +#include "server.h" +#include "serverenvironment.h" + +PlayerSAO::PlayerSAO(ServerEnvironment *env_, RemotePlayer *player_, session_t peer_id_, + bool is_singleplayer): + UnitSAO(env_, v3f(0,0,0)), + m_player(player_), + m_peer_id(peer_id_), + m_is_singleplayer(is_singleplayer) +{ + SANITY_CHECK(m_peer_id != PEER_ID_INEXISTENT); + + m_prop.hp_max = PLAYER_MAX_HP_DEFAULT; + m_prop.breath_max = PLAYER_MAX_BREATH_DEFAULT; + m_prop.physical = false; + m_prop.collisionbox = aabb3f(-0.3f, 0.0f, -0.3f, 0.3f, 1.77f, 0.3f); + m_prop.selectionbox = aabb3f(-0.3f, 0.0f, -0.3f, 0.3f, 1.77f, 0.3f); + m_prop.pointable = true; + // Start of default appearance, this should be overwritten by Lua + m_prop.visual = "upright_sprite"; + m_prop.visual_size = v3f(1, 2, 1); + m_prop.textures.clear(); + m_prop.textures.emplace_back("player.png"); + m_prop.textures.emplace_back("player_back.png"); + m_prop.colors.clear(); + m_prop.colors.emplace_back(255, 255, 255, 255); + m_prop.spritediv = v2s16(1,1); + m_prop.eye_height = 1.625f; + // End of default appearance + m_prop.is_visible = true; + m_prop.backface_culling = false; + m_prop.makes_footstep_sound = true; + m_prop.stepheight = PLAYER_DEFAULT_STEPHEIGHT * BS; + m_hp = m_prop.hp_max; + m_breath = m_prop.breath_max; + // Disable zoom in survival mode using a value of 0 + m_prop.zoom_fov = g_settings->getBool("creative_mode") ? 15.0f : 0.0f; + + if (!g_settings->getBool("enable_damage")) + m_armor_groups["immortal"] = 1; +} + +void PlayerSAO::finalize(RemotePlayer *player, const std::set &privs) +{ + assert(player); + m_player = player; + m_privs = privs; +} + +v3f PlayerSAO::getEyeOffset() const +{ + return v3f(0, BS * m_prop.eye_height, 0); +} + +std::string PlayerSAO::getDescription() +{ + return std::string("player ") + m_player->getName(); +} + +// Called after id has been set and has been inserted in environment +void PlayerSAO::addedToEnvironment(u32 dtime_s) +{ + ServerActiveObject::addedToEnvironment(dtime_s); + ServerActiveObject::setBasePosition(m_base_position); + m_player->setPlayerSAO(this); + m_player->setPeerId(m_peer_id); + m_last_good_position = m_base_position; +} + +// Called before removing from environment +void PlayerSAO::removingFromEnvironment() +{ + ServerActiveObject::removingFromEnvironment(); + if (m_player->getPlayerSAO() == this) { + unlinkPlayerSessionAndSave(); + for (u32 attached_particle_spawner : m_attached_particle_spawners) { + m_env->deleteParticleSpawner(attached_particle_spawner, false); + } + } +} + +std::string PlayerSAO::getClientInitializationData(u16 protocol_version) +{ + std::ostringstream os(std::ios::binary); + + // Protocol >= 15 + writeU8(os, 1); // version + os << serializeString(m_player->getName()); // name + writeU8(os, 1); // is_player + writeS16(os, getId()); // id + writeV3F32(os, m_base_position); + writeV3F32(os, m_rotation); + writeU16(os, getHP()); + + std::ostringstream msg_os(std::ios::binary); + msg_os << serializeLongString(getPropertyPacket()); // message 1 + msg_os << serializeLongString(generateUpdateArmorGroupsCommand()); // 2 + msg_os << serializeLongString(generateUpdateAnimationCommand()); // 3 + for (std::unordered_map>::const_iterator + ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) { + msg_os << serializeLongString(generateUpdateBonePositionCommand((*ii).first, + (*ii).second.X, (*ii).second.Y)); // m_bone_position.size + } + msg_os << serializeLongString(generateUpdateAttachmentCommand()); // 4 + msg_os << serializeLongString(generateUpdatePhysicsOverrideCommand()); // 5 + // (AO_CMD_UPDATE_NAMETAG_ATTRIBUTES) : Deprecated, for backwards compatibility only. + msg_os << serializeLongString(generateUpdateNametagAttributesCommand(m_prop.nametag_color)); // 6 + int message_count = 6 + m_bone_position.size(); + for (std::unordered_set::const_iterator ii = m_attachment_child_ids.begin(); + ii != m_attachment_child_ids.end(); ++ii) { + if (ServerActiveObject *obj = m_env->getActiveObject(*ii)) { + message_count++; + msg_os << serializeLongString(obj->generateUpdateInfantCommand(*ii, protocol_version)); + } + } + + writeU8(os, message_count); + os.write(msg_os.str().c_str(), msg_os.str().size()); + + // return result + return os.str(); +} + +void PlayerSAO::getStaticData(std::string * result) const +{ + FATAL_ERROR("Obsolete function"); +} + +void PlayerSAO::step(float dtime, bool send_recommended) +{ + if (!isImmortal() && m_drowning_interval.step(dtime, 2.0f)) { + // Get nose/mouth position, approximate with eye position + v3s16 p = floatToInt(getEyePosition(), BS); + MapNode n = m_env->getMap().getNode(p); + const ContentFeatures &c = m_env->getGameDef()->ndef()->get(n); + // If node generates drown + if (c.drowning > 0 && m_hp > 0) { + if (m_breath > 0) + setBreath(m_breath - 1); + + // No more breath, damage player + if (m_breath == 0) { + PlayerHPChangeReason reason(PlayerHPChangeReason::DROWNING); + setHP(m_hp - c.drowning, reason); + m_env->getGameDef()->SendPlayerHPOrDie(this, reason); + } + } + } + + if (m_breathing_interval.step(dtime, 0.5f) && !isImmortal()) { + // Get nose/mouth position, approximate with eye position + v3s16 p = floatToInt(getEyePosition(), BS); + MapNode n = m_env->getMap().getNode(p); + const ContentFeatures &c = m_env->getGameDef()->ndef()->get(n); + // If player is alive & not drowning & not in ignore & not immortal, breathe + if (m_breath < m_prop.breath_max && c.drowning == 0 && + n.getContent() != CONTENT_IGNORE && m_hp > 0) + setBreath(m_breath + 1); + } + + if (!isImmortal() && m_node_hurt_interval.step(dtime, 1.0f)) { + u32 damage_per_second = 0; + std::string nodename; + // Lowest and highest damage points are 0.1 within collisionbox + float dam_top = m_prop.collisionbox.MaxEdge.Y - 0.1f; + + // Sequence of damage points, starting 0.1 above feet and progressing + // upwards in 1 node intervals, stopping below top damage point. + for (float dam_height = 0.1f; dam_height < dam_top; dam_height++) { + v3s16 p = floatToInt(m_base_position + + v3f(0.0f, dam_height * BS, 0.0f), BS); + MapNode n = m_env->getMap().getNode(p); + const ContentFeatures &c = m_env->getGameDef()->ndef()->get(n); + if (c.damage_per_second > damage_per_second) { + damage_per_second = c.damage_per_second; + nodename = c.name; + } + } + + // Top damage point + v3s16 ptop = floatToInt(m_base_position + + v3f(0.0f, dam_top * BS, 0.0f), BS); + MapNode ntop = m_env->getMap().getNode(ptop); + const ContentFeatures &c = m_env->getGameDef()->ndef()->get(ntop); + if (c.damage_per_second > damage_per_second) { + damage_per_second = c.damage_per_second; + nodename = c.name; + } + + if (damage_per_second != 0 && m_hp > 0) { + s32 newhp = (s32)m_hp - (s32)damage_per_second; + PlayerHPChangeReason reason(PlayerHPChangeReason::NODE_DAMAGE, nodename); + setHP(newhp, reason); + m_env->getGameDef()->SendPlayerHPOrDie(this, reason); + } + } + + if (!m_properties_sent) { + m_properties_sent = true; + std::string str = getPropertyPacket(); + // create message and add to list + ActiveObjectMessage aom(getId(), true, str); + m_messages_out.push(aom); + m_env->getScriptIface()->player_event(this, "properties_changed"); + } + + // If attached, check that our parent is still there. If it isn't, detach. + if (m_attachment_parent_id && !isAttached()) { + m_attachment_parent_id = 0; + m_attachment_bone = ""; + m_attachment_position = v3f(0.0f, 0.0f, 0.0f); + m_attachment_rotation = v3f(0.0f, 0.0f, 0.0f); + setBasePosition(m_last_good_position); + m_env->getGameDef()->SendMovePlayer(m_peer_id); + } + + //dstream<<"PlayerSAO::step: dtime: "<getMaxLagEstimate() * 2.0f; + if(lag_pool_max < LAG_POOL_MIN) + lag_pool_max = LAG_POOL_MIN; + m_dig_pool.setMax(lag_pool_max); + m_move_pool.setMax(lag_pool_max); + + // Increment cheat prevention timers + m_dig_pool.add(dtime); + m_move_pool.add(dtime); + m_time_from_last_teleport += dtime; + m_time_from_last_punch += dtime; + m_nocheat_dig_time += dtime; + m_max_speed_override_time = MYMAX(m_max_speed_override_time - dtime, 0.0f); + + // Each frame, parent position is copied if the object is attached, + // otherwise it's calculated normally. + // If the object gets detached this comes into effect automatically from + // the last known origin. + if (isAttached()) { + v3f pos = m_env->getActiveObject(m_attachment_parent_id)->getBasePosition(); + m_last_good_position = pos; + setBasePosition(pos); + } + + if (!send_recommended) + return; + + if (m_position_not_sent) { + m_position_not_sent = false; + float update_interval = m_env->getSendRecommendedInterval(); + v3f pos; + // When attached, the position is only sent to clients where the + // parent isn't known + if (isAttached()) + pos = m_last_good_position; + else + pos = m_base_position; + + std::string str = generateUpdatePositionCommand( + pos, + v3f(0.0f, 0.0f, 0.0f), + v3f(0.0f, 0.0f, 0.0f), + m_rotation, + true, + false, + update_interval + ); + // create message and add to list + m_messages_out.emplace(getId(), false, str); + } + + if (!m_armor_groups_sent) { + m_armor_groups_sent = true; + // create message and add to list + m_messages_out.emplace(getId(), true, generateUpdateArmorGroupsCommand()); + } + + if (!m_physics_override_sent) { + m_physics_override_sent = true; + // create message and add to list + m_messages_out.emplace(getId(), true, generateUpdatePhysicsOverrideCommand()); + } + + if (!m_animation_sent) { + m_animation_sent = true; + // create message and add to list + m_messages_out.emplace(getId(), true, generateUpdateAnimationCommand()); + } + + if (!m_bone_position_sent) { + m_bone_position_sent = true; + for (std::unordered_map>::const_iterator + ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) { + std::string str = generateUpdateBonePositionCommand((*ii).first, + (*ii).second.X, (*ii).second.Y); + // create message and add to list + m_messages_out.emplace(getId(), true, str); + } + } + + if (!m_attachment_sent) { + m_attachment_sent = true; + std::string str = generateUpdateAttachmentCommand(); + // create message and add to list + ActiveObjectMessage aom(getId(), true, str); + m_messages_out.push(aom); + } +} + +std::string PlayerSAO::generateUpdatePhysicsOverrideCommand() const +{ + std::ostringstream os(std::ios::binary); + // command + writeU8(os, AO_CMD_SET_PHYSICS_OVERRIDE); + // parameters + writeF32(os, m_physics_override_speed); + writeF32(os, m_physics_override_jump); + writeF32(os, m_physics_override_gravity); + // these are sent inverted so we get true when the server sends nothing + writeU8(os, !m_physics_override_sneak); + writeU8(os, !m_physics_override_sneak_glitch); + writeU8(os, !m_physics_override_new_move); + return os.str(); +} + +void PlayerSAO::setBasePosition(const v3f &position) +{ + if (m_player && position != m_base_position) + m_player->setDirty(true); + + // This needs to be ran for attachments too + ServerActiveObject::setBasePosition(position); + + // Updating is not wanted/required for player migration + if (m_env) { + m_position_not_sent = true; + } +} + +void PlayerSAO::setPos(const v3f &pos) +{ + if(isAttached()) + return; + + // Send mapblock of target location + v3s16 blockpos = v3s16(pos.X / MAP_BLOCKSIZE, pos.Y / MAP_BLOCKSIZE, pos.Z / MAP_BLOCKSIZE); + m_env->getGameDef()->SendBlock(m_peer_id, blockpos); + + setBasePosition(pos); + // Movement caused by this command is always valid + m_last_good_position = pos; + m_move_pool.empty(); + m_time_from_last_teleport = 0.0; + m_env->getGameDef()->SendMovePlayer(m_peer_id); +} + +void PlayerSAO::moveTo(v3f pos, bool continuous) +{ + if(isAttached()) + return; + + setBasePosition(pos); + // Movement caused by this command is always valid + m_last_good_position = pos; + m_move_pool.empty(); + m_time_from_last_teleport = 0.0; + m_env->getGameDef()->SendMovePlayer(m_peer_id); +} + +void PlayerSAO::setPlayerYaw(const float yaw) +{ + v3f rotation(0, yaw, 0); + if (m_player && yaw != m_rotation.Y) + m_player->setDirty(true); + + // Set player model yaw, not look view + UnitSAO::setRotation(rotation); +} + +void PlayerSAO::setFov(const float fov) +{ + if (m_player && fov != m_fov) + m_player->setDirty(true); + + m_fov = fov; +} + +void PlayerSAO::setWantedRange(const s16 range) +{ + if (m_player && range != m_wanted_range) + m_player->setDirty(true); + + m_wanted_range = range; +} + +void PlayerSAO::setPlayerYawAndSend(const float yaw) +{ + setPlayerYaw(yaw); + m_env->getGameDef()->SendMovePlayer(m_peer_id); +} + +void PlayerSAO::setLookPitch(const float pitch) +{ + if (m_player && pitch != m_pitch) + m_player->setDirty(true); + + m_pitch = pitch; +} + +void PlayerSAO::setLookPitchAndSend(const float pitch) +{ + setLookPitch(pitch); + m_env->getGameDef()->SendMovePlayer(m_peer_id); +} + +u16 PlayerSAO::punch(v3f dir, + const ToolCapabilities *toolcap, + ServerActiveObject *puncher, + float time_from_last_punch) +{ + if (!toolcap) + return 0; + + FATAL_ERROR_IF(!puncher, "Punch action called without SAO"); + + // No effect if PvP disabled or if immortal + if (isImmortal() || !g_settings->getBool("enable_pvp")) { + if (puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) { + // create message and add to list + sendPunchCommand(); + return 0; + } + } + + s32 old_hp = getHP(); + HitParams hitparams = getHitParams(m_armor_groups, toolcap, + time_from_last_punch); + + PlayerSAO *playersao = m_player->getPlayerSAO(); + + bool damage_handled = m_env->getScriptIface()->on_punchplayer(playersao, + puncher, time_from_last_punch, toolcap, dir, + hitparams.hp); + + if (!damage_handled) { + setHP((s32)getHP() - (s32)hitparams.hp, + PlayerHPChangeReason(PlayerHPChangeReason::PLAYER_PUNCH, puncher)); + } else { // override client prediction + if (puncher->getType() == ACTIVEOBJECT_TYPE_PLAYER) { + // create message and add to list + sendPunchCommand(); + } + } + + actionstream << puncher->getDescription() << " (id=" << puncher->getId() << + ", hp=" << puncher->getHP() << ") punched " << + getDescription() << " (id=" << m_id << ", hp=" << m_hp << + "), damage=" << (old_hp - (s32)getHP()) << + (damage_handled ? " (handled by Lua)" : "") << std::endl; + + return hitparams.wear; +} + +void PlayerSAO::setHP(s32 hp, const PlayerHPChangeReason &reason) +{ + s32 oldhp = m_hp; + + hp = rangelim(hp, 0, m_prop.hp_max); + + if (oldhp != hp) { + s32 hp_change = m_env->getScriptIface()->on_player_hpchange(this, hp - oldhp, reason); + if (hp_change == 0) + return; + + hp = rangelim(oldhp + hp_change, 0, m_prop.hp_max); + } + + if (hp < oldhp && isImmortal()) + return; + + m_hp = hp; + + // Update properties on death + if ((hp == 0) != (oldhp == 0)) + m_properties_sent = false; +} + +void PlayerSAO::setBreath(const u16 breath, bool send) +{ + if (m_player && breath != m_breath) + m_player->setDirty(true); + + m_breath = rangelim(breath, 0, m_prop.breath_max); + + if (send) + m_env->getGameDef()->SendPlayerBreath(this); +} + +Inventory *PlayerSAO::getInventory() const +{ + return m_player ? &m_player->inventory : nullptr; +} + +InventoryLocation PlayerSAO::getInventoryLocation() const +{ + InventoryLocation loc; + loc.setPlayer(m_player->getName()); + return loc; +} + +u16 PlayerSAO::getWieldIndex() const +{ + return m_player->getWieldIndex(); +} + +ItemStack PlayerSAO::getWieldedItem(ItemStack *selected, ItemStack *hand) const +{ + return m_player->getWieldedItem(selected, hand); +} + +bool PlayerSAO::setWieldedItem(const ItemStack &item) +{ + InventoryList *mlist = m_player->inventory.getList(getWieldList()); + if (mlist) { + mlist->changeItem(m_player->getWieldIndex(), item); + return true; + } + return false; +} + +void PlayerSAO::disconnected() +{ + m_peer_id = PEER_ID_INEXISTENT; + m_pending_removal = true; +} + +void PlayerSAO::unlinkPlayerSessionAndSave() +{ + assert(m_player->getPlayerSAO() == this); + m_player->setPeerId(PEER_ID_INEXISTENT); + m_env->savePlayer(m_player); + m_player->setPlayerSAO(NULL); + m_env->removePlayer(m_player); +} + +std::string PlayerSAO::getPropertyPacket() +{ + m_prop.is_visible = (true); + return generateSetPropertiesCommand(m_prop); +} + +void PlayerSAO::setMaxSpeedOverride(const v3f &vel) +{ + if (m_max_speed_override_time == 0.0f) + m_max_speed_override = vel; + else + m_max_speed_override += vel; + if (m_player) { + float accel = MYMIN(m_player->movement_acceleration_default, + m_player->movement_acceleration_air); + m_max_speed_override_time = m_max_speed_override.getLength() / accel / BS; + } +} + +bool PlayerSAO::checkMovementCheat() +{ + if (isAttached() || m_is_singleplayer || + g_settings->getBool("disable_anticheat")) { + m_last_good_position = m_base_position; + return false; + } + + bool cheated = false; + /* + Check player movements + + NOTE: Actually the server should handle player physics like the + client does and compare player's position to what is calculated + on our side. This is required when eg. players fly due to an + explosion. Altough a node-based alternative might be possible + too, and much more lightweight. + */ + + float override_max_H, override_max_V; + if (m_max_speed_override_time > 0.0f) { + override_max_H = MYMAX(fabs(m_max_speed_override.X), fabs(m_max_speed_override.Z)); + override_max_V = fabs(m_max_speed_override.Y); + } else { + override_max_H = override_max_V = 0.0f; + } + + float player_max_walk = 0; // horizontal movement + float player_max_jump = 0; // vertical upwards movement + + if (m_privs.count("fast") != 0) + player_max_walk = m_player->movement_speed_fast; // Fast speed + else + player_max_walk = m_player->movement_speed_walk; // Normal speed + player_max_walk *= m_physics_override_speed; + player_max_walk = MYMAX(player_max_walk, override_max_H); + + player_max_jump = m_player->movement_speed_jump * m_physics_override_jump; + // FIXME: Bouncy nodes cause practically unbound increase in Y speed, + // until this can be verified correctly, tolerate higher jumping speeds + player_max_jump *= 2.0; + player_max_jump = MYMAX(player_max_jump, override_max_V); + + // Don't divide by zero! + if (player_max_walk < 0.0001f) + player_max_walk = 0.0001f; + if (player_max_jump < 0.0001f) + player_max_jump = 0.0001f; + + v3f diff = (m_base_position - m_last_good_position); + float d_vert = diff.Y; + diff.Y = 0; + float d_horiz = diff.getLength(); + float required_time = d_horiz / player_max_walk; + + // FIXME: Checking downwards movement is not easily possible currently, + // the server could calculate speed differences to examine the gravity + if (d_vert > 0) { + // In certain cases (water, ladders) walking speed is applied vertically + float s = MYMAX(player_max_jump, player_max_walk); + required_time = MYMAX(required_time, d_vert / s); + } + + if (m_move_pool.grab(required_time)) { + m_last_good_position = m_base_position; + } else { + const float LAG_POOL_MIN = 5.0; + float lag_pool_max = m_env->getMaxLagEstimate() * 2.0; + lag_pool_max = MYMAX(lag_pool_max, LAG_POOL_MIN); + if (m_time_from_last_teleport > lag_pool_max) { + actionstream << "Player " << m_player->getName() + << " moved too fast; resetting position" + << std::endl; + cheated = true; + } + setBasePosition(m_last_good_position); + } + return cheated; +} + +bool PlayerSAO::getCollisionBox(aabb3f *toset) const +{ + //update collision box + toset->MinEdge = m_prop.collisionbox.MinEdge * BS; + toset->MaxEdge = m_prop.collisionbox.MaxEdge * BS; + + toset->MinEdge += m_base_position; + toset->MaxEdge += m_base_position; + return true; +} + +bool PlayerSAO::getSelectionBox(aabb3f *toset) const +{ + if (!m_prop.is_visible || !m_prop.pointable) { + return false; + } + + toset->MinEdge = m_prop.selectionbox.MinEdge * BS; + toset->MaxEdge = m_prop.selectionbox.MaxEdge * BS; + + return true; +} + +float PlayerSAO::getZoomFOV() const +{ + return m_prop.zoom_fov; +} diff --git a/src/server/player_sao.h b/src/server/player_sao.h new file mode 100644 index 000000000..ce1cb1677 --- /dev/null +++ b/src/server/player_sao.h @@ -0,0 +1,325 @@ + +/* +Minetest +Copyright (C) 2010-2013 celeron55, Perttu Ahola +Copyright (C) 2013-2020 Minetest core developers & community + +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 "constants.h" +#include "network/networkprotocol.h" +#include "unit_sao.h" +#include "util/numeric.h" + +/* + PlayerSAO needs some internals exposed. +*/ + +class LagPool +{ + float m_pool = 15.0f; + float m_max = 15.0f; +public: + LagPool() = default; + + void setMax(float new_max) + { + m_max = new_max; + if(m_pool > new_max) + m_pool = new_max; + } + + void add(float dtime) + { + m_pool -= dtime; + if(m_pool < 0) + m_pool = 0; + } + + void empty() + { + m_pool = m_max; + } + + bool grab(float dtime) + { + if(dtime <= 0) + return true; + if(m_pool + dtime > m_max) + return false; + m_pool += dtime; + return true; + } +}; + +class RemotePlayer; + +class PlayerSAO : public UnitSAO +{ +public: + PlayerSAO(ServerEnvironment *env_, RemotePlayer *player_, session_t peer_id_, + bool is_singleplayer); + + ActiveObjectType getType() const + { return ACTIVEOBJECT_TYPE_PLAYER; } + ActiveObjectType getSendType() const + { return ACTIVEOBJECT_TYPE_GENERIC; } + std::string getDescription(); + + /* + Active object <-> environment interface + */ + + void addedToEnvironment(u32 dtime_s); + void removingFromEnvironment(); + bool isStaticAllowed() const { return false; } + std::string getClientInitializationData(u16 protocol_version); + void getStaticData(std::string *result) const; + void step(float dtime, bool send_recommended); + void setBasePosition(const v3f &position); + void setPos(const v3f &pos); + void moveTo(v3f pos, bool continuous); + void setPlayerYaw(const float yaw); + // Data should not be sent at player initialization + void setPlayerYawAndSend(const float yaw); + void setLookPitch(const float pitch); + // Data should not be sent at player initialization + void setLookPitchAndSend(const float pitch); + f32 getLookPitch() const { return m_pitch; } + f32 getRadLookPitch() const { return m_pitch * core::DEGTORAD; } + // Deprecated + f32 getRadLookPitchDep() const { return -1.0 * m_pitch * core::DEGTORAD; } + void setFov(const float pitch); + f32 getFov() const { return m_fov; } + void setWantedRange(const s16 range); + s16 getWantedRange() const { return m_wanted_range; } + + /* + Interaction interface + */ + + u16 punch(v3f dir, + const ToolCapabilities *toolcap, + ServerActiveObject *puncher, + float time_from_last_punch); + void rightClick(ServerActiveObject *clicker) {} + void setHP(s32 hp, const PlayerHPChangeReason &reason); + void setHPRaw(u16 hp) { m_hp = hp; } + s16 readDamage(); + u16 getBreath() const { return m_breath; } + void setBreath(const u16 breath, bool send = true); + + /* + Inventory interface + */ + Inventory *getInventory() const; + InventoryLocation getInventoryLocation() const; + void setInventoryModified() {} + std::string getWieldList() const { return "main"; } + u16 getWieldIndex() const; + ItemStack getWieldedItem(ItemStack *selected, ItemStack *hand = nullptr) const; + bool setWieldedItem(const ItemStack &item); + + /* + PlayerSAO-specific + */ + + void disconnected(); + + RemotePlayer *getPlayer() { return m_player; } + session_t getPeerID() const { return m_peer_id; } + + // Cheat prevention + + v3f getLastGoodPosition() const + { + return m_last_good_position; + } + float resetTimeFromLastPunch() + { + float r = m_time_from_last_punch; + m_time_from_last_punch = 0.0; + return r; + } + void noCheatDigStart(const v3s16 &p) + { + m_nocheat_dig_pos = p; + m_nocheat_dig_time = 0; + } + v3s16 getNoCheatDigPos() + { + return m_nocheat_dig_pos; + } + float getNoCheatDigTime() + { + return m_nocheat_dig_time; + } + void noCheatDigEnd() + { + m_nocheat_dig_pos = v3s16(32767, 32767, 32767); + } + LagPool& getDigPool() + { + return m_dig_pool; + } + void setMaxSpeedOverride(const v3f &vel); + // Returns true if cheated + bool checkMovementCheat(); + + // Other + + void updatePrivileges(const std::set &privs, + bool is_singleplayer) + { + m_privs = privs; + m_is_singleplayer = is_singleplayer; + } + + bool getCollisionBox(aabb3f *toset) const; + bool getSelectionBox(aabb3f *toset) const; + bool collideWithObjects() const { return true; } + + void finalize(RemotePlayer *player, const std::set &privs); + + v3f getEyePosition() const { return m_base_position + getEyeOffset(); } + v3f getEyeOffset() const; + float getZoomFOV() const; + + inline Metadata &getMeta() { return m_meta; } + +private: + std::string getPropertyPacket(); + void unlinkPlayerSessionAndSave(); + std::string generateUpdatePhysicsOverrideCommand() const; + + RemotePlayer *m_player = nullptr; + session_t m_peer_id = 0; + + // Cheat prevention + LagPool m_dig_pool; + LagPool m_move_pool; + v3f m_last_good_position; + float m_time_from_last_teleport = 0.0f; + float m_time_from_last_punch = 0.0f; + v3s16 m_nocheat_dig_pos = v3s16(32767, 32767, 32767); + float m_nocheat_dig_time = 0.0f; + float m_max_speed_override_time = 0.0f; + v3f m_max_speed_override = v3f(0.0f, 0.0f, 0.0f); + + // Timers + IntervalLimiter m_breathing_interval; + IntervalLimiter m_drowning_interval; + IntervalLimiter m_node_hurt_interval; + + bool m_position_not_sent = false; + + // Cached privileges for enforcement + std::set m_privs; + bool m_is_singleplayer; + + u16 m_breath = PLAYER_MAX_BREATH_DEFAULT; + f32 m_pitch = 0.0f; + f32 m_fov = 0.0f; + s16 m_wanted_range = 0.0f; + + Metadata m_meta; +public: + float m_physics_override_speed = 1.0f; + float m_physics_override_jump = 1.0f; + float m_physics_override_gravity = 1.0f; + bool m_physics_override_sneak = true; + bool m_physics_override_sneak_glitch = false; + bool m_physics_override_new_move = true; + bool m_physics_override_sent = false; +}; + + +struct PlayerHPChangeReason { + enum Type : u8 { + SET_HP, + PLAYER_PUNCH, + FALL, + NODE_DAMAGE, + DROWNING, + RESPAWN + }; + + Type type = SET_HP; + bool from_mod = false; + int lua_reference = -1; + + // For PLAYER_PUNCH + ServerActiveObject *object = nullptr; + // For NODE_DAMAGE + std::string node; + + inline bool hasLuaReference() const + { + return lua_reference >= 0; + } + + bool setTypeFromString(const std::string &typestr) + { + if (typestr == "set_hp") + type = SET_HP; + else if (typestr == "punch") + type = PLAYER_PUNCH; + else if (typestr == "fall") + type = FALL; + else if (typestr == "node_damage") + type = NODE_DAMAGE; + else if (typestr == "drown") + type = DROWNING; + else if (typestr == "respawn") + type = RESPAWN; + else + return false; + + return true; + } + + std::string getTypeAsString() const + { + switch (type) { + case PlayerHPChangeReason::SET_HP: + return "set_hp"; + case PlayerHPChangeReason::PLAYER_PUNCH: + return "punch"; + case PlayerHPChangeReason::FALL: + return "fall"; + case PlayerHPChangeReason::NODE_DAMAGE: + return "node_damage"; + case PlayerHPChangeReason::DROWNING: + return "drown"; + case PlayerHPChangeReason::RESPAWN: + return "respawn"; + default: + return "?"; + } + } + + PlayerHPChangeReason(Type type): + type(type) + {} + + PlayerHPChangeReason(Type type, ServerActiveObject *object): + type(type), object(object) + {} + + PlayerHPChangeReason(Type type, std::string node): + type(type), node(node) + {} +}; diff --git a/src/server/unit_sao.cpp b/src/server/unit_sao.cpp index b30b7a76b..74b0508b8 100644 --- a/src/server/unit_sao.cpp +++ b/src/server/unit_sao.cpp @@ -22,10 +22,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "scripting_server.h" #include "serverenvironment.h" -/* - UnitSAO - */ - UnitSAO::UnitSAO(ServerEnvironment *env, v3f pos) : ServerActiveObject(env, pos) { // Initialize something to armor groups diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 0ccbd772b..c2ab5c07d 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -17,8 +17,8 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include #include "serverenvironment.h" -#include "content_sao.h" #include "settings.h" #include "log.h" #include "mapblock.h" @@ -44,7 +44,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #if USE_POSTGRESQL #include "database/database-postgresql.h" #endif -#include +#include "server/player_sao.h" #define LBM_NAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyz0123456789_:" From 5146086a64d5eeb480948d612a008a2ec81455d4 Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Sat, 11 Apr 2020 11:22:15 +0200 Subject: [PATCH 085/424] Drop content_sao.{cpp,h} Move LuaEntitySAO to a new dedicated file Drop TestSAO (useless object) Drop the old static startup initialized SAO factory, which was pretty useless. This factory was using a std::map for 2 elements, now just use a simple condition owned by ServerEnvironment, which will be lightweight, that will also drop a one time useful test on each LuaEntitySAO creation. This should reduce server load on massive SAO creation --- build/android/jni/Android.mk | 4 +- src/CMakeLists.txt | 1 - src/clientiface.cpp | 2 +- src/mapgen/mapgen.cpp | 1 - src/mapgen/mapgen_carpathian.cpp | 1 - src/mapgen/mapgen_flat.cpp | 1 - src/mapgen/mapgen_fractal.cpp | 1 - src/mapgen/mapgen_v5.cpp | 1 - src/mapgen/mapgen_v6.cpp | 1 - src/mapgen/mapgen_v7.cpp | 1 - src/script/cpp_api/s_base.cpp | 1 - src/script/lua_api/l_env.cpp | 2 +- src/script/lua_api/l_item.cpp | 1 - src/script/lua_api/l_object.cpp | 2 +- src/server/CMakeLists.txt | 1 + .../luaentity_sao.cpp} | 194 +++++------------- src/{content_sao.h => server/luaentity_sao.h} | 52 ++--- src/server/player_sao.h | 83 +++----- src/server/serveractiveobject.cpp | 33 --- src/server/serveractiveobject.h | 10 - src/serverenvironment.cpp | 19 +- src/serverenvironment.h | 2 + src/staticobject.cpp | 2 +- src/unittest/test_player.cpp | 1 - util/travis/clang-format-whitelist.txt | 4 +- 25 files changed, 126 insertions(+), 295 deletions(-) rename src/{content_sao.cpp => server/luaentity_sao.cpp} (86%) rename src/{content_sao.h => server/luaentity_sao.h} (72%) diff --git a/build/android/jni/Android.mk b/build/android/jni/Android.mk index 32a16c174..fdbfba9bc 100644 --- a/build/android/jni/Android.mk +++ b/build/android/jni/Android.mk @@ -161,7 +161,6 @@ LOCAL_SRC_FILES := \ jni/src/content/mods.cpp \ jni/src/content_nodemeta.cpp \ jni/src/content/packages.cpp \ - jni/src/content_sao.cpp \ jni/src/content/subgames.cpp \ jni/src/convert_json.cpp \ jni/src/craftdef.cpp \ @@ -258,8 +257,11 @@ LOCAL_SRC_FILES := \ jni/src/server.cpp \ jni/src/serverenvironment.cpp \ jni/src/serverlist.cpp \ + jni/src/server/luaentity_sao.cpp \ jni/src/server/mods.cpp \ + jni/src/server/player_sao.cpp \ jni/src/server/serveractiveobject.cpp \ + jni/src/server/unit_sao.cpp \ jni/src/settings.cpp \ jni/src/staticobject.cpp \ jni/src/tileanimation.cpp \ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index faa117d41..0ebbd628c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -375,7 +375,6 @@ set(common_SRCS collision.cpp content_mapnode.cpp content_nodemeta.cpp - content_sao.cpp convert_json.cpp craftdef.cpp debug.cpp diff --git a/src/clientiface.cpp b/src/clientiface.cpp index 17237f73e..4f954342a 100644 --- a/src/clientiface.cpp +++ b/src/clientiface.cpp @@ -19,7 +19,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include "clientiface.h" -#include "content_sao.h" #include "network/connection.h" #include "network/serveropcodes.h" #include "remoteplayer.h" @@ -28,6 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "serverenvironment.h" #include "map.h" #include "emerge.h" +#include "server/luaentity_sao.h" #include "server/player_sao.h" #include "log.h" #include "util/srp.h" diff --git a/src/mapgen/mapgen.cpp b/src/mapgen/mapgen.cpp index 6c426ba41..0094608ec 100644 --- a/src/mapgen/mapgen.cpp +++ b/src/mapgen/mapgen.cpp @@ -28,7 +28,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapblock.h" #include "mapnode.h" #include "map.h" -#include "content_sao.h" #include "nodedef.h" #include "emerge.h" #include "voxelalgorithms.h" diff --git a/src/mapgen/mapgen_carpathian.cpp b/src/mapgen/mapgen_carpathian.cpp index 0dc1d33be..bd7ae5e7c 100644 --- a/src/mapgen/mapgen_carpathian.cpp +++ b/src/mapgen/mapgen_carpathian.cpp @@ -26,7 +26,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapblock.h" #include "mapnode.h" #include "map.h" -#include "content_sao.h" #include "nodedef.h" #include "voxelalgorithms.h" //#include "profiler.h" // For TimeTaker diff --git a/src/mapgen/mapgen_flat.cpp b/src/mapgen/mapgen_flat.cpp index 879435948..272964b51 100644 --- a/src/mapgen/mapgen_flat.cpp +++ b/src/mapgen/mapgen_flat.cpp @@ -25,7 +25,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapblock.h" #include "mapnode.h" #include "map.h" -#include "content_sao.h" #include "nodedef.h" #include "voxelalgorithms.h" //#include "profiler.h" // For TimeTaker diff --git a/src/mapgen/mapgen_fractal.cpp b/src/mapgen/mapgen_fractal.cpp index 96febb4f4..97f77d947 100644 --- a/src/mapgen/mapgen_fractal.cpp +++ b/src/mapgen/mapgen_fractal.cpp @@ -26,7 +26,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapblock.h" #include "mapnode.h" #include "map.h" -#include "content_sao.h" #include "nodedef.h" #include "voxelalgorithms.h" //#include "profiler.h" // For TimeTaker diff --git a/src/mapgen/mapgen_v5.cpp b/src/mapgen/mapgen_v5.cpp index 447fe8c50..3bd7615c4 100644 --- a/src/mapgen/mapgen_v5.cpp +++ b/src/mapgen/mapgen_v5.cpp @@ -25,7 +25,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapblock.h" #include "mapnode.h" #include "map.h" -#include "content_sao.h" #include "nodedef.h" #include "voxelalgorithms.h" //#include "profiler.h" // For TimeTaker diff --git a/src/mapgen/mapgen_v6.cpp b/src/mapgen/mapgen_v6.cpp index f473f725d..da9ae1428 100644 --- a/src/mapgen/mapgen_v6.cpp +++ b/src/mapgen/mapgen_v6.cpp @@ -27,7 +27,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapblock.h" #include "mapnode.h" #include "map.h" -#include "content_sao.h" #include "nodedef.h" #include "voxelalgorithms.h" //#include "profiler.h" // For TimeTaker diff --git a/src/mapgen/mapgen_v7.cpp b/src/mapgen/mapgen_v7.cpp index 325c4957a..82556cc4f 100644 --- a/src/mapgen/mapgen_v7.cpp +++ b/src/mapgen/mapgen_v7.cpp @@ -26,7 +26,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapblock.h" #include "mapnode.h" #include "map.h" -#include "content_sao.h" #include "nodedef.h" #include "voxelalgorithms.h" //#include "profiler.h" // For TimeTaker diff --git a/src/script/cpp_api/s_base.cpp b/src/script/cpp_api/s_base.cpp index 150baf77e..df07206d7 100644 --- a/src/script/cpp_api/s_base.cpp +++ b/src/script/cpp_api/s_base.cpp @@ -43,7 +43,6 @@ extern "C" { #include #include #include "script/common/c_content.h" -#include "content_sao.h" #include diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index 438669feb..40e50e64a 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -33,12 +33,12 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "nodedef.h" #include "daynightratio.h" #include "util/pointedthing.h" -#include "content_sao.h" #include "mapgen/treegen.h" #include "emerge.h" #include "pathfinder.h" #include "face_position_cache.h" #include "remoteplayer.h" +#include "server/luaentity_sao.h" #include "server/player_sao.h" #ifndef SERVER #include "client/client.h" diff --git a/src/script/lua_api/l_item.cpp b/src/script/lua_api/l_item.cpp index ff77cba32..9f12d3ac7 100644 --- a/src/script/lua_api/l_item.cpp +++ b/src/script/lua_api/l_item.cpp @@ -25,7 +25,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "itemdef.h" #include "nodedef.h" #include "server.h" -#include "content_sao.h" #include "inventory.h" #include "log.h" diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index 95c96235e..fa34260bf 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -27,11 +27,11 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common/c_content.h" #include "log.h" #include "tool.h" -#include "content_sao.h" #include "remoteplayer.h" #include "server.h" #include "hud.h" #include "scripting_server.h" +#include "server/luaentity_sao.h" #include "server/player_sao.h" /* diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt index 26eaed5ac..4d94504f6 100644 --- a/src/server/CMakeLists.txt +++ b/src/server/CMakeLists.txt @@ -1,5 +1,6 @@ set(server_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/activeobjectmgr.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/luaentity_sao.cpp ${CMAKE_CURRENT_SOURCE_DIR}/mods.cpp ${CMAKE_CURRENT_SOURCE_DIR}/player_sao.cpp ${CMAKE_CURRENT_SOURCE_DIR}/serveractiveobject.cpp diff --git a/src/content_sao.cpp b/src/server/luaentity_sao.cpp similarity index 86% rename from src/content_sao.cpp rename to src/server/luaentity_sao.cpp index 7ec17aa82..125939241 100644 --- a/src/content_sao.cpp +++ b/src/server/luaentity_sao.cpp @@ -1,6 +1,7 @@ /* Minetest Copyright (C) 2010-2013 celeron55, Perttu Ahola +Copyright (C) 2013-2020 Minetest core developers & community 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 @@ -17,151 +18,16 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include "content_sao.h" -#include "util/serialize.h" +#include "luaentity_sao.h" #include "collision.h" -#include "environment.h" -#include "tool.h" // For ToolCapabilities -#include "gamedef.h" -#include "nodedef.h" -#include "remoteplayer.h" -#include "server.h" +#include "constants.h" +#include "player_sao.h" #include "scripting_server.h" -#include "server/player_sao.h" -#include "settings.h" -#include -#include +#include "server.h" +#include "serverenvironment.h" -std::map ServerActiveObject::m_types; - -/* - TestSAO -*/ - -class TestSAO : public ServerActiveObject -{ -public: - TestSAO(ServerEnvironment *env, v3f pos): - ServerActiveObject(env, pos), - m_timer1(0), - m_age(0) - { - ServerActiveObject::registerType(getType(), create); - } - ActiveObjectType getType() const - { return ACTIVEOBJECT_TYPE_TEST; } - - static ServerActiveObject* create(ServerEnvironment *env, v3f pos, - const std::string &data) - { - return new TestSAO(env, pos); - } - - void step(float dtime, bool send_recommended) - { - m_age += dtime; - if(m_age > 10) - { - m_pending_removal = true; - return; - } - - m_base_position.Y += dtime * BS * 2; - if(m_base_position.Y > 8*BS) - m_base_position.Y = 2*BS; - - if (!send_recommended) - return; - - m_timer1 -= dtime; - if(m_timer1 < 0.0) - { - m_timer1 += 0.125; - - std::string data; - - data += itos(0); // 0 = position - data += " "; - data += itos(m_base_position.X); - data += " "; - data += itos(m_base_position.Y); - data += " "; - data += itos(m_base_position.Z); - - ActiveObjectMessage aom(getId(), false, data); - m_messages_out.push(aom); - } - } - - bool getCollisionBox(aabb3f *toset) const { return false; } - - virtual bool getSelectionBox(aabb3f *toset) const { return false; } - - bool collideWithObjects() const { return false; } - -private: - float m_timer1; - float m_age; -}; - -// Prototype (registers item for deserialization) -TestSAO proto_TestSAO(NULL, v3f(0,0,0)); - -/* - LuaEntitySAO -*/ - -// Prototype (registers item for deserialization) -LuaEntitySAO proto_LuaEntitySAO(NULL, v3f(0,0,0), "_prototype", ""); - -LuaEntitySAO::LuaEntitySAO(ServerEnvironment *env, v3f pos, - const std::string &name, const std::string &state): - UnitSAO(env, pos), - m_init_name(name), - m_init_state(state) -{ - // Only register type if no environment supplied - if(env == NULL){ - ServerActiveObject::registerType(getType(), create); - return; - } -} - -LuaEntitySAO::~LuaEntitySAO() -{ - if(m_registered){ - m_env->getScriptIface()->luaentity_Remove(m_id); - } - - for (u32 attached_particle_spawner : m_attached_particle_spawners) { - m_env->deleteParticleSpawner(attached_particle_spawner, false); - } -} - -void LuaEntitySAO::addedToEnvironment(u32 dtime_s) -{ - ServerActiveObject::addedToEnvironment(dtime_s); - - // Create entity from name - m_registered = m_env->getScriptIface()-> - luaentity_Add(m_id, m_init_name.c_str()); - - if(m_registered){ - // Get properties - m_env->getScriptIface()-> - luaentity_GetProperties(m_id, this, &m_prop); - // Initialize HP from properties - m_hp = m_prop.hp_max; - // Activate entity, supplying serialized state - m_env->getScriptIface()-> - luaentity_Activate(m_id, m_init_state, dtime_s); - } else { - m_prop.infotext = m_init_name; - } -} - -ServerActiveObject* LuaEntitySAO::create(ServerEnvironment *env, v3f pos, - const std::string &data) +LuaEntitySAO::LuaEntitySAO(ServerEnvironment *env, v3f pos, const std::string &data) + : UnitSAO(env, pos) { std::string name; std::string state; @@ -205,11 +71,45 @@ ServerActiveObject* LuaEntitySAO::create(ServerEnvironment *env, v3f pos, // create object infostream << "LuaEntitySAO::create(name=\"" << name << "\" state=\"" << state << "\")" << std::endl; - LuaEntitySAO *sao = new LuaEntitySAO(env, pos, name, state); - sao->m_hp = hp; - sao->m_velocity = velocity; - sao->m_rotation = rotation; - return sao; + + m_init_name = name; + m_init_state = state; + m_hp = hp; + m_velocity = velocity; + m_rotation = rotation; +} + +LuaEntitySAO::~LuaEntitySAO() +{ + if(m_registered){ + m_env->getScriptIface()->luaentity_Remove(m_id); + } + + for (u32 attached_particle_spawner : m_attached_particle_spawners) { + m_env->deleteParticleSpawner(attached_particle_spawner, false); + } +} + +void LuaEntitySAO::addedToEnvironment(u32 dtime_s) +{ + ServerActiveObject::addedToEnvironment(dtime_s); + + // Create entity from name + m_registered = m_env->getScriptIface()-> + luaentity_Add(m_id, m_init_name.c_str()); + + if(m_registered){ + // Get properties + m_env->getScriptIface()-> + luaentity_GetProperties(m_id, this, &m_prop); + // Initialize HP from properties + m_hp = m_prop.hp_max; + // Activate entity, supplying serialized state + m_env->getScriptIface()-> + luaentity_Activate(m_id, m_init_state, dtime_s); + } else { + m_prop.infotext = m_init_name; + } } void LuaEntitySAO::step(float dtime, bool send_recommended) diff --git a/src/content_sao.h b/src/server/luaentity_sao.h similarity index 72% rename from src/content_sao.h rename to src/server/luaentity_sao.h index 5387fd108..2520c8f5d 100644 --- a/src/content_sao.h +++ b/src/server/luaentity_sao.h @@ -1,6 +1,7 @@ /* Minetest Copyright (C) 2010-2013 celeron55, Perttu Ahola +Copyright (C) 2013-2020 Minetest core developers & community 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 @@ -19,38 +20,32 @@ with this program; if not, write to the Free Software Foundation, Inc., #pragma once -#include "network/networkprotocol.h" -#include "util/numeric.h" -#include "server/unit_sao.h" -#include "itemgroup.h" -#include "constants.h" - -/* - LuaEntitySAO needs some internals exposed. -*/ +#include "unit_sao.h" class LuaEntitySAO : public UnitSAO { public: - LuaEntitySAO(ServerEnvironment *env, v3f pos, - const std::string &name, const std::string &state); + LuaEntitySAO() = delete; + // Used by the environment to load SAO + LuaEntitySAO(ServerEnvironment *env, v3f pos, const std::string &data); + // Used by the Lua API + LuaEntitySAO(ServerEnvironment *env, v3f pos, const std::string &name, + const std::string &state) : + UnitSAO(env, pos), + m_init_name(name), m_init_state(state) + { + } ~LuaEntitySAO(); - ActiveObjectType getType() const - { return ACTIVEOBJECT_TYPE_LUAENTITY; } - ActiveObjectType getSendType() const - { return ACTIVEOBJECT_TYPE_GENERIC; } + ActiveObjectType getType() const { return ACTIVEOBJECT_TYPE_LUAENTITY; } + ActiveObjectType getSendType() const { return ACTIVEOBJECT_TYPE_GENERIC; } virtual void addedToEnvironment(u32 dtime_s); - static ServerActiveObject* create(ServerEnvironment *env, v3f pos, - const std::string &data); void step(float dtime, bool send_recommended); std::string getClientInitializationData(u16 protocol_version); - bool isStaticAllowed() const - { return m_prop.static_save; } + bool isStaticAllowed() const { return m_prop.static_save; } void getStaticData(std::string *result) const; - u16 punch(v3f dir, - const ToolCapabilities *toolcap = nullptr, - ServerActiveObject *puncher = nullptr, - float time_from_last_punch = 1000000.0f); + u16 punch(v3f dir, const ToolCapabilities *toolcap = nullptr, + ServerActiveObject *puncher = nullptr, + float time_from_last_punch = 1000000.0f); void rightClick(ServerActiveObject *clicker); void setPos(const v3f &pos); void moveTo(v3f pos, bool continuous); @@ -61,10 +56,7 @@ public: /* LuaEntitySAO-specific */ void setVelocity(v3f velocity); - void addVelocity(v3f velocity) - { - m_velocity += velocity; - } + void addVelocity(v3f velocity) { m_velocity += velocity; } v3f getVelocity(); void setAcceleration(v3f acceleration); v3f getAcceleration(); @@ -77,12 +69,13 @@ public: bool getCollisionBox(aabb3f *toset) const; bool getSelectionBox(aabb3f *toset) const; bool collideWithObjects() const; + private: std::string getPropertyPacket(); void sendPosition(bool do_interpolate, bool is_movement_end); std::string generateSetTextureModCommand() const; - static std::string generateSetSpriteCommand(v2s16 p, u16 num_frames, f32 framelength, - bool select_horiz_by_yawpitch); + static std::string generateSetSpriteCommand(v2s16 p, u16 num_frames, + f32 framelength, bool select_horiz_by_yawpitch); std::string m_init_name; std::string m_init_state; @@ -98,4 +91,3 @@ private: float m_last_sent_move_precision = 0.0f; std::string m_current_texture_modifier = ""; }; - diff --git a/src/server/player_sao.h b/src/server/player_sao.h index ce1cb1677..8571bd4f9 100644 --- a/src/server/player_sao.h +++ b/src/server/player_sao.h @@ -1,4 +1,3 @@ - /* Minetest Copyright (C) 2010-2013 celeron55, Perttu Ahola @@ -19,6 +18,8 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#pragma once + #include "constants.h" #include "network/networkprotocol.h" #include "unit_sao.h" @@ -32,33 +33,31 @@ class LagPool { float m_pool = 15.0f; float m_max = 15.0f; + public: LagPool() = default; void setMax(float new_max) { m_max = new_max; - if(m_pool > new_max) + if (m_pool > new_max) m_pool = new_max; } void add(float dtime) { m_pool -= dtime; - if(m_pool < 0) + if (m_pool < 0) m_pool = 0; } - void empty() - { - m_pool = m_max; - } + void empty() { m_pool = m_max; } bool grab(float dtime) { - if(dtime <= 0) + if (dtime <= 0) return true; - if(m_pool + dtime > m_max) + if (m_pool + dtime > m_max) return false; m_pool += dtime; return true; @@ -73,10 +72,8 @@ public: PlayerSAO(ServerEnvironment *env_, RemotePlayer *player_, session_t peer_id_, bool is_singleplayer); - ActiveObjectType getType() const - { return ACTIVEOBJECT_TYPE_PLAYER; } - ActiveObjectType getSendType() const - { return ACTIVEOBJECT_TYPE_GENERIC; } + ActiveObjectType getType() const { return ACTIVEOBJECT_TYPE_PLAYER; } + ActiveObjectType getSendType() const { return ACTIVEOBJECT_TYPE_GENERIC; } std::string getDescription(); /* @@ -111,10 +108,8 @@ public: Interaction interface */ - u16 punch(v3f dir, - const ToolCapabilities *toolcap, - ServerActiveObject *puncher, - float time_from_last_punch); + u16 punch(v3f dir, const ToolCapabilities *toolcap, ServerActiveObject *puncher, + float time_from_last_punch); void rightClick(ServerActiveObject *clicker) {} void setHP(s32 hp, const PlayerHPChangeReason &reason); void setHPRaw(u16 hp) { m_hp = hp; } @@ -144,10 +139,7 @@ public: // Cheat prevention - v3f getLastGoodPosition() const - { - return m_last_good_position; - } + v3f getLastGoodPosition() const { return m_last_good_position; } float resetTimeFromLastPunch() { float r = m_time_from_last_punch; @@ -159,30 +151,17 @@ public: m_nocheat_dig_pos = p; m_nocheat_dig_time = 0; } - v3s16 getNoCheatDigPos() - { - return m_nocheat_dig_pos; - } - float getNoCheatDigTime() - { - return m_nocheat_dig_time; - } - void noCheatDigEnd() - { - m_nocheat_dig_pos = v3s16(32767, 32767, 32767); - } - LagPool& getDigPool() - { - return m_dig_pool; - } + v3s16 getNoCheatDigPos() { return m_nocheat_dig_pos; } + float getNoCheatDigTime() { return m_nocheat_dig_time; } + void noCheatDigEnd() { m_nocheat_dig_pos = v3s16(32767, 32767, 32767); } + LagPool &getDigPool() { return m_dig_pool; } void setMaxSpeedOverride(const v3f &vel); // Returns true if cheated bool checkMovementCheat(); // Other - void updatePrivileges(const std::set &privs, - bool is_singleplayer) + void updatePrivileges(const std::set &privs, bool is_singleplayer) { m_privs = privs; m_is_singleplayer = is_singleplayer; @@ -236,6 +215,7 @@ private: s16 m_wanted_range = 0.0f; Metadata m_meta; + public: float m_physics_override_speed = 1.0f; float m_physics_override_jump = 1.0f; @@ -246,9 +226,10 @@ public: bool m_physics_override_sent = false; }; - -struct PlayerHPChangeReason { - enum Type : u8 { +struct PlayerHPChangeReason +{ + enum Type : u8 + { SET_HP, PLAYER_PUNCH, FALL, @@ -266,10 +247,7 @@ struct PlayerHPChangeReason { // For NODE_DAMAGE std::string node; - inline bool hasLuaReference() const - { - return lua_reference >= 0; - } + inline bool hasLuaReference() const { return lua_reference >= 0; } bool setTypeFromString(const std::string &typestr) { @@ -311,15 +289,12 @@ struct PlayerHPChangeReason { } } - PlayerHPChangeReason(Type type): - type(type) - {} + PlayerHPChangeReason(Type type) : type(type) {} - PlayerHPChangeReason(Type type, ServerActiveObject *object): + PlayerHPChangeReason(Type type, ServerActiveObject *object) : type(type), object(object) - {} + { + } - PlayerHPChangeReason(Type type, std::string node): - type(type), node(node) - {} + PlayerHPChangeReason(Type type, std::string node) : type(type), node(node) {} }; diff --git a/src/server/serveractiveobject.cpp b/src/server/serveractiveobject.cpp index 3aa78c7d5..8345ebd47 100644 --- a/src/server/serveractiveobject.cpp +++ b/src/server/serveractiveobject.cpp @@ -30,39 +30,6 @@ ServerActiveObject::ServerActiveObject(ServerEnvironment *env, v3f pos): { } -ServerActiveObject* ServerActiveObject::create(ActiveObjectType type, - ServerEnvironment *env, u16 id, v3f pos, - const std::string &data) -{ - // Find factory function - std::map::iterator n; - n = m_types.find(type); - if(n == m_types.end()) { - // These are 0.3 entity types, return without error. - if (ACTIVEOBJECT_TYPE_ITEM <= type && type <= ACTIVEOBJECT_TYPE_MOBV2) { - return NULL; - } - - // If factory is not found, just return. - warningstream<<"ServerActiveObject: No factory for type=" - <second; - ServerActiveObject *object = (*f)(env, pos, data); - return object; -} - -void ServerActiveObject::registerType(u16 type, Factory f) -{ - std::map::iterator n; - n = m_types.find(type); - if(n != m_types.end()) - return; - m_types[type] = f; -} - float ServerActiveObject::getMinimumSavedMovement() { return 2.0*BS; diff --git a/src/server/serveractiveobject.h b/src/server/serveractiveobject.h index 2e013a6b6..927009aef 100644 --- a/src/server/serveractiveobject.h +++ b/src/server/serveractiveobject.h @@ -244,12 +244,6 @@ protected: virtual void onAttach(int parent_id) {} virtual void onDetach(int parent_id) {} - // Used for creating objects based on type - typedef ServerActiveObject* (*Factory) - (ServerEnvironment *env, v3f pos, - const std::string &data); - static void registerType(u16 type, Factory f); - ServerEnvironment *m_env; v3f m_base_position; std::unordered_set m_attached_particle_spawners; @@ -258,8 +252,4 @@ protected: Queue of messages to be sent to the client */ std::queue m_messages_out; - -private: - // Used for creating objects based on type - static std::map m_types; }; diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index c2ab5c07d..32d10f8c0 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -44,6 +44,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #if USE_POSTGRESQL #include "database/database-postgresql.h" #endif +#include "server/luaentity_sao.h" #include "server/player_sao.h" #define LBM_NAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyz0123456789_:" @@ -1778,6 +1779,18 @@ static void print_hexdump(std::ostream &o, const std::string &data) } } +ServerActiveObject* ServerEnvironment::createSAO(ActiveObjectType type, v3f pos, + const std::string &data) +{ + switch (type) { + case ACTIVEOBJECT_TYPE_LUAENTITY: + return new LuaEntitySAO(this, pos, data); + default: + warningstream << "ServerActiveObject: No factory for type=" << type << std::endl; + } + return nullptr; +} + /* Convert stored objects from blocks near the players to active. */ @@ -1811,10 +1824,10 @@ void ServerEnvironment::activateObjects(MapBlock *block, u32 dtime_s) std::vector new_stored; for (const StaticObject &s_obj : block->m_static_objects.m_stored) { // Create an active object from the data - ServerActiveObject *obj = ServerActiveObject::create - ((ActiveObjectType) s_obj.type, this, 0, s_obj.pos, s_obj.data); + ServerActiveObject *obj = createSAO((ActiveObjectType) s_obj.type, s_obj.pos, + s_obj.data); // If couldn't create object, store static data back. - if(obj == NULL) { + if (!obj) { errorstream<<"ServerEnvironment::activateObjects(): " <<"failed to create active object from static object " <<"in block "< m_particle_spawners; std::unordered_map m_particle_spawner_attachments; + + ServerActiveObject* createSAO(ActiveObjectType type, v3f pos, const std::string &data); }; diff --git a/src/staticobject.cpp b/src/staticobject.cpp index bebca12ec..5ccb7baf5 100644 --- a/src/staticobject.cpp +++ b/src/staticobject.cpp @@ -19,7 +19,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "staticobject.h" #include "util/serialize.h" -#include "content_sao.h" +#include "server/serveractiveobject.h" StaticObject::StaticObject(const ServerActiveObject *s_obj, const v3f &pos_): type(s_obj->getType()), diff --git a/src/unittest/test_player.cpp b/src/unittest/test_player.cpp index e2b1cd855..6990b4016 100644 --- a/src/unittest/test_player.cpp +++ b/src/unittest/test_player.cpp @@ -21,7 +21,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "exceptions.h" #include "remoteplayer.h" -#include "content_sao.h" #include "server.h" class TestPlayer : public TestBase diff --git a/util/travis/clang-format-whitelist.txt b/util/travis/clang-format-whitelist.txt index 816ec2c59..bb97da7b5 100644 --- a/util/travis/clang-format-whitelist.txt +++ b/util/travis/clang-format-whitelist.txt @@ -118,8 +118,6 @@ src/content_mapblock.h src/content_mapnode.cpp src/content_nodemeta.cpp src/content_nodemeta.h -src/content_sao.cpp -src/content_sao.h src/convert_json.cpp src/convert_json.h src/craftdef.cpp @@ -408,6 +406,8 @@ src/serverenvironment.h src/server.h src/serverlist.cpp src/serverlist.h +src/server/luaentity_sao.cpp +src/server/player_sao.cpp src/server/serveractiveobject.cpp src/server/serveractiveobject.h src/settings.cpp From 5cc06e4748a82acb36310fee89e72f30b2b35a36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Sat, 11 Apr 2020 19:59:43 +0200 Subject: [PATCH 086/424] Reduce ServerEnvironment propagation (#9642) ServerEnvironment is a huge class with many accessors. In various places it's not needed Remove it to reduce the ServerEnvironment view. Idea here is to reduce size of some of our objects to transport lightweight managers and permit easier testing Pathfinder is now tied to a generic map, not a ServerMap, it can be ported to client --- src/mapgen/treegen.cpp | 4 +- src/mapgen/treegen.h | 5 +- src/pathfinder.cpp | 102 ++++++++++++----------------- src/pathfinder.h | 17 ++--- src/script/lua_api/l_env.cpp | 7 +- src/script/lua_api/l_nodetimer.cpp | 44 +++---------- src/script/lua_api/l_nodetimer.h | 10 ++- 7 files changed, 71 insertions(+), 118 deletions(-) diff --git a/src/mapgen/treegen.cpp b/src/mapgen/treegen.cpp index 89bdef73b..d538e15b4 100644 --- a/src/mapgen/treegen.cpp +++ b/src/mapgen/treegen.cpp @@ -25,7 +25,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/numeric.h" #include "map.h" #include "mapblock.h" -#include "serverenvironment.h" #include "nodedef.h" #include "treegen.h" #include "voxelalgorithms.h" @@ -120,10 +119,9 @@ void make_tree(MMVManip &vmanip, v3s16 p0, bool is_apple_tree, // L-System tree LUA spawner -treegen::error spawn_ltree(ServerEnvironment *env, v3s16 p0, +treegen::error spawn_ltree(ServerMap *map, v3s16 p0, const NodeDefManager *ndef, const TreeDef &tree_definition) { - ServerMap *map = &env->getServerMap(); std::map modified_blocks; MMVManip vmanip(map); v3s16 tree_blockp = getNodeBlockPos(p0); diff --git a/src/mapgen/treegen.h b/src/mapgen/treegen.h index 5ab79f428..447baabb3 100644 --- a/src/mapgen/treegen.h +++ b/src/mapgen/treegen.h @@ -26,8 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., class MMVManip; class NodeDefManager; -class ServerEnvironment; - +class ServerMap; namespace treegen { @@ -73,7 +72,7 @@ namespace treegen { treegen::error make_ltree(MMVManip &vmanip, v3s16 p0, const NodeDefManager *ndef, TreeDef tree_definition); // Spawn L-systems tree from LUA - treegen::error spawn_ltree (ServerEnvironment *env, v3s16 p0, + treegen::error spawn_ltree (ServerMap *map, v3s16 p0, const NodeDefManager *ndef, const TreeDef &tree_definition); // L-System tree gen helper functions diff --git a/src/pathfinder.cpp b/src/pathfinder.cpp index 8195bd643..3f0b98c10 100644 --- a/src/pathfinder.cpp +++ b/src/pathfinder.cpp @@ -23,8 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., /******************************************************************************/ #include "pathfinder.h" -#include "serverenvironment.h" -#include "server.h" +#include "map.h" #include "nodedef.h" //#define PATHFINDER_DEBUG @@ -180,10 +179,8 @@ private: class Pathfinder { public: - /** - * default constructor - */ - Pathfinder() = default; + Pathfinder() = delete; + Pathfinder(Map *map, const NodeDefManager *ndef) : m_map(map), m_ndef(ndef) {} ~Pathfinder(); @@ -197,8 +194,7 @@ public: * @param max_drop maximum number of blocks a path may drop * @param algo Algorithm to use for finding a path */ - std::vector getPath(ServerEnvironment *env, - v3s16 source, + std::vector getPath(v3s16 source, v3s16 destination, unsigned int searchdistance, unsigned int max_jump, @@ -328,7 +324,9 @@ private: friend class GridNodeContainer; GridNodeContainer *m_nodes_container = nullptr; - ServerEnvironment *m_env = 0; /**< minetest environment pointer */ + Map *m_map = nullptr; + + const NodeDefManager *m_ndef = nullptr; friend class PathfinderCompareHeuristic; @@ -410,18 +408,15 @@ class PathfinderCompareHeuristic /* implementation */ /******************************************************************************/ -std::vector get_path(ServerEnvironment* env, - v3s16 source, - v3s16 destination, - unsigned int searchdistance, - unsigned int max_jump, - unsigned int max_drop, - PathAlgorithm algo) +std::vector get_path(Map* map, const NodeDefManager *ndef, + v3s16 source, + v3s16 destination, + unsigned int searchdistance, + unsigned int max_jump, + unsigned int max_drop, + PathAlgorithm algo) { - Pathfinder searchclass; - - return searchclass.getPath(env, - source, destination, + return Pathfinder(map, ndef).getPath(source, destination, searchdistance, max_jump, max_drop, algo); } @@ -521,13 +516,13 @@ void PathGridnode::setCost(v3s16 dir, const PathCost &cost) void GridNodeContainer::initNode(v3s16 ipos, PathGridnode *p_node) { - const NodeDefManager *ndef = m_pathf->m_env->getGameDef()->ndef(); + const NodeDefManager *ndef = m_pathf->m_ndef; PathGridnode &elem = *p_node; v3s16 realpos = m_pathf->getRealPos(ipos); - MapNode current = m_pathf->m_env->getMap().getNode(realpos); - MapNode below = m_pathf->m_env->getMap().getNode(realpos + v3s16(0, -1, 0)); + MapNode current = m_pathf->m_map->getNode(realpos); + MapNode below = m_pathf->m_map->getNode(realpos + v3s16(0, -1, 0)); if ((current.param0 == CONTENT_IGNORE) || @@ -610,8 +605,7 @@ PathGridnode &MapGridNodeContainer::access(v3s16 p) /******************************************************************************/ -std::vector Pathfinder::getPath(ServerEnvironment *env, - v3s16 source, +std::vector Pathfinder::getPath(v3s16 source, v3s16 destination, unsigned int searchdistance, unsigned int max_jump, @@ -624,15 +618,8 @@ std::vector Pathfinder::getPath(ServerEnvironment *env, #endif std::vector retval; - //check parameters - if (env == 0) { - ERROR_TARGET << "Missing environment pointer" << std::endl; - return retval; - } - //initialization m_searchdistance = searchdistance; - m_env = env; m_maxjump = max_jump; m_maxdrop = max_drop; m_start = source; @@ -681,15 +668,14 @@ std::vector Pathfinder::getPath(ServerEnvironment *env, #endif //fail if source or destination is walkable - const NodeDefManager *ndef = m_env->getGameDef()->ndef(); - MapNode node_at_pos = m_env->getMap().getNode(destination); - if (ndef->get(node_at_pos).walkable) { + MapNode node_at_pos = m_map->getNode(destination); + if (m_ndef->get(node_at_pos).walkable) { VERBOSE_TARGET << "Destination is walkable. " << "Pos: " << PP(destination) << std::endl; return retval; } - node_at_pos = m_env->getMap().getNode(source); - if (ndef->get(node_at_pos).walkable) { + node_at_pos = m_map->getNode(source); + if (m_ndef->get(node_at_pos).walkable) { VERBOSE_TARGET << "Source is walkable. " << "Pos: " << PP(source) << std::endl; return retval; @@ -843,7 +829,6 @@ v3s16 Pathfinder::getRealPos(v3s16 ipos) /******************************************************************************/ PathCost Pathfinder::calcCost(v3s16 pos, v3s16 dir) { - const NodeDefManager *ndef = m_env->getGameDef()->ndef(); PathCost retval; retval.updated = true; @@ -857,7 +842,7 @@ PathCost Pathfinder::calcCost(v3s16 pos, v3s16 dir) return retval; } - MapNode node_at_pos2 = m_env->getMap().getNode(pos2); + MapNode node_at_pos2 = m_map->getNode(pos2); //did we get information about node? if (node_at_pos2.param0 == CONTENT_IGNORE ) { @@ -866,9 +851,9 @@ PathCost Pathfinder::calcCost(v3s16 pos, v3s16 dir) return retval; } - if (!ndef->get(node_at_pos2).walkable) { + if (!m_ndef->get(node_at_pos2).walkable) { MapNode node_below_pos2 = - m_env->getMap().getNode(pos2 + v3s16(0, -1, 0)); + m_map->getNode(pos2 + v3s16(0, -1, 0)); //did we get information about node? if (node_below_pos2.param0 == CONTENT_IGNORE ) { @@ -878,7 +863,7 @@ PathCost Pathfinder::calcCost(v3s16 pos, v3s16 dir) } //test if the same-height neighbor is suitable - if (ndef->get(node_below_pos2).walkable) { + if (m_ndef->get(node_below_pos2).walkable) { //SUCCESS! retval.valid = true; retval.value = 1; @@ -889,19 +874,19 @@ PathCost Pathfinder::calcCost(v3s16 pos, v3s16 dir) else { //test if we can fall a couple of nodes (m_maxdrop) v3s16 testpos = pos2 + v3s16(0, -1, 0); - MapNode node_at_pos = m_env->getMap().getNode(testpos); + MapNode node_at_pos = m_map->getNode(testpos); while ((node_at_pos.param0 != CONTENT_IGNORE) && - (!ndef->get(node_at_pos).walkable) && + (!m_ndef->get(node_at_pos).walkable) && (testpos.Y > m_limits.MinEdge.Y)) { testpos += v3s16(0, -1, 0); - node_at_pos = m_env->getMap().getNode(testpos); + node_at_pos = m_map->getNode(testpos); } //did we find surface? if ((testpos.Y >= m_limits.MinEdge.Y) && (node_at_pos.param0 != CONTENT_IGNORE) && - (ndef->get(node_at_pos).walkable)) { + (m_ndef->get(node_at_pos).walkable)) { if ((pos2.Y - testpos.Y - 1) <= m_maxdrop) { //SUCCESS! retval.valid = true; @@ -927,34 +912,34 @@ PathCost Pathfinder::calcCost(v3s16 pos, v3s16 dir) v3s16 targetpos = pos2; // position for jump target v3s16 jumppos = pos; // position for checking if jumping space is free - MapNode node_target = m_env->getMap().getNode(targetpos); - MapNode node_jump = m_env->getMap().getNode(jumppos); + MapNode node_target = m_map->getNode(targetpos); + MapNode node_jump = m_map->getNode(jumppos); bool headbanger = false; // true if anything blocks jumppath while ((node_target.param0 != CONTENT_IGNORE) && - (ndef->get(node_target).walkable) && + (m_ndef->get(node_target).walkable) && (targetpos.Y < m_limits.MaxEdge.Y)) { //if the jump would hit any solid node, discard if ((node_jump.param0 == CONTENT_IGNORE) || - (ndef->get(node_jump).walkable)) { + (m_ndef->get(node_jump).walkable)) { headbanger = true; break; } targetpos += v3s16(0, 1, 0); jumppos += v3s16(0, 1, 0); - node_target = m_env->getMap().getNode(targetpos); - node_jump = m_env->getMap().getNode(jumppos); + node_target = m_map->getNode(targetpos); + node_jump = m_map->getNode(jumppos); } //check headbanger one last time if ((node_jump.param0 == CONTENT_IGNORE) || - (ndef->get(node_jump).walkable)) { + (m_ndef->get(node_jump).walkable)) { headbanger = true; } //did we find surface without banging our head? if ((!headbanger) && (targetpos.Y <= m_limits.MaxEdge.Y) && - (!ndef->get(node_target).walkable)) { + (!m_ndef->get(node_target).walkable)) { if (targetpos.Y - pos2.Y <= m_maxjump) { //SUCCESS! @@ -1254,21 +1239,20 @@ v3s16 Pathfinder::walkDownwards(v3s16 pos, unsigned int max_down) { if (max_down == 0) return pos; v3s16 testpos = v3s16(pos); - MapNode node_at_pos = m_env->getMap().getNode(testpos); - const NodeDefManager *ndef = m_env->getGameDef()->ndef(); + MapNode node_at_pos = m_map->getNode(testpos); unsigned int down = 0; while ((node_at_pos.param0 != CONTENT_IGNORE) && - (!ndef->get(node_at_pos).walkable) && + (!m_ndef->get(node_at_pos).walkable) && (testpos.Y > m_limits.MinEdge.Y) && (down <= max_down)) { testpos += v3s16(0, -1, 0); down++; - node_at_pos = m_env->getMap().getNode(testpos); + node_at_pos = m_map->getNode(testpos); } //did we find surface? if ((testpos.Y >= m_limits.MinEdge.Y) && (node_at_pos.param0 != CONTENT_IGNORE) && - (ndef->get(node_at_pos).walkable)) { + (m_ndef->get(node_at_pos).walkable)) { if (down == 0) { pos = testpos; } else if ((down - 1) <= max_down) { diff --git a/src/pathfinder.h b/src/pathfinder.h index 70f3d6bbc..526aa0ee8 100644 --- a/src/pathfinder.h +++ b/src/pathfinder.h @@ -29,7 +29,8 @@ with this program; if not, write to the Free Software Foundation, Inc., /* Forward declarations */ /******************************************************************************/ -class ServerEnvironment; +class NodeDefManager; +class Map; /******************************************************************************/ /* Typedefs and macros */ @@ -54,10 +55,10 @@ typedef enum { /******************************************************************************/ /** c wrapper function to use from scriptapi */ -std::vector get_path(ServerEnvironment *env, - v3s16 source, - v3s16 destination, - unsigned int searchdistance, - unsigned int max_jump, - unsigned int max_drop, - PathAlgorithm algo); +std::vector get_path(Map *map, const NodeDefManager *ndef, + v3s16 source, + v3s16 destination, + unsigned int searchdistance, + unsigned int max_jump, + unsigned int max_drop, + PathAlgorithm algo); diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index 40e50e64a..e3afe1862 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -577,7 +577,7 @@ int ModApiEnvMod::l_get_node_timer(lua_State *L) // Do it v3s16 p = read_v3s16(L, 1); - NodeTimerRef::create(L, p, env); + NodeTimerRef::create(L, p, &env->getServerMap()); return 1; } @@ -1193,7 +1193,7 @@ int ModApiEnvMod::l_find_path(lua_State *L) algo = PA_DIJKSTRA; } - std::vector path = get_path(env, pos1, pos2, + std::vector path = get_path(&env->getServerMap(), env->getGameDef()->ndef(), pos1, pos2, searchdistance, max_jump, max_drop, algo); if (!path.empty()) { @@ -1257,8 +1257,9 @@ int ModApiEnvMod::l_spawn_tree(lua_State *L) else return 0; + ServerMap *map = &env->getServerMap(); treegen::error e; - if ((e = treegen::spawn_ltree (env, p0, ndef, tree_def)) != treegen::SUCCESS) { + if ((e = treegen::spawn_ltree (map, p0, ndef, tree_def)) != treegen::SUCCESS) { if (e == treegen::UNBALANCED_BRACKETS) { luaL_error(L, "spawn_tree(): closing ']' has no matching opening bracket"); } else { diff --git a/src/script/lua_api/l_nodetimer.cpp b/src/script/lua_api/l_nodetimer.cpp index 15a59744f..c2df52c05 100644 --- a/src/script/lua_api/l_nodetimer.cpp +++ b/src/script/lua_api/l_nodetimer.cpp @@ -41,11 +41,9 @@ int NodeTimerRef::l_set(lua_State *L) { MAP_LOCK_REQUIRED; NodeTimerRef *o = checkobject(L, 1); - ServerEnvironment *env = o->m_env; - if(env == NULL) return 0; f32 t = readParam(L,2); f32 e = readParam(L,3); - env->getMap().setNodeTimer(NodeTimer(t, e, o->m_p)); + o->m_map->setNodeTimer(NodeTimer(t, e, o->m_p)); return 0; } @@ -53,10 +51,8 @@ int NodeTimerRef::l_start(lua_State *L) { MAP_LOCK_REQUIRED; NodeTimerRef *o = checkobject(L, 1); - ServerEnvironment *env = o->m_env; - if(env == NULL) return 0; f32 t = readParam(L,2); - env->getMap().setNodeTimer(NodeTimer(t, 0, o->m_p)); + o->m_map->setNodeTimer(NodeTimer(t, 0, o->m_p)); return 0; } @@ -64,9 +60,7 @@ int NodeTimerRef::l_stop(lua_State *L) { MAP_LOCK_REQUIRED; NodeTimerRef *o = checkobject(L, 1); - ServerEnvironment *env = o->m_env; - if(env == NULL) return 0; - env->getMap().removeNodeTimer(o->m_p); + o->m_map->removeNodeTimer(o->m_p); return 0; } @@ -74,10 +68,7 @@ int NodeTimerRef::l_is_started(lua_State *L) { MAP_LOCK_REQUIRED; NodeTimerRef *o = checkobject(L, 1); - ServerEnvironment *env = o->m_env; - if(env == NULL) return 0; - - NodeTimer t = env->getMap().getNodeTimer(o->m_p); + NodeTimer t = o->m_map->getNodeTimer(o->m_p); lua_pushboolean(L,(t.timeout != 0)); return 1; } @@ -86,10 +77,7 @@ int NodeTimerRef::l_get_timeout(lua_State *L) { MAP_LOCK_REQUIRED; NodeTimerRef *o = checkobject(L, 1); - ServerEnvironment *env = o->m_env; - if(env == NULL) return 0; - - NodeTimer t = env->getMap().getNodeTimer(o->m_p); + NodeTimer t = o->m_map->getNodeTimer(o->m_p); lua_pushnumber(L,t.timeout); return 1; } @@ -98,37 +86,21 @@ int NodeTimerRef::l_get_elapsed(lua_State *L) { MAP_LOCK_REQUIRED; NodeTimerRef *o = checkobject(L, 1); - ServerEnvironment *env = o->m_env; - if(env == NULL) return 0; - - NodeTimer t = env->getMap().getNodeTimer(o->m_p); + NodeTimer t = o->m_map->getNodeTimer(o->m_p); lua_pushnumber(L,t.elapsed); return 1; } - -NodeTimerRef::NodeTimerRef(v3s16 p, ServerEnvironment *env): - m_p(p), - m_env(env) -{ -} - // Creates an NodeTimerRef and leaves it on top of stack // Not callable from Lua; all references are created on the C side. -void NodeTimerRef::create(lua_State *L, v3s16 p, ServerEnvironment *env) +void NodeTimerRef::create(lua_State *L, v3s16 p, ServerMap *map) { - NodeTimerRef *o = new NodeTimerRef(p, env); + NodeTimerRef *o = new NodeTimerRef(p, map); *(void **)(lua_newuserdata(L, sizeof(void *))) = o; luaL_getmetatable(L, className); lua_setmetatable(L, -2); } -void NodeTimerRef::set_null(lua_State *L) -{ - NodeTimerRef *o = checkobject(L, -1); - o->m_env = NULL; -} - void NodeTimerRef::Register(lua_State *L) { lua_newtable(L); diff --git a/src/script/lua_api/l_nodetimer.h b/src/script/lua_api/l_nodetimer.h index b894c5c8c..bbc975fd2 100644 --- a/src/script/lua_api/l_nodetimer.h +++ b/src/script/lua_api/l_nodetimer.h @@ -22,13 +22,13 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "irr_v3d.h" #include "lua_api/l_base.h" -class ServerEnvironment; +class ServerMap; class NodeTimerRef : public ModApiBase { private: v3s16 m_p; - ServerEnvironment *m_env = nullptr; + ServerMap *m_map; static const char className[]; static const luaL_Reg methods[]; @@ -50,14 +50,12 @@ private: static int l_get_elapsed(lua_State *L); public: - NodeTimerRef(v3s16 p, ServerEnvironment *env); + NodeTimerRef(v3s16 p, ServerMap *map) : m_p(p), m_map(map) {} ~NodeTimerRef() = default; // Creates an NodeTimerRef and leaves it on top of stack // Not callable from Lua; all references are created on the C side. - static void create(lua_State *L, v3s16 p, ServerEnvironment *env); - - static void set_null(lua_State *L); + static void create(lua_State *L, v3s16 p, ServerMap *map); static void Register(lua_State *L); }; From 40df3931d882daaeee42c8de69882b9f9df5c312 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 11 Apr 2020 20:03:59 +0200 Subject: [PATCH 087/424] Implement DPI scaling for Windows (#9586) --- misc/minetest.exe.manifest | 4 +- misc/winresource.rc | 6 +++ src/CMakeLists.txt | 2 +- src/client/renderingengine.cpp | 77 ++++++++++++++++++++++++++-------- src/constants.h | 5 --- 5 files changed, 69 insertions(+), 25 deletions(-) diff --git a/misc/minetest.exe.manifest b/misc/minetest.exe.manifest index 3c32b0f8b..18f8c85f4 100644 --- a/misc/minetest.exe.manifest +++ b/misc/minetest.exe.manifest @@ -8,8 +8,8 @@ - - true + + true diff --git a/misc/winresource.rc b/misc/winresource.rc index e1e82581b..ffb493873 100644 --- a/misc/winresource.rc +++ b/misc/winresource.rc @@ -1,6 +1,8 @@ #include +#include #include #include + #ifndef USE_CMAKE_CONFIG_H #define USE_CMAKE_CONFIG_H #endif @@ -13,6 +15,10 @@ #define BUILDMODE "RUN_IN_PLACE=0" #endif +#ifdef __MINGW32__ +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "minetest.exe.manifest" +#endif + LANGUAGE 0, SUBLANG_NEUTRAL 130 ICON "minetest-icon.ico" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0ebbd628c..0b550c09c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -451,7 +451,7 @@ if(WIN32) -i${WINRESOURCE_FILE} -o ${CMAKE_CURRENT_BINARY_DIR}/winresource_rc.o WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS ${WINRESOURCE_FILE}) + DEPENDS ${WINRESOURCE_FILE} ${MINETEST_EXE_MANIFEST_FILE}) SET(extra_windows_SRCS ${CMAKE_CURRENT_BINARY_DIR}/winresource_rc.o) else(MINGW) # Probably MSVC set(extra_windows_SRCS ${WINRESOURCE_FILE} ${MINETEST_EXE_MANIFEST_FILE}) diff --git a/src/client/renderingengine.cpp b/src/client/renderingengine.cpp index 8b7bbf328..eae6ca7d3 100644 --- a/src/client/renderingengine.cpp +++ b/src/client/renderingengine.cpp @@ -45,7 +45,11 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include #include +#endif +#ifdef _WIN32 +#include +#include #endif #if ENABLE_GLES @@ -318,6 +322,28 @@ void RenderingEngine::setupTopLevelXorgWindow(const std::string &name) #endif } +#ifdef _WIN32 +static bool getWindowHandle(irr::video::IVideoDriver *driver, HWND &hWnd) +{ + const video::SExposedVideoData exposedData = driver->getExposedVideoData(); + + switch (driver->getDriverType()) { + case video::EDT_DIRECT3D8: + hWnd = reinterpret_cast(exposedData.D3D8.HWnd); + break; + case video::EDT_DIRECT3D9: + hWnd = reinterpret_cast(exposedData.D3D9.HWnd); + break; + case video::EDT_OPENGL: + hWnd = reinterpret_cast(exposedData.OpenGLWin32.HWnd); + break; + default: + return false; + } + + return true; +} +#endif bool RenderingEngine::setWindowIcon() { @@ -335,22 +361,9 @@ bool RenderingEngine::setWindowIcon() "-xorg-icon-128.png"); #endif #elif defined(_WIN32) - const video::SExposedVideoData exposedData = driver->getExposedVideoData(); HWND hWnd; // Window handle - - switch (driver->getDriverType()) { - case video::EDT_DIRECT3D8: - hWnd = reinterpret_cast(exposedData.D3D8.HWnd); - break; - case video::EDT_DIRECT3D9: - hWnd = reinterpret_cast(exposedData.D3D9.HWnd); - break; - case video::EDT_OPENGL: - hWnd = reinterpret_cast(exposedData.OpenGLWin32.HWnd); - break; - default: + if (!getWindowHandle(driver, hWnd)) return false; - } // Load the ICON from resource file const HICON hicon = LoadIcon(GetModuleHandle(NULL), @@ -632,7 +645,7 @@ const char *RenderingEngine::getVideoDriverFriendlyName(irr::video::E_DRIVER_TYP } #ifndef __ANDROID__ -#ifdef XORG_USED +#if defined(XORG_USED) static float calcDisplayDensity() { @@ -667,12 +680,42 @@ float RenderingEngine::getDisplayDensity() return cached_display_density; } -#else // XORG_USED +#elif defined(_WIN32) + + +static float calcDisplayDensity(irr::video::IVideoDriver *driver) +{ + HWND hWnd; + if (getWindowHandle(driver, hWnd)) { + HDC hdc = GetDC(hWnd); + float dpi = GetDeviceCaps(hdc, LOGPIXELSX); + ReleaseDC(hWnd, hdc); + return dpi / 96.0f; + } + + /* return manually specified dpi */ + return g_settings->getFloat("screen_dpi") / 96.0f; +} + +float RenderingEngine::getDisplayDensity() +{ + static bool cached = false; + static float display_density; + if (!cached) { + display_density = calcDisplayDensity(get_video_driver()); + cached = true; + } + return display_density; +} + +#else + float RenderingEngine::getDisplayDensity() { return g_settings->getFloat("screen_dpi") / 96.0; } -#endif // XORG_USED + +#endif v2u32 RenderingEngine::getDisplaySize() { diff --git a/src/constants.h b/src/constants.h index 7636b38e0..0a8b22e15 100644 --- a/src/constants.h +++ b/src/constants.h @@ -110,10 +110,5 @@ with this program; if not, write to the Free Software Foundation, Inc., GUI related things */ -// TODO: implement dpi-based scaling for windows and remove this hack -#if defined(_WIN32) -#define TTF_DEFAULT_FONT_SIZE (18) -#else #define TTF_DEFAULT_FONT_SIZE (16) -#endif #define DEFAULT_FONT_SIZE (10) From 840b17ce63615424e566b056077b9dfa50d67293 Mon Sep 17 00:00:00 2001 From: Paul Ouellette Date: Sat, 11 Apr 2020 14:38:39 -0400 Subject: [PATCH 088/424] Update API site build (#9622) --- .gitlab-ci.yml | 3 +-- doc/mkdocs/lua_highlight.patch | 12 +----------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9781f9f85..a3d634261 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -300,9 +300,8 @@ package:docker: pages: stage: deploy - image: python:3.7 + image: python:3.8 before_script: - - pip install pip==18.1 - pip install git+https://github.com/Python-Markdown/markdown.git - pip install git+https://github.com/mkdocs/mkdocs.git - pip install pygments diff --git a/doc/mkdocs/lua_highlight.patch b/doc/mkdocs/lua_highlight.patch index 034a63a33..e231081d6 100644 --- a/doc/mkdocs/lua_highlight.patch +++ b/doc/mkdocs/lua_highlight.patch @@ -1,4 +1,4 @@ -@@ -77,7 +77,7 @@ +@@ -75,7 +75,7 @@ css_class="codehilite", lang=None, style='default', noclasses=False, tab_length=4, hl_lines=None, use_pygments=True): self.src = src @@ -7,13 +7,3 @@ self.linenums = linenums self.guess_lang = guess_lang self.css_class = css_class -@@ -119,7 +119,8 @@ - cssclass=self.css_class, - style=self.style, - noclasses=self.noclasses, -- hl_lines=self.hl_lines) -+ hl_lines=self.hl_lines, -+ wrapcode=True) - return highlight(self.src, lexer, formatter) - else: - # just escape and build markup usable by JS highlighting libs From ba3587e7769113fed9a076ae2e4d2153686fb163 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 11 Apr 2020 21:29:57 +0200 Subject: [PATCH 089/424] Fix broken config check in 659245a --- src/script/common/c_internal.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/script/common/c_internal.h b/src/script/common/c_internal.h index 747400769..442546332 100644 --- a/src/script/common/c_internal.h +++ b/src/script/common/c_internal.h @@ -31,6 +31,7 @@ extern "C" { #include } +#include "config.h" #include "common/c_types.h" From f780bae05cc2fdd23a6d7326c770783da8d94ea3 Mon Sep 17 00:00:00 2001 From: Hugues Ross Date: Sat, 11 Apr 2020 16:39:30 -0400 Subject: [PATCH 090/424] Formspecs: Add state-selection to style elements (#9378) --- doc/lua_api.txt | 63 ++++++--- games/minimal/mods/test/formspec.lua | 5 +- src/client/game.cpp | 9 +- src/gui/StyleSpec.h | 65 +++++++++- src/gui/guiButton.cpp | 169 ++++++++++++------------ src/gui/guiButton.h | 34 ++--- src/gui/guiButtonImage.cpp | 110 ++++------------ src/gui/guiButtonImage.h | 26 ++-- src/gui/guiButtonItemImage.cpp | 15 ++- src/gui/guiButtonItemImage.h | 9 +- src/gui/guiConfirmRegistration.cpp | 8 +- src/gui/guiConfirmRegistration.h | 4 +- src/gui/guiFormSpecMenu.cpp | 187 +++++++++++++++++++-------- src/gui/guiFormSpecMenu.h | 8 +- src/gui/guiKeyChangeMenu.cpp | 12 +- src/gui/guiKeyChangeMenu.h | 5 +- src/gui/guiPasswordChange.cpp | 10 +- src/gui/guiPasswordChange.h | 5 +- src/gui/guiVolumeChange.cpp | 7 +- src/gui/guiVolumeChange.h | 7 +- src/script/lua_api/l_mainmenu.cpp | 19 +-- src/util/numeric.h | 10 ++ 22 files changed, 462 insertions(+), 325 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 6ba87d619..b083b2907 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -2188,12 +2188,12 @@ Elements * 9-sliced background. See https://en.wikipedia.org/wiki/9-slice_scaling * Middle is a rect which defines the middle of the 9-slice. - * `x` - The middle will be x pixels from all sides. - * `x,y` - The middle will be x pixels from the horizontal and y from the vertical. - * `x,y,x2,y2` - The middle will start at x,y, and end at x2, y2. Negative x2 and y2 values - will be added to the width and height of the texture, allowing it to be used as the - distance from the far end. - * All numbers in middle are integers. + * `x` - The middle will be x pixels from all sides. + * `x,y` - The middle will be x pixels from the horizontal and y from the vertical. + * `x,y,x2,y2` - The middle will start at x,y, and end at x2, y2. Negative x2 and y2 values + will be added to the width and height of the texture, allowing it to be used as the + distance from the far end. + * All numbers in middle are integers. * Example for formspec 8x4 in 16x resolution: image shall be sized 8 times 16px times 4 times 16px * If `auto_clip` is `true`, the background is clipped to the formspec size @@ -2508,16 +2508,28 @@ Elements * `span=`: number of following columns to affect (default: infinite). -### `style[,,...;;;...]` +### `style[,;;;...]` -* Set the style for the named element(s) `name`. +* Set the style for the element(s) matching `selector` by name. +* `selector` can be one of: + * `` - An element name. + * `:` - An element name, a colon, and one or more states. +* `state` is a list of states separated by the `+` character. + * If a state is provided, the style will only take effect when the element is in that state. + * All provided states must be active for the style to apply. * Note: this **must** be before the element is defined. * See [Styling Formspecs]. -### `style_type[,,...;;;...]` +### `style_type[,;;;...]` -* Sets the style for all elements of type(s) `type` which appear after this element. +* Set the style for the element(s) matching `selector` by type. +* `selector` can be one of: + * `` - An element type. + * `:` - An element type, a colon, and one or more states. +* `state` is a list of states separated by the `+` character. + * If a state is provided, the style will only take effect when the element is in that state. + * All provided states must be active for the style to apply. * See [Styling Formspecs]. Migrating to Real Coordinates @@ -2560,24 +2572,33 @@ Styling Formspecs Formspec elements can be themed using the style elements: - style[,,...;;;...] - style_type[,,...;;;...] + style[,;;;...] + style[:,:;;;...] + style_type[,;;;...] + style_type[:,:;;;...] Where a prop is: property_name=property_value -A name/type can optionally be a comma separated list of names/types, like so: - - world_delete,world_create,world_configure - button,image_button - For example: style_type[button;bgcolor=#006699] style[world_delete;bgcolor=red;textcolor=yellow] button[4,3.95;2.6,1;world_delete;Delete] +A name/type can optionally be a comma separated list of names/types, like so: + + world_delete,world_create,world_configure + button,image_button + +Any name/type in the list can also be accompanied by a `+`-separated list of states, like so: + + world_delete:hovered+pressed + button:pressed + +States allow you to apply styles in response to changes in the element, instead of applying at all times. + Setting a property to nothing will reset it to the default value. For example: style_type[button;bgimg=button.png;bgimg_pressed=button_pressed.png;border=false] @@ -2654,6 +2675,14 @@ Some types may inherit styles from parent types. * noclip - boolean, set to true to allow the element to exceed formspec bounds. * textcolor - color. Default white. +### Valid States + +* *all elements* + * default - Equivalent to providing no states +* button, button_exit, image_button, item_image_button + * hovered - Active when the mouse is hovering over the element + * pressed - Active when the button is pressed + Markup Language --------------- diff --git a/games/minimal/mods/test/formspec.lua b/games/minimal/mods/test/formspec.lua index d2123b4af..14886aad2 100644 --- a/games/minimal/mods/test/formspec.lua +++ b/games/minimal/mods/test/formspec.lua @@ -65,7 +65,10 @@ local style_fs = [[ style[one_btn13;border=false] item_image_button[1.25,8.35;1,1;default:sword_steel;one_btn13;NoBor] - style[one_btn14;border=false;bgimg=test_bg.png;bgimg_hovered=test_bg_hovered.png;bgimg_pressed=test_bg_pressed.png;fgimg=bubble.png;fgimg_hovered=default_apple.png;fgimg_pressed=heart.png] + style[one_btn14;border=false;bgimg=test_bg.png;fgimg=bubble.png] + style[one_btn14:hovered;bgimg=test_bg_hovered.png;fgimg=default_apple.png;textcolor=red] + style[one_btn14:pressed;bgimg=test_bg_pressed.png;fgimg=heart.png;textcolor=green] + style[one_btn14:hovered+pressed;textcolor=blue] image_button[0,9.6;1,1;bubble.png;one_btn14;Bg] style[one_btn15;border=false;bgimg=test_bg.png;bgimg_hovered=test_bg_hovered.png;bgimg_pressed=test_bg_pressed.png] diff --git a/src/client/game.cpp b/src/client/game.cpp index 505108caf..06e76d170 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -1556,7 +1556,8 @@ bool Game::connectToServer(const std::string &playername, } else { registration_confirmation_shown = true; (new GUIConfirmRegistration(guienv, guienv->getRootGUIElement(), -1, - &g_menumgr, client, playername, password, connection_aborted))->drop(); + &g_menumgr, client, playername, password, + connection_aborted, texture_src))->drop(); } } else { wait_time += dtime; @@ -1711,19 +1712,19 @@ inline bool Game::handleCallbacks() if (g_gamecallback->changepassword_requested) { (new GUIPasswordChange(guienv, guiroot, -1, - &g_menumgr, client))->drop(); + &g_menumgr, client, texture_src))->drop(); g_gamecallback->changepassword_requested = false; } if (g_gamecallback->changevolume_requested) { (new GUIVolumeChange(guienv, guiroot, -1, - &g_menumgr))->drop(); + &g_menumgr, texture_src))->drop(); g_gamecallback->changevolume_requested = false; } if (g_gamecallback->keyconfig_requested) { (new GUIKeyChangeMenu(guienv, guiroot, -1, - &g_menumgr))->drop(); + &g_menumgr, texture_src))->drop(); g_gamecallback->keyconfig_requested = false; } diff --git a/src/gui/StyleSpec.h b/src/gui/StyleSpec.h index 999c1d237..799fbf46d 100644 --- a/src/gui/StyleSpec.h +++ b/src/gui/StyleSpec.h @@ -18,6 +18,7 @@ with this program; if not, write to the Free Software Foundation, Inc., */ #include "client/tile.h" // ITextureSource +#include "debug.h" #include "irrlichttypes_extrabloated.h" #include "util/string.h" #include @@ -31,25 +32,34 @@ public: { TEXTCOLOR, BGCOLOR, - BGCOLOR_HOVERED, - BGCOLOR_PRESSED, + BGCOLOR_HOVERED, // Note: Deprecated property + BGCOLOR_PRESSED, // Note: Deprecated property NOCLIP, BORDER, BGIMG, - BGIMG_HOVERED, + BGIMG_HOVERED, // Note: Deprecated property BGIMG_MIDDLE, - BGIMG_PRESSED, + BGIMG_PRESSED, // Note: Deprecated property FGIMG, - FGIMG_HOVERED, - FGIMG_PRESSED, + FGIMG_HOVERED, // Note: Deprecated property + FGIMG_PRESSED, // Note: Deprecated property ALPHA, NUM_PROPERTIES, NONE }; + enum State + { + STATE_DEFAULT = 0, + STATE_HOVERED = 1 << 0, + STATE_PRESSED = 1 << 1, + NUM_STATES = 1 << 2, + STATE_INVALID = 1 << 3, + }; private: std::array property_set{}; std::array properties; + State state_map = STATE_DEFAULT; public: static Property GetPropertyByName(const std::string &name) @@ -99,6 +109,49 @@ public: property_set[prop] = true; } + //! Parses a name and returns the corresponding state enum + static State getStateByName(const std::string &name) + { + if (name == "default") { + return STATE_DEFAULT; + } else if (name == "hovered") { + return STATE_HOVERED; + } else if (name == "pressed") { + return STATE_PRESSED; + } else { + return STATE_INVALID; + } + } + + //! Gets the state that this style is intended for + State getState() const + { + return state_map; + } + + //! Set the given state on this style + void addState(State state) + { + FATAL_ERROR_IF(state >= NUM_STATES, "Out-of-bounds state received"); + + state_map = static_cast(state_map | state); + } + + //! Using a list of styles mapped to state values, calculate the final + // combined style for a state by propagating values in its component states + static StyleSpec getStyleFromStatePropagation(const std::array &styles, State state) + { + StyleSpec temp = styles[StyleSpec::STATE_DEFAULT]; + temp.state_map = state; + for (int i = StyleSpec::STATE_DEFAULT + 1; i <= state; i++) { + if ((state & i) != 0) { + temp = temp | styles[i]; + } + } + + return temp; + } + video::SColor getColor(Property prop, video::SColor def) const { const auto &val = properties[prop]; diff --git a/src/gui/guiButton.cpp b/src/gui/guiButton.cpp index 4c16ee237..9dfe36bc4 100644 --- a/src/gui/guiButton.cpp +++ b/src/gui/guiButton.cpp @@ -14,6 +14,7 @@ #include "irrlicht_changes/static_text.h" #include "porting.h" #include "StyleSpec.h" +#include "util/numeric.h" using namespace irr; using namespace gui; @@ -26,14 +27,15 @@ using namespace gui; //! constructor GUIButton::GUIButton(IGUIEnvironment* environment, IGUIElement* parent, - s32 id, core::rect rectangle, bool noclip) + s32 id, core::rect rectangle, ISimpleTextureSource *tsrc, + bool noclip) : IGUIButton(environment, parent, id, rectangle), SpriteBank(0), OverrideFont(0), OverrideColorEnabled(false), OverrideColor(video::SColor(101,255,255,255)), ClickTime(0), HoverTime(0), FocusTime(0), ClickShiftState(false), ClickControlState(false), IsPushButton(false), Pressed(false), - UseAlphaChannel(false), DrawBorder(true), ScaleImage(false) + UseAlphaChannel(false), DrawBorder(true), ScaleImage(false), TSrc(tsrc) { setNotClipped(noclip); @@ -44,14 +46,6 @@ GUIButton::GUIButton(IGUIEnvironment* environment, IGUIElement* parent, // PATCH for (size_t i = 0; i < 4; i++) { Colors[i] = Environment->getSkin()->getColor((EGUI_DEFAULT_COLOR)i); - HoveredColors[i] = irr::video::SColor(Colors[i].getAlpha(), - core::clamp(Colors[i].getRed() * COLOR_HOVERED_MOD, 0, 255), - core::clamp(Colors[i].getGreen() * COLOR_HOVERED_MOD, 0, 255), - core::clamp(Colors[i].getBlue() * COLOR_HOVERED_MOD, 0, 255)); - PressedColors[i] = irr::video::SColor(Colors[i].getAlpha(), - core::clamp(Colors[i].getRed() * COLOR_PRESSED_MOD, 0, 255), - core::clamp(Colors[i].getGreen() * COLOR_PRESSED_MOD, 0, 255), - core::clamp(Colors[i].getBlue() * COLOR_PRESSED_MOD, 0, 255)); } StaticText = gui::StaticText::add(Environment, Text.c_str(), core::rect(0,0,rectangle.getWidth(),rectangle.getHeight()), false, false, this, id); StaticText->setTextAlignment(EGUIA_CENTER, EGUIA_CENTER); @@ -262,6 +256,13 @@ void GUIButton::draw() return; // PATCH + // Track hovered state, if it has changed then we need to update the style. + bool hovered = isHovered(); + if (hovered != WasHovered) { + WasHovered = hovered; + setFromState(); + } + GUISkin* skin = dynamic_cast(Environment->getSkin()); video::IVideoDriver* driver = Environment->getVideoDriver(); // END PATCH @@ -271,21 +272,24 @@ void GUIButton::draw() if (!Pressed) { // PATCH - skin->drawColored3DButtonPaneStandard(this, AbsoluteRect, &AbsoluteClippingRect, - isHovered() ? HoveredColors : Colors); + skin->drawColored3DButtonPaneStandard(this, AbsoluteRect, + &AbsoluteClippingRect, Colors); // END PATCH } else { // PATCH - skin->drawColored3DButtonPanePressed(this, - AbsoluteRect, &AbsoluteClippingRect, PressedColors); + skin->drawColored3DButtonPanePressed(this, AbsoluteRect, + &AbsoluteClippingRect, Colors); // END PATCH } } const core::position2di buttonCenter(AbsoluteRect.getCenter()); - EGUI_BUTTON_IMAGE_STATE imageState = getImageState(Pressed); + // PATCH + // The image changes based on the state, so we use the default every time. + EGUI_BUTTON_IMAGE_STATE imageState = EGBIS_IMAGE_UP; + // END PATCH if ( ButtonImages[(u32)imageState].Texture ) { core::position2d pos(buttonCenter); @@ -548,18 +552,6 @@ void GUIButton::setPressedImage(video::ITexture* image, const core::rect& p setImage(gui::EGBIS_IMAGE_DOWN, image, pos); } -void GUIButton::setHoveredImage(video::ITexture* image) -{ - setImage(gui::EGBIS_IMAGE_UP_MOUSEOVER, image); - setImage(gui::EGBIS_IMAGE_UP_FOCUSED_MOUSEOVER, image); -} - -void GUIButton::setHoveredImage(video::ITexture* image, const core::rect& pos) -{ - setImage(gui::EGBIS_IMAGE_UP_MOUSEOVER, image, pos); - setImage(gui::EGBIS_IMAGE_UP_FOCUSED_MOUSEOVER, image, pos); -} - //! Sets the text displayed by the button void GUIButton::setText(const wchar_t* text) { @@ -618,6 +610,8 @@ void GUIButton::setPressed(bool pressed) skin->getSize(irr::gui::EGDS_BUTTON_PRESSED_IMAGE_OFFSET_Y))); } } + + setFromState(); } } @@ -729,10 +723,12 @@ void GUIButton::deserializeAttributes(io::IAttributes* in, io::SAttributeReadWri } // PATCH -GUIButton* GUIButton::addButton(IGUIEnvironment *environment, const core::rect& rectangle, - IGUIElement* parent, s32 id, const wchar_t* text, const wchar_t *tooltiptext) +GUIButton* GUIButton::addButton(IGUIEnvironment *environment, + const core::rect& rectangle, ISimpleTextureSource *tsrc, + IGUIElement* parent, s32 id, const wchar_t* text, + const wchar_t *tooltiptext) { - GUIButton* button = new GUIButton(environment, parent ? parent : environment->getRootGUIElement(), id, rectangle); + GUIButton* button = new GUIButton(environment, parent ? parent : environment->getRootGUIElement(), id, rectangle, tsrc); if (text) button->setText(text); @@ -749,76 +745,87 @@ void GUIButton::setColor(video::SColor color) for (size_t i = 0; i < 4; i++) { video::SColor base = Environment->getSkin()->getColor((gui::EGUI_DEFAULT_COLOR)i); Colors[i] = base.getInterpolated(color, d); - HoveredColors[i] = irr::video::SColor(Colors[i].getAlpha(), - core::clamp(Colors[i].getRed() * COLOR_HOVERED_MOD, 0, 255), - core::clamp(Colors[i].getGreen() * COLOR_HOVERED_MOD, 0, 255), - core::clamp(Colors[i].getBlue() * COLOR_HOVERED_MOD, 0, 255)); - PressedColors[i] = irr::video::SColor(Colors[i].getAlpha(), - core::clamp(Colors[i].getRed() * COLOR_PRESSED_MOD, 0, 255), - core::clamp(Colors[i].getGreen() * COLOR_PRESSED_MOD, 0, 255), - core::clamp(Colors[i].getBlue() * COLOR_PRESSED_MOD, 0, 255)); - } -} -void GUIButton::setHoveredColor(video::SColor color) -{ - float d = 0.65f; - for (size_t i = 0; i < 4; i++) { - video::SColor base = Environment->getSkin()->getColor((gui::EGUI_DEFAULT_COLOR)i); - HoveredColors[i] = base.getInterpolated(color, d); - } -} -void GUIButton::setPressedColor(video::SColor color) -{ - float d = 0.65f; - for (size_t i = 0; i < 4; i++) { - video::SColor base = Environment->getSkin()->getColor((gui::EGUI_DEFAULT_COLOR)i); - PressedColors[i] = base.getInterpolated(color, d); } } -//! Set element properties from a StyleSpec -void GUIButton::setFromStyle(const StyleSpec& style, ISimpleTextureSource *tsrc) +//! Set element properties from a StyleSpec corresponding to the button state +void GUIButton::setFromState() { + StyleSpec::State state = StyleSpec::STATE_DEFAULT; + + if (isPressed()) + state = static_cast(state | StyleSpec::STATE_PRESSED); + + if (isHovered()) + state = static_cast(state | StyleSpec::STATE_HOVERED); + + setFromStyle(StyleSpec::getStyleFromStatePropagation(Styles, state)); +} + +//! Set element properties from a StyleSpec +void GUIButton::setFromStyle(const StyleSpec& style) +{ + bool hovered = (style.getState() & StyleSpec::STATE_HOVERED) != 0; + bool pressed = (style.getState() & StyleSpec::STATE_PRESSED) != 0; + if (style.isNotDefault(StyleSpec::BGCOLOR)) { + setColor(style.getColor(StyleSpec::BGCOLOR)); - } - if (style.isNotDefault(StyleSpec::BGCOLOR_HOVERED)) { - setHoveredColor(style.getColor(StyleSpec::BGCOLOR_HOVERED)); - } - if (style.isNotDefault(StyleSpec::BGCOLOR_PRESSED)) { - setPressedColor(style.getColor(StyleSpec::BGCOLOR_PRESSED)); + + // If we have a propagated hover/press color, we need to automatically + // lighten/darken it + if (!Styles[style.getState()].isNotDefault(StyleSpec::BGCOLOR)) { + for (size_t i = 0; i < 4; i++) { + if (pressed) { + Colors[i] = multiplyColorValue(Colors[i], COLOR_PRESSED_MOD); + } else if (hovered) { + Colors[i] = multiplyColorValue(Colors[i], COLOR_HOVERED_MOD); + } + } + } + + } else { + for (size_t i = 0; i < 4; i++) { + video::SColor base = + Environment->getSkin()->getColor((gui::EGUI_DEFAULT_COLOR)i); + if (pressed) { + Colors[i] = multiplyColorValue(base, COLOR_PRESSED_MOD); + } else if (hovered) { + Colors[i] = multiplyColorValue(base, COLOR_HOVERED_MOD); + } else { + Colors[i] = base; + } + } } if (style.isNotDefault(StyleSpec::TEXTCOLOR)) { setOverrideColor(style.getColor(StyleSpec::TEXTCOLOR)); + } else { + setOverrideColor(video::SColor(255,255,255,255)); + OverrideColorEnabled = false; } - setNotClipped(style.getBool(StyleSpec::NOCLIP, isNotClipped())); - setDrawBorder(style.getBool(StyleSpec::BORDER, DrawBorder)); + setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); + setDrawBorder(style.getBool(StyleSpec::BORDER, true)); setUseAlphaChannel(style.getBool(StyleSpec::ALPHA, true)); const core::position2di buttonCenter(AbsoluteRect.getCenter()); core::position2d geom(buttonCenter); if (style.isNotDefault(StyleSpec::BGIMG)) { - video::ITexture *texture = style.getTexture(StyleSpec::BGIMG, tsrc); - + video::ITexture *texture = style.getTexture(StyleSpec::BGIMG, + getTextureSource()); setImage(guiScalingImageButton( - Environment->getVideoDriver(), texture, geom.X, geom.Y)); - setScaleImage(true); - } - if (style.isNotDefault(StyleSpec::BGIMG_HOVERED)) { - video::ITexture *hovered_texture = style.getTexture(StyleSpec::BGIMG_HOVERED, tsrc); - - setHoveredImage(guiScalingImageButton( - Environment->getVideoDriver(), hovered_texture, geom.X, geom.Y)); - setScaleImage(true); - } - if (style.isNotDefault(StyleSpec::BGIMG_PRESSED)) { - video::ITexture *pressed_texture = style.getTexture(StyleSpec::BGIMG_PRESSED, tsrc); - - setPressedImage(guiScalingImageButton( - Environment->getVideoDriver(), pressed_texture, geom.X, geom.Y)); + Environment->getVideoDriver(), texture, geom.X, geom.Y)); setScaleImage(true); + } else { + setImage(nullptr); } BgMiddle = style.getRect(StyleSpec::BGIMG_MIDDLE, BgMiddle); } + +//! Set the styles used for each state +void GUIButton::setStyles(const std::array& styles) +{ + Styles = styles; + setFromState(); +} // END PATCH diff --git a/src/gui/guiButton.h b/src/gui/guiButton.h index 3d1f98c32..ef10f926e 100644 --- a/src/gui/guiButton.h +++ b/src/gui/guiButton.h @@ -13,6 +13,7 @@ #include "ITexture.h" #include "SColor.h" #include "guiSkin.h" +#include "StyleSpec.h" using namespace irr; @@ -67,7 +68,6 @@ using namespace irr; #endif class ISimpleTextureSource; -class StyleSpec; class GUIButton : public gui::IGUIButton { @@ -75,7 +75,8 @@ public: //! constructor GUIButton(gui::IGUIEnvironment* environment, gui::IGUIElement* parent, - s32 id, core::rect rectangle, bool noclip=false); + s32 id, core::rect rectangle, ISimpleTextureSource *tsrc, + bool noclip=false); //! destructor virtual ~GUIButton(); @@ -125,16 +126,10 @@ public: //! Sets an image which should be displayed on the button when it is in pressed state. virtual void setPressedImage(video::ITexture* image, const core::rect& pos) override; - //! Sets an image which should be displayed on the button when it is in hovered state. - virtual void setHoveredImage(video::ITexture* image=nullptr); - //! Sets the text displayed by the button virtual void setText(const wchar_t* text) override; // END PATCH - //! Sets an image which should be displayed on the button when it is in hovered state. - virtual void setHoveredImage(video::ITexture* image, const core::rect& pos); - //! Sets the sprite bank used by the button virtual void setSpriteBank(gui::IGUISpriteBank* bank=0) override; @@ -225,22 +220,29 @@ public: void setColor(video::SColor color); // PATCH - void setHoveredColor(video::SColor color); - void setPressedColor(video::SColor color); + //! Set element properties from a StyleSpec corresponding to the button state + void setFromState(); //! Set element properties from a StyleSpec - virtual void setFromStyle(const StyleSpec& style, ISimpleTextureSource *tsrc); + virtual void setFromStyle(const StyleSpec& style); + + //! Set the styles used for each state + void setStyles(const std::array& styles); // END PATCH //! Do not drop returned handle - static GUIButton* addButton(gui::IGUIEnvironment *environment, const core::rect& rectangle, - IGUIElement* parent, s32 id, const wchar_t* text, const wchar_t *tooltiptext=L""); + static GUIButton* addButton(gui::IGUIEnvironment *environment, + const core::rect& rectangle, ISimpleTextureSource *tsrc, + IGUIElement* parent, s32 id, const wchar_t* text, + const wchar_t *tooltiptext=L""); protected: void drawSprite(gui::EGUI_BUTTON_STATE state, u32 startTime, const core::position2di& center); gui::EGUI_BUTTON_IMAGE_STATE getImageState(bool pressed) const; + ISimpleTextureSource *getTextureSource() { return TSrc; } + struct ButtonImage { ButtonImage() : Texture(0), SourceRect(core::rect(0,0,0,0)) @@ -308,6 +310,8 @@ private: ButtonImage ButtonImages[gui::EGBIS_COUNT]; + std::array Styles; + gui::IGUIFont* OverrideFont; bool OverrideColorEnabled; @@ -326,8 +330,8 @@ private: video::SColor Colors[4]; // PATCH - video::SColor HoveredColors[4]; - video::SColor PressedColors[4]; + bool WasHovered = false; + ISimpleTextureSource *TSrc; gui::IGUIStaticText *StaticText; diff --git a/src/gui/guiButtonImage.cpp b/src/gui/guiButtonImage.cpp index 02d920277..2658ad967 100644 --- a/src/gui/guiButtonImage.cpp +++ b/src/gui/guiButtonImage.cpp @@ -30,8 +30,9 @@ using namespace irr; using namespace gui; GUIButtonImage::GUIButtonImage(gui::IGUIEnvironment *environment, - gui::IGUIElement *parent, s32 id, core::rect rectangle, bool noclip) - : GUIButton (environment, parent, id, rectangle, noclip) + gui::IGUIElement *parent, s32 id, core::rect rectangle, + ISimpleTextureSource *tsrc, bool noclip) + : GUIButton (environment, parent, id, rectangle, tsrc, noclip) { m_image = Environment->addImage( core::rect(0,0,rectangle.getWidth(),rectangle.getHeight()), this); @@ -39,100 +40,38 @@ GUIButtonImage::GUIButtonImage(gui::IGUIEnvironment *environment, sendToBack(m_image); } -bool GUIButtonImage::OnEvent(const SEvent& event) -{ - bool result = GUIButton::OnEvent(event); - - EGUI_BUTTON_IMAGE_STATE imageState = getImageState(isPressed(), m_foreground_images); - video::ITexture *texture = m_foreground_images[(u32)imageState].Texture; - if (texture != nullptr) - { - m_image->setImage(texture); - } - - m_image->setVisible(texture != nullptr); - - return result; -} - -void GUIButtonImage::setForegroundImage(EGUI_BUTTON_IMAGE_STATE state, - video::ITexture *image, const core::rect &sourceRect) -{ - if (state >= EGBIS_COUNT) - return; - - if (image) - image->grab(); - - u32 stateIdx = (u32)state; - if (m_foreground_images[stateIdx].Texture) - m_foreground_images[stateIdx].Texture->drop(); - - m_foreground_images[stateIdx].Texture = image; - m_foreground_images[stateIdx].SourceRect = sourceRect; - - EGUI_BUTTON_IMAGE_STATE imageState = getImageState(isPressed(), m_foreground_images); - if (imageState == stateIdx) - m_image->setImage(image); -} - void GUIButtonImage::setForegroundImage(video::ITexture *image) { - setForegroundImage(gui::EGBIS_IMAGE_UP, image); + if (image == m_foreground_image) + return; + + if (image != nullptr) + image->grab(); + + if (m_foreground_image != nullptr) + m_foreground_image->drop(); + + m_foreground_image = image; + m_image->setImage(image); } -void GUIButtonImage::setForegroundImage(video::ITexture *image, const core::rect &pos) +//! Set element properties from a StyleSpec +void GUIButtonImage::setFromStyle(const StyleSpec& style) { - setForegroundImage(gui::EGBIS_IMAGE_UP, image, pos); -} - -void GUIButtonImage::setPressedForegroundImage(video::ITexture *image) -{ - setForegroundImage(gui::EGBIS_IMAGE_DOWN, image); -} - -void GUIButtonImage::setPressedForegroundImage(video::ITexture *image, const core::rect &pos) -{ - setForegroundImage(gui::EGBIS_IMAGE_DOWN, image, pos); -} - -void GUIButtonImage::setHoveredForegroundImage(video::ITexture *image) -{ - setForegroundImage(gui::EGBIS_IMAGE_UP_MOUSEOVER, image); - setForegroundImage(gui::EGBIS_IMAGE_UP_FOCUSED_MOUSEOVER, image); -} - -void GUIButtonImage::setHoveredForegroundImage(video::ITexture *image, const core::rect &pos) -{ - setForegroundImage(gui::EGBIS_IMAGE_UP_MOUSEOVER, image, pos); - setForegroundImage(gui::EGBIS_IMAGE_UP_FOCUSED_MOUSEOVER, image, pos); -} - -void GUIButtonImage::setFromStyle(const StyleSpec &style, ISimpleTextureSource *tsrc) -{ - GUIButton::setFromStyle(style, tsrc); + GUIButton::setFromStyle(style); video::IVideoDriver *driver = Environment->getVideoDriver(); const core::position2di buttonCenter(AbsoluteRect.getCenter()); core::position2d geom(buttonCenter); if (style.isNotDefault(StyleSpec::FGIMG)) { - video::ITexture *texture = style.getTexture(StyleSpec::FGIMG, tsrc); + video::ITexture *texture = style.getTexture(StyleSpec::FGIMG, + getTextureSource()); setForegroundImage(guiScalingImageButton(driver, texture, geom.X, geom.Y)); setScaleImage(true); - } - if (style.isNotDefault(StyleSpec::FGIMG_HOVERED)) { - video::ITexture *hovered_texture = style.getTexture(StyleSpec::FGIMG_HOVERED, tsrc); - - setHoveredForegroundImage(guiScalingImageButton(driver, hovered_texture, geom.X, geom.Y)); - setScaleImage(true); - } - if (style.isNotDefault(StyleSpec::FGIMG_PRESSED)) { - video::ITexture *pressed_texture = style.getTexture(StyleSpec::FGIMG_PRESSED, tsrc); - - setPressedForegroundImage(guiScalingImageButton(driver, pressed_texture, geom.X, geom.Y)); - setScaleImage(true); + } else { + setForegroundImage(nullptr); } } @@ -143,11 +82,12 @@ void GUIButtonImage::setScaleImage(bool scaleImage) } GUIButtonImage *GUIButtonImage::addButton(IGUIEnvironment *environment, - const core::rect &rectangle, IGUIElement *parent, s32 id, - const wchar_t *text, const wchar_t *tooltiptext) + const core::rect &rectangle, ISimpleTextureSource *tsrc, + IGUIElement *parent, s32 id, const wchar_t *text, + const wchar_t *tooltiptext) { GUIButtonImage *button = new GUIButtonImage(environment, - parent ? parent : environment->getRootGUIElement(), id, rectangle); + parent ? parent : environment->getRootGUIElement(), id, rectangle, tsrc); if (text) button->setText(text); diff --git a/src/gui/guiButtonImage.h b/src/gui/guiButtonImage.h index 15901ee5d..a948d772b 100644 --- a/src/gui/guiButtonImage.h +++ b/src/gui/guiButtonImage.h @@ -27,33 +27,23 @@ class GUIButtonImage : public GUIButton public: //! constructor GUIButtonImage(gui::IGUIEnvironment *environment, gui::IGUIElement *parent, - s32 id, core::rect rectangle, bool noclip = false); - - virtual bool OnEvent(const SEvent& event) override; - - void setForegroundImage(gui::EGUI_BUTTON_IMAGE_STATE state, - video::ITexture *image = nullptr, - const core::rect &sourceRect = core::rect(0, 0, 0, 0)); + s32 id, core::rect rectangle, ISimpleTextureSource *tsrc, + bool noclip = false); void setForegroundImage(video::ITexture *image = nullptr); - void setForegroundImage(video::ITexture *image, const core::rect &pos); - void setPressedForegroundImage(video::ITexture *image = nullptr); - void setPressedForegroundImage(video::ITexture *image, const core::rect &pos); - - void setHoveredForegroundImage(video::ITexture *image = nullptr); - void setHoveredForegroundImage(video::ITexture *image, const core::rect &pos); - - virtual void setFromStyle(const StyleSpec &style, ISimpleTextureSource *tsrc) override; + //! Set element properties from a StyleSpec + virtual void setFromStyle(const StyleSpec& style) override; virtual void setScaleImage(bool scaleImage=true) override; //! Do not drop returned handle static GUIButtonImage *addButton(gui::IGUIEnvironment *environment, - const core::rect &rectangle, IGUIElement *parent, s32 id, - const wchar_t *text, const wchar_t *tooltiptext = L""); + const core::rect &rectangle, ISimpleTextureSource *tsrc, + IGUIElement *parent, s32 id, const wchar_t *text, + const wchar_t *tooltiptext = L""); private: - ButtonImage m_foreground_images[gui::EGBIS_COUNT]; + video::ITexture *m_foreground_image = nullptr; gui::IGUIImage *m_image; }; diff --git a/src/gui/guiButtonItemImage.cpp b/src/gui/guiButtonItemImage.cpp index 5c48b2acd..d8b9042ac 100644 --- a/src/gui/guiButtonItemImage.cpp +++ b/src/gui/guiButtonItemImage.cpp @@ -28,9 +28,11 @@ with this program; if not, write to the Free Software Foundation, Inc., using namespace irr; using namespace gui; -GUIButtonItemImage::GUIButtonItemImage(gui::IGUIEnvironment *environment, gui::IGUIElement *parent, - s32 id, core::rect rectangle, std::string item, Client *client, bool noclip) - : GUIButton (environment, parent, id, rectangle, noclip) +GUIButtonItemImage::GUIButtonItemImage(gui::IGUIEnvironment *environment, + gui::IGUIElement *parent, s32 id, core::rect rectangle, + ISimpleTextureSource *tsrc, std::string item, Client *client, + bool noclip) + : GUIButton (environment, parent, id, rectangle, tsrc, noclip) { m_image = new GUIItemImage(environment, this, id, core::rect(0,0,rectangle.getWidth(),rectangle.getHeight()), @@ -42,12 +44,13 @@ GUIButtonItemImage::GUIButtonItemImage(gui::IGUIEnvironment *environment, gui::I } GUIButtonItemImage *GUIButtonItemImage::addButton(IGUIEnvironment *environment, - const core::rect &rectangle, IGUIElement *parent, s32 id, - const wchar_t *text, std::string item, Client *client) + const core::rect &rectangle, ISimpleTextureSource *tsrc, + IGUIElement *parent, s32 id, const wchar_t *text, std::string item, + Client *client) { GUIButtonItemImage *button = new GUIButtonItemImage(environment, parent ? parent : environment->getRootGUIElement(), - id, rectangle, item, client); + id, rectangle, tsrc, item, client); if (text) button->setText(text); diff --git a/src/gui/guiButtonItemImage.h b/src/gui/guiButtonItemImage.h index 0a61874da..9cd0f6188 100644 --- a/src/gui/guiButtonItemImage.h +++ b/src/gui/guiButtonItemImage.h @@ -30,13 +30,14 @@ class GUIButtonItemImage : public GUIButton public: //! constructor GUIButtonItemImage(gui::IGUIEnvironment *environment, gui::IGUIElement *parent, - s32 id, core::rect rectangle, std::string item, - Client *client, bool noclip = false); + s32 id, core::rect rectangle, ISimpleTextureSource *tsrc, + std::string item, Client *client, bool noclip = false); //! Do not drop returned handle static GUIButtonItemImage *addButton(gui::IGUIEnvironment *environment, - const core::rect &rectangle, IGUIElement *parent, s32 id, - const wchar_t *text, std::string item, Client *client); + const core::rect &rectangle, ISimpleTextureSource *tsrc, + IGUIElement *parent, s32 id, const wchar_t *text, std::string item, + Client *client); private: std::string m_item_name; diff --git a/src/gui/guiConfirmRegistration.cpp b/src/gui/guiConfirmRegistration.cpp index 0d8bdf54e..58ac42740 100644 --- a/src/gui/guiConfirmRegistration.cpp +++ b/src/gui/guiConfirmRegistration.cpp @@ -40,10 +40,10 @@ const int ID_message = 266; GUIConfirmRegistration::GUIConfirmRegistration(gui::IGUIEnvironment *env, gui::IGUIElement *parent, s32 id, IMenuManager *menumgr, Client *client, const std::string &playername, const std::string &password, - bool *aborted) : + bool *aborted, ISimpleTextureSource *tsrc) : GUIModalMenu(env, parent, id, menumgr), m_client(client), m_playername(playername), m_password(password), - m_aborted(aborted) + m_aborted(aborted), m_tsrc(tsrc) { #ifdef __ANDROID__ m_touchscreen_visible = false; @@ -130,14 +130,14 @@ void GUIConfirmRegistration::regenerateGui(v2u32 screensize) core::rect rect2(0, 0, 230 * s, 35 * s); rect2 = rect2 + v2s32(size.X / 2 - 220 * s, ypos); text = wgettext("Register and Join"); - GUIButton::addButton(Environment, rect2, this, ID_confirm, text); + GUIButton::addButton(Environment, rect2, m_tsrc, this, ID_confirm, text); delete[] text; } { core::rect rect2(0, 0, 120 * s, 35 * s); rect2 = rect2 + v2s32(size.X / 2 + 70 * s, ypos); text = wgettext("Cancel"); - GUIButton::addButton(Environment, rect2, this, ID_cancel, text); + GUIButton::addButton(Environment, rect2, m_tsrc, this, ID_cancel, text); delete[] text; } { diff --git a/src/gui/guiConfirmRegistration.h b/src/gui/guiConfirmRegistration.h index 42c07e4ed..d8387201d 100644 --- a/src/gui/guiConfirmRegistration.h +++ b/src/gui/guiConfirmRegistration.h @@ -25,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include class Client; +class ISimpleTextureSource; class GUIConfirmRegistration : public GUIModalMenu { @@ -32,7 +33,7 @@ public: GUIConfirmRegistration(gui::IGUIEnvironment *env, gui::IGUIElement *parent, s32 id, IMenuManager *menumgr, Client *client, const std::string &playername, const std::string &password, - bool *aborted); + bool *aborted, ISimpleTextureSource *tsrc); ~GUIConfirmRegistration(); void removeChildren(); @@ -63,4 +64,5 @@ private: const std::string &m_password; bool *m_aborted = nullptr; std::wstring m_pass_confirm = L""; + ISimpleTextureSource *m_tsrc; }; diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index acb153569..6a383a791 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -553,7 +553,7 @@ void GUIFormSpecMenu::parseCheckbox(parserData* data, const std::string &element gui::IGUICheckBox *e = Environment->addCheckBox(fselected, rect, this, spec.fid, spec.flabel.c_str()); - auto style = getStyleForElement("checkbox", name); + auto style = getDefaultStyleForElement("checkbox", name); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); if (spec.fname == data->focused_fieldname) { @@ -613,7 +613,7 @@ void GUIFormSpecMenu::parseScrollBar(parserData* data, const std::string &elemen GUIScrollBar *e = new GUIScrollBar(Environment, this, spec.fid, rect, is_horizontal, true); - auto style = getStyleForElement("scrollbar", name); + auto style = getDefaultStyleForElement("scrollbar", name); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); e->setArrowsVisible(data->scrollbar_options.arrow_visiblity); @@ -740,7 +740,7 @@ void GUIFormSpecMenu::parseImage(parserData* data, const std::string &element) gui::IGUIImage *e = Environment->addImage(rect, this, spec.fid, 0, true); e->setImage(texture); e->setScaleImage(true); - auto style = getStyleForElement("image", spec.fname); + auto style = getDefaultStyleForElement("image", spec.fname); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, m_formspec_version < 3)); m_fields.push_back(spec); @@ -776,7 +776,7 @@ void GUIFormSpecMenu::parseImage(parserData* data, const std::string &element) ); gui::IGUIImage *e = Environment->addImage(texture, pos, true, this, spec.fid, 0); - auto style = getStyleForElement("image", spec.fname); + auto style = getDefaultStyleForElement("image", spec.fname); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, m_formspec_version < 3)); m_fields.push_back(spec); @@ -841,7 +841,7 @@ void GUIFormSpecMenu::parseAnimatedImage(parserData *data, const std::string &el if (parts.size() >= 7) e->setFrameIndex(stoi(parts[6]) - 1); - auto style = getStyleForElement("animated_image", spec.fname, "image"); + auto style = getDefaultStyleForElement("animated_image", spec.fname, "image"); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); e->drop(); @@ -888,7 +888,7 @@ void GUIFormSpecMenu::parseItemImage(parserData* data, const std::string &elemen GUIItemImage *e = new GUIItemImage(Environment, this, spec.fid, core::rect(pos, pos + geom), name, m_font, m_client); - auto style = getStyleForElement("item_image", spec.fname); + auto style = getDefaultStyleForElement("item_image", spec.fname); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); // item images should let events through @@ -949,10 +949,11 @@ void GUIFormSpecMenu::parseButton(parserData* data, const std::string &element, if(type == "button_exit") spec.is_exit = true; - GUIButton *e = GUIButton::addButton(Environment, rect, this, spec.fid, spec.flabel.c_str()); + GUIButton *e = GUIButton::addButton(Environment, rect, m_tsrc, this, + spec.fid, spec.flabel.c_str()); auto style = getStyleForElement(type, name, (type != "button") ? "button" : ""); - e->setFromStyle(style, m_tsrc); + e->setStyles(style); if (spec.fname == data->focused_fieldname) { Environment->setFocus(e); @@ -1155,7 +1156,7 @@ void GUIFormSpecMenu::parseTable(parserData* data, const std::string &element) if (!str_initial_selection.empty() && str_initial_selection != "0") e->setSelected(stoi(str_initial_selection)); - auto style = getStyleForElement("table", name); + auto style = getDefaultStyleForElement("table", name); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); m_tables.emplace_back(spec, e); @@ -1231,7 +1232,7 @@ void GUIFormSpecMenu::parseTextList(parserData* data, const std::string &element if (!str_initial_selection.empty() && str_initial_selection != "0") e->setSelected(stoi(str_initial_selection)); - auto style = getStyleForElement("textlist", name); + auto style = getDefaultStyleForElement("textlist", name); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); m_tables.emplace_back(spec, e); @@ -1306,7 +1307,7 @@ void GUIFormSpecMenu::parseDropDown(parserData* data, const std::string &element if (!str_initial_selection.empty()) e->setSelected(stoi(str_initial_selection)-1); - auto style = getStyleForElement("dropdown", name); + auto style = getDefaultStyleForElement("dropdown", name); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); m_fields.push_back(spec); @@ -1394,7 +1395,7 @@ void GUIFormSpecMenu::parsePwdField(parserData* data, const std::string &element e->setPasswordBox(true,L'*'); - auto style = getStyleForElement("pwdfield", name, "field"); + auto style = getDefaultStyleForElement("pwdfield", name, "field"); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); e->setDrawBorder(style.getBool(StyleSpec::BORDER, true)); e->setOverrideColor(style.getColor(StyleSpec::TEXTCOLOR, video::SColor(0xFFFFFFFF))); @@ -1454,7 +1455,7 @@ void GUIFormSpecMenu::createTextField(parserData *data, FieldSpec &spec, } } - auto style = getStyleForElement(is_multiline ? "textarea" : "field", spec.fname); + auto style = getDefaultStyleForElement(is_multiline ? "textarea" : "field", spec.fname); if (e) { if (is_editable && spec.fname == data->focused_fieldname) @@ -1752,7 +1753,7 @@ void GUIFormSpecMenu::parseLabel(parserData* data, const std::string &element) spec.flabel.c_str(), rect, false, false, this, spec.fid); e->setTextAlignment(gui::EGUIA_UPPERLEFT, gui::EGUIA_CENTER); - auto style = getStyleForElement("label", spec.fname); + auto style = getDefaultStyleForElement("label", spec.fname); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); e->setOverrideColor(style.getColor(StyleSpec::TEXTCOLOR, video::SColor(0xFFFFFFFF))); @@ -1832,7 +1833,7 @@ void GUIFormSpecMenu::parseVertLabel(parserData* data, const std::string &elemen rect, false, false, this, spec.fid); e->setTextAlignment(gui::EGUIA_CENTER, gui::EGUIA_CENTER); - auto style = getStyleForElement("vertlabel", spec.fname, "label"); + auto style = getDefaultStyleForElement("vertlabel", spec.fname, "label"); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); e->setOverrideColor(style.getColor(StyleSpec::TEXTCOLOR, video::SColor(0xFFFFFFFF))); @@ -1863,17 +1864,8 @@ void GUIFormSpecMenu::parseImageButton(parserData* data, const std::string &elem MY_CHECKPOS("imagebutton",0); MY_CHECKGEOM("imagebutton",1); - bool noclip = false; - bool drawborder = true; std::string pressed_image_name; - if (parts.size() >= 7) { - if (parts[5] == "true") - noclip = true; - if (parts[6] == "false") - drawborder = false; - } - if (parts.size() >= 8) { pressed_image_name = parts[7]; } @@ -1911,35 +1903,30 @@ void GUIFormSpecMenu::parseImageButton(parserData* data, const std::string &elem if (type == "image_button_exit") spec.is_exit = true; - GUIButtonImage *e = GUIButtonImage::addButton(Environment, rect, this, spec.fid, spec.flabel.c_str()); + GUIButtonImage *e = GUIButtonImage::addButton(Environment, rect, m_tsrc, + this, spec.fid, spec.flabel.c_str()); if (spec.fname == data->focused_fieldname) { Environment->setFocus(e); } auto style = getStyleForElement("image_button", spec.fname); - e->setFromStyle(style, m_tsrc); - // We explicitly handle these arguments *after* the style properties in - // order to override them if they are provided + // Override style properties with values specified directly in the element if (!image_name.empty()) - { - video::ITexture *texture = m_tsrc->getTexture(image_name); - e->setForegroundImage(guiScalingImageButton( - Environment->getVideoDriver(), texture, geom.X, geom.Y)); - } - if (!pressed_image_name.empty()) { - video::ITexture *pressed_texture = m_tsrc->getTexture(pressed_image_name); - e->setPressedForegroundImage(guiScalingImageButton( - Environment->getVideoDriver(), pressed_texture, geom.X, geom.Y)); - } - e->setScaleImage(true); + style[StyleSpec::STATE_DEFAULT].set(StyleSpec::FGIMG, image_name); + + if (!pressed_image_name.empty()) + style[StyleSpec::STATE_PRESSED].set(StyleSpec::FGIMG, pressed_image_name); if (parts.size() >= 7) { - e->setNotClipped(noclip); - e->setDrawBorder(drawborder); + style[StyleSpec::STATE_DEFAULT].set(StyleSpec::NOCLIP, parts[5]); + style[StyleSpec::STATE_DEFAULT].set(StyleSpec::BORDER, parts[6]); } + e->setStyles(style); + e->setScaleImage(true); + m_fields.push_back(spec); return; } @@ -2033,7 +2020,7 @@ void GUIFormSpecMenu::parseTabHeader(parserData* data, const std::string &elemen Environment->setFocus(e); } - auto style = getStyleForElement("tabheader", name); + auto style = getDefaultStyleForElement("tabheader", name); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, true)); for (const std::string &button : buttons) { @@ -2118,10 +2105,12 @@ void GUIFormSpecMenu::parseItemImageButton(parserData* data, const std::string & 2 ); - GUIButtonItemImage *e_btn = GUIButtonItemImage::addButton(Environment, rect, this, spec_btn.fid, spec_btn.flabel.c_str(), item_name, m_client); + GUIButtonItemImage *e_btn = GUIButtonItemImage::addButton(Environment, + rect, m_tsrc, this, spec_btn.fid, spec_btn.flabel.c_str(), + item_name, m_client); auto style = getStyleForElement("item_image_button", spec_btn.fname, "image_button"); - e_btn->setFromStyle(style, m_tsrc); + e_btn->setStyles(style); if (spec_btn.fname == data->focused_fieldname) { Environment->setFocus(e_btn); @@ -2177,7 +2166,7 @@ void GUIFormSpecMenu::parseBox(parserData* data, const std::string &element) GUIBox *e = new GUIBox(Environment, this, spec.fid, rect, tmp_color); - auto style = getStyleForElement("box", spec.fname); + auto style = getDefaultStyleForElement("box", spec.fname); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, m_formspec_version < 3)); e->drop(); @@ -2469,6 +2458,7 @@ bool GUIFormSpecMenu::parseStyle(parserData *data, const std::string &element, b StyleSpec spec; + // Parse properties for (size_t i = 1; i < parts.size(); i++) { size_t equal_pos = parts[i].find('='); if (equal_pos == std::string::npos) { @@ -2500,16 +2490,92 @@ bool GUIFormSpecMenu::parseStyle(parserData *data, const std::string &element, b for (size_t sel = 0; sel < selectors.size(); sel++) { std::string selector = trim(selectors[sel]); - if (selector.empty()) { - errorstream << "Invalid style element (Empty selector): '" << element - << "'" << std::endl; + // Copy the style properties to a new StyleSpec + // This allows a separate state mask per-selector + StyleSpec selector_spec = spec; + + // Parse state information, if it exists + bool state_valid = true; + size_t state_pos = selector.find(':'); + if (state_pos != std::string::npos) { + std::string state_str = selector.substr(state_pos + 1); + selector = selector.substr(0, state_pos); + + if (state_str.empty()) { + errorstream << "Invalid style element (Invalid state): '" << element + << "'" << std::endl; + state_valid = false; + } else { + std::vector states = split(state_str, '+'); + for (std::string &state : states) { + StyleSpec::State converted = StyleSpec::getStateByName(state); + if (converted == StyleSpec::STATE_INVALID) { + infostream << "Unknown style state " << state << + " in element '" << element << "'" << std::endl; + state_valid = false; + break; + } + + selector_spec.addState(converted); + } + } + } + + if(!state_valid) { + // Skip this selector continue; } if (style_type) { - theme_by_type[selector] |= spec; + theme_by_type[selector].push_back(selector_spec); } else { - theme_by_name[selector] |= spec; + theme_by_name[selector].push_back(selector_spec); + } + + // Backwards-compatibility for existing _hovered/_pressed properties + if (selector_spec.hasProperty(StyleSpec::BGCOLOR_HOVERED) + || selector_spec.hasProperty(StyleSpec::BGIMG_HOVERED) + || selector_spec.hasProperty(StyleSpec::FGIMG_HOVERED)) { + StyleSpec hover_spec; + hover_spec.addState(StyleSpec::STATE_HOVERED); + + if (selector_spec.hasProperty(StyleSpec::BGCOLOR_HOVERED)) { + hover_spec.set(StyleSpec::BGCOLOR, selector_spec.get(StyleSpec::BGCOLOR_HOVERED, "")); + } + if (selector_spec.hasProperty(StyleSpec::BGIMG_HOVERED)) { + hover_spec.set(StyleSpec::BGIMG, selector_spec.get(StyleSpec::BGIMG_HOVERED, "")); + } + if (selector_spec.hasProperty(StyleSpec::FGIMG_HOVERED)) { + hover_spec.set(StyleSpec::FGIMG, selector_spec.get(StyleSpec::FGIMG_HOVERED, "")); + } + + if (style_type) { + theme_by_type[selector].push_back(hover_spec); + } else { + theme_by_name[selector].push_back(hover_spec); + } + } + if (selector_spec.hasProperty(StyleSpec::BGCOLOR_PRESSED) + || selector_spec.hasProperty(StyleSpec::BGIMG_PRESSED) + || selector_spec.hasProperty(StyleSpec::FGIMG_PRESSED)) { + StyleSpec press_spec; + press_spec.addState(StyleSpec::STATE_PRESSED); + + if (selector_spec.hasProperty(StyleSpec::BGCOLOR_PRESSED)) { + press_spec.set(StyleSpec::BGCOLOR, selector_spec.get(StyleSpec::BGCOLOR_PRESSED, "")); + } + if (selector_spec.hasProperty(StyleSpec::BGIMG_PRESSED)) { + press_spec.set(StyleSpec::BGIMG, selector_spec.get(StyleSpec::BGIMG_PRESSED, "")); + } + if (selector_spec.hasProperty(StyleSpec::FGIMG_PRESSED)) { + press_spec.set(StyleSpec::FGIMG, selector_spec.get(StyleSpec::FGIMG_PRESSED, "")); + } + + if (style_type) { + theme_by_type[selector].push_back(press_spec); + } else { + theme_by_name[selector].push_back(press_spec); + } } } @@ -3080,7 +3146,7 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize) size.X / 2 - 70 + 140, pos.Y + m_btn_height * 2 ); const wchar_t *text = wgettext("Proceed"); - GUIButton::addButton(Environment, mydata.rect, this, 257, text); + GUIButton::addButton(Environment, mydata.rect, m_tsrc, this, 257, text); delete[] text; } } @@ -4432,25 +4498,34 @@ std::wstring GUIFormSpecMenu::getLabelByID(s32 id) return L""; } -StyleSpec GUIFormSpecMenu::getStyleForElement(const std::string &type, +StyleSpec GUIFormSpecMenu::getDefaultStyleForElement(const std::string &type, const std::string &name, const std::string &parent_type) { - StyleSpec ret; + return getStyleForElement(type, name, parent_type)[StyleSpec::STATE_DEFAULT]; +} + +std::array GUIFormSpecMenu::getStyleForElement(const std::string &type, + const std::string &name, const std::string &parent_type) +{ + std::array ret; if (!parent_type.empty()) { auto it = theme_by_type.find(parent_type); if (it != theme_by_type.end()) { - ret |= it->second; + for (const StyleSpec &spec : it->second) + ret[(u32)spec.getState()] |= spec; } } auto it = theme_by_type.find(type); if (it != theme_by_type.end()) { - ret |= it->second; + for (const StyleSpec &spec : it->second) + ret[(u32)spec.getState()] |= spec; } it = theme_by_name.find(name); if (it != theme_by_name.end()) { - ret |= it->second; + for (const StyleSpec &spec : it->second) + ret[(u32)spec.getState()] |= spec; } return ret; diff --git a/src/gui/guiFormSpecMenu.h b/src/gui/guiFormSpecMenu.h index 17bfef205..b3bf67110 100644 --- a/src/gui/guiFormSpecMenu.h +++ b/src/gui/guiFormSpecMenu.h @@ -274,11 +274,13 @@ protected: v2s32 getRealCoordinateBasePos(const std::vector &v_pos); v2s32 getRealCoordinateGeometry(const std::vector &v_geom); - std::unordered_map theme_by_type; - std::unordered_map theme_by_name; + std::unordered_map> theme_by_type; + std::unordered_map> theme_by_name; std::unordered_set property_warned; - StyleSpec getStyleForElement(const std::string &type, + StyleSpec getDefaultStyleForElement(const std::string &type, + const std::string &name="", const std::string &parent_type=""); + std::array getStyleForElement(const std::string &type, const std::string &name="", const std::string &parent_type=""); v2s32 padding; diff --git a/src/gui/guiKeyChangeMenu.cpp b/src/gui/guiKeyChangeMenu.cpp index 3f270fc7a..da0e25c23 100644 --- a/src/gui/guiKeyChangeMenu.cpp +++ b/src/gui/guiKeyChangeMenu.cpp @@ -82,8 +82,10 @@ enum }; GUIKeyChangeMenu::GUIKeyChangeMenu(gui::IGUIEnvironment* env, - gui::IGUIElement* parent, s32 id, IMenuManager *menumgr) : -GUIModalMenu(env, parent, id, menumgr) + gui::IGUIElement* parent, s32 id, IMenuManager *menumgr, + ISimpleTextureSource *tsrc) : + GUIModalMenu(env, parent, id, menumgr), + m_tsrc(tsrc) { init_keys(); } @@ -157,7 +159,7 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize) core::rect rect(0, 0, 100 * s, 30 * s); rect += topleft + v2s32(offset.X + 150 * s, offset.Y - 5 * s); const wchar_t *text = wgettext(k->key.name()); - k->button = GUIButton::addButton(Environment, rect, this, k->id, text); + k->button = GUIButton::addButton(Environment, rect, m_tsrc, this, k->id, text); delete[] text; } if ((i + 1) % KMaxButtonPerColumns == 0) { @@ -217,14 +219,14 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize) core::rect rect(0, 0, 100 * s, 30 * s); rect += topleft + v2s32(size.X / 2 - 105 * s, size.Y - 40 * s); const wchar_t *text = wgettext("Save"); - GUIButton::addButton(Environment, rect, this, GUI_ID_BACK_BUTTON, text); + GUIButton::addButton(Environment, rect, m_tsrc, this, GUI_ID_BACK_BUTTON, text); delete[] text; } { core::rect rect(0, 0, 100 * s, 30 * s); rect += topleft + v2s32(size.X / 2 + 5 * s, size.Y - 40 * s); const wchar_t *text = wgettext("Cancel"); - GUIButton::addButton(Environment, rect, this, GUI_ID_ABORT_BUTTON, text); + GUIButton::addButton(Environment, rect, m_tsrc, this, GUI_ID_ABORT_BUTTON, text); delete[] text; } } diff --git a/src/gui/guiKeyChangeMenu.h b/src/gui/guiKeyChangeMenu.h index 528827fd9..1c0f40247 100644 --- a/src/gui/guiKeyChangeMenu.h +++ b/src/gui/guiKeyChangeMenu.h @@ -28,6 +28,8 @@ #include #include +class ISimpleTextureSource; + struct key_setting { int id; @@ -41,7 +43,7 @@ class GUIKeyChangeMenu : public GUIModalMenu { public: GUIKeyChangeMenu(gui::IGUIEnvironment *env, gui::IGUIElement *parent, s32 id, - IMenuManager *menumgr); + IMenuManager *menumgr, ISimpleTextureSource *tsrc); ~GUIKeyChangeMenu(); void removeChildren(); @@ -74,4 +76,5 @@ private: key_setting *active_key = nullptr; gui::IGUIStaticText *key_used_text = nullptr; std::vector key_settings; + ISimpleTextureSource *m_tsrc; }; diff --git a/src/gui/guiPasswordChange.cpp b/src/gui/guiPasswordChange.cpp index af91ce84c..965a2d6f7 100644 --- a/src/gui/guiPasswordChange.cpp +++ b/src/gui/guiPasswordChange.cpp @@ -38,10 +38,12 @@ const int ID_cancel = 261; GUIPasswordChange::GUIPasswordChange(gui::IGUIEnvironment* env, gui::IGUIElement* parent, s32 id, IMenuManager *menumgr, - Client* client + Client* client, + ISimpleTextureSource *tsrc ): GUIModalMenu(env, parent, id, menumgr), - m_client(client) + m_client(client), + m_tsrc(tsrc) { } @@ -146,14 +148,14 @@ void GUIPasswordChange::regenerateGui(v2u32 screensize) core::rect rect(0, 0, 100 * s, 30 * s); rect = rect + v2s32(size.X / 4 + 56 * s, ypos); text = wgettext("Change"); - GUIButton::addButton(Environment, rect, this, ID_change, text); + GUIButton::addButton(Environment, rect, m_tsrc, this, ID_change, text); delete[] text; } { core::rect rect(0, 0, 100 * s, 30 * s); rect = rect + v2s32(size.X / 4 + 185 * s, ypos); text = wgettext("Cancel"); - GUIButton::addButton(Environment, rect, this, ID_cancel, text); + GUIButton::addButton(Environment, rect, m_tsrc, this, ID_cancel, text); delete[] text; } diff --git a/src/gui/guiPasswordChange.h b/src/gui/guiPasswordChange.h index 58541a399..7141100c0 100644 --- a/src/gui/guiPasswordChange.h +++ b/src/gui/guiPasswordChange.h @@ -23,12 +23,14 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include class Client; +class ISimpleTextureSource; class GUIPasswordChange : public GUIModalMenu { public: GUIPasswordChange(gui::IGUIEnvironment *env, gui::IGUIElement *parent, s32 id, - IMenuManager *menumgr, Client *client); + IMenuManager *menumgr, Client *client, + ISimpleTextureSource *tsrc); ~GUIPasswordChange(); void removeChildren(); @@ -57,4 +59,5 @@ private: std::wstring m_oldpass = L""; std::wstring m_newpass = L""; std::wstring m_newpass_confirm = L""; + ISimpleTextureSource *m_tsrc; }; diff --git a/src/gui/guiVolumeChange.cpp b/src/gui/guiVolumeChange.cpp index 9428cde83..07b11248c 100644 --- a/src/gui/guiVolumeChange.cpp +++ b/src/gui/guiVolumeChange.cpp @@ -38,9 +38,10 @@ const int ID_soundMuteButton = 266; GUIVolumeChange::GUIVolumeChange(gui::IGUIEnvironment* env, gui::IGUIElement* parent, s32 id, - IMenuManager *menumgr + IMenuManager *menumgr, ISimpleTextureSource *tsrc ): - GUIModalMenu(env, parent, id, menumgr) + GUIModalMenu(env, parent, id, menumgr), + m_tsrc(tsrc) { } @@ -104,7 +105,7 @@ void GUIVolumeChange::regenerateGui(v2u32 screensize) core::rect rect(0, 0, 80 * s, 30 * s); rect = rect + v2s32(size.X / 2 - 80 * s / 2, size.Y / 2 + 55 * s); const wchar_t *text = wgettext("Exit"); - GUIButton::addButton(Environment, rect, this, ID_soundExitButton, text); + GUIButton::addButton(Environment, rect, m_tsrc, this, ID_soundExitButton, text); delete[] text; } { diff --git a/src/gui/guiVolumeChange.h b/src/gui/guiVolumeChange.h index f4f4e9eea..466e17f9d 100644 --- a/src/gui/guiVolumeChange.h +++ b/src/gui/guiVolumeChange.h @@ -23,12 +23,14 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "modalMenu.h" #include +class ISimpleTextureSource; + class GUIVolumeChange : public GUIModalMenu { public: GUIVolumeChange(gui::IGUIEnvironment* env, gui::IGUIElement* parent, s32 id, - IMenuManager *menumgr); + IMenuManager *menumgr, ISimpleTextureSource *tsrc); ~GUIVolumeChange(); void removeChildren(); @@ -46,4 +48,7 @@ public: protected: std::wstring getLabelByID(s32 id) { return L""; } std::string getNameByID(s32 id) { return ""; } + +private: + ISimpleTextureSource *m_tsrc; }; diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp index 76db7ed13..867e84e13 100644 --- a/src/script/lua_api/l_mainmenu.cpp +++ b/src/script/lua_api/l_mainmenu.cpp @@ -571,9 +571,10 @@ int ModApiMainMenu::l_show_keys_menu(lua_State *L) sanity_check(engine != NULL); GUIKeyChangeMenu *kmenu = new GUIKeyChangeMenu(RenderingEngine::get_gui_env(), - engine->m_parent, - -1, - engine->m_menumanager); + engine->m_parent, + -1, + engine->m_menumanager, + engine->m_texture_source); kmenu->drop(); return 0; } @@ -904,12 +905,12 @@ int ModApiMainMenu::l_show_path_select_dialog(lua_State *L) GUIFileSelectMenu* fileOpenMenu = new GUIFileSelectMenu(RenderingEngine::get_gui_env(), - engine->m_parent, - -1, - engine->m_menumanager, - title, - formname, - is_file_select); + engine->m_parent, + -1, + engine->m_menumanager, + title, + formname, + is_file_select); fileOpenMenu->setTextDest(engine->m_buttonhandler); fileOpenMenu->drop(); return 0; diff --git a/src/util/numeric.h b/src/util/numeric.h index 6f82a18c1..864ab7543 100644 --- a/src/util/numeric.h +++ b/src/util/numeric.h @@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "irr_v2d.h" #include "irr_v3d.h" #include "irr_aabb3d.h" +#include "SColor.h" #include #define rangelim(d, min, max) ((d) < (min) ? (min) : ((d) > (max) ? (max) : (d))) @@ -432,3 +433,12 @@ inline v3f getPitchYawRoll(const core::matrix4 &m) { return getPitchYawRollRad(m) * core::RADTODEG64; } + +// Muliply the RGB value of a color linearly, and clamp to black/white +inline irr::video::SColor multiplyColorValue(const irr::video::SColor &color, float mod) +{ + return irr::video::SColor(color.getAlpha(), + core::clamp(color.getRed() * mod, 0, 255), + core::clamp(color.getGreen() * mod, 0, 255), + core::clamp(color.getBlue() * mod, 0, 255)); +} From af2e6a6a10121cf971d4ce4c33d523b6dc037d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20M=C3=BCller?= <34514239+appgurueu@users.noreply.github.com> Date: Sat, 11 Apr 2020 23:09:46 +0200 Subject: [PATCH 091/424] Improve waypoints and add image variant (#9480) --- doc/client_lua_api.txt | 25 ++++++- doc/lua_api.txt | 20 ++++++ src/client/hud.cpp | 111 +++++++++++++++++++------------- src/client/hud.h | 1 + src/hud.cpp | 1 + src/hud.h | 1 + src/script/common/c_content.cpp | 6 +- 7 files changed, 118 insertions(+), 47 deletions(-) diff --git a/doc/client_lua_api.txt b/doc/client_lua_api.txt index 71df91c68..53ed680d0 100644 --- a/doc/client_lua_api.txt +++ b/doc/client_lua_api.txt @@ -1416,12 +1416,35 @@ Displays a horizontal bar made up of half-images. * `offset`: offset in pixels from position. ### `waypoint` + Displays distance to selected world position. * `name`: The name of the waypoint. * `text`: Distance suffix. Can be blank. -* `number:` An integer containing the RGB value of the color used to draw the text. +* `precision`: Waypoint precision, integer >= 0. Defaults to 10. + If set to 0, distance is not shown. Shown value is `floor(distance*precision)/precision`. + When the precision is an integer multiple of 10, there will be `log_10(precision)` digits after the decimal point. + `precision = 1000`, for example, will show 3 decimal places (eg: `0.999`). + `precision = 2` will show multiples of `0.5`; precision = 5 will show multiples of `0.2` and so on: + `precision = n` will show multiples of `1/n` +* `number:` An integer containing the RGB value of the color used to draw the + text. * `world_pos`: World position of the waypoint. +* `offset`: offset in pixels from position. +* `alignment`: The alignment of the waypoint. + +### `image_waypoint` + +Same as `image`, but does not accept a `position`; the position is instead determined by `world_pos`, the world position of the waypoint. + +* `scale`: The scale of the image, with 1 being the original texture size. + Only the X coordinate scale is used (positive values). + Negative values represent that percentage of the screen it + should take; e.g. `x=-100` means 100% (width). +* `text`: The name of the texture that is displayed. +* `alignment`: The alignment of the image. +* `world_pos`: World position of the waypoint. +* `offset`: offset in pixels from position. ### Particle definition (`add_particle`) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index b083b2907..1a9aad344 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1364,10 +1364,30 @@ Displays distance to selected world position. * `name`: The name of the waypoint. * `text`: Distance suffix. Can be blank. +* `precision`: Waypoint precision, integer >= 0. Defaults to 10. + If set to 0, distance is not shown. Shown value is `floor(distance*precision)/precision`. + When the precision is an integer multiple of 10, there will be `log_10(precision)` digits after the decimal point. + `precision = 1000`, for example, will show 3 decimal places (eg: `0.999`). + `precision = 2` will show multiples of `0.5`; precision = 5 will show multiples of `0.2` and so on: + `precision = n` will show multiples of `1/n` * `number:` An integer containing the RGB value of the color used to draw the text. * `world_pos`: World position of the waypoint. +* `offset`: offset in pixels from position. +* `alignment`: The alignment of the waypoint. +### `image_waypoint` + +Same as `image`, but does not accept a `position`; the position is instead determined by `world_pos`, the world position of the waypoint. + +* `scale`: The scale of the image, with 1 being the original texture size. + Only the X coordinate scale is used (positive values). + Negative values represent that percentage of the screen it + should take; e.g. `x=-100` means 100% (width). +* `text`: The name of the texture that is displayed. +* `alignment`: The alignment of the image. +* `world_pos`: World position of the waypoint. +* `offset`: offset in pixels from position. diff --git a/src/client/hud.cpp b/src/client/hud.cpp index 37de6640b..56763e7e4 100644 --- a/src/client/hud.cpp +++ b/src/client/hud.cpp @@ -272,6 +272,25 @@ void Hud::drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount, } } +// Calculates screen position of waypoint. Returns true if waypoint is visible (in front of the player), else false. +bool Hud::calculateScreenPos(const v3s16 &camera_offset, HudElement *e, v2s32 *pos) +{ + v3f w_pos = e->world_pos * BS; + scene::ICameraSceneNode* camera = + RenderingEngine::get_scene_manager()->getActiveCamera(); + w_pos -= intToFloat(camera_offset, BS); + core::matrix4 trans = camera->getProjectionMatrix(); + trans *= camera->getViewMatrix(); + f32 transformed_pos[4] = { w_pos.X, w_pos.Y, w_pos.Z, 1.0f }; + trans.multiplyWith1x4Matrix(transformed_pos); + if (transformed_pos[3] < 0) + return false; + f32 zDiv = transformed_pos[3] == 0.0f ? 1.0f : + core::reciprocal(transformed_pos[3]); + pos->X = m_screensize.X * (0.5 * transformed_pos[0] * zDiv + 0.5); + pos->Y = m_screensize.Y * (0.5 - transformed_pos[1] * zDiv * 0.5); + return true; +} void Hud::drawLuaElements(const v3s16 &camera_offset) { @@ -299,28 +318,6 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) v2s32 pos(floor(e->pos.X * (float) m_screensize.X + 0.5), floor(e->pos.Y * (float) m_screensize.Y + 0.5)); switch (e->type) { - case HUD_ELEM_IMAGE: { - video::ITexture *texture = tsrc->getTexture(e->text); - if (!texture) - continue; - - const video::SColor color(255, 255, 255, 255); - const video::SColor colors[] = {color, color, color, color}; - core::dimension2di imgsize(texture->getOriginalSize()); - v2s32 dstsize(imgsize.Width * e->scale.X, - imgsize.Height * e->scale.Y); - if (e->scale.X < 0) - dstsize.X = m_screensize.X * (e->scale.X * -0.01); - if (e->scale.Y < 0) - dstsize.Y = m_screensize.Y * (e->scale.Y * -0.01); - v2s32 offset((e->align.X - 1.0) * dstsize.X / 2, - (e->align.Y - 1.0) * dstsize.Y / 2); - core::rect rect(0, 0, dstsize.X, dstsize.Y); - rect += pos + offset + v2s32(e->offset.X, e->offset.Y); - draw2DImageFilterScaled(driver, texture, rect, - core::rect(core::position2d(0,0), imgsize), - NULL, colors, true); - break; } case HUD_ELEM_TEXT: { video::SColor color(255, (e->number >> 16) & 0xFF, (e->number >> 8) & 0xFF, @@ -343,34 +340,58 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) inv, e->item, e->dir); break; } case HUD_ELEM_WAYPOINT: { - v3f p_pos = player->getPosition() / BS; - v3f w_pos = e->world_pos * BS; - float distance = std::floor(10 * p_pos.getDistanceFrom(e->world_pos)) / - 10.0f; - scene::ICameraSceneNode* camera = - RenderingEngine::get_scene_manager()->getActiveCamera(); - w_pos -= intToFloat(camera_offset, BS); - core::matrix4 trans = camera->getProjectionMatrix(); - trans *= camera->getViewMatrix(); - f32 transformed_pos[4] = { w_pos.X, w_pos.Y, w_pos.Z, 1.0f }; - trans.multiplyWith1x4Matrix(transformed_pos); - if (transformed_pos[3] < 0) + if (!calculateScreenPos(camera_offset, e, &pos)) break; - f32 zDiv = transformed_pos[3] == 0.0f ? 1.0f : - core::reciprocal(transformed_pos[3]); - pos.X = m_screensize.X * (0.5 * transformed_pos[0] * zDiv + 0.5); - pos.Y = m_screensize.Y * (0.5 - transformed_pos[1] * zDiv * 0.5); + v3f p_pos = player->getPosition() / BS; + pos += v2s32(e->offset.X, e->offset.Y); video::SColor color(255, (e->number >> 16) & 0xFF, (e->number >> 8) & 0xFF, (e->number >> 0) & 0xFF); - core::rect size(0, 0, 200, 2 * text_height); std::wstring text = unescape_translate(utf8_to_wide(e->name)); - font->draw(text.c_str(), size + pos, color); - std::ostringstream os; - os << distance << e->text; - text = unescape_translate(utf8_to_wide(os.str())); - pos.Y += text_height; - font->draw(text.c_str(), size + pos, color); + const std::string &unit = e->text; + // waypoints reuse the item field to store precision, item = precision + 1 + u32 item = e->item; + float precision = (item == 0) ? 10.0f : (item - 1.f); + bool draw_precision = precision > 0; + + core::rect bounds(0, 0, font->getDimension(text.c_str()).Width, (draw_precision ? 2:1) * text_height); + pos.Y += (e->align.Y - 1.0) * bounds.getHeight() / 2; + bounds += pos; + font->draw(text.c_str(), bounds + v2s32((e->align.X - 1.0) * bounds.getWidth() / 2, 0), color); + if (draw_precision) { + std::ostringstream os; + float distance = std::floor(precision * p_pos.getDistanceFrom(e->world_pos)) / precision; + os << distance << unit; + text = unescape_translate(utf8_to_wide(os.str())); + bounds.LowerRightCorner.X = bounds.UpperLeftCorner.X + font->getDimension(text.c_str()).Width; + font->draw(text.c_str(), bounds + v2s32((e->align.X - 1.0f) * bounds.getWidth() / 2, text_height), color); + } + break; } + case HUD_ELEM_IMAGE_WAYPOINT: { + if (!calculateScreenPos(camera_offset, e, &pos)) + break; + } + case HUD_ELEM_IMAGE: { + video::ITexture *texture = tsrc->getTexture(e->text); + if (!texture) + continue; + + const video::SColor color(255, 255, 255, 255); + const video::SColor colors[] = {color, color, color, color}; + core::dimension2di imgsize(texture->getOriginalSize()); + v2s32 dstsize(imgsize.Width * e->scale.X, + imgsize.Height * e->scale.Y); + if (e->scale.X < 0) + dstsize.X = m_screensize.X * (e->scale.X * -0.01); + if (e->scale.Y < 0) + dstsize.Y = m_screensize.Y * (e->scale.Y * -0.01); + v2s32 offset((e->align.X - 1.0) * dstsize.X / 2, + (e->align.Y - 1.0) * dstsize.Y / 2); + core::rect rect(0, 0, dstsize.X, dstsize.Y); + rect += pos + offset + v2s32(e->offset.X, e->offset.Y); + draw2DImageFilterScaled(driver, texture, rect, + core::rect(core::position2d(0,0), imgsize), + NULL, colors, true); break; } default: infostream << "Hud::drawLuaElements: ignoring drawform " << e->type << diff --git a/src/client/hud.h b/src/client/hud.h index d9b5e0686..cab115990 100644 --- a/src/client/hud.h +++ b/src/client/hud.h @@ -81,6 +81,7 @@ public: void drawLuaElements(const v3s16 &camera_offset); private: + bool calculateScreenPos(const v3s16 &camera_offset, HudElement *e, v2s32 *pos); void drawStatbar(v2s32 pos, u16 corner, u16 drawdir, const std::string &texture, s32 count, v2s32 offset, v2s32 size = v2s32()); diff --git a/src/hud.cpp b/src/hud.cpp index 7711e3a4a..39625b5fd 100644 --- a/src/hud.cpp +++ b/src/hud.cpp @@ -27,6 +27,7 @@ const struct EnumString es_HudElementType[] = {HUD_ELEM_STATBAR, "statbar"}, {HUD_ELEM_INVENTORY, "inventory"}, {HUD_ELEM_WAYPOINT, "waypoint"}, + {HUD_ELEM_IMAGE_WAYPOINT, "image_waypoint"}, {0, NULL}, }; diff --git a/src/hud.h b/src/hud.h index 23f189dff..b0977c6a4 100644 --- a/src/hud.h +++ b/src/hud.h @@ -61,6 +61,7 @@ enum HudElementType { HUD_ELEM_STATBAR = 2, HUD_ELEM_INVENTORY = 3, HUD_ELEM_WAYPOINT = 4, + HUD_ELEM_IMAGE_WAYPOINT = 5 }; enum HudElementStat { diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index c8cd7539f..ff9ceec6d 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -1850,7 +1850,11 @@ void read_hud_element(lua_State *L, HudElement *elem) elem->name = getstringfield_default(L, 2, "name", ""); elem->text = getstringfield_default(L, 2, "text", ""); elem->number = getintfield_default(L, 2, "number", 0); - elem->item = getintfield_default(L, 2, "item", 0); + if (elem->type == HUD_ELEM_WAYPOINT) + // waypoints reuse the item field to store precision, item = precision + 1 + elem->item = getintfield_default(L, 2, "precision", -1) + 1; + else + elem->item = getintfield_default(L, 2, "item", 0); elem->dir = getintfield_default(L, 2, "direction", 0); elem->z_index = MYMAX(S16_MIN, MYMIN(S16_MAX, getintfield_default(L, 2, "z_index", 0))); From 3833396cfad7289b8c38ab64b69885b409d993ce Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sun, 12 Apr 2020 00:05:55 +0100 Subject: [PATCH 092/424] Fix delayed error message in start game tab --- builtin/mainmenu/tab_local.lua | 57 ++++++++++++++++------------------ 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/builtin/mainmenu/tab_local.lua b/builtin/mainmenu/tab_local.lua index 0969bccfb..cd6cbea46 100644 --- a/builtin/mainmenu/tab_local.lua +++ b/builtin/mainmenu/tab_local.lua @@ -207,40 +207,35 @@ local function main_button_handler(this, fields, name, tabdata) local selected = core.get_textlist_index("sp_worlds") gamedata.selected_world = menudata.worldlist:get_raw_index(selected) - if core.settings:get_bool("enable_server") then - if selected ~= nil and gamedata.selected_world ~= 0 then - gamedata.playername = fields["te_playername"] - gamedata.password = fields["te_passwd"] - gamedata.port = fields["te_serverport"] - gamedata.address = "" - - core.settings:set("port",gamedata.port) - if fields["te_serveraddr"] ~= nil then - core.settings:set("bind_address",fields["te_serveraddr"]) - end - - --update last game - local world = menudata.worldlist:get_raw_element(gamedata.selected_world) - if world then - local game = pkgmgr.find_by_gameid(world.gameid) - core.settings:set("menu_last_game", game.id) - end - - core.start() - else - gamedata.errormessage = + if selected == nil or gamedata.selected_world == 0 then + gamedata.errormessage = fgettext("No world created or selected!") - end - else - if selected ~= nil and gamedata.selected_world ~= 0 then - gamedata.singleplayer = true - core.start() - else - gamedata.errormessage = - fgettext("No world created or selected!") - end return true end + + -- Update last game + local world = menudata.worldlist:get_raw_element(gamedata.selected_world) + if world then + local game = pkgmgr.find_by_gameid(world.gameid) + core.settings:set("menu_last_game", game.id) + end + + if core.settings:get_bool("enable_server") then + gamedata.playername = fields["te_playername"] + gamedata.password = fields["te_passwd"] + gamedata.port = fields["te_serverport"] + gamedata.address = "" + + core.settings:set("port",gamedata.port) + if fields["te_serveraddr"] ~= nil then + core.settings:set("bind_address",fields["te_serveraddr"]) + end + else + gamedata.singleplayer = true + end + + core.start() + return true end if fields["world_create"] ~= nil then From a24d3b360048bde87113d435ab0cfef78851153c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 12 Apr 2020 01:50:40 +0200 Subject: [PATCH 093/424] Play 'player_jump' when player jumps (#9373) --- doc/lua_api.txt | 1 + src/client/game.cpp | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 1a9aad344..dff6c728e 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -897,6 +897,7 @@ These sound files are played back by the engine if provided. * `player_damage`: Played when the local player takes damage (gain = 0.5) * `player_falling_damage`: Played when the local player takes damage by falling (gain = 0.5) + * `player_jump`: Played when the local player jumps * `default_dig_`: Default node digging sound (see node sound definition for details) diff --git a/src/client/game.cpp b/src/client/game.cpp index 06e76d170..ac6045190 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -266,6 +266,7 @@ class SoundMaker public: bool makes_footstep_sound; float m_player_step_timer; + float m_player_jump_timer; SimpleSoundSpec m_player_step_sound; SimpleSoundSpec m_player_leftpunch_sound; @@ -275,7 +276,8 @@ public: m_sound(sound), m_ndef(ndef), makes_footstep_sound(true), - m_player_step_timer(0) + m_player_step_timer(0.0f), + m_player_jump_timer(0.0f) { } @@ -288,6 +290,14 @@ public: } } + void playPlayerJump() + { + if (m_player_jump_timer <= 0.0f) { + m_player_jump_timer = 0.2f; + m_sound->playSound(SimpleSoundSpec("player_jump", 0.5f), false); + } + } + static void viewBobbingStep(MtEvent *e, void *data) { SoundMaker *sm = (SoundMaker *)data; @@ -302,7 +312,8 @@ public: static void playerJump(MtEvent *e, void *data) { - //SoundMaker *sm = (SoundMaker*)data; + SoundMaker *sm = (SoundMaker *)data; + sm->playPlayerJump(); } static void cameraPunchLeft(MtEvent *e, void *data) @@ -351,6 +362,7 @@ public: void step(float dtime) { m_player_step_timer -= dtime; + m_player_jump_timer -= dtime; } }; From b55dd5d82f4fabca1b7cc9bea395c9d3fc4ac5a9 Mon Sep 17 00:00:00 2001 From: Testman Date: Sun, 12 Apr 2020 01:53:23 +0200 Subject: [PATCH 094/424] Update README copyright to current year (#9566) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4d136b137..cfd5a8ae0 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Minetest Minetest is a free open-source voxel game engine with easy modding and game creation. -Copyright (C) 2010-2019 Perttu Ahola +Copyright (C) 2010-2020 Perttu Ahola and contributors (see source file comments and the version control log) In case you downloaded the source code From d7e706ac9df5e7cead3dd16f91b07bc0d417e234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=84=97=E3=84=A0=CB=8B=20=E3=84=91=E3=84=A7=CB=8A?= Date: Sun, 12 Apr 2020 17:00:56 +0800 Subject: [PATCH 095/424] Dockerfile: use alpine to reduce size (#9226) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Dockerfile: use alpine to reduce size * Fix the UID & GID + alpine version + rights * Reduce the junk when we copy, only copy needed files * Build in the right cmake place & permit customize mtg version * Latest build fixes Co-authored-by: Loïc Blot --- Dockerfile | 60 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8c82f856c..3c41ce0f4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,32 +1,44 @@ -FROM debian:buster +FROM alpine:3.11 -USER root -RUN apt-get update -y && \ - apt-get -y install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev \ - libsqlite3-dev libcurl4-gnutls-dev zlib1g-dev libgmp-dev libjsoncpp-dev git +ENV MINETEST_GAME_VERSION master -COPY . /usr/src/minetest +COPY .git /usr/src/minetest/.git +COPY CMakeLists.txt /usr/src/minetest/CMakeLists.txt +COPY README.md /usr/src/minetest/README.md +COPY minetest.conf.example /usr/src/minetest/minetest.conf.example +COPY builtin /usr/src/minetest/builtin +COPY cmake /usr/src/minetest/cmake +COPY doc /usr/src/minetest/doc +COPY fonts /usr/src/minetest/fonts +COPY lib /usr/src/minetest/lib +COPY misc /usr/src/minetest/misc +COPY po /usr/src/minetest/po +COPY src /usr/src/minetest/src +COPY textures /usr/src/minetest/textures -RUN mkdir -p /usr/src/minetest/cmakebuild && cd /usr/src/minetest/cmakebuild && \ - cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release -DRUN_IN_PLACE=FALSE \ +WORKDIR /usr/src/minetest + +RUN apk add --no-cache git build-base irrlicht-dev cmake bzip2-dev libpng-dev \ + jpeg-dev libxxf86vm-dev mesa-dev sqlite-dev libogg-dev \ + libvorbis-dev openal-soft-dev curl-dev freetype-dev zlib-dev \ + gmp-dev jsoncpp-dev postgresql-dev && \ + git clone --depth=1 -b ${MINETEST_GAME_VERSION} https://github.com/minetest/minetest_game.git ./games/minetest_game && \ + rm -fr ./games/minetest_game/.git && \ + mkdir build && \ + cd build && \ + cmake .. \ + -DCMAKE_INSTALL_PREFIX=/usr/local \ + -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SERVER=TRUE \ - -DBUILD_CLIENT=FALSE \ - -DENABLE_SYSTEM_JSONCPP=1 \ - .. && \ - make -j2 && \ - rm -Rf ../games/minetest_game && git clone --depth 1 https://github.com/minetest/minetest_game ../games/minetest_game && \ - rm -Rf ../games/minetest_game/.git && \ - make install + -DBUILD_CLIENT=FALSE && \ + make -j2 && \ + make install -FROM debian:stretch +FROM alpine:3.11 -USER root -RUN groupadd minetest && useradd -m -g minetest -d /var/lib/minetest minetest && \ - apt-get update -y && \ - apt-get -y install libcurl3-gnutls libjsoncpp1 liblua5.1-0 libluajit-5.1-2 libpq5 libsqlite3-0 \ - libstdc++6 zlib1g libc6 && \ - apt-get clean && rm -rf /var/cache/apt/archives/* && \ - rm -rf /var/lib/apt/lists/* +RUN apk add --no-cache sqlite-libs curl gmp libstdc++ libgcc libpq && \ + adduser -D minetest --uid 30000 -h /var/lib/minetest && \ + chown -R minetest:minetest /var/lib/minetest WORKDIR /var/lib/minetest @@ -34,7 +46,7 @@ COPY --from=0 /usr/local/share/minetest /usr/local/share/minetest COPY --from=0 /usr/local/bin/minetestserver /usr/local/bin/minetestserver COPY --from=0 /usr/local/share/doc/minetest/minetest.conf.example /etc/minetest/minetest.conf -USER minetest +USER minetest:minetest EXPOSE 30000/udp From 6cf15cf872cc9ce76990d83d380ca3c4b7485eb1 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sun, 12 Apr 2020 12:02:32 +0200 Subject: [PATCH 096/424] GUIFormSpecMenu: Add basic element highlighing debug feature (#9423) Activated using F5 --- src/gui/guiFormSpecMenu.cpp | 10 +++++++++- src/gui/guiFormSpecMenu.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index 6a383a791..f3bf04275 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -3380,8 +3380,12 @@ void GUIFormSpecMenu::drawMenu() bool hovered_element_found = false; if (hovered != NULL) { - s32 id = hovered->getID(); + if (m_show_debug) { + core::rect rect = hovered->getAbsoluteClippingRect(); + driver->draw2DRectangle(0x22FFFF00, rect, &rect); + } + s32 id = hovered->getID(); u64 delta = 0; if (id == -1) { m_old_tooltip_id = id; @@ -3903,6 +3907,10 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event) (kp == getKeySetting("keymap_screenshot"))) { m_client->makeScreenshot(); } + + if (event.KeyInput.PressedDown && kp == getKeySetting("keymap_toggle_debug")) + m_show_debug = !m_show_debug; + if (event.KeyInput.PressedDown && (event.KeyInput.Key==KEY_RETURN || event.KeyInput.Key==KEY_UP || diff --git a/src/gui/guiFormSpecMenu.h b/src/gui/guiFormSpecMenu.h index b3bf67110..dc22e8b54 100644 --- a/src/gui/guiFormSpecMenu.h +++ b/src/gui/guiFormSpecMenu.h @@ -343,6 +343,7 @@ private: u16 m_formspec_version = 1; std::string m_focused_element = ""; JoystickController *m_joystick; + bool m_show_debug = false; typedef struct { bool explicit_size; From 0ac999ded725f8efcd26db284161683e37efeecf Mon Sep 17 00:00:00 2001 From: DS Date: Mon, 13 Apr 2020 10:50:07 +0200 Subject: [PATCH 097/424] Add scroll_container formspec element (redo) (#9101) New formspec elements: - `scroll_container[,;,;;;]` - `scroll_container_end[]` Other elements can be embedded in this element. Scrollbar must be placed manually. --- build/android/jni/Android.mk | 1 + doc/lua_api.txt | 20 +++ games/minimal/mods/test/formspec.lua | 69 ++++++++- src/gui/CMakeLists.txt | 1 + src/gui/guiFormSpecMenu.cpp | 216 ++++++++++++++++++++++----- src/gui/guiFormSpecMenu.h | 5 + src/gui/guiHyperText.cpp | 20 +-- src/gui/guiHyperText.h | 2 +- src/gui/guiScrollContainer.cpp | 70 +++++++++ src/gui/guiScrollContainer.h | 56 +++++++ src/network/networkprotocol.h | 1 + 11 files changed, 411 insertions(+), 50 deletions(-) create mode 100644 src/gui/guiScrollContainer.cpp create mode 100644 src/gui/guiScrollContainer.h diff --git a/build/android/jni/Android.mk b/build/android/jni/Android.mk index fdbfba9bc..b67322d79 100644 --- a/build/android/jni/Android.mk +++ b/build/android/jni/Android.mk @@ -194,6 +194,7 @@ LOCAL_SRC_FILES := \ jni/src/gui/guiPasswordChange.cpp \ jni/src/gui/guiPathSelectMenu.cpp \ jni/src/gui/guiScrollBar.cpp \ + jni/src/gui/guiScrollContainer.cpp \ jni/src/gui/guiSkin.cpp \ jni/src/gui/guiTable.cpp \ jni/src/gui/guiVolumeChange.cpp \ diff --git a/doc/lua_api.txt b/doc/lua_api.txt index dff6c728e..f43987cd8 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -2102,6 +2102,26 @@ Elements * End of a container, following elements are no longer relative to this container. +### `scroll_container[,;,;;;]` + +* Start of a scroll_container block. All contained elements will ... + * take the scroll_container coordinate as position origin, + * be additionally moved by the current value of the scrollbar with the name + `scrollbar name` times `scroll factor` along the orientation `orientation` and + * be clipped to the rectangle defined by `X`, `Y`, `W` and `H`. +* `orientation`: possible values are `vertical` and `horizontal`. +* `scroll factor`: optional, defaults to `0.1`. +* Nesting is possible. +* Some elements might work a little different if they are in a scroll_container. +* Note: If you want the scroll_container to actually work, you also need to add a + scrollbar element with the specified name. Furthermore, it is highly recommended + to use a scrollbaroptions element on this scrollbar. + +### `scroll_container_end[]` + +* End of a scroll_container, following elements are no longer bound to this + container. + ### `list[;;,;,;]` * Show an inventory list if it has been sent to the client. Nothing will diff --git a/games/minimal/mods/test/formspec.lua b/games/minimal/mods/test/formspec.lua index 14886aad2..53e92b243 100644 --- a/games/minimal/mods/test/formspec.lua +++ b/games/minimal/mods/test/formspec.lua @@ -1,5 +1,35 @@ local color = minetest.colorize +local hypertext = minetest.formspec_escape([[ + +
Furnace
+ are crafted and used by the player for the purpose of cooking food and smelting various items. + + Solid block + Itself + No + Inactive:No Active:Yes (8) + No + No + Yes + Yes (99) + default:furnace default:furnace_active + Usage + The furnace menu can be accessed by using the furnace. + The furnace has 3 inventories: An input slot, a fuel slot and 4 output slots. The fire in the furnace will automatically start when there is a smeltable item in the input slot and a fuel in the fuel slot. + As long as the fire is on, the furnace will smelt any smeltable item in the input slot, one by one, until it is empty. When the fire goes off, it will smelt the next item until there are no smeltable items and no fuel items left. + The current stage of cooking can be seen by pointing the furnace or by viewing the furnace menu. In the furnace menu, the flame symbol roughly shows the remaining burning time. The arrow symbol shows the progress of the current smelting process. + Renewing + Furnaces can be crafted from e.g. cobblestone, a renewable resource. + Crafting + Sorry no way to display crafting yet in formspec pages. + Fuel + See Smelting for a list of furnace fuels. + Recipes + See the Smelting page. +]]) + + local clip_fs = [[ style_type[label,button,image_button,item_image_button, tabheader,scrollbar,table,animated_image @@ -188,13 +218,48 @@ Number] animated_image[3,4.25;1,1;;test_animation.png;4;0;3] animated_image[5.5,0.5;5,2;;test_animation.png;4;100] animated_image[5.5,2.75;5,2;;test_animation.jpg;4;100] - ]] + ]], + + "formspec_version[3]".. + "size[12,12]".. + "button[8.5,1;1,1;bla;Bla]".. + "box[1,1;8,6;#00aa]".. + "scroll_container[1,1;8,6;scrbar;vertical]".. + "button[0,1;1,1;lorem;Lorem]".. + "button[0,10;1,1;ipsum;Ipsum]".. + "pwdfield[2,2;1,1;lorem2;Lorem]".. + "list[current_player;main;4,4;1,5;]".. + "box[2,5;3,2;#ffff00]".. + "image[1,10;3,2;bubble.png]".. + "image[3,1;bubble.png]".. + "item_image[2,6;3,2;default:mese]".. + "label[2,15;bla Bli\nfoo bar]".. + "item_image_button[2,3;1,1;default:dirt_with_grass;itemimagebutton;ItemImageButton]".. + "tooltip[0,11;3,2;Buz;#f00;#000]".. + "box[0,11;3,2;#00ff00]".. + "hypertext[3,13;3,3;;" .. hypertext .. "]" .. + "container[0,18]".. + "box[1,2;3,2;#0a0a]".. + "scroll_container[1,2;3,2;scrbar2;horizontal;0.06]".. + "button[0,0;6,1;butnest;Nest]".. + "label[10,0.5;nest]".. + "scroll_container_end[]".. + "scrollbar[1,0;3.5,0.3;horizontal;scrbar2;0]".. + "container_end[]".. + "dropdown[0,6;2;hmdrpdwn;apple,bulb;1]".. + "image_button[0,4;2,2;bubble.png;bubblebutton;bbbbtt;false;true;heart.png]".. + "box[1,22.5;4,1;#a00a]".. + "scroll_container_end[]".. + "scrollbaroptions[max=170]".. -- lowest seen pos is: 0.1*170+6=23 (factor*max+height) + "scrollbar[7.5,0;0.3,4;vertical;scrbar;0]".. + "scrollbar[8,0;0.3,4;vertical;scrbarhmmm;0]".. + "dropdown[0,6;2;hmdrpdwnnn;apple,bulb;1]", } local function show_test_formspec(pname, page_id) page_id = page_id or 2 - local fs = pages[page_id] .. "tabheader[0,0;6,0.65;maintabs;Real Coord,Styles,Noclip,MiscEle;" .. page_id .. ";false;false]" + local fs = pages[page_id] .. "tabheader[0,0;8,0.65;maintabs;Real Coord,Styles,Noclip,MiscEle,Scroll Container;" .. page_id .. ";false;false]" minetest.show_formspec(pname, "test:formspec", fs) end diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 110a00595..147f445f4 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -16,6 +16,7 @@ set(gui_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/guiPasswordChange.cpp ${CMAKE_CURRENT_SOURCE_DIR}/guiPathSelectMenu.cpp ${CMAKE_CURRENT_SOURCE_DIR}/guiScrollBar.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/guiScrollContainer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/guiSkin.cpp ${CMAKE_CURRENT_SOURCE_DIR}/guiTable.cpp ${CMAKE_CURRENT_SOURCE_DIR}/guiHyperText.cpp diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index f3bf04275..aac039ad6 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -65,6 +65,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "guiInventoryList.h" #include "guiItemImage.h" #include "guiScrollBar.h" +#include "guiScrollContainer.h" #include "guiTable.h" #include "intlGUIEditBox.h" #include "guiHyperText.h" @@ -143,6 +144,8 @@ GUIFormSpecMenu::~GUIFormSpecMenu() tooltip_rect_it.first->drop(); for (auto &clickthrough_it : m_clickthrough_elements) clickthrough_it->drop(); + for (auto &scroll_container_it : m_scroll_containers) + scroll_container_it.second->drop(); delete m_selected_item; delete m_form_src; @@ -351,6 +354,102 @@ void GUIFormSpecMenu::parseContainerEnd(parserData* data) } } +void GUIFormSpecMenu::parseScrollContainer(parserData *data, const std::string &element) +{ + std::vector parts = split(element, ';'); + + if (parts.size() < 4 || + (parts.size() > 5 && m_formspec_version <= FORMSPEC_API_VERSION)) { + errorstream << "Invalid scroll_container start element (" << parts.size() + << "): '" << element << "'" << std::endl; + return; + } + + std::vector v_pos = split(parts[0], ','); + std::vector v_geom = split(parts[1], ','); + std::string scrollbar_name = parts[2]; + std::string orientation = parts[3]; + f32 scroll_factor = 0.1f; + if (parts.size() >= 5 && !parts[4].empty()) + scroll_factor = stof(parts[4]); + + MY_CHECKPOS("scroll_container", 0); + MY_CHECKGEOM("scroll_container", 1); + + v2s32 pos = getRealCoordinateBasePos(v_pos); + v2s32 geom = getRealCoordinateGeometry(v_geom); + + if (orientation == "vertical") + scroll_factor *= -imgsize.Y; + else if (orientation == "horizontal") + scroll_factor *= -imgsize.X; + else + warningstream << "GUIFormSpecMenu::parseScrollContainer(): " + << "Invalid scroll_container orientation: " << orientation + << std::endl; + + // old parent (at first: this) + // ^ is parent of clipper + // ^ is parent of mover + // ^ is parent of other elements + + // make clipper + core::rect rect_clipper = core::rect(pos, pos + geom); + + gui::IGUIElement *clipper = new gui::IGUIElement(EGUIET_ELEMENT, Environment, + data->current_parent, 0, rect_clipper); + + // make mover + FieldSpec spec_mover( + "", + L"", + L"", + 258 + m_fields.size() + ); + + core::rect rect_mover = core::rect(0, 0, geom.X, geom.Y); + + GUIScrollContainer *mover = new GUIScrollContainer(Environment, + clipper, spec_mover.fid, rect_mover, orientation, scroll_factor); + + data->current_parent = mover; + + m_scroll_containers.emplace_back(scrollbar_name, mover); + + m_fields.push_back(spec_mover); + + clipper->drop(); + + // remove interferring offset of normal containers + container_stack.push(pos_offset); + pos_offset.X = 0.0f; + pos_offset.Y = 0.0f; +} + +void GUIFormSpecMenu::parseScrollContainerEnd(parserData *data) +{ + if (data->current_parent == this || data->current_parent->getParent() == this || + container_stack.empty()) { + errorstream << "Invalid scroll_container end element, " + << "no matching scroll_container start element" << std::endl; + return; + } + + if (pos_offset.getLengthSQ() != 0.0f) { + // pos_offset is only set by containers and scroll_containers. + // scroll_containers always set it to 0,0 which means that if it is + // not 0,0, it is a normal container that was opened last, not a + // scroll_container + errorstream << "Invalid scroll_container end element, " + << "an inner container was left open" << std::endl; + return; + } + + data->current_parent = data->current_parent->getParent()->getParent(); + pos_offset = container_stack.top(); + container_stack.pop(); +} + void GUIFormSpecMenu::parseList(parserData *data, const std::string &element) { if (m_client == 0) { @@ -443,9 +542,9 @@ void GUIFormSpecMenu::parseList(parserData *data, const std::string &element) pos.X + (geom.X - 1) * slot_spacing.X + imgsize.X, pos.Y + (geom.Y - 1) * slot_spacing.Y + imgsize.Y); - GUIInventoryList *e = new GUIInventoryList(Environment, this, spec.fid, - rect, m_invmgr, loc, listname, geom, start_i, imgsize, slot_spacing, - this, data->inventorylist_options, m_font); + GUIInventoryList *e = new GUIInventoryList(Environment, data->current_parent, + spec.fid, rect, m_invmgr, loc, listname, geom, start_i, imgsize, + slot_spacing, this, data->inventorylist_options, m_font); m_inventorylists.push_back(e); m_fields.push_back(spec); @@ -550,8 +649,8 @@ void GUIFormSpecMenu::parseCheckbox(parserData* data, const std::string &element spec.ftype = f_CheckBox; - gui::IGUICheckBox *e = Environment->addCheckBox(fselected, rect, this, - spec.fid, spec.flabel.c_str()); + gui::IGUICheckBox *e = Environment->addCheckBox(fselected, rect, + data->current_parent, spec.fid, spec.flabel.c_str()); auto style = getDefaultStyleForElement("checkbox", name); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); @@ -610,8 +709,8 @@ void GUIFormSpecMenu::parseScrollBar(parserData* data, const std::string &elemen spec.ftype = f_ScrollBar; spec.send = true; - GUIScrollBar *e = new GUIScrollBar(Environment, this, spec.fid, rect, - is_horizontal, true); + GUIScrollBar *e = new GUIScrollBar(Environment, data->current_parent, + spec.fid, rect, is_horizontal, true); auto style = getDefaultStyleForElement("scrollbar", name); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); @@ -737,7 +836,8 @@ void GUIFormSpecMenu::parseImage(parserData* data, const std::string &element) 1 ); core::rect rect(pos, pos + geom); - gui::IGUIImage *e = Environment->addImage(rect, this, spec.fid, 0, true); + gui::IGUIImage *e = Environment->addImage(rect, data->current_parent, + spec.fid, 0, true); e->setImage(texture); e->setScaleImage(true); auto style = getDefaultStyleForElement("image", spec.fname); @@ -774,8 +874,8 @@ void GUIFormSpecMenu::parseImage(parserData* data, const std::string &element) L"", 258 + m_fields.size() ); - gui::IGUIImage *e = Environment->addImage(texture, pos, true, this, - spec.fid, 0); + gui::IGUIImage *e = Environment->addImage(texture, pos, true, + data->current_parent, spec.fid, 0); auto style = getDefaultStyleForElement("image", spec.fname); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, m_formspec_version < 3)); m_fields.push_back(spec); @@ -886,7 +986,7 @@ void GUIFormSpecMenu::parseItemImage(parserData* data, const std::string &elemen ); spec.ftype = f_ItemImage; - GUIItemImage *e = new GUIItemImage(Environment, this, spec.fid, + GUIItemImage *e = new GUIItemImage(Environment, data->current_parent, spec.fid, core::rect(pos, pos + geom), name, m_font, m_client); auto style = getDefaultStyleForElement("item_image", spec.fname); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); @@ -949,8 +1049,8 @@ void GUIFormSpecMenu::parseButton(parserData* data, const std::string &element, if(type == "button_exit") spec.is_exit = true; - GUIButton *e = GUIButton::addButton(Environment, rect, m_tsrc, this, - spec.fid, spec.flabel.c_str()); + GUIButton *e = GUIButton::addButton(Environment, rect, m_tsrc, + data->current_parent, spec.fid, spec.flabel.c_str()); auto style = getStyleForElement(type, name, (type != "button") ? "button" : ""); e->setStyles(style); @@ -1141,7 +1241,8 @@ void GUIFormSpecMenu::parseTable(parserData* data, const std::string &element) } //now really show table - GUITable *e = new GUITable(Environment, this, spec.fid, rect, m_tsrc); + GUITable *e = new GUITable(Environment, data->current_parent, spec.fid, + rect, m_tsrc); if (spec.fname == data->focused_fieldname) { Environment->setFocus(e); @@ -1217,7 +1318,8 @@ void GUIFormSpecMenu::parseTextList(parserData* data, const std::string &element } //now really show list - GUITable *e = new GUITable(Environment, this, spec.fid, rect, m_tsrc); + GUITable *e = new GUITable(Environment, data->current_parent, spec.fid, + rect, m_tsrc); if (spec.fname == data->focused_fieldname) { Environment->setFocus(e); @@ -1293,7 +1395,8 @@ void GUIFormSpecMenu::parseDropDown(parserData* data, const std::string &element spec.send = true; //now really show list - gui::IGUIComboBox *e = Environment->addComboBox(rect, this, spec.fid); + gui::IGUIComboBox *e = Environment->addComboBox(rect, data->current_parent, + spec.fid); if (spec.fname == data->focused_fieldname) { Environment->setFocus(e); @@ -1379,7 +1482,8 @@ void GUIFormSpecMenu::parsePwdField(parserData* data, const std::string &element ); spec.send = true; - gui::IGUIEditBox * e = Environment->addEditBox(0, rect, true, this, spec.fid); + gui::IGUIEditBox *e = Environment->addEditBox(0, rect, true, + data->current_parent, spec.fid); if (spec.fname == data->focused_fieldname) { Environment->setFocus(e); @@ -1390,7 +1494,7 @@ void GUIFormSpecMenu::parsePwdField(parserData* data, const std::string &element rect.UpperLeftCorner.Y -= font_height; rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + font_height; gui::StaticText::add(Environment, spec.flabel.c_str(), rect, false, true, - this, 0); + data->current_parent, 0); } e->setPasswordBox(true,L'*'); @@ -1425,7 +1529,7 @@ void GUIFormSpecMenu::createTextField(parserData *data, FieldSpec &spec, if (!is_editable && !is_multiline) { // spec field id to 0, this stops submit searching for a value that isn't there gui::StaticText::add(Environment, spec.flabel.c_str(), rect, false, true, - this, 0); + data->current_parent, 0); return; } @@ -1443,14 +1547,14 @@ void GUIFormSpecMenu::createTextField(parserData *data, FieldSpec &spec, if (use_intl_edit_box && g_settings->getBool("freetype")) { e = new gui::intlGUIEditBox(spec.fdefault.c_str(), true, Environment, - this, spec.fid, rect, is_editable, is_multiline); + data->current_parent, spec.fid, rect, is_editable, is_multiline); } else { if (is_multiline) { - e = new GUIEditBoxWithScrollBar(spec.fdefault.c_str(), true, - Environment, this, spec.fid, rect, is_editable, true); + e = new GUIEditBoxWithScrollBar(spec.fdefault.c_str(), true, Environment, + data->current_parent, spec.fid, rect, is_editable, true); } else if (is_editable) { - e = Environment->addEditBox(spec.fdefault.c_str(), rect, true, this, - spec.fid); + e = Environment->addEditBox(spec.fdefault.c_str(), rect, true, + data->current_parent, spec.fid); e->grab(); } } @@ -1491,7 +1595,7 @@ void GUIFormSpecMenu::createTextField(parserData *data, FieldSpec &spec, rect.UpperLeftCorner.Y -= font_height; rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + font_height; IGUIElement *t = gui::StaticText::add(Environment, spec.flabel.c_str(), - rect, false, true, this, 0); + rect, false, true, data->current_parent, 0); if (t) t->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); @@ -1671,8 +1775,8 @@ void GUIFormSpecMenu::parseHyperText(parserData *data, const std::string &elemen ); spec.ftype = f_HyperText; - GUIHyperText *e = new GUIHyperText(spec.flabel.c_str(), Environment, this, - spec.fid, rect, m_client, m_tsrc); + GUIHyperText *e = new GUIHyperText(spec.flabel.c_str(), Environment, + data->current_parent, spec.fid, rect, m_client, m_tsrc); e->drop(); m_fields.push_back(spec); @@ -1750,7 +1854,8 @@ void GUIFormSpecMenu::parseLabel(parserData* data, const std::string &element) 4 ); gui::IGUIStaticText *e = gui::StaticText::add(Environment, - spec.flabel.c_str(), rect, false, false, this, spec.fid); + spec.flabel.c_str(), rect, false, false, data->current_parent, + spec.fid); e->setTextAlignment(gui::EGUIA_UPPERLEFT, gui::EGUIA_CENTER); auto style = getDefaultStyleForElement("label", spec.fname); @@ -1830,7 +1935,7 @@ void GUIFormSpecMenu::parseVertLabel(parserData* data, const std::string &elemen 258 + m_fields.size() ); gui::IGUIStaticText *e = gui::StaticText::add(Environment, spec.flabel.c_str(), - rect, false, false, this, spec.fid); + rect, false, false, data->current_parent, spec.fid); e->setTextAlignment(gui::EGUIA_CENTER, gui::EGUIA_CENTER); auto style = getDefaultStyleForElement("vertlabel", spec.fname, "label"); @@ -1904,7 +2009,7 @@ void GUIFormSpecMenu::parseImageButton(parserData* data, const std::string &elem spec.is_exit = true; GUIButtonImage *e = GUIButtonImage::addButton(Environment, rect, m_tsrc, - this, spec.fid, spec.flabel.c_str()); + data->current_parent, spec.fid, spec.flabel.c_str()); if (spec.fname == data->focused_fieldname) { Environment->setFocus(e); @@ -2010,8 +2115,8 @@ void GUIFormSpecMenu::parseTabHeader(parserData* data, const std::string &elemen core::rect rect = core::rect(pos.X, pos.Y, pos.X+geom.X, pos.Y+geom.Y); - gui::IGUITabControl *e = Environment->addTabControl(rect, this, - show_background, show_border, spec.fid); + gui::IGUITabControl *e = Environment->addTabControl(rect, + data->current_parent, show_background, show_border, spec.fid); e->setAlignment(irr::gui::EGUIA_UPPERLEFT, irr::gui::EGUIA_UPPERLEFT, irr::gui::EGUIA_UPPERLEFT, irr::gui::EGUIA_LOWERRIGHT); e->setTabHeight(geom.Y); @@ -2046,7 +2151,6 @@ void GUIFormSpecMenu::parseTabHeader(parserData* data, const std::string &elemen void GUIFormSpecMenu::parseItemImageButton(parserData* data, const std::string &element) { - if (m_client == 0) { warningstream << "invalid use of item_image_button with m_client==0" << std::endl; @@ -2106,7 +2210,7 @@ void GUIFormSpecMenu::parseItemImageButton(parserData* data, const std::string & ); GUIButtonItemImage *e_btn = GUIButtonItemImage::addButton(Environment, - rect, m_tsrc, this, spec_btn.fid, spec_btn.flabel.c_str(), + rect, m_tsrc, data->current_parent, spec_btn.fid, spec_btn.flabel.c_str(), item_name, m_client); auto style = getStyleForElement("item_image_button", spec_btn.fname, "image_button"); @@ -2164,7 +2268,8 @@ void GUIFormSpecMenu::parseBox(parserData* data, const std::string &element) core::rect rect(pos, pos + geom); - GUIBox *e = new GUIBox(Environment, this, spec.fid, rect, tmp_color); + GUIBox *e = new GUIBox(Environment, data->current_parent, spec.fid, + rect, tmp_color); auto style = getDefaultStyleForElement("box", spec.fname); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, m_formspec_version < 3)); @@ -2316,7 +2421,7 @@ void GUIFormSpecMenu::parseTooltip(parserData* data, const std::string &element) core::rect rect(pos, pos + geom); gui::IGUIElement *e = new gui::IGUIElement(EGUIET_ELEMENT, Environment, - this, fieldspec.fid, rect); + data->current_parent, fieldspec.fid, rect); // the element the rect tooltip is bound to should not block mouse-clicks e->setVisible(false); @@ -2775,6 +2880,16 @@ void GUIFormSpecMenu::parseElement(parserData* data, const std::string &element) return; } + if (type == "scroll_container") { + parseScrollContainer(data, description); + return; + } + + if (type == "scroll_container_end") { + parseScrollContainerEnd(data); + return; + } + // Ignore others infostream << "Unknown DrawSpec: type=" << type << ", data=\"" << description << "\"" << std::endl; @@ -2831,8 +2946,10 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize) tooltip_rect_it.first->drop(); for (auto &clickthrough_it : m_clickthrough_elements) clickthrough_it->drop(); + for (auto &scroll_container_it : m_scroll_containers) + scroll_container_it.second->drop(); - mydata.size= v2s32(100,100); + mydata.size = v2s32(100, 100); mydata.screensize = screensize; mydata.offset = v2f32(0.5f, 0.5f); mydata.anchor = v2f32(0.5f, 0.5f); @@ -2841,6 +2958,9 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize) // Base position of contents of form mydata.basepos = getBasePos(); + // the parent for the parsed elements + mydata.current_parent = this; + m_inventorylists.clear(); m_backgrounds.clear(); m_tables.clear(); @@ -2851,6 +2971,7 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize) m_tooltip_rects.clear(); m_inventory_rings.clear(); m_dropdowns.clear(); + m_scroll_containers.clear(); theme_by_name.clear(); theme_by_type.clear(); m_clickthrough_elements.clear(); @@ -3117,11 +3238,24 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize) parseElement(&mydata, elements[i]); } - if (!container_stack.empty()) { + if (mydata.current_parent != this) { + errorstream << "Invalid formspec string: scroll_container was never closed!" + << std::endl; + } else if (!container_stack.empty()) { errorstream << "Invalid formspec string: container was never closed!" << std::endl; } + // get the scrollbar elements for scroll_containers + for (const std::pair &c : m_scroll_containers) { + for (const std::pair &b : m_scrollbars) { + if (c.first == b.first.fname) { + c.second->setScrollBar(b.second); + break; + } + } + } + // If there are fields without explicit size[], add a "Proceed" // button and adjust size to fit all the fields. if (mydata.simple_field_count > 0 && !mydata.explicit_size) { @@ -4418,6 +4552,12 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event) } } + if (event.GUIEvent.EventType == gui::EGET_SCROLL_BAR_CHANGED) { + // move scroll_containers + for (const std::pair &c : m_scroll_containers) + c.second->onScrollEvent(event.GUIEvent.Caller); + } + if (event.GUIEvent.EventType == gui::EGET_EDITBOX_ENTER) { if (event.GUIEvent.Caller->getID() > 257) { bool close_on_enter = true; diff --git a/src/gui/guiFormSpecMenu.h b/src/gui/guiFormSpecMenu.h index dc22e8b54..28088416d 100644 --- a/src/gui/guiFormSpecMenu.h +++ b/src/gui/guiFormSpecMenu.h @@ -39,6 +39,7 @@ class ISimpleTextureSource; class Client; class GUIScrollBar; class TexturePool; +class GUIScrollContainer; typedef enum { f_Button, @@ -310,6 +311,7 @@ protected: std::vector> m_scrollbars; std::vector>> m_dropdowns; std::vector m_clickthrough_elements; + std::vector> m_scroll_containers; GUIInventoryList::ItemSpec *m_selected_item = nullptr; u16 m_selected_amount = 0; @@ -359,6 +361,7 @@ private: std::string focused_fieldname; GUITable::TableOptions table_options; GUITable::TableColumns table_columns; + gui::IGUIElement *current_parent = nullptr; GUIInventoryList::Options inventorylist_options; @@ -391,6 +394,8 @@ private: void parseSize(parserData* data, const std::string &element); void parseContainer(parserData* data, const std::string &element); void parseContainerEnd(parserData* data); + void parseScrollContainer(parserData *data, const std::string &element); + void parseScrollContainerEnd(parserData *data); void parseList(parserData* data, const std::string &element); void parseListRing(parserData* data, const std::string &element); void parseCheckbox(parserData* data, const std::string &element); diff --git a/src/gui/guiHyperText.cpp b/src/gui/guiHyperText.cpp index e107b5a3e..88931cdf9 100644 --- a/src/gui/guiHyperText.cpp +++ b/src/gui/guiHyperText.cpp @@ -917,20 +917,20 @@ void TextDrawer::place(const core::rect &dest_rect) // Draw text in a rectangle with a given offset. Items are actually placed in // relative (to upper left corner) coordinates. -void TextDrawer::draw(const core::rect &dest_rect, +void TextDrawer::draw(const core::rect &clip_rect, const core::position2d &dest_offset) { irr::video::IVideoDriver *driver = m_environment->getVideoDriver(); - core::position2d offset = dest_rect.UpperLeftCorner + dest_offset; + core::position2d offset = dest_offset; offset.Y += m_voffset; if (m_text.background_type == ParsedText::BACKGROUND_COLOR) - driver->draw2DRectangle(m_text.background_color, dest_rect); + driver->draw2DRectangle(m_text.background_color, clip_rect); for (auto &p : m_text.m_paragraphs) { for (auto &el : p.elements) { core::rect rect(el.pos + offset, el.dim); - if (!rect.isRectCollided(dest_rect)) + if (!rect.isRectCollided(clip_rect)) continue; switch (el.type) { @@ -947,7 +947,7 @@ void TextDrawer::draw(const core::rect &dest_rect, if (el.type == ParsedText::ELEMENT_TEXT) el.font->draw(el.text, rect, color, false, true, - &dest_rect); + &clip_rect); if (el.underline && el.drawwidth) { s32 linepos = el.pos.Y + offset.Y + @@ -958,7 +958,7 @@ void TextDrawer::draw(const core::rect &dest_rect, el.pos.X + offset.X + el.drawwidth, linepos + (el.baseline >> 3)); - driver->draw2DRectangle(color, linerect, &dest_rect); + driver->draw2DRectangle(color, linerect, &clip_rect); } } break; @@ -972,7 +972,7 @@ void TextDrawer::draw(const core::rect &dest_rect, irr::core::rect( core::position2d(0, 0), texture->getOriginalSize()), - &dest_rect, 0, true); + &clip_rect, 0, true); } break; case ParsedText::ELEMENT_ITEM: { @@ -982,7 +982,7 @@ void TextDrawer::draw(const core::rect &dest_rect, drawItemStack( m_environment->getVideoDriver(), - g_fontengine->getFont(), item, rect, &dest_rect, + g_fontengine->getFont(), item, rect, &clip_rect, m_client, IT_ROT_OTHER, el.angle, el.rotation ); } break; @@ -1094,6 +1094,7 @@ bool GUIHyperText::OnEvent(const SEvent &event) m_text_scrollpos.Y = -m_vscrollbar->getPos(); m_drawer.draw(m_display_text_rect, m_text_scrollpos); checkHover(event.MouseInput.X, event.MouseInput.Y); + return true; } else if (event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN) { ParsedText::Element *element = getElementAt( @@ -1151,7 +1152,8 @@ void GUIHyperText::draw() m_vscrollbar->setPos(0); m_vscrollbar->setVisible(false); } - m_drawer.draw(m_display_text_rect, m_text_scrollpos); + m_drawer.draw(AbsoluteClippingRect, + m_display_text_rect.UpperLeftCorner + m_text_scrollpos); // draw children IGUIElement::draw(); diff --git a/src/gui/guiHyperText.h b/src/gui/guiHyperText.h index c55f8a705..5b936262e 100644 --- a/src/gui/guiHyperText.h +++ b/src/gui/guiHyperText.h @@ -174,7 +174,7 @@ public: void place(const core::rect &dest_rect); inline s32 getHeight() { return m_height; }; - void draw(const core::rect &dest_rect, + void draw(const core::rect &clip_rect, const core::position2d &dest_offset); ParsedText::Element *getElementAt(core::position2d pos); ParsedText::Tag *m_hovertag; diff --git a/src/gui/guiScrollContainer.cpp b/src/gui/guiScrollContainer.cpp new file mode 100644 index 000000000..88cdc7057 --- /dev/null +++ b/src/gui/guiScrollContainer.cpp @@ -0,0 +1,70 @@ +/* +Minetest +Copyright (C) 2020 DS + +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 "guiScrollContainer.h" + +GUIScrollContainer::GUIScrollContainer(gui::IGUIEnvironment *env, + gui::IGUIElement *parent, s32 id, const core::rect &rectangle, + const std::string &orientation, f32 scrollfactor) : + gui::IGUIElement(gui::EGUIET_ELEMENT, env, parent, id, rectangle), + m_scrollbar(nullptr), m_scrollfactor(scrollfactor) +{ + if (orientation == "vertical") + m_orientation = VERTICAL; + else if (orientation == "horizontal") + m_orientation = HORIZONTAL; + else + m_orientation = UNDEFINED; +} + +bool GUIScrollContainer::OnEvent(const SEvent &event) +{ + if (event.EventType == EET_MOUSE_INPUT_EVENT && + event.MouseInput.Event == EMIE_MOUSE_WHEEL && + !event.MouseInput.isLeftPressed() && m_scrollbar) { + Environment->setFocus(m_scrollbar); + bool retval = m_scrollbar->OnEvent(event); + + // a hacky fix for updating the hovering and co. + IGUIElement *hovered_elem = getElementFromPoint(core::position2d( + event.MouseInput.X, event.MouseInput.Y)); + SEvent mov_event = event; + mov_event.MouseInput.Event = EMIE_MOUSE_MOVED; + Environment->postEventFromUser(mov_event); + if (hovered_elem) + hovered_elem->OnEvent(mov_event); + + return retval; + } + + return IGUIElement::OnEvent(event); +} + +void GUIScrollContainer::updateScrolling() +{ + s32 pos = m_scrollbar->getPos(); + core::rect rect = getRelativePosition(); + + if (m_orientation == VERTICAL) + rect.UpperLeftCorner.Y = pos * m_scrollfactor; + else if (m_orientation == HORIZONTAL) + rect.UpperLeftCorner.X = pos * m_scrollfactor; + + setRelativePosition(rect); +} diff --git a/src/gui/guiScrollContainer.h b/src/gui/guiScrollContainer.h new file mode 100644 index 000000000..9eaa880bf --- /dev/null +++ b/src/gui/guiScrollContainer.h @@ -0,0 +1,56 @@ +/* +Minetest +Copyright (C) 2020 DS + +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. +*/ + +#pragma once + +#include "irrlichttypes_extrabloated.h" +#include "util/string.h" +#include "guiScrollBar.h" + +class GUIScrollContainer : public gui::IGUIElement +{ +public: + GUIScrollContainer(gui::IGUIEnvironment *env, gui::IGUIElement *parent, s32 id, + const core::rect &rectangle, const std::string &orientation, + f32 scrollfactor); + + virtual bool OnEvent(const SEvent &event) override; + + inline void onScrollEvent(gui::IGUIElement *caller) + { + if (caller == m_scrollbar) + updateScrolling(); + } + + inline void setScrollBar(GUIScrollBar *scrollbar) { m_scrollbar = scrollbar; } + +private: + enum OrientationEnum + { + VERTICAL, + HORIZONTAL, + UNDEFINED + }; + + GUIScrollBar *m_scrollbar; + OrientationEnum m_orientation; + f32 m_scrollfactor; + + void updateScrolling(); +}; diff --git a/src/network/networkprotocol.h b/src/network/networkprotocol.h index 7223ce05c..4b7345b15 100644 --- a/src/network/networkprotocol.h +++ b/src/network/networkprotocol.h @@ -237,6 +237,7 @@ with this program; if not, write to the Free Software Foundation, Inc., Formspec elements are drawn in the order of definition bgcolor[]: use 3 parameters (bgcolor, formspec (now an enum), fbgcolor) box[] and image[] elements enable clipping by default + new element: scroll_container[] */ #define FORMSPEC_API_VERSION 3 From 27d611fe5561db20b380a16fdc6bcf1fefaf5d39 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Mon, 13 Apr 2020 10:53:10 +0200 Subject: [PATCH 098/424] Add default stack size setting (#8873) New setting "default_stack_max" to alter the default stack sizes of all items when desired. Co-authored-by: Pascal Abresch --- builtin/game/item.lua | 8 +++++--- builtin/settingtypes.txt | 4 ++++ doc/lua_api.txt | 2 ++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/builtin/game/item.lua b/builtin/game/item.lua index 513c3a5e1..3aaa71ef2 100644 --- a/builtin/game/item.lua +++ b/builtin/game/item.lua @@ -675,6 +675,8 @@ end -- Item definition defaults -- +local default_stack_max = tonumber(minetest.settings:get("default_stack_max")) or 99 + core.nodedef_default = { -- Item properties type="node", @@ -684,7 +686,7 @@ core.nodedef_default = { inventory_image = "", wield_image = "", wield_scale = {x=1,y=1,z=1}, - stack_max = 99, + stack_max = default_stack_max, usable = false, liquids_pointable = false, tool_capabilities = nil, @@ -748,7 +750,7 @@ core.craftitemdef_default = { inventory_image = "", wield_image = "", wield_scale = {x=1,y=1,z=1}, - stack_max = 99, + stack_max = default_stack_max, liquids_pointable = false, tool_capabilities = nil, @@ -786,7 +788,7 @@ core.noneitemdef_default = { -- This is used for the hand and unknown items inventory_image = "", wield_image = "", wield_scale = {x=1,y=1,z=1}, - stack_max = 99, + stack_max = default_stack_max, liquids_pointable = false, tool_capabilities = nil, diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 101b32a24..b9228f384 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -1079,6 +1079,10 @@ map-dir (Map directory) path # Setting it to -1 disables the feature. item_entity_ttl (Item entity TTL) int 900 +# Specifies the default stack size of nodes, items and tools. +# Note that mods or games may explicitly set a stack for certain (or all) items. +default_stack_max (Default stack size) int 99 + # Enable players getting damage and dying. enable_damage (Damage) bool false diff --git a/doc/lua_api.txt b/doc/lua_api.txt index f43987cd8..ccb605c8e 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -6735,6 +6735,8 @@ Used by `minetest.register_node`, `minetest.register_craftitem`, and wield_scale = {x = 1, y = 1, z = 1}, + -- The default value of 99 may be configured by + -- users using the setting "default_stack_max" stack_max = 99, range = 4.0, From 7e21b3cd4883eb8b9eb7e9ca49e50f6f0c7bc0d6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 13 Apr 2020 20:26:54 +0200 Subject: [PATCH 099/424] Remove sound menu and show proper msgs if sound is off (#9069) --- src/client/game.cpp | 66 ++++++++++++++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 22 deletions(-) diff --git a/src/client/game.cpp b/src/client/game.cpp index ac6045190..f7234eea6 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -1922,29 +1922,47 @@ void Game::processKeyInput() toggleFast(); } else if (wasKeyDown(KeyType::NOCLIP)) { toggleNoClip(); +#if USE_SOUND } else if (wasKeyDown(KeyType::MUTE)) { - bool new_mute_sound = !g_settings->getBool("mute_sound"); - g_settings->setBool("mute_sound", new_mute_sound); - if (new_mute_sound) - m_game_ui->showTranslatedStatusText("Sound muted"); - else - m_game_ui->showTranslatedStatusText("Sound unmuted"); + if (g_settings->getBool("enable_sound")) { + bool new_mute_sound = !g_settings->getBool("mute_sound"); + g_settings->setBool("mute_sound", new_mute_sound); + if (new_mute_sound) + m_game_ui->showTranslatedStatusText("Sound muted"); + else + m_game_ui->showTranslatedStatusText("Sound unmuted"); + } else { + m_game_ui->showTranslatedStatusText("Sound system is disabled"); + } } else if (wasKeyDown(KeyType::INC_VOLUME)) { - float new_volume = rangelim(g_settings->getFloat("sound_volume") + 0.1f, 0.0f, 1.0f); - wchar_t buf[100]; - g_settings->setFloat("sound_volume", new_volume); - const wchar_t *str = wgettext("Volume changed to %d%%"); - swprintf(buf, sizeof(buf) / sizeof(wchar_t), str, myround(new_volume * 100)); - delete[] str; - m_game_ui->showStatusText(buf); + if (g_settings->getBool("enable_sound")) { + float new_volume = rangelim(g_settings->getFloat("sound_volume") + 0.1f, 0.0f, 1.0f); + wchar_t buf[100]; + g_settings->setFloat("sound_volume", new_volume); + const wchar_t *str = wgettext("Volume changed to %d%%"); + swprintf(buf, sizeof(buf) / sizeof(wchar_t), str, myround(new_volume * 100)); + delete[] str; + m_game_ui->showStatusText(buf); + } else { + m_game_ui->showTranslatedStatusText("Sound system is disabled"); + } } else if (wasKeyDown(KeyType::DEC_VOLUME)) { - float new_volume = rangelim(g_settings->getFloat("sound_volume") - 0.1f, 0.0f, 1.0f); - wchar_t buf[100]; - g_settings->setFloat("sound_volume", new_volume); - const wchar_t *str = wgettext("Volume changed to %d%%"); - swprintf(buf, sizeof(buf) / sizeof(wchar_t), str, myround(new_volume * 100)); - delete[] str; - m_game_ui->showStatusText(buf); + if (g_settings->getBool("enable_sound")) { + float new_volume = rangelim(g_settings->getFloat("sound_volume") - 0.1f, 0.0f, 1.0f); + wchar_t buf[100]; + g_settings->setFloat("sound_volume", new_volume); + const wchar_t *str = wgettext("Volume changed to %d%%"); + swprintf(buf, sizeof(buf) / sizeof(wchar_t), str, myround(new_volume * 100)); + delete[] str; + m_game_ui->showStatusText(buf); + } else { + m_game_ui->showTranslatedStatusText("Sound system is disabled"); + } +#else + } else if (wasKeyDown(KeyType::MUTE) || wasKeyDown(KeyType::INC_VOLUME) + || wasKeyDown(KeyType::DEC_VOLUME)) { + m_game_ui->showTranslatedStatusText("Sound system is not supported on this build"); +#endif } else if (wasKeyDown(KeyType::CINEMATIC)) { toggleCinematic(); } else if (wasKeyDown(KeyType::SCREENSHOT)) { @@ -4162,8 +4180,12 @@ void Game::showPauseMenu() } #ifndef __ANDROID__ - os << "button_exit[4," << (ypos++) << ";3,0.5;btn_sound;" - << strgettext("Sound Volume") << "]"; +#if USE_SOUND + if (g_settings->getBool("enable_sound")) { + os << "button_exit[4," << (ypos++) << ";3,0.5;btn_sound;" + << strgettext("Sound Volume") << "]"; + } +#endif os << "button_exit[4," << (ypos++) << ";3,0.5;btn_key_config;" << strgettext("Change Keys") << "]"; #endif From 5cf6318117edcae6bf30d829d9e9dd9dbf1d4bf7 Mon Sep 17 00:00:00 2001 From: Hugues Ross Date: Tue, 14 Apr 2020 14:41:29 -0400 Subject: [PATCH 100/424] Refactor texture overrides and add new features (#9600) * Refactor texture overrides, and add new features: - Texture overrides can support multiple targets in one line - Texture override files can have comment lines - Item images/wield images can be overridden * Formatting changes * Address soime feedback - Pass vectors by const reference - Log syntax errors as warnings - Remove 'C' prefix from TextureOverrideSource * Simplify override target checks with an inline helper function * make linter happy * Apply feedback suggestions Co-Authored-By: rubenwardy * Remove remaining != 0 checks * Update copyright notice Co-authored-by: sfan5 Co-authored-by: rubenwardy --- doc/texture_packs.txt | 45 +++++++--- src/CMakeLists.txt | 1 + src/client/client.cpp | 7 +- src/itemdef.cpp | 19 ++++ src/itemdef.h | 5 ++ src/nodedef.cpp | 67 +++++--------- src/nodedef.h | 12 ++- src/server.cpp | 7 +- src/texture_override.cpp | 120 +++++++++++++++++++++++++ src/texture_override.h | 72 +++++++++++++++ util/travis/clang-format-whitelist.txt | 1 + 11 files changed, 285 insertions(+), 71 deletions(-) create mode 100644 src/texture_override.cpp create mode 100644 src/texture_override.h diff --git a/doc/texture_packs.txt b/doc/texture_packs.txt index 7ab0aca94..4e7bc93c4 100644 --- a/doc/texture_packs.txt +++ b/doc/texture_packs.txt @@ -145,34 +145,51 @@ are placeholders intended to be overwritten by the game. Texture Overrides ----------------- -You can override the textures of a node from a texture pack using -texture overrides. To do this, create a file in a texture pack -called override.txt +You can override the textures of nodes and items from a +texture pack using texture overrides. To do this, create one or +more files in a texture pack called override.txt Each line in an override.txt file is a rule. It consists of - nodename face-selector texture + itemname target texture For example, default:dirt_with_grass sides default_stone.png -You can use ^ operators as usual: +or + + default:sword_steel inventory my_steel_sword.png + +You can list multiple targets on one line as a comma-separated list: + + default:tree top,bottom my_special_tree.png + +You can use texture modifiers, as usual: default:dirt_with_grass sides default_stone.png^[brighten -Here are face selectors you can choose from: +Finally, if a line is empty or starts with '#' it will be considered +a comment and not read as a rule. You can use this to better organize +your override.txt files. -| face-selector | behavior | +Here are targets you can choose from: + +| target | behavior | |---------------|---------------------------------------------------| -| left | x- | -| right | x+ | -| front | z- | -| back | z+ | -| top | y+ | -| bottom | y- | -| sides | x-, x+, z-, z+ | +| left | x- face | +| right | x+ face | +| front | z- face | +| back | z+ face | +| top | y+ face | +| bottom | y- face | +| sides | x-, x+, z-, z+ faces | | all | All faces. You can also use '*' instead of 'all'. | +| inventory | The inventory texture | +| wield | The texture used when held by the player | + +Nodes support all targets, but other items only support 'inventory' +and 'wield' Designing leaves textures for the leaves rendering options ---------------------------------------------------------- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0b550c09c..fa261547b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -423,6 +423,7 @@ set(common_SRCS settings.cpp staticobject.cpp terminal_chat_console.cpp + texture_override.cpp tileanimation.cpp tool.cpp translation.cpp diff --git a/src/client/client.cpp b/src/client/client.cpp index c3e2a4d2a..8ee0869cd 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -1742,8 +1742,11 @@ void Client::afterContentReceived() text = wgettext("Initializing nodes..."); RenderingEngine::draw_load_screen(text, guienv, m_tsrc, 0, 72); m_nodedef->updateAliases(m_itemdef); - for (const auto &path : getTextureDirs()) - m_nodedef->applyTextureOverrides(path + DIR_DELIM + "override.txt"); + for (const auto &path : getTextureDirs()) { + TextureOverrideSource override_source(path + DIR_DELIM + "override.txt"); + m_nodedef->applyTextureOverrides(override_source.getNodeTileOverrides()); + m_itemdef->applyTextureOverrides(override_source.getItemTextureOverrides()); + } m_nodedef->setNodeRegistrationStatus(true); m_nodedef->runNodeResolveCallbacks(); delete[] text; diff --git a/src/itemdef.cpp b/src/itemdef.cpp index ba7bd6a0b..a13b3f7d4 100644 --- a/src/itemdef.cpp +++ b/src/itemdef.cpp @@ -422,6 +422,25 @@ public: return get(stack.name).color; } #endif + void applyTextureOverrides(const std::vector &overrides) + { + infostream << "ItemDefManager::applyTextureOverrides(): Applying " + "overrides to textures" << std::endl; + + for (const TextureOverride& texture_override : overrides) { + if (m_item_definitions.find(texture_override.id) == m_item_definitions.end()) { + continue; // Ignore unknown item + } + + ItemDefinition* itemdef = m_item_definitions[texture_override.id]; + + if (texture_override.hasTarget(OverrideTarget::INVENTORY)) + itemdef->inventory_image = texture_override.texture; + + if (texture_override.hasTarget(OverrideTarget::WIELD)) + itemdef->wield_image = texture_override.texture; + } + } void clear() { for(std::map::const_iterator diff --git a/src/itemdef.h b/src/itemdef.h index 45cff582a..f47e6cbe7 100644 --- a/src/itemdef.h +++ b/src/itemdef.h @@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include "itemgroup.h" #include "sound.h" +#include "texture_override.h" // TextureOverride class IGameDef; class Client; struct ToolCapabilities; @@ -157,6 +158,10 @@ public: Client *client) const=0; #endif + // Replace the textures of registered nodes with the ones specified in + // the texture pack's override.txt files + virtual void applyTextureOverrides(const std::vector &overrides)=0; + // Remove all registered item and node definitions and aliases // Then re-add the builtin item definitions virtual void clear()=0; diff --git a/src/nodedef.cpp b/src/nodedef.cpp index b6eca9497..37332c3c6 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -1304,60 +1304,35 @@ void NodeDefManager::updateAliases(IItemDefManager *idef) } } -void NodeDefManager::applyTextureOverrides(const std::string &override_filepath) +void NodeDefManager::applyTextureOverrides(const std::vector &overrides) { infostream << "NodeDefManager::applyTextureOverrides(): Applying " - "overrides to textures from " << override_filepath << std::endl; - - std::ifstream infile(override_filepath.c_str()); - std::string line; - int line_c = 0; - while (std::getline(infile, line)) { - line_c++; - // Also trim '\r' on DOS-style files - line = trim(line); - if (line.empty()) - continue; - - std::vector splitted = str_split(line, ' '); - if (splitted.size() != 3) { - errorstream << override_filepath - << ":" << line_c << " Could not apply texture override \"" - << line << "\": Syntax error" << std::endl; - continue; - } + "overrides to textures" << std::endl; + for (const TextureOverride& texture_override : overrides) { content_t id; - if (!getId(splitted[0], id)) + if (!getId(texture_override.id, id)) continue; // Ignore unknown node ContentFeatures &nodedef = m_content_features[id]; - if (splitted[1] == "top") - nodedef.tiledef[0].name = splitted[2]; - else if (splitted[1] == "bottom") - nodedef.tiledef[1].name = splitted[2]; - else if (splitted[1] == "right") - nodedef.tiledef[2].name = splitted[2]; - else if (splitted[1] == "left") - nodedef.tiledef[3].name = splitted[2]; - else if (splitted[1] == "back") - nodedef.tiledef[4].name = splitted[2]; - else if (splitted[1] == "front") - nodedef.tiledef[5].name = splitted[2]; - else if (splitted[1] == "all" || splitted[1] == "*") - for (TileDef &i : nodedef.tiledef) - i.name = splitted[2]; - else if (splitted[1] == "sides") - for (int i = 2; i < 6; i++) - nodedef.tiledef[i].name = splitted[2]; - else { - errorstream << override_filepath - << ":" << line_c << " Could not apply texture override \"" - << line << "\": Unknown node side \"" - << splitted[1] << "\"" << std::endl; - continue; - } + if (texture_override.hasTarget(OverrideTarget::TOP)) + nodedef.tiledef[0].name = texture_override.texture; + + if (texture_override.hasTarget(OverrideTarget::BOTTOM)) + nodedef.tiledef[1].name = texture_override.texture; + + if (texture_override.hasTarget(OverrideTarget::RIGHT)) + nodedef.tiledef[2].name = texture_override.texture; + + if (texture_override.hasTarget(OverrideTarget::LEFT)) + nodedef.tiledef[3].name = texture_override.texture; + + if (texture_override.hasTarget(OverrideTarget::BACK)) + nodedef.tiledef[4].name = texture_override.texture; + + if (texture_override.hasTarget(OverrideTarget::FRONT)) + nodedef.tiledef[5].name = texture_override.texture; } } diff --git a/src/nodedef.h b/src/nodedef.h index 1a12aae93..c77d53324 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -33,6 +33,7 @@ class Client; #include "itemgroup.h" #include "sound.h" // SimpleSoundSpec #include "constants.h" // BS +#include "texture_override.h" // TextureOverride #include "tileanimation.h" // PROTOCOL_VERSION >= 37 @@ -583,15 +584,12 @@ public: void updateAliases(IItemDefManager *idef); /*! - * Reads the used texture pack's override.txt, and replaces the textures - * of registered nodes with the ones specified there. + * Replaces the textures of registered nodes with the ones specified in + * the texturepack's override.txt file * - * Format of the input file: in each line - * `node_name top|bottom|right|left|front|back|all|*|sides texture_name.png` - * - * @param override_filepath path to 'texturepack/override.txt' + * @param overrides the texture overrides */ - void applyTextureOverrides(const std::string &override_filepath); + void applyTextureOverrides(const std::vector &overrides); /*! * Only the client uses this. Loads textures and shaders required for diff --git a/src/server.cpp b/src/server.cpp index 85d07fbc4..b3992b9b1 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -373,8 +373,11 @@ void Server::init() std::vector paths; fs::GetRecursiveDirs(paths, g_settings->get("texture_path")); fs::GetRecursiveDirs(paths, m_gamespec.path + DIR_DELIM + "textures"); - for (const std::string &path : paths) - m_nodedef->applyTextureOverrides(path + DIR_DELIM + "override.txt"); + for (const std::string &path : paths) { + TextureOverrideSource override_source(path + DIR_DELIM + "override.txt"); + m_nodedef->applyTextureOverrides(override_source.getNodeTileOverrides()); + m_itemdef->applyTextureOverrides(override_source.getItemTextureOverrides()); + } m_nodedef->setNodeRegistrationStatus(true); diff --git a/src/texture_override.cpp b/src/texture_override.cpp new file mode 100644 index 000000000..10d129b87 --- /dev/null +++ b/src/texture_override.cpp @@ -0,0 +1,120 @@ +/* +Minetest +Copyright (C) 2020 Hugues Ross + +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 "texture_override.h" + +#include "log.h" +#include "util/string.h" +#include +#include + +TextureOverrideSource::TextureOverrideSource(std::string filepath) +{ + std::ifstream infile(filepath.c_str()); + std::string line; + int line_index = 0; + while (std::getline(infile, line)) { + line_index++; + + // Also trim '\r' on DOS-style files + line = trim(line); + + // Ignore empty lines and comments + if (line.empty() || line[0] == '#') + continue; + + std::vector splitted = str_split(line, ' '); + if (splitted.size() != 3) { + warningstream << filepath << ":" << line_index + << " Syntax error in texture override \"" << line + << "\": Expected 3 arguments, got " << splitted.size() + << std::endl; + continue; + } + + TextureOverride texture_override = {}; + texture_override.id = splitted[0]; + texture_override.texture = splitted[2]; + + // Parse the target mask + std::vector targets = str_split(splitted[1], ','); + for (const std::string &target : targets) { + if (target == "top") + texture_override.target |= static_cast(OverrideTarget::TOP); + else if (target == "bottom") + texture_override.target |= static_cast(OverrideTarget::BOTTOM); + else if (target == "left") + texture_override.target |= static_cast(OverrideTarget::LEFT); + else if (target == "right") + texture_override.target |= static_cast(OverrideTarget::RIGHT); + else if (target == "front") + texture_override.target |= static_cast(OverrideTarget::FRONT); + else if (target == "back") + texture_override.target |= static_cast(OverrideTarget::BACK); + else if (target == "inventory") + texture_override.target |= static_cast(OverrideTarget::INVENTORY); + else if (target == "wield") + texture_override.target |= static_cast(OverrideTarget::WIELD); + else if (target == "sides") + texture_override.target |= static_cast(OverrideTarget::SIDES); + else if (target == "all" || target == "*") + texture_override.target |= static_cast(OverrideTarget::ALL_FACES); + else { + // Report invalid target + warningstream << filepath << ":" << line_index + << " Syntax error in texture override \"" << line + << "\": Unknown target \"" << target << "\"" + << std::endl; + } + } + + // If there are no valid targets, skip adding this override + if (texture_override.target == static_cast(OverrideTarget::INVALID)) { + continue; + } + + m_overrides.push_back(texture_override); + } +} + +//! Get all overrides that apply to item definitions +std::vector TextureOverrideSource::getItemTextureOverrides() +{ + std::vector found_overrides; + + for (const TextureOverride &texture_override : m_overrides) { + if (texture_override.hasTarget(OverrideTarget::ITEM_TARGETS)) + found_overrides.push_back(texture_override); + } + + return found_overrides; +} + +//! Get all overrides that apply to node definitions +std::vector TextureOverrideSource::getNodeTileOverrides() +{ + std::vector found_overrides; + + for (const TextureOverride &texture_override : m_overrides) { + if (texture_override.hasTarget(OverrideTarget::ALL_FACES)) + found_overrides.push_back(texture_override); + } + + return found_overrides; +} diff --git a/src/texture_override.h b/src/texture_override.h new file mode 100644 index 000000000..db03bd014 --- /dev/null +++ b/src/texture_override.h @@ -0,0 +1,72 @@ +/* +Minetest +Copyright (C) 2020 Hugues Ross + +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. +*/ + +#pragma once + +#include "irrlichttypes.h" +#include +#include + +//! Bitmask enum specifying what a texture override should apply to +enum class OverrideTarget : u8 +{ + INVALID = 0, + TOP = 1 << 0, + BOTTOM = 1 << 1, + LEFT = 1 << 2, + RIGHT = 1 << 3, + FRONT = 1 << 4, + BACK = 1 << 5, + INVENTORY = 1 << 6, + WIELD = 1 << 7, + + SIDES = LEFT | RIGHT | FRONT | BACK, + ALL_FACES = TOP | BOTTOM | SIDES, + ITEM_TARGETS = INVENTORY | WIELD, +}; + +struct TextureOverride +{ + std::string id; + std::string texture; + u8 target; + + // Helper function for checking if an OverrideTarget is found in + // a TextureOverride without casting + inline bool hasTarget(OverrideTarget overrideTarget) const + { + return (target & static_cast(overrideTarget)) != 0; + } +}; + +//! Class that provides texture override information from a texture pack +class TextureOverrideSource +{ +public: + TextureOverrideSource(std::string filepath); + + //! Get all overrides that apply to item definitions + std::vector getItemTextureOverrides(); + + //! Get all overrides that apply to node definitions + std::vector getNodeTileOverrides(); + +private: + std::vector m_overrides; +}; diff --git a/util/travis/clang-format-whitelist.txt b/util/travis/clang-format-whitelist.txt index bb97da7b5..02c8b2660 100644 --- a/util/travis/clang-format-whitelist.txt +++ b/util/travis/clang-format-whitelist.txt @@ -423,6 +423,7 @@ src/subgame.cpp src/subgame.h src/terminal_chat_console.cpp src/terminal_chat_console.h +src/texture_override.cpp src/threading/atomic.h src/threading/event.cpp src/threading/mutex_auto_lock.h From 7c43cf47c37b0204e34d12670d2e6975eb36b45a Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Tue, 14 Apr 2020 20:30:02 +0200 Subject: [PATCH 101/424] PostgreSQL: Fix listAllLoadableBlocks returning the same block Suggested change from https://github.com/minetest/minetest/issues/9670#issuecomment-613563738 --- src/database/database-postgresql.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/database/database-postgresql.cpp b/src/database/database-postgresql.cpp index 77385e240..92816205c 100644 --- a/src/database/database-postgresql.cpp +++ b/src/database/database-postgresql.cpp @@ -301,7 +301,7 @@ void MapDatabasePostgreSQL::listAllLoadableBlocks(std::vector &dst) int numrows = PQntuples(results); for (int row = 0; row < numrows; ++row) - dst.push_back(pg_to_v3s16(results, 0, 0)); + dst.push_back(pg_to_v3s16(results, row, 0)); PQclear(results); } From 2d5bd3bf794672285cfc796edebab2f672f2cab0 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 14 Apr 2020 20:44:18 +0200 Subject: [PATCH 102/424] scriptapi: Some small optimizations to value pushing (#9669) --- src/script/common/c_content.cpp | 34 +++++++++++++------------- src/script/common/c_converter.cpp | 40 +++++++++++++++---------------- src/script/lua_api/l_env.cpp | 8 +++---- src/script/lua_api/l_mapgen.cpp | 15 ++++++------ src/script/lua_api/l_noise.cpp | 14 +++++------ src/script/lua_api/l_object.cpp | 9 +------ src/script/lua_api/l_vmanip.cpp | 6 ++--- 7 files changed, 59 insertions(+), 67 deletions(-) diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index ff9ceec6d..d73ecedab 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -350,7 +350,7 @@ void push_object_properties(lua_State *L, ObjectProperties *prop) push_v3f(L, prop->visual_size); lua_setfield(L, -2, "visual_size"); - lua_newtable(L); + lua_createtable(L, prop->textures.size(), 0); u16 i = 1; for (const std::string &texture : prop->textures) { lua_pushlstring(L, texture.c_str(), texture.size()); @@ -358,7 +358,7 @@ void push_object_properties(lua_State *L, ObjectProperties *prop) } lua_setfield(L, -2, "textures"); - lua_newtable(L); + lua_createtable(L, prop->colors.size(), 0); i = 1; for (const video::SColor &color : prop->colors) { push_ARGB8(L, color); @@ -840,7 +840,7 @@ void push_content_features(lua_State *L, const ContentFeatures &c) lua_pushnumber(L, c.connect_sides); lua_setfield(L, -2, "connect_sides"); - lua_newtable(L); + lua_createtable(L, c.connects_to.size(), 0); u16 i = 1; for (const std::string &it : c.connects_to) { lua_pushlstring(L, it.c_str(), it.size()); @@ -963,7 +963,7 @@ void push_nodebox(lua_State *L, const NodeBox &box) void push_box(lua_State *L, const std::vector &box) { - lua_newtable(L); + lua_createtable(L, box.size(), 0); u8 i = 1; for (const aabb3f &it : box) { push_aabb3f(L, it); @@ -1040,7 +1040,7 @@ void read_soundspec(lua_State *L, int index, SimpleSoundSpec &spec) void push_soundspec(lua_State *L, const SimpleSoundSpec &spec) { - lua_newtable(L); + lua_createtable(L, 0, 3); lua_pushstring(L, spec.name.c_str()); lua_setfield(L, -2, "name"); lua_pushnumber(L, spec.gain); @@ -1125,12 +1125,12 @@ MapNode readnode(lua_State *L, int index, const NodeDefManager *ndef) /******************************************************************************/ void pushnode(lua_State *L, const MapNode &n, const NodeDefManager *ndef) { - lua_newtable(L); + lua_createtable(L, 0, 3); lua_pushstring(L, ndef->get(n).name.c_str()); lua_setfield(L, -2, "name"); - lua_pushnumber(L, n.getParam1()); + lua_pushinteger(L, n.getParam1()); lua_setfield(L, -2, "param1"); - lua_pushnumber(L, n.getParam2()); + lua_pushinteger(L, n.getParam2()); lua_setfield(L, -2, "param2"); } @@ -1163,7 +1163,7 @@ bool string_to_enum(const EnumString *spec, int &result, { const EnumString *esp = spec; while(esp->str){ - if(str == std::string(esp->str)){ + if (!strcmp(str.c_str(), esp->str)) { result = esp->num; return true; } @@ -1438,7 +1438,7 @@ ToolCapabilities read_tool_capabilities( /******************************************************************************/ void push_dig_params(lua_State *L,const DigParams ¶ms) { - lua_newtable(L); + lua_createtable(L, 0, 3); setboolfield(L, -1, "diggable", params.diggable); setfloatfield(L, -1, "time", params.time); setintfield(L, -1, "wear", params.wear); @@ -1447,7 +1447,7 @@ void push_dig_params(lua_State *L,const DigParams ¶ms) /******************************************************************************/ void push_hit_params(lua_State *L,const HitParams ¶ms) { - lua_newtable(L); + lua_createtable(L, 0, 3); setintfield(L, -1, "hp", params.hp); setintfield(L, -1, "wear", params.wear); } @@ -1540,9 +1540,9 @@ void read_groups(lua_State *L, int index, ItemGroupList &result) /******************************************************************************/ void push_groups(lua_State *L, const ItemGroupList &groups) { - lua_newtable(L); + lua_createtable(L, 0, groups.size()); for (const auto &group : groups) { - lua_pushnumber(L, group.second); + lua_pushinteger(L, group.second); lua_setfield(L, -2, group.first.c_str()); } } @@ -1587,7 +1587,7 @@ void luaentity_get(lua_State *L, u16 id) lua_getglobal(L, "core"); lua_getfield(L, -1, "luaentities"); luaL_checktype(L, -1, LUA_TTABLE); - lua_pushnumber(L, id); + lua_pushinteger(L, id); lua_gettable(L, -2); lua_remove(L, -2); // Remove luaentities lua_remove(L, -2); // Remove core @@ -1689,7 +1689,7 @@ static bool push_json_value_helper(lua_State *L, const Json::Value &value, lua_pushboolean(L, value.asInt()); break; case Json::arrayValue: - lua_newtable(L); + lua_createtable(L, value.size(), 0); for (Json::Value::const_iterator it = value.begin(); it != value.end(); ++it) { push_json_value_helper(L, *it, nullindex); @@ -1697,7 +1697,7 @@ static bool push_json_value_helper(lua_State *L, const Json::Value &value, } break; case Json::objectValue: - lua_newtable(L); + lua_createtable(L, 0, value.size()); for (Json::Value::const_iterator it = value.begin(); it != value.end(); ++it) { #ifndef JSONCPP_STRING @@ -1824,7 +1824,7 @@ void push_objectRef(lua_State *L, const u16 id) lua_getglobal(L, "core"); lua_getfield(L, -1, "object_refs"); luaL_checktype(L, -1, LUA_TTABLE); - lua_pushnumber(L, id); + lua_pushinteger(L, id); lua_gettable(L, -2); lua_remove(L, -2); // object_refs lua_remove(L, -2); // core diff --git a/src/script/common/c_converter.cpp b/src/script/common/c_converter.cpp index 3c2f75641..334af61c3 100644 --- a/src/script/common/c_converter.cpp +++ b/src/script/common/c_converter.cpp @@ -62,7 +62,7 @@ void push_float_string(lua_State *L, float value) void push_v3f(lua_State *L, v3f p) { - lua_newtable(L); + lua_createtable(L, 0, 3); lua_pushnumber(L, p.X); lua_setfield(L, -2, "x"); lua_pushnumber(L, p.Y); @@ -73,7 +73,7 @@ void push_v3f(lua_State *L, v3f p) void push_v2f(lua_State *L, v2f p) { - lua_newtable(L); + lua_createtable(L, 0, 2); lua_pushnumber(L, p.X); lua_setfield(L, -2, "x"); lua_pushnumber(L, p.Y); @@ -82,7 +82,7 @@ void push_v2f(lua_State *L, v2f p) void push_v3_float_string(lua_State *L, v3f p) { - lua_newtable(L); + lua_createtable(L, 0, 3); push_float_string(L, p.X); lua_setfield(L, -2, "x"); push_float_string(L, p.Y); @@ -93,7 +93,7 @@ void push_v3_float_string(lua_State *L, v3f p) void push_v2_float_string(lua_State *L, v2f p) { - lua_newtable(L); + lua_createtable(L, 0, 2); push_float_string(L, p.X); lua_setfield(L, -2, "x"); push_float_string(L, p.Y); @@ -115,19 +115,19 @@ v2s16 read_v2s16(lua_State *L, int index) void push_v2s16(lua_State *L, v2s16 p) { - lua_newtable(L); - lua_pushnumber(L, p.X); + lua_createtable(L, 0, 2); + lua_pushinteger(L, p.X); lua_setfield(L, -2, "x"); - lua_pushnumber(L, p.Y); + lua_pushinteger(L, p.Y); lua_setfield(L, -2, "y"); } void push_v2s32(lua_State *L, v2s32 p) { - lua_newtable(L); - lua_pushnumber(L, p.X); + lua_createtable(L, 0, 2); + lua_pushinteger(L, p.X); lua_setfield(L, -2, "x"); - lua_pushnumber(L, p.Y); + lua_pushinteger(L, p.Y); lua_setfield(L, -2, "y"); } @@ -250,14 +250,14 @@ v3d check_v3d(lua_State *L, int index) void push_ARGB8(lua_State *L, video::SColor color) { - lua_newtable(L); - lua_pushnumber(L, color.getAlpha()); + lua_createtable(L, 0, 4); + lua_pushinteger(L, color.getAlpha()); lua_setfield(L, -2, "a"); - lua_pushnumber(L, color.getRed()); + lua_pushinteger(L, color.getRed()); lua_setfield(L, -2, "r"); - lua_pushnumber(L, color.getGreen()); + lua_pushinteger(L, color.getGreen()); lua_setfield(L, -2, "g"); - lua_pushnumber(L, color.getBlue()); + lua_pushinteger(L, color.getBlue()); lua_setfield(L, -2, "b"); } @@ -274,12 +274,12 @@ v3f checkFloatPos(lua_State *L, int index) void push_v3s16(lua_State *L, v3s16 p) { - lua_newtable(L); - lua_pushnumber(L, p.X); + lua_createtable(L, 0, 3); + lua_pushinteger(L, p.X); lua_setfield(L, -2, "x"); - lua_pushnumber(L, p.Y); + lua_pushinteger(L, p.Y); lua_setfield(L, -2, "y"); - lua_pushnumber(L, p.Z); + lua_pushinteger(L, p.Z); lua_setfield(L, -2, "z"); } @@ -386,7 +386,7 @@ aabb3f read_aabb3f(lua_State *L, int index, f32 scale) void push_aabb3f(lua_State *L, aabb3f box) { - lua_newtable(L); + lua_createtable(L, 6, 0); lua_pushnumber(L, box.MinEdge.X); lua_rawseti(L, -2, 1); lua_pushnumber(L, box.MinEdge.Y); diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index e3afe1862..8c45a1510 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -73,7 +73,7 @@ void LuaABM::trigger(ServerEnvironment *env, v3s16 p, MapNode n, lua_remove(L, -2); // Remove core // Get registered_abms[m_id] - lua_pushnumber(L, m_id); + lua_pushinteger(L, m_id); lua_gettable(L, -2); if(lua_isnil(L, -1)) FATAL_ERROR(""); @@ -116,7 +116,7 @@ void LuaLBM::trigger(ServerEnvironment *env, v3s16 p, MapNode n) lua_remove(L, -2); // Remove core // Get registered_lbms[m_id] - lua_pushnumber(L, m_id); + lua_pushinteger(L, m_id); lua_gettable(L, -2); FATAL_ERROR_IF(lua_isnil(L, -1), "Entry with given id not found in registered_lbms table"); lua_remove(L, -2); // Remove registered_lbms @@ -550,7 +550,7 @@ int ModApiEnvMod::l_find_nodes_with_meta(lua_State *L) std::vector positions = env->getMap().findNodesWithMetadata( check_v3s16(L, 1), check_v3s16(L, 2)); - lua_newtable(L); + lua_createtable(L, positions.size(), 0); for (size_t i = 0; i != positions.size(); i++) { push_v3s16(L, positions[i]); lua_rawseti(L, -2, i + 1); @@ -1197,7 +1197,7 @@ int ModApiEnvMod::l_find_path(lua_State *L) searchdistance, max_jump, max_drop, algo); if (!path.empty()) { - lua_newtable(L); + lua_createtable(L, path.size(), 0); int top = lua_gettop(L); unsigned int index = 1; for (const v3s16 &i : path) { diff --git a/src/script/lua_api/l_mapgen.cpp b/src/script/lua_api/l_mapgen.cpp index cb0d6ac95..afe77826a 100644 --- a/src/script/lua_api/l_mapgen.cpp +++ b/src/script/lua_api/l_mapgen.cpp @@ -710,7 +710,7 @@ int ModApiMapgen::l_get_mapgen_object(lua_State *L) if (!mg->heightmap) return 0; - lua_newtable(L); + lua_createtable(L, maplen, 0); for (size_t i = 0; i != maplen; i++) { lua_pushinteger(L, mg->heightmap[i]); lua_rawseti(L, -2, i + 1); @@ -722,7 +722,7 @@ int ModApiMapgen::l_get_mapgen_object(lua_State *L) if (!mg->biomegen) return 0; - lua_newtable(L); + lua_createtable(L, maplen, 0); for (size_t i = 0; i != maplen; i++) { lua_pushinteger(L, mg->biomegen->biomemap[i]); lua_rawseti(L, -2, i + 1); @@ -736,7 +736,7 @@ int ModApiMapgen::l_get_mapgen_object(lua_State *L) BiomeGenOriginal *bg = (BiomeGenOriginal *)mg->biomegen; - lua_newtable(L); + lua_createtable(L, maplen, 0); for (size_t i = 0; i != maplen; i++) { lua_pushnumber(L, bg->heatmap[i]); lua_rawseti(L, -2, i + 1); @@ -751,7 +751,7 @@ int ModApiMapgen::l_get_mapgen_object(lua_State *L) BiomeGenOriginal *bg = (BiomeGenOriginal *)mg->biomegen; - lua_newtable(L); + lua_createtable(L, maplen, 0); for (size_t i = 0; i != maplen; i++) { lua_pushnumber(L, bg->humidmap[i]); lua_rawseti(L, -2, i + 1); @@ -761,13 +761,12 @@ int ModApiMapgen::l_get_mapgen_object(lua_State *L) } case MGOBJ_GENNOTIFY: { std::map >event_map; - std::map >::iterator it; mg->gennotify.getEvents(event_map); - lua_newtable(L); - for (it = event_map.begin(); it != event_map.end(); ++it) { - lua_newtable(L); + lua_createtable(L, 0, event_map.size()); + for (auto it = event_map.begin(); it != event_map.end(); ++it) { + lua_createtable(L, it->second.size(), 0); for (size_t j = 0; j != it->second.size(); j++) { push_v3s16(L, it->second[j]); diff --git a/src/script/lua_api/l_noise.cpp b/src/script/lua_api/l_noise.cpp index e38d319f4..9aeb15709 100644 --- a/src/script/lua_api/l_noise.cpp +++ b/src/script/lua_api/l_noise.cpp @@ -171,9 +171,9 @@ int LuaPerlinNoiseMap::l_get_2d_map(lua_State *L) Noise *n = o->noise; n->perlinMap2D(p.X, p.Y); - lua_newtable(L); + lua_createtable(L, n->sy, 0); for (u32 y = 0; y != n->sy; y++) { - lua_newtable(L); + lua_createtable(L, n->sx, 0); for (u32 x = 0; x != n->sx; x++) { lua_pushnumber(L, n->result[i++]); lua_rawseti(L, -2, x + 1); @@ -200,7 +200,7 @@ int LuaPerlinNoiseMap::l_get_2d_map_flat(lua_State *L) if (use_buffer) lua_pushvalue(L, 3); else - lua_newtable(L); + lua_createtable(L, maplen, 0); for (size_t i = 0; i != maplen; i++) { lua_pushnumber(L, n->result[i]); @@ -224,11 +224,11 @@ int LuaPerlinNoiseMap::l_get_3d_map(lua_State *L) Noise *n = o->noise; n->perlinMap3D(p.X, p.Y, p.Z); - lua_newtable(L); + lua_createtable(L, n->sz, 0); for (u32 z = 0; z != n->sz; z++) { - lua_newtable(L); + lua_createtable(L, n->sy, 0); for (u32 y = 0; y != n->sy; y++) { - lua_newtable(L); + lua_createtable(L, n->sx, 0); for (u32 x = 0; x != n->sx; x++) { lua_pushnumber(L, n->result[i++]); lua_rawseti(L, -2, x + 1); @@ -260,7 +260,7 @@ int LuaPerlinNoiseMap::l_get_3d_map_flat(lua_State *L) if (use_buffer) lua_pushvalue(L, 3); else - lua_newtable(L); + lua_createtable(L, maplen, 0); for (size_t i = 0; i != maplen; i++) { lua_pushnumber(L, n->result[i]); diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index fa34260bf..bb1456ac9 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -123,14 +123,7 @@ int ObjectRef::l_get_pos(lua_State *L) ObjectRef *ref = checkobject(L, 1); ServerActiveObject *co = getobject(ref); if (co == NULL) return 0; - v3f pos = co->getBasePosition() / BS; - lua_newtable(L); - lua_pushnumber(L, pos.X); - lua_setfield(L, -2, "x"); - lua_pushnumber(L, pos.Y); - lua_setfield(L, -2, "y"); - lua_pushnumber(L, pos.Z); - lua_setfield(L, -2, "z"); + push_v3f(L, co->getBasePosition() / BS); return 1; } diff --git a/src/script/lua_api/l_vmanip.cpp b/src/script/lua_api/l_vmanip.cpp index fd73d21d1..b99b1d98c 100644 --- a/src/script/lua_api/l_vmanip.cpp +++ b/src/script/lua_api/l_vmanip.cpp @@ -72,7 +72,7 @@ int LuaVoxelManip::l_get_data(lua_State *L) if (use_buffer) lua_pushvalue(L, 2); else - lua_newtable(L); + lua_createtable(L, volume, 0); for (u32 i = 0; i != volume; i++) { lua_Integer cid = vm->m_data[i].getContent(); @@ -261,7 +261,7 @@ int LuaVoxelManip::l_get_light_data(lua_State *L) u32 volume = vm->m_area.getVolume(); - lua_newtable(L); + lua_createtable(L, volume, 0); for (u32 i = 0; i != volume; i++) { lua_Integer light = vm->m_data[i].param1; lua_pushinteger(L, light); @@ -309,7 +309,7 @@ int LuaVoxelManip::l_get_param2_data(lua_State *L) if (use_buffer) lua_pushvalue(L, 2); else - lua_newtable(L); + lua_createtable(L, volume, 0); for (u32 i = 0; i != volume; i++) { lua_Integer param2 = vm->m_data[i].param2; From 032d90b9f6c9c83a4e1aaf87026ae72167d9ed3e Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 14 Apr 2020 21:22:19 +0200 Subject: [PATCH 103/424] Update wireshark dissector (#9621) --- util/wireshark/minetest.lua | 911 +++++++++++++++++++----------------- 1 file changed, 490 insertions(+), 421 deletions(-) diff --git a/util/wireshark/minetest.lua b/util/wireshark/minetest.lua index 1346adbc3..13cd6d482 100644 --- a/util/wireshark/minetest.lua +++ b/util/wireshark/minetest.lua @@ -23,18 +23,39 @@ -- +-- Wireshark documentation: +-- https://web.archive.org/web/20170711121726/https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Proto.html +-- https://web.archive.org/web/20170711121844/https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Tree.html +-- https://web.archive.org/web/20170711121917/https://www.wireshark.org/docs/wsdg_html_chunked/lua_module_Tvb.html + + -- Table of Contents: --- Part 1: Client command dissectors (TOSERVER_*) --- Part 2: Server command dissectors (TOCLIENT_*) --- Part 3: Wrapper protocol subdissectors --- Part 4: Wrapper protocol main dissector --- Part 5: Utility functions +-- Part 1: Utility functions +-- Part 2: Client command dissectors (TOSERVER_*) +-- Part 3: Server command dissectors (TOCLIENT_*) +-- Part 4: Wrapper protocol subdissectors +-- Part 5: Wrapper protocol main dissector +-- Part 6: Utility functions part 2 + + +----------------------- +-- Part 1 -- +-- Utility functions -- +----------------------- + +-- Creates two ProtoFields to hold a length and variable-length text content +-- lentype must be either "uint16" or "uint32" +function minetest_field_helper(lentype, name, abbr) + local f_textlen = ProtoField[lentype](name .. "len", abbr .. " (length)", base.DEC) + local f_text = ProtoField.string(name, abbr) + return f_textlen, f_text +end -------------------------------------------- --- Part 1 -- +-- Part 2 -- -- Client command dissectors (TOSERVER_*) -- -------------------------------------------- @@ -42,34 +63,71 @@ minetest_client_commands = {} minetest_client_obsolete = {} -- TOSERVER_INIT -minetest_client_commands[0x02] = { "INIT", 2 } do - local f_ser_fmt = ProtoField.uint8("minetest.client.init_ser_version", - "Maximum serialization format version", base.DEC) - local f_player_name = ProtoField.stringz("minetest.client.init_player_name", "Player Name") - local f_password = ProtoField.stringz("minetest.client.init_password", "Password") - local f_version = ProtoField.uint16("minetest.client.init_version", "Version", base.DEC) + local abbr = "minetest.client.init_" - minetest_client_commands[0x10] = { - "INIT_LEGACY", -- Command name - 53, -- Minimum message length including code - { f_ser_fmt, -- List of fields [optional] - f_player_name, - f_password, - f_version }, - function(buffer, pinfo, tree, t) -- Dissector function [optional] + local f_ser_fmt = ProtoField.uint8(abbr.."ser_version", + "Maximum serialization format version", base.DEC) + local f_comp_modes = ProtoField.uint16(abbr.."compression", + "Supported compression modes", base.DEC, { [0] = "No compression" }) + local f_proto_min = ProtoField.uint16(abbr.."proto_min", "Minimum protocol version", base.DEC) + local f_proto_max = ProtoField.uint16(abbr.."_proto_max", "Maximum protocol version", base.DEC) + local f_player_namelen, f_player_name = + minetest_field_helper("uint16", abbr.."player_name", "Player Name") + + minetest_client_commands[0x02] = { + "INIT", -- Command name + 11, -- Minimum message length including code + { f_ser_fmt, -- List of fields [optional] + f_comp_modes, + f_proto_min, + f_proto_max, + f_player_namelen, + f_player_name }, + function(buffer, pinfo, tree, t) -- Dissector function [optional] t:add(f_ser_fmt, buffer(2,1)) - t:add(f_player_name, buffer(3,20)) - t:add(f_password, buffer(23,28)) - t:add(f_version, buffer(51,2)) + t:add(f_comp_modes, buffer(3,2)) + t:add(f_proto_min, buffer(5,2)) + t:add(f_proto_max, buffer(7,2)) + minetest_decode_helper_ascii(buffer, t, "uint16", 9, f_player_namelen, f_player_name) end } end +-- TOSERVER_INIT_LEGACY (obsolete) + +minetest_client_commands[0x10] = { "INIT_LEGACY", 53 } +minetest_client_obsolete[0x10] = true + -- TOSERVER_INIT2 -minetest_client_commands[0x11] = { "INIT2", 2 } +do + local f_langlen, f_lang = + minetest_field_helper("uint16", "minetest.client.init2_language", "Language Code") + + minetest_client_commands[0x11] = { + "INIT2", + 2, + { f_langlen, + f_lang }, + function(buffer, pinfo, tree, t) + minetest_decode_helper_ascii(buffer, t, "uint16", 2, f_langlen, f_lang) + end + } +end + +-- TOSERVER_MODCHANNEL_JOIN + +minetest_client_commands[0x17] = { "MODCHANNEL_JOIN", 2 } + +-- TOSERVER_MODCHANNEL_LEAVE + +minetest_client_commands[0x18] = { "MODCHANNEL_LEAVE", 2 } + +-- TOSERVER_MODCHANNEL_MSG + +minetest_client_commands[0x19] = { "MODCHANNEL_MSG", 2 } -- TOSERVER_GETBLOCK (obsolete) @@ -89,18 +147,24 @@ minetest_client_obsolete[0x22] = true -- TOSERVER_PLAYERPOS do - local f_x = ProtoField.int32("minetest.client.playerpos_x", "Position X", base.DEC) - local f_y = ProtoField.int32("minetest.client.playerpos_y", "Position Y", base.DEC) - local f_z = ProtoField.int32("minetest.client.playerpos_z", "Position Z", base.DEC) - local f_speed_x = ProtoField.int32("minetest.client.playerpos_speed_x", "Speed X", base.DEC) - local f_speed_y = ProtoField.int32("minetest.client.playerpos_speed_y", "Speed Y", base.DEC) - local f_speed_z = ProtoField.int32("minetest.client.playerpos_speed_z", "Speed Z", base.DEC) - local f_pitch = ProtoField.int32("minetest.client.playerpos_pitch", "Pitch", base.DEC) - local f_yaw = ProtoField.int32("minetest.client.playerpos_yaw", "Yaw", base.DEC) + local abbr = "minetest.client.playerpos_" + + local f_x = ProtoField.int32(abbr.."x", "Position X", base.DEC) + local f_y = ProtoField.int32(abbr.."y", "Position Y", base.DEC) + local f_z = ProtoField.int32(abbr.."z", "Position Z", base.DEC) + local f_speed_x = ProtoField.int32(abbr.."speed_x", "Speed X", base.DEC) + local f_speed_y = ProtoField.int32(abbr.."speed_y", "Speed Y", base.DEC) + local f_speed_z = ProtoField.int32(abbr.."speed_z", "Speed Z", base.DEC) + local f_pitch = ProtoField.int32(abbr.."pitch", "Pitch", base.DEC) + local f_yaw = ProtoField.int32(abbr.."yaw", "Yaw", base.DEC) + local f_key_pressed = ProtoField.bytes(abbr.."key_pressed", "Pressed keys") + local f_fov = ProtoField.uint8(abbr.."fov", "FOV", base.DEC) + local f_wanted_range = ProtoField.uint8(abbr.."wanted_range", "Requested view range", base.DEC) minetest_client_commands[0x23] = { "PLAYERPOS", 34, - { f_x, f_y, f_z, f_speed_x, f_speed_y, f_speed_z, f_pitch, f_yaw }, + { f_x, f_y, f_z, f_speed_x, f_speed_y, f_speed_z, f_pitch, f_yaw, + f_key_pressed, f_fov, f_wanted_range }, function(buffer, pinfo, tree, t) t:add(f_x, buffer(2,4)) t:add(f_y, buffer(6,4)) @@ -110,6 +174,9 @@ do t:add(f_speed_z, buffer(22,4)) t:add(f_pitch, buffer(26,4)) t:add(f_yaw, buffer(30,4)) + t:add(f_key_pressed, buffer(34,4)) + t:add(f_fov, buffer(38,1)) + t:add(f_wanted_range, buffer(39,1)) end } end @@ -148,7 +215,6 @@ do end -- TOSERVER_DELETEDBLOCKS --- TODO: Test this do local f_count = ProtoField.uint8("minetest.client.deletedblocks_count", "Count", base.DEC) @@ -186,122 +252,25 @@ end minetest_client_commands[0x26] = { "ADDNODE_FROM_INVENTORY", 2 } minetest_client_obsolete[0x26] = true --- TOSERVER_CLICK_OBJECT --- TODO: Test this +-- TOSERVER_CLICK_OBJECT (obsolete) -do - local vs_button = { - [0] = "left", - [1] = "right" - } +minetest_client_commands[0x27] = { "CLICK_OBJECT", 2 } +minetest_client_obsolete[0x27] = true - local f_button = ProtoField.uint8("minetest.client.click_object_button", "Button", base.DEC, vs_button) - local f_blockpos_x = ProtoField.int16("minetest.client.click_object_blockpos_x", "Block position X", base.DEC) - local f_blockpos_y = ProtoField.int16("minetest.client.click_object_blockpos_y", "Block position Y", base.DEC) - local f_blockpos_z = ProtoField.int16("minetest.client.click_object_blockpos_z", "Block position Z", base.DEC) - local f_id = ProtoField.int16("minetest.client.click_object_id", "ID", base.DEC) - local f_item = ProtoField.uint16("minetest.client.click_object_item", "Item", base.DEC) +-- TOSERVER_GROUND_ACTION (obsolete) - minetest_client_commands[0x27] = { - "CLICK_OBJECT", 13, - { f_button, f_blockpos_x, f_blockpos_y, f_blockpos_z, f_id, f_item }, - function(buffer, pinfo, tree, t) - t:add(f_button, buffer(2,1)) - t:add(f_blockpos_x, buffer(3,2)) - t:add(f_blockpos_y, buffer(5,2)) - t:add(f_blockpos_z, buffer(7,2)) - t:add(f_id, buffer(9,2)) - t:add(f_item, buffer(11,2)) - end - } -end - --- TOSERVER_GROUND_ACTION - -do - local vs_action = { - [0] = "Start digging", - [1] = "Place block", - [2] = "Stop digging", - [3] = "Digging completed" - } - - local f_action = ProtoField.uint8("minetest.client.ground_action", "Action", base.DEC, vs_action) - local f_nodepos_undersurface_x = ProtoField.int16( - "minetest.client.ground_action_nodepos_undersurface_x", - "Node position (under surface) X") - local f_nodepos_undersurface_y = ProtoField.int16( - "minetest.client.ground_action_nodepos_undersurface_y", - "Node position (under surface) Y") - local f_nodepos_undersurface_z = ProtoField.int16( - "minetest.client.ground_action_nodepos_undersurface_z", - "Node position (under surface) Z") - local f_nodepos_abovesurface_x = ProtoField.int16( - "minetest.client.ground_action_nodepos_abovesurface_x", - "Node position (above surface) X") - local f_nodepos_abovesurface_y = ProtoField.int16( - "minetest.client.ground_action_nodepos_abovesurface_y", - "Node position (above surface) Y") - local f_nodepos_abovesurface_z = ProtoField.int16( - "minetest.client.ground_action_nodepos_abovesurface_z", - "Node position (above surface) Z") - local f_item = ProtoField.uint16("minetest.client.ground_action_item", "Item") - - minetest_client_commands[0x28] = { - "GROUND_ACTION", 17, - { f_action, - f_nodepos_undersurface_x, - f_nodepos_undersurface_y, - f_nodepos_undersurface_z, - f_nodepos_abovesurface_x, - f_nodepos_abovesurface_y, - f_nodepos_abovesurface_z, - f_item }, - function(buffer, pinfo, tree, t) - t:add(f_action, buffer(2,1)) - t:add(f_nodepos_undersurface_x, buffer(3,2)) - t:add(f_nodepos_undersurface_y, buffer(5,2)) - t:add(f_nodepos_undersurface_z, buffer(7,2)) - t:add(f_nodepos_abovesurface_x, buffer(9,2)) - t:add(f_nodepos_abovesurface_y, buffer(11,2)) - t:add(f_nodepos_abovesurface_z, buffer(13,2)) - t:add(f_item, buffer(15,2)) - end - } -end +minetest_client_commands[0x28] = { "GROUND_ACTION", 2 } +minetest_client_obsolete[0x28] = true -- TOSERVER_RELEASE (obsolete) minetest_client_commands[0x29] = { "RELEASE", 2 } minetest_client_obsolete[0x29] = true --- TOSERVER_SIGNTEXT (old signs) --- TODO: Test this or mark obsolete +-- TOSERVER_SIGNTEXT (obsolete) -do - local f_blockpos_x = ProtoField.int16("minetest.client.signtext_blockpos_x", "Block position X", base.DEC) - local f_blockpos_y = ProtoField.int16("minetest.client.signtext_blockpos_y", "Block position Y", base.DEC) - local f_blockpos_z = ProtoField.int16("minetest.client.signtext_blockpos_z", "Block position Z", base.DEC) - local f_id = ProtoField.int16("minetest.client.signtext_id", "ID", base.DEC) - local f_textlen = ProtoField.uint16("minetest.client.signtext_textlen", "Text length", base.DEC) - local f_text = ProtoField.string("minetest.client.signtext_text", "Text") - - minetest_client_commands[0x30] = { - "SIGNTEXT", 12, - { f_blockpos_x, f_blockpos_y, f_blockpos_z, f_id, f_textlen, f_text }, - function(buffer, pinfo, tree, t) - t:add(f_blockpos_x, buffer(2,2)) - t:add(f_blockpos_y, buffer(4,2)) - t:add(f_blockpos_z, buffer(6,2)) - t:add(f_id, buffer(8,2)) - t:add(f_textlen, buffer(10,2)) - local textlen = buffer(10,2):uint() - if minetest_check_length(buffer, 12 + textlen, t) then - t:add(f_text, buffer, buffer(12,textlen)) - end - end - } -end +minetest_client_commands[0x30] = { "SIGNTEXT", 2 } +minetest_client_obsolete[0x30] = true -- TOSERVER_INVENTORY_ACTION @@ -336,53 +305,16 @@ do } end --- TOSERVER_SIGNNODETEXT +-- TOSERVER_SIGNNODETEXT (obsolete) -do - local f_pos_x = ProtoField.int16("minetest.client.signnodetext_pos_x", "Block position X", base.DEC) - local f_pos_y = ProtoField.int16("minetest.client.signnodetext_pos_y", "Block position Y", base.DEC) - local f_pos_z = ProtoField.int16("minetest.client.signnodetext_pos_z", "Block position Z", base.DEC) - local f_textlen = ProtoField.uint16("minetest.client.signnodetext_textlen", "Text length", base.DEC) - local f_text = ProtoField.string("minetest.client.signnodetext_text", "Text") +minetest_client_commands[0x33] = { "SIGNNODETEXT", 2 } +minetest_client_obsolete[0x33] = true - minetest_client_commands[0x33] = { - "SIGNNODETEXT", 10, - { f_pos_x, f_pos_y, f_pos_z, f_textlen, f_text }, - function(buffer, pinfo, tree, t) - t:add(f_pos_x, buffer(2,2)) - t:add(f_pos_y, buffer(4,2)) - t:add(f_pos_z, buffer(6,2)) - t:add(f_textlen, buffer(8,2)) - local textlen = buffer(8,2):uint() - if minetest_check_length(buffer, 10 + textlen, t) then - t:add(f_text, buffer(10, textlen)) - end - end - } -end --- TOSERVER_CLICK_ACTIVEOBJECT +-- TOSERVER_CLICK_ACTIVEOBJECT (obsolete) -do - local vs_button = { - [0] = "left", - [1] = "right" - } - - local f_button = ProtoField.uint8("minetest.client.click_activeobject_button", "Button", base.DEC, vs_button) - local f_id = ProtoField.uint16("minetest.client.click_activeobject_id", "ID", base.DEC) - local f_item = ProtoField.uint16("minetest.client.click_activeobject_item", "Item", base.DEC) - - minetest_client_commands[0x34] = { - "CLICK_ACTIVEOBJECT", 7, - { f_button, f_id, f_item }, - function(buffer, pinfo, tree, t) - t:add(f_button, buffer(2,1)) - t:add(f_id, buffer(3,2)) - t:add(f_item, buffer(5,2)) - end - } -end +minetest_client_commands[0x34] = { "CLICK_ACTIVEOBJECT", 2 } +minetest_client_obsolete[0x34] = true -- TOSERVER_DAMAGE @@ -398,21 +330,10 @@ do } end --- TOSERVER_PASSWORD +-- TOSERVER_PASSWORD (obsolete) -do - local f_old_password = ProtoField.string("minetest.client.password_old", "Old password") - local f_new_password = ProtoField.string("minetest.client.password_new", "New password") - - minetest_client_commands[0x36] = { - "PASSWORD", 58, - { f_old_password, f_new_password }, - function(buffer, pinfo, tree, t) - t:add(f_old_password, buffer(2,28)) - t:add(f_new_password, buffer(30,28)) - end - } -end +minetest_client_commands[0x36] = { "CLICK_ACTIVEOBJECT", 2 } +minetest_client_obsolete[0x36] = true -- TOSERVER_PLAYERITEM @@ -429,16 +350,135 @@ do end -- TOSERVER_RESPAWN + minetest_client_commands[0x38] = { "RESPAWN", 2 } -minetest_client_commands[0x39] = { "INTERACT", 2 } +-- TOSERVER_INTERACT + +do + local abbr = "minetest.client.interact_" + local vs_action = { + [0] = "Start digging", + [1] = "Stop digging", + [2] = "Digging completed", + [3] = "Place block or item", + [4] = "Use item", + [5] = "Activate held item", + } + local vs_pointed_type = { + [0] = "Nothing", + [1] = "Node", + [2] = "Object", + } + + local f_action = ProtoField.uint8(abbr.."action", "Action", base.DEC, vs_action) + local f_item = ProtoField.uint16(abbr.."item", "Item Index", base.DEC) + local f_plen = ProtoField.uint32(abbr.."plen", "Length of pointed thing", base.DEC) + local f_pointed_version = ProtoField.uint8(abbr.."pointed_version", + "Pointed Thing Version", base.DEC) + local f_pointed_type = ProtoField.uint8(abbr.."pointed_version", + "Pointed Thing Type", base.DEC, vs_pointed_type) + local f_pointed_under_x = ProtoField.int16(abbr.."pointed_under_x", + "Node position (under surface) X") + local f_pointed_under_y = ProtoField.int16(abbr.."pointed_under_y", + "Node position (under surface) Y") + local f_pointed_under_z = ProtoField.int16(abbr.."pointed_under_z", + "Node position (under surface) Z") + local f_pointed_above_x = ProtoField.int16(abbr.."pointed_above_x", + "Node position (above surface) X") + local f_pointed_above_y = ProtoField.int16(abbr.."pointed_above_y", + "Node position (above surface) Y") + local f_pointed_above_z = ProtoField.int16(abbr.."pointed_above_z", + "Node position (above surface) Z") + local f_pointed_object_id = ProtoField.int16(abbr.."pointed_object_id", + "Object ID") + -- mising: additional playerpos data just like in TOSERVER_PLAYERPOS + + minetest_client_commands[0x39] = { + "INTERACT", 11, + { f_action, + f_item, + f_plen, + f_pointed_version, + f_pointed_type, + f_pointed_under_x, + f_pointed_under_y, + f_pointed_under_z, + f_pointed_above_x, + f_pointed_above_y, + f_pointed_above_z, + f_pointed_object_id }, + function(buffer, pinfo, tree, t) + t:add(f_action, buffer(2,1)) + t:add(f_item, buffer(3,2)) + t:add(f_plen, buffer(5,4)) + local plen = buffer(5,4):uint() + if minetest_check_length(buffer, 9 + plen, t) then + t:add(f_pointed_version, buffer(9,1)) + t:add(f_pointed_type, buffer(10,1)) + local ptype = buffer(10,1):uint() + if ptype == 1 then -- Node + t:add(f_pointed_under_x, buffer(11,2)) + t:add(f_pointed_under_y, buffer(13,2)) + t:add(f_pointed_under_z, buffer(15,2)) + t:add(f_pointed_above_x, buffer(17,2)) + t:add(f_pointed_above_x, buffer(19,2)) + t:add(f_pointed_above_x, buffer(21,2)) + elseif ptype == 2 then -- Object + t:add(f_pointed_object_id, buffer(11,2)) + end + end + end + } +end + +-- ... + minetest_client_commands[0x3a] = { "REMOVED_SOUNDS", 2 } minetest_client_commands[0x3b] = { "NODEMETA_FIELDS", 2 } minetest_client_commands[0x3c] = { "INVENTORY_FIELDS", 2 } minetest_client_commands[0x40] = { "REQUEST_MEDIA", 2 } minetest_client_commands[0x41] = { "RECEIVED_MEDIA", 2 } + +-- TOSERVER_BREATH (obsolete) + minetest_client_commands[0x42] = { "BREATH", 2 } -minetest_client_commands[0x43] = { "CLIENT_READY", 2 } +minetest_client_obsolete[0x42] = true + +-- TOSERVER_CLIENT_READY + +do + local abbr = "minetest.client.client_ready_" + local f_major = ProtoField.uint8(abbr.."major","Version Major") + local f_minor = ProtoField.uint8(abbr.."minor","Version Minor") + local f_patch = ProtoField.uint8(abbr.."patch","Version Patch") + local f_reserved = ProtoField.uint8(abbr.."reserved","Reserved") + local f_versionlen, f_version = + minetest_field_helper("uint16", abbr.."version", "Full Version String") + local f_formspec_ver = ProtoField.uint16(abbr.."formspec_version", + "Formspec API version") + + minetest_client_commands[0x43] = { + "CLIENT_READY", + 8, + { f_major, f_minor, f_patch, f_reserved, f_versionlen, + f_version, f_formspec_ver }, + function(buffer, pinfo, tree, t) + t:add(f_major, buffer(2,1)) + t:add(f_minor, buffer(3,1)) + t:add(f_patch, buffer(4,1)) + t:add(f_reserved, buffer(5,1)) + local off = minetest_decode_helper_ascii(buffer, t, "uint16", 6, + f_versionlen, f_version) + if off and minetest_check_length(buffer, off + 2, t) then + t:add(f_formspec_ver, buffer(off,2)) + end + end + } +end + +-- ... + minetest_client_commands[0x50] = { "FIRST_SRP", 2 } minetest_client_commands[0x51] = { "SRP_BYTES_A", 2 } minetest_client_commands[0x52] = { "SRP_BYTES_M", 2 } @@ -446,40 +486,84 @@ minetest_client_commands[0x52] = { "SRP_BYTES_M", 2 } -------------------------------------------- --- Part 2 -- +-- Part 3 -- -- Server command dissectors (TOCLIENT_*) -- -------------------------------------------- minetest_server_commands = {} minetest_server_obsolete = {} --- TOCLIENT_INIT +-- TOCLIENT_HELLO + +do + local abbr = "minetest.server.hello_" + + local f_ser_fmt = ProtoField.uint8(abbr.."ser_version", + "Deployed serialization format version", base.DEC) + local f_comp_mode = ProtoField.uint16(abbr.."compression", + "Deployed compression mode", base.DEC, { [0] = "No compression" }) + local f_proto = ProtoField.uint16(abbr.."proto", + "Deployed protocol version", base.DEC) + local f_auth_methods = ProtoField.bytes(abbr.."auth_modes", + "Supported authentication modes") + local f_legacy_namelen, f_legacy_name = minetest_field_helper("uint16", + abbr.."legacy_name", "Legacy player name for hashing") + + minetest_server_commands[0x02] = { + "HELLO", + 13, + { f_ser_fmt, f_comp_mode, f_proto, f_auth_methods, + f_legacy_namelen, f_legacy_name }, + function(buffer, pinfo, tree, t) + t:add(f_ser_fmt, buffer(2,1)) + t:add(f_comp_mode, buffer(3,2)) + t:add(f_proto, buffer(5,2)) + t:add(f_auth_methods, buffer(7,4)) + minetest_decode_helper_ascii(buffer, t, "uint16", 11, f_legacy_namelen, f_legacy_name) + end + } +end + +-- TOCLIENT_AUTH_ACCEPT + +do + local abbr = "minetest.server.auth_accept_" + + local f_player_x = ProtoField.float(abbr.."player_x", "Player position X") + local f_player_y = ProtoField.float(abbr.."player_y", "Player position Y") + local f_player_z = ProtoField.float(abbr.."player_z", "Player position Z") + local f_map_seed = ProtoField.uint64(abbr.."map_seed", "Map seed") + local f_send_interval = ProtoField.float(abbr.."send_interval", + "Recommended send interval") + local f_sudo_auth_methods = ProtoField.bytes(abbr.."sudo_auth_methods", + "Supported auth methods for sudo mode") + + minetest_server_commands[0x03] = { + "AUTH_ACCEPT", + 30, + { f_player_x, f_player_y, f_player_z, f_map_seed, + f_send_interval, f_sudo_auth_methods }, + function(buffer, pinfo, tree, t) + t:add(f_player_x, buffer(2,4)) + t:add(f_player_y, buffer(6,4)) + t:add(f_player_z, buffer(10,4)) + t:add(f_map_seed, buffer(14,8)) + t:add(f_send_interval, buffer(22,4)) + t:add(f_sudo_auth_methods, buffer(26,4)) + end + } +end + +-- ... -minetest_server_commands[0x02] = {"HELLO", 2} -minetest_server_commands[0x03] = {"AUTH_ACCEPT", 2} minetest_server_commands[0x04] = {"ACCEPT_SUDO_MODE", 2} minetest_server_commands[0x05] = {"DENY_SUDO_MODE", 2} minetest_server_commands[0x0A] = {"ACCESS_DENIED", 2} -do - local f_version = ProtoField.uint8("minetest.server.init_version", "Deployed version", base.DEC) - local f_pos_x = ProtoField.int16("minetest.server.init_pos_x", "Position X", base.DEC) - local f_pos_y = ProtoField.int16("minetest.server.init_pos_y", "Position Y", base.DEC) - local f_pos_z = ProtoField.int16("minetest.server.init_pos_x", "Position Z", base.DEC) - local f_map_seed = ProtoField.uint64("minetest.server.init_map_seed", "Map seed", base.DEC) +-- TOCLIENT_INIT (obsolete) - minetest_server_commands[0x10] = { - "INIT", 17, - { f_version, f_pos_x, f_pos_y, f_pos_z, f_map_seed }, - function(buffer, pinfo, tree, t) - t:add(f_version, buffer(2,1)) - t:add(f_pos_x, buffer(3,2)) - t:add(f_pos_y, buffer(5,2)) - t:add(f_pos_z, buffer(7,2)) - t:add(f_map_seed, buffer(9,8)) - end - } -end +minetest_server_commands[0x10] = { "INIT", 2 } +minetest_server_obsolete[0x10] = true -- TOCLIENT_BLOCKDATA @@ -544,37 +628,10 @@ end minetest_server_commands[0x23] = { "PLAYERPOS", 2 } minetest_server_obsolete[0x23] = true --- TOCLIENT_PLAYERINFO +-- TOCLIENT_PLAYERINFO (obsolete) -do - local f_count = ProtoField.uint16("minetest.server.playerinfo_count", "Count", base.DEC) - local f_player = ProtoField.bytes("minetest.server.playerinfo_player", "Player", base.NONE) - local f_peer_id = ProtoField.uint16("minetest.server.playerinfo_peer_id", "Peer ID", base.DEC) - local f_name = ProtoField.string("minetest.server.playerinfo_name", "Name") - - minetest_server_commands[0x24] = { - "PLAYERINFO", 2, - { f_count, f_player, f_peer_id, f_name }, - function(buffer, pinfo, tree, t) - local count = 0 - local pos, index - for pos = 2, buffer:len() - 22, 22 do -- does lua have integer division? - count = count + 1 - end - t:add(f_count, count):set_generated() - t:set_len(2 + 22 * count) - pinfo.cols.info:append(" * " .. count) - for index = 0, count - 1 do - local pos = 2 + 22 * index - local t2 = t:add(f_player, buffer(pos, 22)) - t2:set_text("Player, ID: " .. buffer(pos, 2):uint() - .. ", Name: " .. buffer(pos + 2, 20):string()) - t2:add(f_peer_id, buffer(pos, 2)) - t2:add(f_name, buffer(pos + 2, 20)) - end - end - } -end +minetest_server_commands[0x24] = { "PLAYERINFO", 2 } +minetest_server_obsolete[0x24] = true -- TOCLIENT_OPT_BLOCK_NOT_FOUND (obsolete) @@ -600,100 +657,74 @@ do } end --- TOCLIENT_OBJECTDATA +-- TOCLIENT_OBJECTDATA (obsolete) -do - local f_player_count = ProtoField.uint16("minetest.server.objectdata_player_count", - "Count of player positions", base.DEC) - local f_player = ProtoField.bytes("minetest.server.objectdata_player", "Player position") - local f_peer_id = ProtoField.uint16("minetest.server.objectdata_player_peer_id", "Peer ID") - local f_x = ProtoField.int32("minetest.server.objectdata_player_x", "Position X", base.DEC) - local f_y = ProtoField.int32("minetest.server.objectdata_player_y", "Position Y", base.DEC) - local f_z = ProtoField.int32("minetest.server.objectdata_player_z", "Position Z", base.DEC) - local f_speed_x = ProtoField.int32("minetest.server.objectdata_player_speed_x", "Speed X", base.DEC) - local f_speed_y = ProtoField.int32("minetest.server.objectdata_player_speed_y", "Speed Y", base.DEC) - local f_speed_z = ProtoField.int32("minetest.server.objectdata_player_speed_z", "Speed Z", base.DEC) - local f_pitch = ProtoField.int32("minetest.server.objectdata_player_pitch", "Pitch", base.DEC) - local f_yaw = ProtoField.int32("minetest.server.objectdata_player_yaw", "Yaw", base.DEC) - local f_block_count = ProtoField.uint16("minetest.server.objectdata_block_count", - "Count of blocks", base.DEC) - - minetest_server_commands[0x28] = { - "OBJECTDATA", 6, - { f_player_count, f_player, f_peer_id, f_x, f_y, f_z, - f_speed_x, f_speed_y, f_speed_z,f_pitch, f_yaw, - f_block_count }, - function(buffer, pinfo, tree, t) - local t2, index, pos - - local player_count_pos = 2 - local player_count = buffer(player_count_pos, 2):uint() - t:add(f_player_count, buffer(player_count_pos, 2)) - - local block_count_pos = player_count_pos + 2 + 34 * player_count - if not minetest_check_length(buffer, block_count_pos + 2, t) then - return - end - - for index = 0, player_count - 1 do - pos = player_count_pos + 2 + 34 * index - t2 = t:add(f_player, buffer(pos, 34)) - t2:set_text("Player position, ID: " .. buffer(pos, 2):uint()) - t2:add(f_peer_id, buffer(pos, 2)) - t2:add(f_x, buffer(pos + 2, 4)) - t2:add(f_y, buffer(pos + 6, 4)) - t2:add(f_z, buffer(pos + 10, 4)) - t2:add(f_speed_x, buffer(pos + 14, 4)) - t2:add(f_speed_y, buffer(pos + 18, 4)) - t2:add(f_speed_z, buffer(pos + 22, 4)) - t2:add(f_pitch, buffer(pos + 26, 4)) - t2:add(f_yaw, buffer(pos + 30, 4)) - end - - local block_count = buffer(block_count_pos, 2):uint() - t:add(f_block_count, buffer(block_count_pos, 2)) - - -- TODO: dissect blocks. - -- NOTE: block_count > 0 is obsolete. (?) - - pinfo.cols.info:append(" * " .. (player_count + block_count)) - end - } -end +minetest_server_commands[0x28] = { "OBJECTDATA", 2 } +minetest_server_obsolete[0x28] = true -- TOCLIENT_TIME_OF_DAY do local f_time = ProtoField.uint16("minetest.server.time_of_day", "Time", base.DEC) + local f_time_speed = ProtoField.float("minetest.server.time_speed", "Time Speed", base.DEC) minetest_server_commands[0x29] = { "TIME_OF_DAY", 4, - { f_time }, + { f_time, f_time_speed }, function(buffer, pinfo, tree, t) t:add(f_time, buffer(2,2)) + t:add(f_time_speed, buffer(4,4)) end } end +-- TOCLIENT_CSM_RESTRICTION_FLAGS + +minetest_server_commands[0x2a] = { "CSM_RESTRICTION_FLAGS", 2 } + +-- TOCLIENT_PLAYER_SPEED + +minetest_server_commands[0x2b] = { "PLAYER_SPEED", 2 } + -- TOCLIENT_CHAT_MESSAGE do - local f_length = ProtoField.uint16("minetest.server.chat_message_length", "Length", base.DEC) - local f_message = ProtoField.string("minetest.server.chat_message", "Message") + local abbr = "minetest.server.chat_message_" + local vs_type = { + [0] = "Raw", + [1] = "Normal", + [2] = "Announce", + [3] = "System", + } - minetest_server_commands[0x30] = { - "CHAT_MESSAGE", 4, - { f_length, f_message }, + local f_version = ProtoField.uint8(abbr.."version", "Version") + local f_type = ProtoField.uint8(abbr.."type", "Message Type", base.DEC, vs_type) + local f_senderlen, f_sender = minetest_field_helper("uint16", abbr.."sender", + "Message sender") + local f_messagelen, f_message = minetest_field_helper("uint16", abbr:sub(1,-2), + "Message") + + minetest_server_commands[0x2f] = { + "CHAT_MESSAGE", 8, + { f_version, f_type, f_senderlen, f_sender, + f_messagelen, f_message }, function(buffer, pinfo, tree, t) - t:add(f_length, buffer(2,2)) - local textlen = buffer(2,2):uint() - if minetest_check_length(buffer, 4 + textlen*2, t) then - t:add(f_message, minetest_convert_utf16(buffer(4, textlen*2), "Converted chat message")) + t:add(f_version, buffer(2,1)) + t:add(f_type, buffer(3,1)) + local off = 4 + off = minetest_decode_helper_utf16(buffer, t, "uint16", off, f_senderlen, f_sender) + if off then + off = minetest_decode_helper_utf16(buffer, t, "uint16", off, f_messagelen, f_message) end end } end +-- TOCLIENT_CHAT_MESSAGE_OLD (obsolete) + +minetest_server_commands[0x30] = { "CHAT_MESSAGE_OLD", 2 } +minetest_server_obsolete[0x30] = true + -- TOCLIENT_ACTIVE_OBJECT_REMOVE_ADD do @@ -842,13 +873,13 @@ end -- TOCLIENT_HP do - local f_hp = ProtoField.uint8("minetest.server.hp", "Hitpoints", base.DEC) + local f_hp = ProtoField.uint16("minetest.server.hp", "Hitpoints", base.DEC) minetest_server_commands[0x33] = { - "HP", 3, + "HP", 4, { f_hp }, function(buffer, pinfo, tree, t) - t:add(f_hp, buffer(2,1)) + t:add(f_hp, buffer(2,2)) end } end @@ -856,45 +887,35 @@ end -- TOCLIENT_MOVE_PLAYER do - local f_x = ProtoField.int32("minetest.server.move_player_x", "Position X", base.DEC) - local f_y = ProtoField.int32("minetest.server.move_player_y", "Position Y", base.DEC) - local f_z = ProtoField.int32("minetest.server.move_player_z", "Position Z", base.DEC) - local f_pitch = ProtoField.int32("minetest.server.move_player_pitch", "Pitch", base.DEC) - local f_yaw = ProtoField.int32("minetest.server.move_player_yaw", "Yaw", base.DEC) - local f_garbage = ProtoField.bytes("minetest.server.move_player_garbage", "Garbage") + local abbr = "minetest.server.move_player_" + + local f_x = ProtoField.float(abbr.."x", "Position X") + local f_y = ProtoField.float(abbr.."y", "Position Y") + local f_z = ProtoField.float(abbr.."z", "Position Z") + local f_pitch = ProtoField.float(abbr.."_pitch", "Pitch") + local f_yaw = ProtoField.float(abbr.."yaw", "Yaw") minetest_server_commands[0x34] = { - "MOVE_PLAYER", 18, -- actually 22, but see below + "MOVE_PLAYER", 22, { f_x, f_y, f_z, f_pitch, f_yaw, f_garbage }, function(buffer, pinfo, tree, t) t:add(f_x, buffer(2, 4)) t:add(f_y, buffer(6, 4)) t:add(f_z, buffer(10, 4)) - - -- Compatibility note: - -- Up to 2011-08-23, there was a bug in Minetest that - -- caused the server to serialize the pitch and yaw - -- with 2 bytes each instead of 4, creating a - -- malformed message. - if buffer:len() >= 22 then - t:add(f_pitch, buffer(14, 4)) - t:add(f_yaw, buffer(18, 4)) - else - t:add(f_garbage, buffer(14, 4)) - t:add_expert_info(PI_MALFORMED, PI_WARN, "Malformed pitch and yaw, possibly caused by a serialization bug in Minetest") - end + t:add(f_pitch, buffer(14, 4)) + t:add(f_yaw, buffer(18, 4)) end } end --- TOCLIENT_ACCESS_DENIED +-- TOCLIENT_ACCESS_DENIED_LEGACY do local f_reason_length = ProtoField.uint16("minetest.server.access_denied_reason_length", "Reason length", base.DEC) local f_reason = ProtoField.string("minetest.server.access_denied_reason", "Reason") minetest_server_commands[0x35] = { - "ACCESS_DENIED", 4, + "ACCESS_DENIED_LEGACY", 4, { f_reason_length, f_reason }, function(buffer, pinfo, tree, t) t:add(f_reason_length, buffer(2,2)) @@ -906,68 +927,16 @@ do } end --- TOCLIENT_PLAYERITEM +-- TOCLIENT_FOV -do - local f_count = ProtoField.uint16( - "minetest.server.playeritem_count", - "Count of players", base.DEC) - local f_player = ProtoField.bytes( - "minetest.server.playeritem_player", - "Player") - local f_peer_id = ProtoField.uint16( - "minetest.server.playeritem_peer_id", - "Peer ID", base.DEC) - local f_item_length = ProtoField.uint16( - "minetest.server.playeritem_item_length", - "Item information length", base.DEC) - local f_item = ProtoField.string( - "minetest.server.playeritem_item", - "Item information") - - minetest_server_commands[0x36] = { - "PLAYERITEM", 4, - { f_count, f_player, f_peer_id, f_item_length, f_item }, - function(buffer, pinfo, tree, t) - local count, index, pos, item_length - - count = buffer(2,2):uint() - pinfo.cols.info:append(" * " .. count) - t:add(f_count, buffer(2,2)) - - pos = 4 - for index = 0, count - 1 do - if not minetest_check_length(buffer, pos + 4, t) then - return - end - item_length = buffer(pos + 2, 2):uint() - if not minetest_check_length(buffer, pos + 4 + item_length, t) then - return - end - - local t2 = t:add(f_player, buffer(pos, 4 + item_length)) - t2:set_text("Player, ID: " .. buffer(pos, 2):uint()) - t2:add(f_peer_id, buffer(pos, 2)) - t2:add(f_item_length, buffer(pos + 2, 2)) - t2:add(f_item, buffer(pos + 4, item_length)) - - pos = pos + 4 + item_length - end - end - } -end +minetest_server_commands[0x36] = { "FOV", 2 } -- TOCLIENT_DEATHSCREEN do - local vs_set_camera_point_target = { - [0] = "False", - [1] = "True" - } - - local f_set_camera_point_target = ProtoField.uint8( + local f_set_camera_point_target = ProtoField.bool( "minetest.server.deathscreen_set_camera_point_target", - "Set camera point target", base.DEC, vs_set_camera_point_target) + "Set camera point target") local f_camera_point_target_x = ProtoField.int32( "minetest.server.deathscreen_camera_point_target_x", "Camera point target X", base.DEC) @@ -991,10 +960,26 @@ do } end +-- TOCLIENT_MEDIA + minetest_server_commands[0x38] = {"MEDIA", 2} + +-- TOCLIENT_TOOLDEF (obsolete) + minetest_server_commands[0x39] = {"TOOLDEF", 2} +minetest_server_obsolete[0x39] = true + +-- TOCLIENT_NODEDEF + minetest_server_commands[0x3a] = {"NODEDEF", 2} + +-- TOCLIENT_CRAFTITEMDEF (obsolete) + minetest_server_commands[0x3b] = {"CRAFTITEMDEF", 2} +minetest_server_obsolete[0x3b] = true + +-- ... + minetest_server_commands[0x3c] = {"ANNOUNCE_MEDIA", 2} minetest_server_commands[0x3d] = {"ITEMDEF", 2} minetest_server_commands[0x3f] = {"PLAY_SOUND", 2} @@ -1006,7 +991,14 @@ minetest_server_commands[0x44] = {"SHOW_FORMSPEC", 2} minetest_server_commands[0x45] = {"MOVEMENT", 2} minetest_server_commands[0x46] = {"SPAWN_PARTICLE", 2} minetest_server_commands[0x47] = {"ADD_PARTICLE_SPAWNER", 2} + +-- TOCLIENT_DELETE_PARTICLESPAWNER_LEGACY (obsolete) + minetest_server_commands[0x48] = {"DELETE_PARTICLESPAWNER_LEGACY", 2} +minetest_server_obsolete[0x48] = true + +-- ... + minetest_server_commands[0x49] = {"HUDADD", 2} minetest_server_commands[0x4a] = {"HUDRM", 2} minetest_server_commands[0x4b] = {"HUDCHANGE", 2} @@ -1020,11 +1012,57 @@ minetest_server_commands[0x52] = {"EYE_OFFSET", 2} minetest_server_commands[0x53] = {"DELETE_PARTICLESPAWNER", 2} minetest_server_commands[0x54] = {"CLOUD_PARAMS", 2} minetest_server_commands[0x55] = {"FADE_SOUND", 2} -minetest_server_commands[0x61] = {"SRP_BYTES_S_B", 2} + +-- TOCLIENT_UPDATE_PLAYER_LIST + +do + local abbr = "minetest.server.update_player_list_" + local vs_type = { + [0] = "Init", + [1] = "Add", + [2] = "Remove", + } + + local f_type = ProtoField.uint8(abbr.."type", "Type", base.DEC, vs_type) + local f_count = ProtoField.uint16(abbr.."count", "Number of players", base.DEC) + local f_name = ProtoField.string(abbr.."name", "Name") + + minetest_server_commands[0x56] = { + "UPDATE_PLAYER_LIST", + 5, + { f_type, f_count, f_name }, + function(buffer, pinfo, tree, t) + t:add(f_type, buffer(2,1)) + t:add(f_count, buffer(3,2)) + local count = buffer(3,2):uint() + local off = 5 + for i = 1, count do + if not minetest_check_length(buffer, off + 2, t) then + return + end + off = minetest_decode_helper_ascii(buffer, t, "uint16", off, nil, f_name) + if not off then + return + end + end + end + } +end + +-- ... + +minetest_server_commands[0x57] = {"MODCHANNEL_MSG", 2} +minetest_server_commands[0x58] = {"MODCHANNEL_SIGNAL", 2} +minetest_server_commands[0x59] = {"NODEMETA_CHANGED", 2} +minetest_server_commands[0x5a] = {"SET_SUN", 2} +minetest_server_commands[0x5b] = {"SET_MOON", 2} +minetest_server_commands[0x5c] = {"SET_STARS", 2} +minetest_server_commands[0x60] = {"SRP_BYTES_S_B", 2} +minetest_server_commands[0x61] = {"FORMSPEC_PREPEND", 2} ------------------------------------ --- Part 3 -- +-- Part 4 -- -- Wrapper protocol subdissectors -- ------------------------------------ @@ -1093,15 +1131,15 @@ function minetest_define_client_or_server_proto(is_client) this_peer = "Client" other_peer = "Server" empty_message_info = "Empty message / Connect" - commands = minetest_client_commands -- defined in Part 1 - obsolete = minetest_client_obsolete -- defined in Part 1 + commands = minetest_client_commands -- defined in Part 2 + obsolete = minetest_client_obsolete -- defined in Part 2 else proto_name = "minetest.server" this_peer = "Server" other_peer = "Client" empty_message_info = "Empty message" - commands = minetest_server_commands -- defined in Part 2 - obsolete = minetest_server_obsolete -- defined in Part 2 + commands = minetest_server_commands -- defined in Part 3 + obsolete = minetest_server_obsolete -- defined in Part 3 end -- Create the protocol object. @@ -1124,8 +1162,8 @@ function minetest_define_client_or_server_proto(is_client) for code, command_info in pairs(commands) do local command_fields = command_info[3] if command_fields ~= nil then - local index, field for index, field in ipairs(command_fields) do + assert(field ~= nil) table.insert(proto.fields, field) end end @@ -1199,7 +1237,7 @@ end ------------------------------------- --- Part 4 -- +-- Part 5 -- -- Wrapper protocol main dissector -- ------------------------------------- @@ -1311,10 +1349,10 @@ end ------------------------ --- Part 5 -- --- Utility functions -- ------------------------ +------------------------------ +-- Part 6 -- +-- Utility functions part 2 -- +------------------------------ -- Checks if a (sub-)Tvb is long enough to be further dissected. -- If it is long enough, sets the dissector tree item length to min_len @@ -1329,14 +1367,11 @@ function minetest_check_length(tvb, min_len, t) t:set_len(min_len) return true - -- Tvb:reported_length_remaining() has been added in August 2011 - -- and is not yet widely available, disable for the time being - -- TODO: uncomment at a later date - -- TODO: when uncommenting this, also re-check if other parts of + -- TODO: check if other parts of -- the dissector could benefit from reported_length_remaining - --elseif tvb:reported_length_remaining() >= min_len then - -- t:add_expert_info(PI_UNDECODED, PI_INFO, "Only part of this packet was captured, unable to decode.") - -- return false + elseif tvb:reported_length_remaining() >= min_len then + t:add_expert_info(PI_UNDECODED, PI_INFO, "Only part of this packet was captured, unable to decode.") + return false else t:add_expert_info(PI_MALFORMED, PI_ERROR, "Message is too short") @@ -1358,7 +1393,7 @@ function minetest_convert_utf16(tvb, name) hex = "" for pos = 0, tvb:len() - 2, 2 do char = tvb(pos, 2):uint() - if (char >= 0x20) and (char <= 0x7e) then + if (char >= 0x20 and char <= 0x7e) or char == 0x0a then hex = hex .. string.format(" %02x", char) else hex = hex .. " 3F" @@ -1373,3 +1408,37 @@ function minetest_convert_utf16(tvb, name) end end +-- Decodes a variable-length string as ASCII text +-- t_textlen, t_text should be the ProtoFields created by minetest_field_helper +-- alternatively t_text can be a ProtoField.string and t_textlen can be nil +-- lentype must be the type of the length field (as passed to minetest_field_helper) +-- returns nil if length check failed +function minetest_decode_helper_ascii(tvb, t, lentype, offset, f_textlen, f_text) + local n = ({uint16 = 2, uint32 = 4})[lentype] + assert(n) + + if f_textlen then + t:add(f_textlen, tvb(offset, n)) + end + local textlen = tvb(offset, n):uint() + if minetest_check_length(tvb, offset + n + textlen, t) then + t:add(f_text, tvb(offset + n, textlen)) + return offset + n + textlen + end +end + +-- Decodes a variable-length string as UTF-16 text +-- (see minetest_decode_helper_ascii) +function minetest_decode_helper_utf16(tvb, t, lentype, offset, f_textlen, f_text) + local n = ({uint16 = 2, uint32 = 4})[lentype] + assert(n) + + if f_textlen then + t:add(f_textlen, tvb(offset, n)) + end + local textlen = tvb(offset, n):uint() * 2 + if minetest_check_length(tvb, offset + n + textlen, t) then + t:add(f_text, minetest_convert_utf16(tvb(offset + n, textlen), "UTF-16 text")) + return offset + n + textlen + end +end From 62c62f382984bd1a6f5cd7c6edb00453ff758f9b Mon Sep 17 00:00:00 2001 From: DS Date: Tue, 14 Apr 2020 21:22:49 +0200 Subject: [PATCH 104/424] Add all src folders to doxygen (#9603) --- doc/Doxyfile.in | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index 3618b852d..d7816f0e4 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -20,18 +20,10 @@ PREDEFINED = "USE_SPATIAL=1" \ "USE_GETTEXT=1" # Input -RECURSIVE = NO +RECURSIVE = YES STRIP_FROM_PATH = @CMAKE_CURRENT_SOURCE_DIR@/src INPUT = @CMAKE_CURRENT_SOURCE_DIR@/doc/main_page.dox \ - @CMAKE_CURRENT_SOURCE_DIR@/src/ \ - @CMAKE_CURRENT_SOURCE_DIR@/src/client \ - @CMAKE_CURRENT_SOURCE_DIR@/src/network \ - @CMAKE_CURRENT_SOURCE_DIR@/src/util \ - @CMAKE_CURRENT_SOURCE_DIR@/src/script \ - @CMAKE_CURRENT_SOURCE_DIR@/src/script/common \ - @CMAKE_CURRENT_SOURCE_DIR@/src/script/cpp_api \ - @CMAKE_CURRENT_SOURCE_DIR@/src/script/lua_api \ - @CMAKE_CURRENT_SOURCE_DIR@/src/threading + @CMAKE_CURRENT_SOURCE_DIR@/src/ # Dot graphs HAVE_DOT = @DOXYGEN_DOT_FOUND@ From 5c588f89e79e02cba392abe3d00688772321f88b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Wed, 15 Apr 2020 08:01:11 +0200 Subject: [PATCH 105/424] Verify database connection on interval (#9665) --- src/database/database-postgresql.cpp | 36 ++++++++++++++++------------ src/database/database-postgresql.h | 8 +++++-- src/database/database-sqlite3.cpp | 26 ++++++++++---------- src/database/database-sqlite3.h | 12 +++++++--- src/database/database.h | 4 ++++ src/map.cpp | 5 ++++ src/map.h | 1 + src/serverenvironment.cpp | 5 ++++ src/serverenvironment.h | 1 + 9 files changed, 65 insertions(+), 33 deletions(-) diff --git a/src/database/database-postgresql.cpp b/src/database/database-postgresql.cpp index 92816205c..c1b81586d 100644 --- a/src/database/database-postgresql.cpp +++ b/src/database/database-postgresql.cpp @@ -90,13 +90,19 @@ void Database_PostgreSQL::connectToDatabase() initStatements(); } -void Database_PostgreSQL::verifyDatabase() +void Database_PostgreSQL::pingDatabase() { - if (PQstatus(m_conn) == CONNECTION_OK) - return; + // Verify DB connection with ping + try { + ping(); + } catch (const DatabaseException &e) { + // If ping failed, show the error and try reconnect + PQreset(m_conn); - PQreset(m_conn); - ping(); + errorstream << e.what() << std::endl + << "Reconnecting to database " << m_connect_string << std::endl; + connectToDatabase(); + } } void Database_PostgreSQL::ping() @@ -151,7 +157,7 @@ void Database_PostgreSQL::createTableIfNotExists(const std::string &table_name, void Database_PostgreSQL::beginSave() { - verifyDatabase(); + pingDatabase(); checkResults(PQexec(m_conn, "BEGIN;")); } @@ -227,7 +233,7 @@ bool MapDatabasePostgreSQL::saveBlock(const v3s16 &pos, const std::string &data) return false; } - verifyDatabase(); + pingDatabase(); s32 x, y, z; x = htonl(pos.X); @@ -251,7 +257,7 @@ bool MapDatabasePostgreSQL::saveBlock(const v3s16 &pos, const std::string &data) void MapDatabasePostgreSQL::loadBlock(const v3s16 &pos, std::string *block) { - verifyDatabase(); + pingDatabase(); s32 x, y, z; x = htonl(pos.X); @@ -275,7 +281,7 @@ void MapDatabasePostgreSQL::loadBlock(const v3s16 &pos, std::string *block) bool MapDatabasePostgreSQL::deleteBlock(const v3s16 &pos) { - verifyDatabase(); + pingDatabase(); s32 x, y, z; x = htonl(pos.X); @@ -293,7 +299,7 @@ bool MapDatabasePostgreSQL::deleteBlock(const v3s16 &pos) void MapDatabasePostgreSQL::listAllLoadableBlocks(std::vector &dst) { - verifyDatabase(); + pingDatabase(); PGresult *results = execPrepared("list_all_loadable_blocks", 0, NULL, NULL, NULL, false, false); @@ -435,7 +441,7 @@ void PlayerDatabasePostgreSQL::initStatements() bool PlayerDatabasePostgreSQL::playerDataExists(const std::string &playername) { - verifyDatabase(); + pingDatabase(); const char *values[] = { playername.c_str() }; PGresult *results = execPrepared("load_player", 1, values, false); @@ -451,7 +457,7 @@ void PlayerDatabasePostgreSQL::savePlayer(RemotePlayer *player) if (!sao) return; - verifyDatabase(); + pingDatabase(); v3f pos = sao->getBasePosition(); std::string pitch = ftos(sao->getLookPitch()); @@ -535,7 +541,7 @@ void PlayerDatabasePostgreSQL::savePlayer(RemotePlayer *player) bool PlayerDatabasePostgreSQL::loadPlayer(RemotePlayer *player, PlayerSAO *sao) { sanity_check(sao); - verifyDatabase(); + pingDatabase(); const char *values[] = { player->getName() }; PGresult *results = execPrepared("load_player", 1, values, false, false); @@ -610,7 +616,7 @@ bool PlayerDatabasePostgreSQL::removePlayer(const std::string &name) if (!playerDataExists(name)) return false; - verifyDatabase(); + pingDatabase(); const char *values[] = { name.c_str() }; execPrepared("remove_player", 1, values); @@ -620,7 +626,7 @@ bool PlayerDatabasePostgreSQL::removePlayer(const std::string &name) void PlayerDatabasePostgreSQL::listPlayers(std::vector &res) { - verifyDatabase(); + pingDatabase(); PGresult *results = execPrepared("load_player_list", 0, NULL, false); diff --git a/src/database/database-postgresql.h b/src/database/database-postgresql.h index db0b505c9..5a8b89a51 100644 --- a/src/database/database-postgresql.h +++ b/src/database/database-postgresql.h @@ -32,12 +32,13 @@ public: Database_PostgreSQL(const std::string &connect_string); ~Database_PostgreSQL(); + virtual void pingDatabase(); + void beginSave(); void endSave(); bool initialized() const; - protected: // Conversion helpers inline int pg_to_int(PGresult *res, int row, int col) @@ -82,7 +83,6 @@ protected: } void createTableIfNotExists(const std::string &table_name, const std::string &definition); - void verifyDatabase(); // Database initialization void connectToDatabase(); @@ -113,6 +113,8 @@ public: MapDatabasePostgreSQL(const std::string &connect_string); virtual ~MapDatabasePostgreSQL() = default; + virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); } + bool saveBlock(const v3s16 &pos, const std::string &data); void loadBlock(const v3s16 &pos, std::string *block); bool deleteBlock(const v3s16 &pos); @@ -132,6 +134,8 @@ public: PlayerDatabasePostgreSQL(const std::string &connect_string); virtual ~PlayerDatabasePostgreSQL() = default; + virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); } + void savePlayer(RemotePlayer *player); bool loadPlayer(RemotePlayer *player, PlayerSAO *sao); bool removePlayer(const std::string &name); diff --git a/src/database/database-sqlite3.cpp b/src/database/database-sqlite3.cpp index 4560743b9..116096f68 100644 --- a/src/database/database-sqlite3.cpp +++ b/src/database/database-sqlite3.cpp @@ -121,7 +121,7 @@ Database_SQLite3::Database_SQLite3(const std::string &savedir, const std::string void Database_SQLite3::beginSave() { - verifyDatabase(); + pingDatabase(); SQLRES(sqlite3_step(m_stmt_begin), SQLITE_DONE, "Failed to start SQLite3 transaction"); sqlite3_reset(m_stmt_begin); @@ -129,7 +129,7 @@ void Database_SQLite3::beginSave() void Database_SQLite3::endSave() { - verifyDatabase(); + pingDatabase(); SQLRES(sqlite3_step(m_stmt_end), SQLITE_DONE, "Failed to commit SQLite3 transaction"); sqlite3_reset(m_stmt_end); @@ -171,7 +171,7 @@ void Database_SQLite3::openDatabase() "Failed to enable sqlite3 foreign key support"); } -void Database_SQLite3::verifyDatabase() +void Database_SQLite3::pingDatabase() { if (m_initialized) return; @@ -247,7 +247,7 @@ inline void MapDatabaseSQLite3::bindPos(sqlite3_stmt *stmt, const v3s16 &pos, in bool MapDatabaseSQLite3::deleteBlock(const v3s16 &pos) { - verifyDatabase(); + pingDatabase(); bindPos(m_stmt_delete, pos); @@ -263,7 +263,7 @@ bool MapDatabaseSQLite3::deleteBlock(const v3s16 &pos) bool MapDatabaseSQLite3::saveBlock(const v3s16 &pos, const std::string &data) { - verifyDatabase(); + pingDatabase(); #ifdef __ANDROID__ /** @@ -290,7 +290,7 @@ bool MapDatabaseSQLite3::saveBlock(const v3s16 &pos, const std::string &data) void MapDatabaseSQLite3::loadBlock(const v3s16 &pos, std::string *block) { - verifyDatabase(); + pingDatabase(); bindPos(m_stmt_read, pos); @@ -311,7 +311,7 @@ void MapDatabaseSQLite3::loadBlock(const v3s16 &pos, std::string *block) void MapDatabaseSQLite3::listAllLoadableBlocks(std::vector &dst) { - verifyDatabase(); + pingDatabase(); while (sqlite3_step(m_stmt_list) == SQLITE_ROW) dst.push_back(getIntegerAsBlock(sqlite3_column_int64(m_stmt_list, 0))); @@ -439,7 +439,7 @@ void PlayerDatabaseSQLite3::initStatements() bool PlayerDatabaseSQLite3::playerDataExists(const std::string &name) { - verifyDatabase(); + pingDatabase(); str_to_sqlite(m_stmt_player_load, 1, name); bool res = (sqlite3_step(m_stmt_player_load) == SQLITE_ROW); sqlite3_reset(m_stmt_player_load); @@ -536,7 +536,7 @@ void PlayerDatabaseSQLite3::savePlayer(RemotePlayer *player) bool PlayerDatabaseSQLite3::loadPlayer(RemotePlayer *player, PlayerSAO *sao) { - verifyDatabase(); + pingDatabase(); str_to_sqlite(m_stmt_player_load, 1, player->getName()); if (sqlite3_step(m_stmt_player_load) != SQLITE_ROW) { @@ -600,7 +600,7 @@ bool PlayerDatabaseSQLite3::removePlayer(const std::string &name) void PlayerDatabaseSQLite3::listPlayers(std::vector &res) { - verifyDatabase(); + pingDatabase(); while (sqlite3_step(m_stmt_player_list) == SQLITE_ROW) res.push_back(sqlite_to_string(m_stmt_player_list, 0)); @@ -673,7 +673,7 @@ void AuthDatabaseSQLite3::initStatements() bool AuthDatabaseSQLite3::getAuth(const std::string &name, AuthEntry &res) { - verifyDatabase(); + pingDatabase(); str_to_sqlite(m_stmt_read, 1, name); if (sqlite3_step(m_stmt_read) != SQLITE_ROW) { sqlite3_reset(m_stmt_read); @@ -735,7 +735,7 @@ bool AuthDatabaseSQLite3::createAuth(AuthEntry &authEntry) bool AuthDatabaseSQLite3::deleteAuth(const std::string &name) { - verifyDatabase(); + pingDatabase(); str_to_sqlite(m_stmt_delete, 1, name); sqlite3_vrfy(sqlite3_step(m_stmt_delete), SQLITE_DONE); @@ -749,7 +749,7 @@ bool AuthDatabaseSQLite3::deleteAuth(const std::string &name) void AuthDatabaseSQLite3::listNames(std::vector &res) { - verifyDatabase(); + pingDatabase(); while (sqlite3_step(m_stmt_list_names) == SQLITE_ROW) { res.push_back(sqlite_to_string(m_stmt_list_names, 0)); diff --git a/src/database/database-sqlite3.h b/src/database/database-sqlite3.h index d7202a918..647eddf7a 100644 --- a/src/database/database-sqlite3.h +++ b/src/database/database-sqlite3.h @@ -36,13 +36,13 @@ public: void beginSave(); void endSave(); + // Open and initialize the database if needed + virtual void pingDatabase(); + bool initialized() const { return m_initialized; } protected: Database_SQLite3(const std::string &savedir, const std::string &dbname); - // Open and initialize the database if needed - void verifyDatabase(); - // Convertors inline void str_to_sqlite(sqlite3_stmt *s, int iCol, const std::string &str) const { @@ -146,6 +146,8 @@ public: MapDatabaseSQLite3(const std::string &savedir); virtual ~MapDatabaseSQLite3(); + virtual void pingDatabase() { Database_SQLite3::pingDatabase(); } + bool saveBlock(const v3s16 &pos, const std::string &data); void loadBlock(const v3s16 &pos, std::string *block); bool deleteBlock(const v3s16 &pos); @@ -173,6 +175,8 @@ public: PlayerDatabaseSQLite3(const std::string &savedir); virtual ~PlayerDatabaseSQLite3(); + virtual void pingDatabase() { Database_SQLite3::pingDatabase(); } + void savePlayer(RemotePlayer *player); bool loadPlayer(RemotePlayer *player, PlayerSAO *sao); bool removePlayer(const std::string &name); @@ -208,6 +212,8 @@ public: AuthDatabaseSQLite3(const std::string &savedir); virtual ~AuthDatabaseSQLite3(); + virtual void pingDatabase() { Database_SQLite3::pingDatabase(); } + virtual bool getAuth(const std::string &name, AuthEntry &res); virtual bool saveAuth(const AuthEntry &authEntry); virtual bool createAuth(AuthEntry &authEntry); diff --git a/src/database/database.h b/src/database/database.h index b7d551935..47605a07e 100644 --- a/src/database/database.h +++ b/src/database/database.h @@ -32,6 +32,7 @@ public: virtual void beginSave() = 0; virtual void endSave() = 0; virtual bool initialized() const { return true; } + virtual void pingDatabase() {} }; class MapDatabase : public Database @@ -57,6 +58,8 @@ class PlayerDatabase public: virtual ~PlayerDatabase() = default; + virtual void pingDatabase() {} + virtual void savePlayer(RemotePlayer *player) = 0; virtual bool loadPlayer(RemotePlayer *player, PlayerSAO *sao) = 0; virtual bool removePlayer(const std::string &name) = 0; @@ -83,4 +86,5 @@ public: virtual bool deleteAuth(const std::string &name) = 0; virtual void listNames(std::vector &res) = 0; virtual void reload() = 0; + virtual void pingDatabase() {} }; diff --git a/src/map.cpp b/src/map.cpp index eb69955ee..12e122124 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1887,6 +1887,11 @@ MapDatabase *ServerMap::createDatabase( throw BaseException(std::string("Database backend ") + name + " not supported."); } +void ServerMap::pingDatabase() +{ + dbase->pingDatabase(); +} + void ServerMap::beginSave() { dbase->beginSave(); diff --git a/src/map.h b/src/map.h index da55fb432..ff6b20c4f 100644 --- a/src/map.h +++ b/src/map.h @@ -385,6 +385,7 @@ public: Database functions */ static MapDatabase *createDatabase(const std::string &name, const std::string &savedir, Settings &conf); + void pingDatabase(); // Call these before and after saving of blocks void beginSave(); diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 32d10f8c0..739384673 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -1219,6 +1219,11 @@ void ServerEnvironment::step(float dtime) } } + if (m_database_check_interval.step(dtime, 10.0f)) { + m_auth_database->pingDatabase(); + m_player_database->pingDatabase(); + m_map->pingDatabase(); + } /* Manage active block list */ diff --git a/src/serverenvironment.h b/src/serverenvironment.h index e10658249..55ecbd05f 100644 --- a/src/serverenvironment.h +++ b/src/serverenvironment.h @@ -435,6 +435,7 @@ private: IntervalLimiter m_object_management_interval; // List of active blocks ActiveBlockList m_active_blocks; + IntervalLimiter m_database_check_interval; IntervalLimiter m_active_blocks_management_interval; IntervalLimiter m_active_block_modifier_interval; IntervalLimiter m_active_blocks_nodemetadata_interval; From 8ae8c1600a66c724565ce7a70e0e5f542f12e38e Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 15 Apr 2020 08:01:28 +0200 Subject: [PATCH 106/424] Fix parsing JSON with large integers (#9674) --- src/script/common/c_content.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index d73ecedab..25dada757 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -1671,10 +1671,10 @@ static bool push_json_value_helper(lua_State *L, const Json::Value &value, lua_pushvalue(L, nullindex); break; case Json::intValue: - lua_pushinteger(L, value.asInt()); + lua_pushinteger(L, value.asLargestInt()); break; case Json::uintValue: - lua_pushinteger(L, value.asUInt()); + lua_pushinteger(L, value.asLargestUInt()); break; case Json::realValue: lua_pushnumber(L, value.asDouble()); @@ -1700,7 +1700,7 @@ static bool push_json_value_helper(lua_State *L, const Json::Value &value, lua_createtable(L, 0, value.size()); for (Json::Value::const_iterator it = value.begin(); it != value.end(); ++it) { -#ifndef JSONCPP_STRING +#if !defined(JSONCPP_STRING) && (JSONCPP_VERSION_MAJOR < 1 || JSONCPP_VERSION_MINOR < 9) const char *str = it.memberName(); lua_pushstring(L, str ? str : ""); #else From 62ae7adab2bebde04864c12543caefbffab24963 Mon Sep 17 00:00:00 2001 From: Maksim Date: Wed, 15 Apr 2020 16:27:40 +0200 Subject: [PATCH 107/424] Android: add Android Studio support, completely redone java part (#9066) --- .gitignore | 20 +- build/android/.gitignore | 11 + build/android/Makefile | 763 ------------------ build/android/app/build.gradle | 108 +++ .../{ => app}/src/main/AndroidManifest.xml | 38 +- .../net/minetest/minetest/CopyZipTask.java | 82 ++ .../net/minetest/minetest/GameActivity.java} | 104 +-- .../minetest/InputDialogActivity.java | 98 +++ .../net/minetest/minetest/MainActivity.java | 139 ++++ .../net/minetest/minetest/UnzipService.java | 153 ++++ .../src/main/res/drawable/background.png | Bin .../{ => app}/src/main/res/drawable/bg.xml | 2 +- .../app/src/main/res/layout/activity_main.xml | 30 + .../src/main/res/mipmap/ic_launcher.png | Bin .../app/src/main/res/values/strings.xml | 10 + .../app/src/main/res/values/styles.xml | 22 + build/android/build.gradle | 175 +--- build/android/gradle.properties | 11 +- .../android/gradle/wrapper/gradle-wrapper.jar | Bin 54731 -> 55616 bytes .../gradle/wrapper/gradle-wrapper.properties | 3 +- build/android/gradlew | 22 +- build/android/gradlew.bat | 18 +- build/android/jni/Android.mk | 448 ---------- build/android/jni/Application.mk | 9 - build/android/jni/Deps.mk | 7 - build/android/jni/Irrlicht.mk | 8 - build/android/native/build.gradle | 59 ++ build/android/native/jni/Android.mk | 218 +++++ build/android/native/jni/Application.mk | 32 + .../native/src/main/AndroidManifest.xml | 1 + .../patches/irrlicht-back_button.patch | 20 - .../patches/irrlicht-native_activity.patch | 13 - .../patches/irrlicht-texturehack.patch | 240 ------ .../android/patches/irrlicht-touchcount.patch | 30 - .../patches/libvorbis-libogg-fpu.patch | 37 - build/android/patches/openssl_arch.patch | 13 - build/android/settings.gradle | 1 + .../net.minetest.minetest/MainActivity.java | 77 -- .../MinetestAssetCopy.java | 371 --------- .../MinetestTextEntry.java | 87 -- .../android/src/main/res/layout/assetcopy.xml | 24 - .../src/main/res/values-v21/styles.xml | 17 - build/android/src/main/res/values/strings.xml | 5 - build/android/src/main/res/values/styles.xml | 14 - doc/README.android | 75 +- src/config.h | 6 +- src/main.cpp | 1 - src/porting_android.cpp | 17 +- src/porting_android.h | 5 - src/version.cpp | 5 +- 50 files changed, 1129 insertions(+), 2520 deletions(-) create mode 100644 build/android/.gitignore delete mode 100644 build/android/Makefile create mode 100644 build/android/app/build.gradle rename build/android/{ => app}/src/main/AndroidManifest.xml (68%) create mode 100644 build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java rename build/android/{src/main/java/net.minetest.minetest/MtNativeActivity.java => app/src/main/java/net/minetest/minetest/GameActivity.java} (51%) create mode 100644 build/android/app/src/main/java/net/minetest/minetest/InputDialogActivity.java create mode 100644 build/android/app/src/main/java/net/minetest/minetest/MainActivity.java create mode 100644 build/android/app/src/main/java/net/minetest/minetest/UnzipService.java rename build/android/{ => app}/src/main/res/drawable/background.png (100%) rename build/android/{ => app}/src/main/res/drawable/bg.xml (82%) create mode 100644 build/android/app/src/main/res/layout/activity_main.xml rename build/android/{ => app}/src/main/res/mipmap/ic_launcher.png (100%) create mode 100644 build/android/app/src/main/res/values/strings.xml create mode 100644 build/android/app/src/main/res/values/styles.xml delete mode 100644 build/android/jni/Android.mk delete mode 100644 build/android/jni/Application.mk delete mode 100644 build/android/jni/Deps.mk delete mode 100644 build/android/jni/Irrlicht.mk create mode 100644 build/android/native/build.gradle create mode 100644 build/android/native/jni/Android.mk create mode 100644 build/android/native/jni/Application.mk create mode 100644 build/android/native/src/main/AndroidManifest.xml delete mode 100644 build/android/patches/irrlicht-back_button.patch delete mode 100644 build/android/patches/irrlicht-native_activity.patch delete mode 100644 build/android/patches/irrlicht-texturehack.patch delete mode 100644 build/android/patches/irrlicht-touchcount.patch delete mode 100644 build/android/patches/libvorbis-libogg-fpu.patch delete mode 100644 build/android/patches/openssl_arch.patch delete mode 100644 build/android/src/main/java/net.minetest.minetest/MainActivity.java delete mode 100644 build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java delete mode 100644 build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java delete mode 100644 build/android/src/main/res/layout/assetcopy.xml delete mode 100644 build/android/src/main/res/values-v21/styles.xml delete mode 100644 build/android/src/main/res/values/strings.xml delete mode 100644 build/android/src/main/res/values/styles.xml diff --git a/.gitignore b/.gitignore index aae9bf437..9ab69b30e 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ *.swp *.bak* *.orig +.DS_Store # Vim *.vim # Kate @@ -77,17 +78,11 @@ doc/mkdocs/mkdocs.yml ## Build files CMakeFiles Makefile -!build/android/Makefile -build/android/path.cfg -build/android/*.apk -build/android/.externalNativeBuild cmake_install.cmake CMakeCache.txt CPackConfig.cmake CPackSourceConfig.cmake src/test_config.h -src/android_version.h -src/android_version_githash.h src/cmake_config.h src/cmake_config_githash.h src/unittest/test_world/world.mt @@ -109,16 +104,3 @@ cmake_config.h cmake_config_githash.h CMakeDoxy* compile_commands.json - -## Android build files -build/android/src/main/assets -build/android/build -build/android/deps -build/android/libs -build/android/jni/lib -build/android/jni/src -build/android/src/main/jniLibs -build/android/obj -build/android/local.properties -build/android/.gradle -timestamp diff --git a/build/android/.gitignore b/build/android/.gitignore new file mode 100644 index 000000000..e0613f8b3 --- /dev/null +++ b/build/android/.gitignore @@ -0,0 +1,11 @@ +*.iml +.externalNativeBuild +.gradle +app/build +app/release +app/src/main/assets +build +local.properties +native/.* +native/build +native/deps diff --git a/build/android/Makefile b/build/android/Makefile deleted file mode 100644 index 9ec237a75..000000000 --- a/build/android/Makefile +++ /dev/null @@ -1,763 +0,0 @@ -# build options - -OS := $(shell uname) - -# compile with GPROF -# GPROF = 1 - -# build for build platform -API = 14 -APP_PLATFORM = android-$(API) - -ANDR_ROOT = $(shell pwd) -PROJ_ROOT = $(shell realpath $(ANDR_ROOT)/../..) -APP_ROOT = $(ANDR_ROOT)/src/main - -VERSION_MAJOR := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \ - grep ^set\(VERSION_MAJOR\ | sed 's/)/ /' | cut -f2 -d' ') -VERSION_MINOR := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \ - grep ^set\(VERSION_MINOR\ | sed 's/)/ /' | cut -f2 -d' ') -VERSION_PATCH := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \ - grep ^set\(VERSION_PATCH\ | sed 's/)/ /' | cut -f2 -d' ') - -################################################################################ -# toolchain config for arm new processors -################################################################################ -TARGET_HOST = arm-linux -TARGET_ABI = armeabi-v7a -TARGET_LIBDIR = armeabi-v7a -TARGET_TOOLCHAIN = arm-linux-androideabi- -TARGET_CFLAGS_ADDON = -mfloat-abi=softfp -mfpu=vfpv3 -O3 -TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON) -TARGET_ARCH = armv7 -CROSS_CC = clang -CROSS_CXX = clang++ -COMPILER_VERSION = clang -HAVE_LEVELDB = 0 - -################################################################################ -# toolchain config for little endian mips -################################################################################ -#TARGET_HOST = mipsel-linux -#TARGET_ABI = mips -#TARGET_LIBDIR = mips -#TARGET_TOOLCHAIN = mipsel-linux-android- -#TARGET_ARCH = mips32 -#CROSS_CC = mipsel-linux-android-gcc -#CROSS_CXX = mipsel-linux-android-g++ -#COMPILER_VERSION = 4.9 -#HAVE_LEVELDB = 0 - -################################################################################ -# toolchain config for x86 -################################################################################ -#TARGET_HOST = x86-linux -#TARGET_ABI = x86 -#TARGET_LIBDIR = x86 -#TARGET_TOOLCHAIN = x86- -#TARGET_ARCH = x86 -#CROSS_CC = clang -#CROSS_CXX = clang++ -#COMPILER_VERSION = clang -#HAVE_LEVELDB = 0 - -################################################################################ -ASSETS_TIMESTAMP = deps/assets_timestamp - -LEVELDB_DIR = $(ANDR_ROOT)/deps/leveldb/ -LEVELDB_LIB = $(LEVELDB_DIR)libleveldb.a -LEVELDB_TIMESTAMP = $(LEVELDB_DIR)/timestamp -LEVELDB_TIMESTAMP_INT = $(ANDR_ROOT)/deps/leveldb_timestamp -LEVELDB_URL_GIT = https://github.com/google/leveldb -LEVELDB_COMMIT = 2d0320a458d0e6a20fff46d5f80b18bfdcce7018 - -OPENAL_DIR = $(ANDR_ROOT)/deps/openal-soft/ -OPENAL_LIB = $(OPENAL_DIR)libs/$(TARGET_ABI)/libopenal.so -OPENAL_TIMESTAMP = $(OPENAL_DIR)/timestamp -OPENAL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/openal_timestamp -OPENAL_URL_GIT = https://github.com/apportable/openal-soft - -OGG_DIR = $(ANDR_ROOT)/deps/libvorbis-libogg-android/ -OGG_LIB = $(OGG_DIR)libs/$(TARGET_ABI)/libogg.so -VORBIS_LIB = $(OGG_DIR)libs/$(TARGET_ABI)/libogg.so -OGG_TIMESTAMP = $(OGG_DIR)timestamp -OGG_TIMESTAMP_INT = $(ANDR_ROOT)/deps/ogg_timestamp -OGG_URL_GIT = https://gitlab.com/minetest/libvorbis-libogg-android - -IRRLICHT_REVISION = 5150 -IRRLICHT_DIR = $(ANDR_ROOT)/deps/irrlicht/ -IRRLICHT_LIB = $(IRRLICHT_DIR)lib/Android/libIrrlicht.a -IRRLICHT_TIMESTAMP = $(IRRLICHT_DIR)timestamp -IRRLICHT_TIMESTAMP_INT = $(ANDR_ROOT)/deps/irrlicht_timestamp -IRRLICHT_URL_SVN = https://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@$(IRRLICHT_REVISION) - -OPENSSL_VERSION = 1.0.2n -OPENSSL_BASEDIR = openssl-$(OPENSSL_VERSION) -OPENSSL_DIR = $(ANDR_ROOT)/deps/$(OPENSSL_BASEDIR)/ -OPENSSL_LIB = $(OPENSSL_DIR)/libssl.a -OPENSSL_TIMESTAMP = $(OPENSSL_DIR)timestamp -OPENSSL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/openssl_timestamp -OPENSSL_URL = https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz - -CURL_VERSION = 7.60.0 -CURL_DIR = $(ANDR_ROOT)/deps/curl-$(CURL_VERSION) -CURL_LIB = $(CURL_DIR)/lib/.libs/libcurl.a -CURL_TIMESTAMP = $(CURL_DIR)/timestamp -CURL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/curl_timestamp -CURL_URL_HTTP = https://curl.haxx.se/download/curl-${CURL_VERSION}.tar.bz2 - -FREETYPE_DIR = $(ANDR_ROOT)/deps/freetype2-android/ -FREETYPE_LIB = $(FREETYPE_DIR)/Android/obj/local/$(TARGET_ABI)/libfreetype2-static.a -FREETYPE_TIMESTAMP = $(FREETYPE_DIR)timestamp -FREETYPE_TIMESTAMP_INT = $(ANDR_ROOT)/deps/freetype_timestamp -FREETYPE_URL_GIT = https://github.com/cdave1/freetype2-android - -ICONV_VERSION = 1.16 -ICONV_DIR = $(ANDR_ROOT)/deps/libiconv/ -ICONV_LIB = $(ICONV_DIR)/lib/.libs/libiconv.so -ICONV_TIMESTAMP = $(ICONV_DIR)timestamp -ICONV_TIMESTAMP_INT = $(ANDR_ROOT)/deps/iconv_timestamp -ICONV_URL_HTTP = https://ftp.gnu.org/pub/gnu/libiconv/libiconv-$(ICONV_VERSION).tar.gz - -SQLITE3_FOLDER = sqlite-amalgamation-3240000 -SQLITE3_URL = https://www.sqlite.org/2018/$(SQLITE3_FOLDER).zip - -ANDROID_SDK = $(shell grep '^sdk\.dir' local.properties | sed 's/^.*=[[:space:]]*//') -ANDROID_NDK = $(shell grep '^ndk\.dir' local.properties | sed 's/^.*=[[:space:]]*//') - -#use interim target variable to switch leveldb on or off -ifeq ($(HAVE_LEVELDB),1) - LEVELDB_TARGET = $(LEVELDB_LIB) -endif - -.PHONY : debug release reconfig delconfig \ - leveldb_download clean_leveldb leveldb\ - irrlicht_download clean_irrlicht irrlicht \ - clean_assets assets sqlite3_download \ - freetype_download clean_freetype freetype \ - apk clean_apk \ - clean_all clean prep_srcdir \ - install_debug install_release envpaths all \ - $(ASSETS_TIMESTAMP) $(LEVELDB_TIMESTAMP) \ - $(OPENAL_TIMESTAMP) $(OGG_TIMESTAMP) \ - $(IRRLICHT_TIMESTAMP) $(CURL_TIMESTAMP) \ - $(OPENSSL_TIMESTAMP) \ - $(ANDR_ROOT)/jni/src/android_version.h \ - $(ANDR_ROOT)/jni/src/android_version_githash.h - -debug : local.properties - export NDEBUG=; \ - export BUILD_TYPE=debug; \ - $(MAKE) apk - -all : debug release - -release : local.properties - @export NDEBUG=1; \ - export BUILD_TYPE=release; \ - $(MAKE) apk - -reconfig: delconfig - @$(MAKE) local.properties - -delconfig: - $(RM) local.properties - -local.properties: - @echo "Please specify path of ANDROID NDK"; \ - echo "e.g. $$HOME/Android/Sdk/ndk-bundle/"; \ - read ANDROID_NDK ; \ - if [ ! -d $$ANDROID_NDK ] ; then \ - echo "$$ANDROID_NDK is not a valid folder"; \ - exit 1; \ - fi; \ - echo "ndk.dir = $$ANDROID_NDK" > local.properties; \ - echo "Please specify path of ANDROID SDK"; \ - echo "e.g. $$HOME/Android/Sdk/"; \ - read SDKFLDR ; \ - if [ ! -d $$SDKFLDR ] ; then \ - echo "$$SDKFLDR is not a valid folder"; \ - exit 1; \ - fi; \ - echo "sdk.dir = $$SDKFLDR" >> local.properties; - - -$(OPENAL_TIMESTAMP) : openal_download - @LAST_MODIF=$$(find ${OPENAL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ - if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \ - touch ${OPENAL_TIMESTAMP}; \ - fi - -openal_download : - @if [ ! -d ${OPENAL_DIR} ] ; then \ - echo "openal sources missing, downloading..."; \ - mkdir -p ${ANDR_ROOT}/deps; \ - cd ${ANDR_ROOT}/deps ; \ - git clone ${OPENAL_URL_GIT} || exit 1; \ - fi - -openal : $(OPENAL_LIB) - -$(OPENAL_LIB): $(OPENAL_TIMESTAMP) - + @REFRESH=0; \ - if [ ! -e ${OPENAL_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ ${OPENAL_TIMESTAMP} -nt ${OPENAL_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ $$REFRESH -ne 0 ] ; then \ - echo "changed timestamp for openal detected building..."; \ - cd ${OPENAL_DIR}; \ - export APP_PLATFORM=${APP_PLATFORM}; \ - export TARGET_ABI=${TARGET_ABI}; \ - export TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}"; \ - export TARGET_CXXFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}"; \ - export COMPILER_VERSION=${COMPILER_VERSION}; \ - ${ANDROID_NDK}/ndk-build \ - NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Deps.mk || exit 1; \ - touch ${OPENAL_TIMESTAMP}; \ - touch ${OPENAL_TIMESTAMP_INT}; \ - else \ - echo "nothing to be done for openal"; \ - fi - -clean_openal : - $(RM) -rf ${OPENAL_DIR} - -$(OGG_TIMESTAMP) : ogg_download - @LAST_MODIF=$$(find ${OGG_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ - if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \ - touch ${OGG_TIMESTAMP}; \ - fi - -ogg_download : - @if [ ! -d ${OGG_DIR} ] ; then \ - echo "ogg sources missing, downloading..."; \ - mkdir -p ${ANDR_ROOT}/deps; \ - cd ${ANDR_ROOT}/deps ; \ - git clone ${OGG_URL_GIT}|| exit 1; \ - cd libvorbis-libogg-android ; \ - patch -p1 < ${ANDR_ROOT}/patches/libvorbis-libogg-fpu.patch || exit 1; \ - fi - -ogg : $(OGG_LIB) - -$(OGG_LIB): $(OGG_TIMESTAMP) - + @REFRESH=0; \ - if [ ! -e ${OGG_TIMESTAMP_INT} ] ; then \ - echo "${OGG_TIMESTAMP_INT} doesn't exist"; \ - REFRESH=1; \ - fi; \ - if [ ${OGG_TIMESTAMP} -nt ${OGG_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ $$REFRESH -ne 0 ] ; then \ - echo "changed timestamp for ogg detected building..."; \ - cd ${OGG_DIR}; \ - export APP_PLATFORM=${APP_PLATFORM}; \ - export TARGET_ABI=${TARGET_ABI}; \ - ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \ - --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ - --platform=${APP_PLATFORM} \ - --install-dir=$${TOOLCHAIN}; \ - touch ${OGG_TIMESTAMP}; \ - touch ${OGG_TIMESTAMP_INT}; \ - else \ - echo "nothing to be done for libogg/libvorbis"; \ - fi - -clean_ogg : - $(RM) -rf ${OGG_DIR} - -$(OPENSSL_TIMESTAMP) : openssl_download - @LAST_MODIF=$$(find ${OPENSSL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ - if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \ - touch ${OPENSSL_TIMESTAMP}; \ - fi - -openssl_download : - @if [ ! -d ${OPENSSL_DIR} ] ; then \ - echo "openssl sources missing, downloading..."; \ - mkdir -p ${ANDR_ROOT}/deps; \ - cd ${ANDR_ROOT}/deps ; \ - wget ${OPENSSL_URL} || exit 1; \ - tar -xzf ${OPENSSL_BASEDIR}.tar.gz; \ - cd ${OPENSSL_BASEDIR}; \ - patch -p1 < ${ANDR_ROOT}/patches/openssl_arch.patch; \ - sed -i 's/-mandroid //g' Configure; \ - fi - -openssl : $(OPENSSL_LIB) - -$(OPENSSL_LIB): $(OPENSSL_TIMESTAMP) - @REFRESH=0; \ - if [ ! -e ${OPENSSL_TIMESTAMP_INT} ] ; then \ - echo "${OPENSSL_TIMESTAMP_INT} doesn't exist"; \ - REFRESH=1; \ - fi; \ - if [ ${OPENSSL_TIMESTAMP} -nt ${OPENSSL_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ $$REFRESH -ne 0 ] ; then \ - echo "changed timestamp for openssl detected building..."; \ - cd ${OPENSSL_DIR}; \ - ln -s ${OPENSSL_DIR} ../openssl; \ - export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-openssl; \ - ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \ - --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ - --platform=${APP_PLATFORM} \ - --stl=libc++ \ - --install-dir=$${TOOLCHAIN}; \ - export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \ - export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}"; \ - export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON}"; \ - CC=${CROSS_CC} ./Configure -DL_ENDIAN no-asm android-${TARGET_ARCH} \ - -D__ANDROID_API__=$(API); \ - CC=${CROSS_CC} ANDROID_DEV=/tmp/ndk-${TARGET_HOST} make depend; \ - CC=${CROSS_CC} ANDROID_DEV=/tmp/ndk-${TARGET_HOST} make build_libs; \ - touch ${OPENSSL_TIMESTAMP}; \ - touch ${OPENSSL_TIMESTAMP_INT}; \ - $(RM) -rf $${TOOLCHAIN}; \ - else \ - echo "nothing to be done for openssl"; \ - fi - -clean_openssl : - $(RM) -rf ${OPENSSL_DIR}; \ - $(RM) -rf $(ANDR_ROOT)/deps/${OPENSSL_BASEDIR}.tar.gz; \ - $(RM) -rf $(ANDR_ROOT)/deps/openssl - -$(LEVELDB_TIMESTAMP) : leveldb_download - @LAST_MODIF=$$(find ${LEVELDB_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ - if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \ - touch ${LEVELDB_TIMESTAMP}; \ - fi - -leveldb_download : - @if [ ! -d ${LEVELDB_DIR} ] ; then \ - echo "leveldb sources missing, downloading..."; \ - mkdir -p ${ANDR_ROOT}/deps; \ - cd ${ANDR_ROOT}/deps ; \ - git clone ${LEVELDB_URL_GIT} || exit 1; \ - cd ${LEVELDB_DIR} || exit 1; \ - git checkout ${LEVELDB_COMMIT} || exit 1; \ - fi - -leveldb : $(LEVELDB_LIB) -ifeq ($(HAVE_LEVELDB),1) -$(LEVELDB_LIB): $(LEVELDB_TIMESTAMP) - @REFRESH=0; \ - if [ ! -e ${LEVELDB_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ ${LEVELDB_TIMESTAMP} -nt ${LEVELDB_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ $$REFRESH -ne 0 ] ; then \ - echo "changed timestamp for leveldb detected building..."; \ - cd deps/leveldb; \ - export CROSS_PREFIX=${TARGET_TOOLCHAIN}; \ - export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-leveldb; \ - ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \ - --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ - --platform=${APP_PLATFORM} \ - --stl=libc++ \ - --install-dir=$${TOOLCHAIN}; \ - export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \ - export CC=${CROSS_CC}; \ - export CXX=${CROSS_CXX}; \ - export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}"; \ - export CPPFLAGS="$${CPPFLAGS} ${TARGET_CXXFLAGS_ADDON}"; \ - export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON}"; \ - export TARGET_OS=OS_ANDROID_CROSSCOMPILE; \ - $(MAKE) || exit 1; \ - touch ${LEVELDB_TIMESTAMP}; \ - touch ${LEVELDB_TIMESTAMP_INT}; \ - $(RM) -rf $${TOOLCHAIN}; \ - else \ - echo "nothing to be done for leveldb"; \ - fi -endif - -clean_leveldb : - ./gradlew cleanLevelDB - -$(FREETYPE_TIMESTAMP) : freetype_download - @LAST_MODIF=$$(find ${FREETYPE_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ - if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \ - touch ${FREETYPE_TIMESTAMP}; \ - fi - -freetype_download : - @if [ ! -d ${FREETYPE_DIR} ] ; then \ - echo "freetype sources missing, downloading..."; \ - mkdir -p ${ANDR_ROOT}/deps; \ - cd deps; \ - git clone ${FREETYPE_URL_GIT} || exit 1; \ - fi - -freetype : $(FREETYPE_LIB) - -$(FREETYPE_LIB) : $(FREETYPE_TIMESTAMP) - + @REFRESH=0; \ - if [ ! -e ${FREETYPE_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ ! -e ${FREETYPE_LIB} ] ; then \ - REFRESH=1; \ - fi; \ - if [ ${FREETYPE_TIMESTAMP} -nt ${FREETYPE_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ $$REFRESH -ne 0 ] ; then \ - mkdir -p ${FREETYPE_DIR}; \ - echo "changed timestamp for freetype detected building..."; \ - cd ${FREETYPE_DIR}/Android/jni; \ - export APP_PLATFORM=${APP_PLATFORM}; \ - export TARGET_ABI=${TARGET_ABI}; \ - export TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}"; \ - export TARGET_CXXFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}"; \ - export COMPILER_VERSION=${COMPILER_VERSION}; \ - ${ANDROID_NDK}/ndk-build \ - NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Deps.mk || exit 1; \ - touch ${FREETYPE_TIMESTAMP}; \ - touch ${FREETYPE_TIMESTAMP_INT}; \ - else \ - echo "nothing to be done for freetype"; \ - fi - -clean_freetype : - ./gradlew cleanFreetype - -$(ICONV_TIMESTAMP) : iconv_download - @LAST_MODIF=$$(find ${ICONV_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ - if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \ - touch ${ICONV_TIMESTAMP}; \ - fi - -iconv_download : - @if [ ! -d ${ICONV_DIR} ] ; then \ - echo "iconv sources missing, downloading..."; \ - mkdir -p ${ANDR_ROOT}/deps; \ - cd ${ANDR_ROOT}/deps; \ - wget ${ICONV_URL_HTTP} || exit 1; \ - tar -xzf libiconv-${ICONV_VERSION}.tar.gz || exit 1; \ - rm libiconv-${ICONV_VERSION}.tar.gz; \ - ln -s libiconv-${ICONV_VERSION} libiconv; \ - fi - -iconv : $(ICONV_LIB) - -$(ICONV_LIB) : $(ICONV_TIMESTAMP) - @REFRESH=0; \ - if [ ! -e ${ICONV_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ ! -e ${ICONV_LIB} ] ; then \ - REFRESH=1; \ - fi; \ - if [ ${ICONV_TIMESTAMP} -nt ${ICONV_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ $$REFRESH -ne 0 ] ; then \ - mkdir -p ${ICONV_DIR}; \ - echo "changed timestamp for iconv detected building..."; \ - cd ${ICONV_DIR}; \ - export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-iconv; \ - ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \ - --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ - --platform=${APP_PLATFORM} \ - --stl=libc++ \ - --install-dir=$${TOOLCHAIN}; \ - export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \ - export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}"; \ - export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON} -lstdc++"; \ - export CC=${CROSS_CC}; \ - export CXX=${CROSS_CXX}; \ - export TARGET_OS=OS_ANDROID_CROSSCOMPILE; \ - ./configure --host=${TARGET_HOST} || exit 1; \ - sed -i 's/LIBICONV_VERSION_INFO) /LIBICONV_VERSION_INFO) -avoid-version /g' lib/Makefile; \ - grep "iconv_LDFLAGS" src/Makefile; \ - $(MAKE) -s || exit 1; \ - touch ${ICONV_TIMESTAMP}; \ - touch ${ICONV_TIMESTAMP_INT}; \ - rm -rf ${TOOLCHAIN}; \ - else \ - echo "nothing to be done for iconv"; \ - fi - -clean_iconv : - ./gradlew cleanIconv - -#Note: Texturehack patch is required for gpu's not supporting color format -# correctly. Known bad GPU: -# -geforce on emulator -# -Vivante Corporation GC1000 core (e.g. Galaxy Tab 3) - -irrlicht_download : - @if [ ! -d "deps/irrlicht" ] ; then \ - echo "irrlicht sources missing, downloading..."; \ - mkdir -p ${ANDR_ROOT}/deps; \ - cd deps; \ - svn co ${IRRLICHT_URL_SVN} irrlicht || exit 1; \ - cd irrlicht; \ - patch -p1 < ${ANDR_ROOT}/patches/irrlicht-touchcount.patch || exit 1; \ - patch -p1 < ${ANDR_ROOT}/patches/irrlicht-back_button.patch || exit 1; \ - patch -p1 < ${ANDR_ROOT}/patches/irrlicht-texturehack.patch || exit 1; \ - patch -p1 < ${ANDR_ROOT}/patches/irrlicht-native_activity.patch || exit 1; \ - fi - -$(IRRLICHT_TIMESTAMP) : irrlicht_download - @LAST_MODIF=$$(find ${IRRLICHT_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ - if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \ - touch ${IRRLICHT_TIMESTAMP}; \ - fi - -irrlicht : $(IRRLICHT_LIB) - -$(IRRLICHT_LIB): $(IRRLICHT_TIMESTAMP) $(FREETYPE_LIB) - + @REFRESH=0; \ - if [ ! -e ${IRRLICHT_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ ! -e ${IRRLICHT_LIB} ] ; then \ - REFRESH=1; \ - fi; \ - if [ ${IRRLICHT_TIMESTAMP} -nt ${IRRLICHT_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ $$REFRESH -ne 0 ] ; then \ - mkdir -p ${IRRLICHT_DIR}; \ - echo "changed timestamp for irrlicht detected building..."; \ - cd deps/irrlicht/source/Irrlicht/Android; \ - export APP_PLATFORM=${APP_PLATFORM}; \ - export TARGET_ABI=${TARGET_ABI}; \ - export TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}"; \ - export TARGET_CXXFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}"; \ - export COMPILER_VERSION=${COMPILER_VERSION}; \ - ${ANDROID_NDK}/ndk-build \ - NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Deps.mk || exit 1; \ - touch ${IRRLICHT_TIMESTAMP}; \ - touch ${IRRLICHT_TIMESTAMP_INT}; \ - else \ - echo "nothing to be done for irrlicht"; \ - fi - -clean_irrlicht : - ./gradlew cleanIrrlicht - -$(CURL_TIMESTAMP) : curl_download - @LAST_MODIF=$$(find ${CURL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ - if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \ - touch ${CURL_TIMESTAMP}; \ - fi - -curl_download : - @if [ ! -d "deps/curl-${CURL_VERSION}" ] ; then \ - echo "curl sources missing, downloading..."; \ - mkdir -p ${ANDR_ROOT}/deps; \ - cd deps; \ - wget ${CURL_URL_HTTP} || exit 1; \ - tar -xjf curl-${CURL_VERSION}.tar.bz2 || exit 1; \ - rm curl-${CURL_VERSION}.tar.bz2; \ - ln -s curl-${CURL_VERSION} curl; \ - fi - -curl : $(CURL_LIB) - -$(CURL_LIB): $(CURL_TIMESTAMP) $(OPENSSL_LIB) - @REFRESH=0; \ - if [ ! -e ${CURL_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ ! -e ${CURL_LIB} ] ; then \ - REFRESH=1; \ - fi; \ - if [ ${CURL_TIMESTAMP} -nt ${CURL_TIMESTAMP_INT} ] ; then \ - REFRESH=1; \ - fi; \ - if [ $$REFRESH -ne 0 ] ; then \ - mkdir -p ${CURL_DIR}; \ - echo "changed timestamp for curl detected building..."; \ - cd deps/curl-${CURL_VERSION}; \ - export CROSS_PREFIX=${TARGET_TOOLCHAIN}; \ - export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-curl; \ - ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh \ - --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION} \ - --platform=${APP_PLATFORM} \ - --stl=libc++ \ - --install-dir=$${TOOLCHAIN}; \ - export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \ - export CC=${CROSS_CC}; \ - export CXX=${CROSS_CXX}; \ - export TARGET_OS=OS_ANDROID_CROSSCOMPILE; \ - export CPPFLAGS="$${CPPFLAGS} -I${OPENSSL_DIR}/include ${TARGET_CFLAGS_ADDON}"; \ - export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}"; \ - export LDFLAGS="$${LDFLAGS} -L${OPENSSL_DIR} ${TARGET_LDFLAGS_ADDON}"; \ - ./configure --host=${TARGET_HOST} --disable-shared --enable-static --with-ssl; \ - $(MAKE) -s || exit 1; \ - touch ${CURL_TIMESTAMP}; \ - touch ${CURL_TIMESTAMP_INT}; \ - $(RM) -rf $${TOOLCHAIN}; \ - else \ - echo "nothing to be done for curl"; \ - fi - -clean_curl : - ./gradlew cleanCURL - -sqlite3_download: deps/${SQLITE3_FOLDER}/sqlite3.c - -deps/${SQLITE3_FOLDER}/sqlite3.c : - cd deps; \ - wget ${SQLITE3_URL}; \ - unzip ${SQLITE3_FOLDER}.zip; \ - ln -s ${SQLITE3_FOLDER} sqlite; \ - cd ${SQLITE3_FOLDER}; - -clean_sqlite3: - ./gradlew cleanSQLite3 - -$(ASSETS_TIMESTAMP) : $(IRRLICHT_LIB) - @mkdir -p ${ANDR_ROOT}/deps; \ - for DIRNAME in {builtin,client,doc,fonts,games,mods,po,textures}; do \ - LAST_MODIF=$$(find ${PROJ_ROOT}/${DIRNAME} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ - if [ $$(basename $$LAST_MODIF) != "timestamp" ]; then \ - touch ${PROJ_ROOT}/${DIRNAME}/timestamp; \ - touch ${ASSETS_TIMESTAMP}; \ - echo ${DIRNAME} changed $$LAST_MODIF; \ - fi; \ - done; \ - LAST_MODIF=$$(find ${IRRLICHT_DIR}/media -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \ - if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \ - touch ${IRRLICHT_DIR}/media/timestamp; \ - touch ${ASSETS_TIMESTAMP}; \ - fi; \ - if [ ${PROJ_ROOT}/minetest.conf.example -nt ${ASSETS_TIMESTAMP} ] ; then \ - echo "conf changed"; \ - touch ${ASSETS_TIMESTAMP}; \ - fi; \ - if [ ${PROJ_ROOT}/README.txt -nt ${ASSETS_TIMESTAMP} ] ; then \ - touch ${ASSETS_TIMESTAMP}; \ - fi; \ - if [ ! -e $(ASSETS_TIMESTAMP) ] ; then \ - touch $(ASSETS_TIMESTAMP); \ - fi - -assets : $(ASSETS_TIMESTAMP) - @REFRESH=0; \ - if [ ! -e ${ASSETS_TIMESTAMP}.old ] ; then \ - REFRESH=1; \ - fi; \ - if [ ${ASSETS_TIMESTAMP} -nt ${ASSETS_TIMESTAMP}.old ] ; then \ - REFRESH=1; \ - fi; \ - if [ ! -d ${APP_ROOT}/assets ] ; then \ - REFRESH=1; \ - fi; \ - if [ $$REFRESH -ne 0 ] ; then \ - echo "assets changed, refreshing..."; \ - $(MAKE) clean_assets; \ - ./gradlew copyAssets; \ - cp -r ${IRRLICHT_DIR}/media/Shaders ${APP_ROOT}/assets/Minetest/media; \ - cd ${APP_ROOT}/assets || exit 1; \ - find . -name "timestamp" -exec rm {} \; ; \ - find . -name "*.blend" -exec rm {} \; ; \ - find . -name "*~" -exec rm {} \; ; \ - find . -type d -path "*.git" -exec rm -rf {} \; ; \ - find . -type d -path "*.svn" -exec rm -rf {} \; ; \ - find . -type f -path "*.gitignore" -exec rm -rf {} \; ; \ - ls -R | grep ":$$" | sed -e 's/:$$//' -e 's/\.//' -e 's/^\///' > "index.txt"; \ - find -L Minetest > filelist.txt; \ - cp ${ANDR_ROOT}/${ASSETS_TIMESTAMP} ${ANDR_ROOT}/${ASSETS_TIMESTAMP}.old; \ - else \ - echo "nothing to be done for assets"; \ - fi - -clean_assets : - ./gradlew cleanAssets - -apk: local.properties assets $(ICONV_LIB) $(IRRLICHT_LIB) $(CURL_LIB) $(LEVELDB_TARGET) \ - $(OPENAL_LIB) $(OGG_LIB) prep_srcdir $(ANDR_ROOT)/jni/src/android_version.h \ - $(ANDR_ROOT)/jni/src/android_version_githash.h sqlite3_download - + @export TARGET_LIBDIR=${TARGET_LIBDIR}; \ - export HAVE_LEVELDB=${HAVE_LEVELDB}; \ - export APP_PLATFORM=${APP_PLATFORM}; \ - export TARGET_ABI=${TARGET_ABI}; \ - export TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}"; \ - export TARGET_CXXFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}"; \ - export COMPILER_VERSION=${COMPILER_VERSION}; \ - export GPROF=${GPROF}; \ - ${ANDROID_NDK}/ndk-build || exit 1; \ - if [ ! -e ${APP_ROOT}/jniLibs ]; then \ - ln -s ${ANDR_ROOT}/libs ${APP_ROOT}/jniLibs || exit 1; \ - fi; \ - export VERSION_STR="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" && \ - export BUILD_TYPE_C=$$(echo "$${BUILD_TYPE}" | sed 's/./\U&/') && \ - ./gradlew assemble$$BUILD_TYPE_C && \ - echo "APK stored at: build/outputs/apk/$$BUILD_TYPE/Minetest-$$BUILD_TYPE.apk" && \ - echo "You can install it with \`make install_$$BUILD_TYPE\`" - -# These Intentionally doesn't depend on their respective build steps, -# because it takes a while to verify that everything's up-to-date. -install_debug: - ${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/debug/Minetest-debug.apk - -install_release: - ${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/release/Minetest-release.apk - -prep_srcdir : - @if [ ! -e ${ANDR_ROOT}/jni/src ]; then \ - ln -s ${PROJ_ROOT}/src ${ANDR_ROOT}/jni/src; \ - fi; \ - if [ ! -e ${ANDR_ROOT}/jni/lib ]; then \ - ln -s ${PROJ_ROOT}/lib ${ANDR_ROOT}/jni/lib; \ - fi - -clean_apk : - ./gradlew clean - -clean_all : - ./gradlew cleanAll - -$(ANDR_ROOT)/jni/src/android_version_githash.h : prep_srcdir - @export VERSION_FILE=${ANDR_ROOT}/jni/src/android_version_githash.h; \ - export VERSION_FILE_NEW=$${VERSION_FILE}.new; \ - { \ - echo "#ifndef ANDROID_MT_VERSION_GITHASH_H"; \ - echo "#define ANDROID_MT_VERSION_GITHASH_H"; \ - export GITHASH=$$(git rev-parse --short=8 HEAD); \ - export VERSION_STR="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"; \ - echo "#define VERSION_GITHASH \"$$VERSION_STR-$$GITHASH-Android\""; \ - echo "#endif"; \ - } > "$${VERSION_FILE_NEW}"; \ - if ! cmp -s $${VERSION_FILE} $${VERSION_FILE_NEW}; then \ - echo "android_version_githash.h changed, updating..."; \ - mv "$${VERSION_FILE_NEW}" "$${VERSION_FILE}"; \ - else \ - rm "$${VERSION_FILE_NEW}"; \ - fi - - -$(ANDR_ROOT)/jni/src/android_version.h : prep_srcdir - @export VERSION_FILE=${ANDR_ROOT}/jni/src/android_version.h; \ - export VERSION_FILE_NEW=$${VERSION_FILE}.new; \ - { \ - echo "#ifndef ANDROID_MT_VERSION_H"; \ - echo "#define ANDROID_MT_VERSION_H"; \ - echo "#define VERSION_MAJOR ${VERSION_MAJOR}"; \ - echo "#define VERSION_MINOR ${VERSION_MINOR}"; \ - echo "#define VERSION_PATCH ${VERSION_PATCH}"; \ - echo "#define VERSION_STRING STR(VERSION_MAJOR) \".\" STR(VERSION_MINOR) \ - \".\" STR(VERSION_PATCH)"; \ - echo "#endif"; \ - } > $${VERSION_FILE_NEW}; \ - if ! cmp -s $${VERSION_FILE} $${VERSION_FILE_NEW}; then \ - echo "android_version.h changed, updating..."; \ - mv "$${VERSION_FILE_NEW}" "$${VERSION_FILE}"; \ - else \ - rm "$${VERSION_FILE_NEW}"; \ - fi - -clean : clean_apk clean_assets diff --git a/build/android/app/build.gradle b/build/android/app/build.gradle new file mode 100644 index 000000000..6a34a6d70 --- /dev/null +++ b/build/android/app/build.gradle @@ -0,0 +1,108 @@ +apply plugin: 'com.android.application' +android { + compileSdkVersion 29 + buildToolsVersion '29.0.3' + ndkVersion '21.0.6113669' + defaultConfig { + applicationId 'net.minetest.minetest' + minSdkVersion 16 + //noinspection OldTargetApi + targetSdkVersion 28 // Workaround for using `/sdcard` instead of the `data` patch for assets + versionName "${versionMajor}.${versionMinor}.${versionPatch}" + versionCode project.versionCode + } + + Properties props = new Properties() + props.load(new FileInputStream(file('../local.properties'))) + + if (props.getProperty('keystore') != null) { + signingConfigs { + release { + storeFile file(props['keystore']) + storePassword props['keystore.password'] + keyAlias props['key'] + keyPassword props['key.password'] + } + } + + buildTypes { + release { + minifyEnabled true + signingConfig signingConfigs.release + } + } + } + + // for multiple APKs + splits { + abi { + enable true + reset() + include 'armeabi-v7a', 'arm64-v8a' + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +task prepareAssets() { + def assetsFolder = "build/assets" + def projRoot = "../../.." + def gameToCopy = "minetest_game" + + copy { + from "${projRoot}/minetest.conf.example", "${projRoot}/README.md" into assetsFolder + } + copy { + from "${projRoot}/doc/lgpl-2.1.txt" into "${assetsFolder}" + rename("lgpl-2.1.txt", "LICENSE.txt") + } + copy { + from "${projRoot}/builtin" into "${assetsFolder}/builtin" + } + copy { + from "${projRoot}/client/shaders" into "${assetsFolder}/client/shaders" + } + copy { + from "${projRoot}/fonts" include "*.ttf" into "${assetsFolder}/fonts" + } + copy { + from "${projRoot}/games/${gameToCopy}" into "${assetsFolder}/games/${gameToCopy}" + } + /*copy { + // locales broken right now + // ToDo: fix it! + from "${projRoot}/po" into "${assetsFolder}/po" + }*/ + copy { + from "${projRoot}/textures" into "${assetsFolder}/textures" + } + + task zipAssets(type: Zip) { + archiveName "Minetest.zip" + from "${assetsFolder}" + destinationDir file("src/main/assets") + } +} + +preBuild.dependsOn zipAssets + +// Map for the version code that gives each ABI a value. +import com.android.build.OutputFile + +def abiCodes = ['armeabi-v7a': 0, 'arm64-v8a': 1] +android.applicationVariants.all { variant -> + variant.outputs.each { + output -> + def abiName = output.getFilter(OutputFile.ABI) + output.versionCodeOverride = abiCodes.get(abiName, 0) + variant.versionCode + } +} + +dependencies { + implementation project(':native') + implementation 'androidx.appcompat:appcompat:1.1.0' +} diff --git a/build/android/src/main/AndroidManifest.xml b/build/android/app/src/main/AndroidManifest.xml similarity index 68% rename from build/android/src/main/AndroidManifest.xml rename to build/android/app/src/main/AndroidManifest.xml index fb1de9cf0..3a5342751 100644 --- a/build/android/src/main/AndroidManifest.xml +++ b/build/android/app/src/main/AndroidManifest.xml @@ -4,28 +4,24 @@ package="net.minetest.minetest" android:installLocation="auto"> - - + tools:ignore="UnusedAttribute"> + android:value="3" /> @@ -33,11 +29,13 @@ + @@ -45,16 +43,18 @@ + android:value="Minetest" /> + - + android:name=".InputDialogActivity" + android:maxAspectRatio="3" + android:theme="@style/InputTheme" /> + + + diff --git a/build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java b/build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java new file mode 100644 index 000000000..770995502 --- /dev/null +++ b/build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java @@ -0,0 +1,82 @@ +/* +Minetest +Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik +Copyright (C) 2014-2020 ubulem, Bektur Mambetov + +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. +*/ + +package net.minetest.minetest; + +import android.content.Context; +import android.content.Intent; +import android.os.AsyncTask; +import android.util.Log; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.lang.ref.WeakReference; + +public class CopyZipTask extends AsyncTask { + + private final WeakReference contextRef; + + CopyZipTask(Context context) { + contextRef = new WeakReference<>(context); + } + + protected String doInBackground(String... params) { + copyAssets(params); + return params[0]; + } + + @Override + protected void onPostExecute(String result) { + startUnzipService(result); + } + + private void copyAsset(String zipName) throws IOException { + String filename = zipName.substring(zipName.lastIndexOf("/") + 1); + try (InputStream in = contextRef.get().getAssets().open(filename); + OutputStream out = new FileOutputStream(zipName)) { + copyFile(in, out); + } + } + + private void copyAssets(String[] zips) { + try { + for (String zipName : zips) + copyAsset(zipName); + } catch (IOException e) { + Log.e("CopyZipTask", e.getLocalizedMessage()); + cancel(true); + } + } + + private void copyFile(InputStream in, OutputStream out) throws IOException { + byte[] buffer = new byte[1024]; + int read; + while ((read = in.read(buffer)) != -1) + out.write(buffer, 0, read); + } + + private void startUnzipService(String file) { + Intent intent = new Intent(contextRef.get(), UnzipService.class); + intent.putExtra(UnzipService.EXTRA_KEY_IN_FILE, file); + contextRef.get().startService(intent); + } +} diff --git a/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java b/build/android/app/src/main/java/net/minetest/minetest/GameActivity.java similarity index 51% rename from build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java rename to build/android/app/src/main/java/net/minetest/minetest/GameActivity.java index f49d078fe..02b61b598 100644 --- a/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java +++ b/build/android/app/src/main/java/net/minetest/minetest/GameActivity.java @@ -1,3 +1,23 @@ +/* +Minetest +Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik +Copyright (C) 2014-2020 ubulem, Bektur Mambetov + +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. +*/ + package net.minetest.minetest; import android.app.NativeActivity; @@ -7,19 +27,14 @@ import android.os.Bundle; import android.view.View; import android.view.WindowManager; -public class MtNativeActivity extends NativeActivity { - +public class GameActivity extends NativeActivity { static { System.loadLibrary("c++_shared"); - System.loadLibrary("openal"); - System.loadLibrary("ogg"); - System.loadLibrary("vorbis"); - System.loadLibrary("iconv"); - System.loadLibrary("minetest"); + System.loadLibrary("Minetest"); } - private int m_MessagReturnCode; - private String m_MessageReturnValue; + private int messageReturnCode; + private String messageReturnValue; public static native void putMessageBoxResult(String text); @@ -27,20 +42,16 @@ public class MtNativeActivity extends NativeActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - m_MessagReturnCode = -1; - m_MessageReturnValue = ""; - } - - @Override - protected void onResume() { - super.onResume(); - makeFullScreen(); + messageReturnCode = -1; + messageReturnValue = ""; } private void makeFullScreen() { if (Build.VERSION.SDK_INT >= 19) this.getWindow().getDecorView().setSystemUiVisibility( - View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); + View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | + View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | + View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } @Override @@ -50,15 +61,31 @@ public class MtNativeActivity extends NativeActivity { makeFullScreen(); } - public void copyAssets() { - Intent intent = new Intent(this, MinetestAssetCopy.class); - startActivity(intent); + @Override + protected void onResume() { + super.onResume(); + makeFullScreen(); } - public void showDialog(String acceptButton, String hint, String current, - int editType) { + @Override + public void onBackPressed() { + // Ignore the back press so Minetest can handle it + } - Intent intent = new Intent(this, MinetestTextEntry.class); + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == 101) { + if (resultCode == RESULT_OK) { + String text = data.getStringExtra("text"); + messageReturnCode = 0; + messageReturnValue = text; + } else + messageReturnCode = 1; + } + } + + public void showDialog(String acceptButton, String hint, String current, int editType) { + Intent intent = new Intent(this, InputDialogActivity.class); Bundle params = new Bundle(); params.putString("acceptButton", acceptButton); params.putString("hint", hint); @@ -66,43 +93,28 @@ public class MtNativeActivity extends NativeActivity { params.putInt("editType", editType); intent.putExtras(params); startActivityForResult(intent, 101); - m_MessageReturnValue = ""; - m_MessagReturnCode = -1; + messageReturnValue = ""; + messageReturnCode = -1; } - /* ugly code to workaround putMessageBoxResult not beeing found */ public int getDialogState() { - return m_MessagReturnCode; + return messageReturnCode; } public String getDialogValue() { - m_MessagReturnCode = -1; - return m_MessageReturnValue; + messageReturnCode = -1; + return messageReturnValue; } public float getDensity() { return getResources().getDisplayMetrics().density; } - public int getDisplayWidth() { - return getResources().getDisplayMetrics().widthPixels; - } - public int getDisplayHeight() { return getResources().getDisplayMetrics().heightPixels; } - @Override - protected void onActivityResult(int requestCode, int resultCode, - Intent data) { - if (requestCode == 101) { - if (resultCode == RESULT_OK) { - String text = data.getStringExtra("text"); - m_MessagReturnCode = 0; - m_MessageReturnValue = text; - } else { - m_MessagReturnCode = 1; - } - } + public int getDisplayWidth() { + return getResources().getDisplayMetrics().widthPixels; } } diff --git a/build/android/app/src/main/java/net/minetest/minetest/InputDialogActivity.java b/build/android/app/src/main/java/net/minetest/minetest/InputDialogActivity.java new file mode 100644 index 000000000..7c6aa111d --- /dev/null +++ b/build/android/app/src/main/java/net/minetest/minetest/InputDialogActivity.java @@ -0,0 +1,98 @@ +/* +Minetest +Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik +Copyright (C) 2014-2020 ubulem, Bektur Mambetov + +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. +*/ + +package net.minetest.minetest; + +import android.app.Activity; +import android.content.Intent; +import android.os.Build; +import android.os.Bundle; +import android.text.InputType; +import android.view.KeyEvent; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; + +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; + +import java.util.Objects; + +public class InputDialogActivity extends AppCompatActivity { + private AlertDialog alertDialog; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Bundle b = getIntent().getExtras(); + int editType = Objects.requireNonNull(b).getInt("editType"); + String hint = b.getString("hint"); + String current = b.getString("current"); + final AlertDialog.Builder builder = new AlertDialog.Builder(this); + EditText editText = new EditText(this); + builder.setView(editText); + editText.requestFocus(); + editText.setHint(hint); + editText.setText(current); + final InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); + Objects.requireNonNull(imm).toggleSoftInput(InputMethodManager.SHOW_FORCED, + InputMethodManager.HIDE_IMPLICIT_ONLY); + if (editType == 3) + editText.setInputType(InputType.TYPE_CLASS_TEXT | + InputType.TYPE_TEXT_VARIATION_PASSWORD); + else + editText.setInputType(InputType.TYPE_CLASS_TEXT); + editText.setOnKeyListener((view, KeyCode, event) -> { + if (KeyCode == KeyEvent.KEYCODE_ENTER) { + imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); + pushResult(editText.getText().toString()); + return true; + } + return false; + }); + alertDialog = builder.create(); + if (!this.isFinishing()) + alertDialog.show(); + alertDialog.setOnCancelListener(dialog -> { + pushResult(editText.getText().toString()); + setResult(Activity.RESULT_CANCELED); + alertDialog.dismiss(); + makeFullScreen(); + finish(); + }); + } + + private void pushResult(String text) { + Intent resultData = new Intent(); + resultData.putExtra("text", text); + setResult(AppCompatActivity.RESULT_OK, resultData); + alertDialog.dismiss(); + makeFullScreen(); + finish(); + } + + private void makeFullScreen() { + if (Build.VERSION.SDK_INT >= 19) + this.getWindow().getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | + View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | + View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); + } +} diff --git a/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java b/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java new file mode 100644 index 000000000..f37ae6d4b --- /dev/null +++ b/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java @@ -0,0 +1,139 @@ +/* +Minetest +Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik +Copyright (C) 2014-2020 ubulem, Bektur Mambetov + +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. +*/ + +package net.minetest.minetest; + +import android.Manifest; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.SharedPreferences; +import android.content.pm.PackageManager; +import android.os.Build; +import android.os.Bundle; +import android.view.View; +import android.widget.ProgressBar; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class MainActivity extends AppCompatActivity { + private final static int versionCode = BuildConfig.VERSION_CODE; + private final static int PERMISSIONS = 1; + private static final String[] REQUIRED_SDK_PERMISSIONS = + new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}; + private static final String SETTINGS = "MinetestSettings"; + private static final String TAG_VERSION_CODE = "versionCode"; + private ProgressBar mProgressBar; + private TextView mTextView; + private SharedPreferences sharedPreferences; + private final BroadcastReceiver myReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + int progress = 0; + if (intent != null) + progress = intent.getIntExtra(UnzipService.ACTION_PROGRESS, 0); + if (progress >= 0) { + if (mProgressBar != null) { + mProgressBar.setVisibility(View.VISIBLE); + mProgressBar.setProgress(progress); + } + mTextView.setVisibility(View.VISIBLE); + } else + startNative(); + } + }; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + IntentFilter filter = new IntentFilter(UnzipService.ACTION_UPDATE); + registerReceiver(myReceiver, filter); + mProgressBar = findViewById(R.id.progressBar); + mTextView = findViewById(R.id.textView); + sharedPreferences = getSharedPreferences(SETTINGS, Context.MODE_PRIVATE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) + checkPermission(); + else + checkAppVersion(); + } + + private void checkPermission() { + final List missingPermissions = new ArrayList<>(); + for (final String permission : REQUIRED_SDK_PERMISSIONS) { + final int result = ContextCompat.checkSelfPermission(this, permission); + if (result != PackageManager.PERMISSION_GRANTED) + missingPermissions.add(permission); + } + if (!missingPermissions.isEmpty()) { + final String[] permissions = missingPermissions + .toArray(new String[0]); + ActivityCompat.requestPermissions(this, permissions, PERMISSIONS); + } else { + final int[] grantResults = new int[REQUIRED_SDK_PERMISSIONS.length]; + Arrays.fill(grantResults, PackageManager.PERMISSION_GRANTED); + onRequestPermissionsResult(PERMISSIONS, REQUIRED_SDK_PERMISSIONS, grantResults); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, + @NonNull String[] permissions, @NonNull int[] grantResults) { + if (requestCode == PERMISSIONS) { + for (int grantResult : grantResults) { + if (grantResult != PackageManager.PERMISSION_GRANTED) { + Toast.makeText(this, R.string.not_granted, Toast.LENGTH_LONG).show(); + finish(); + } + } + checkAppVersion(); + } + } + + private void checkAppVersion() { + if (sharedPreferences.getInt(TAG_VERSION_CODE, 0) == versionCode) + startNative(); + else + new CopyZipTask(this).execute(getCacheDir() + "/Minetest.zip"); + } + + private void startNative() { + sharedPreferences.edit().putInt(TAG_VERSION_CODE, versionCode).apply(); + Intent intent = new Intent(this, GameActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(myReceiver); + } +} diff --git a/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java b/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java new file mode 100644 index 000000000..ac9116994 --- /dev/null +++ b/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java @@ -0,0 +1,153 @@ +/* +Minetest +Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik +Copyright (C) 2014-2020 ubulem, Bektur Mambetov + +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. +*/ + +package net.minetest.minetest; + +import android.app.IntentService; +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.content.Context; +import android.content.Intent; +import android.os.Build; +import android.os.Environment; +import android.util.Log; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import java.util.zip.ZipInputStream; + +public class UnzipService extends IntentService { + public static final String ACTION_UPDATE = "net.minetest.minetest.UPDATE"; + public static final String ACTION_PROGRESS = "net.minetest.minetest.PROGRESS"; + public static final String EXTRA_KEY_IN_FILE = "file"; + private static final String TAG = "UnzipService"; + private final int id = 1; + private NotificationManager mNotifyManager; + + public UnzipService() { + super("net.minetest.minetest.UnzipService"); + } + + private void isDir(String dir, String location) { + File f = new File(location + dir); + if (!f.isDirectory()) + f.mkdirs(); + } + + @Override + protected void onHandleIntent(Intent intent) { + createNotification(); + unzip(intent); + } + + private void createNotification() { + String name = "net.minetest.minetest"; + String channelId = "Minetest channel"; + String description = "notifications from Minetest"; + Notification.Builder builder; + if (mNotifyManager == null) + mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + int importance = NotificationManager.IMPORTANCE_LOW; + NotificationChannel mChannel = null; + if (mNotifyManager != null) + mChannel = mNotifyManager.getNotificationChannel(channelId); + if (mChannel == null) { + mChannel = new NotificationChannel(channelId, name, importance); + mChannel.setDescription(description); + // Configure the notification channel, NO SOUND + mChannel.setSound(null, null); + mChannel.enableLights(false); + mChannel.enableVibration(false); + mNotifyManager.createNotificationChannel(mChannel); + } + builder = new Notification.Builder(this, channelId); + } else { + builder = new Notification.Builder(this); + } + builder.setContentTitle(getString(R.string.notification_title)) + .setSmallIcon(R.mipmap.ic_launcher) + .setContentText(getString(R.string.notification_description)); + mNotifyManager.notify(id, builder.build()); + } + + private void unzip(Intent intent) { + String zip = intent.getStringExtra(EXTRA_KEY_IN_FILE); + String location = Environment.getExternalStorageDirectory() + "/Minetest/"; + int per = 0; + int size = getSummarySize(zip); + File zipFile = new File(zip); + int readLen; + byte[] readBuffer = new byte[8192]; + try (FileInputStream fileInputStream = new FileInputStream(zipFile); + ZipInputStream zipInputStream = new ZipInputStream(fileInputStream)) { + ZipEntry ze; + while ((ze = zipInputStream.getNextEntry()) != null) { + if (ze.isDirectory()) { + ++per; + isDir(ze.getName(), location); + } else { + publishProgress(100 * ++per / size); + try (OutputStream outputStream = new FileOutputStream(location + ze.getName())) { + while ((readLen = zipInputStream.read(readBuffer)) != -1) { + outputStream.write(readBuffer, 0, readLen); + } + } + } + zipFile.delete(); + } + } catch (FileNotFoundException e) { + Log.e(TAG, e.getLocalizedMessage()); + } catch (IOException e) { + Log.e(TAG, e.getLocalizedMessage()); + } + } + + private void publishProgress(int progress) { + Intent intentUpdate = new Intent(ACTION_UPDATE); + intentUpdate.putExtra(ACTION_PROGRESS, progress); + sendBroadcast(intentUpdate); + } + + private int getSummarySize(String zip) { + int size = 0; + try { + ZipFile zipSize = new ZipFile(zip); + size += zipSize.size(); + } catch (IOException e) { + Log.e(TAG, e.getLocalizedMessage()); + } + return size; + } + + @Override + public void onDestroy() { + super.onDestroy(); + mNotifyManager.cancel(id); + publishProgress(-1); + } +} diff --git a/build/android/src/main/res/drawable/background.png b/build/android/app/src/main/res/drawable/background.png similarity index 100% rename from build/android/src/main/res/drawable/background.png rename to build/android/app/src/main/res/drawable/background.png diff --git a/build/android/src/main/res/drawable/bg.xml b/build/android/app/src/main/res/drawable/bg.xml similarity index 82% rename from build/android/src/main/res/drawable/bg.xml rename to build/android/app/src/main/res/drawable/bg.xml index c76ec372d..903335ed9 100644 --- a/build/android/src/main/res/drawable/bg.xml +++ b/build/android/app/src/main/res/drawable/bg.xml @@ -1,4 +1,4 @@ \ No newline at end of file + android:tileMode="repeat" /> diff --git a/build/android/app/src/main/res/layout/activity_main.xml b/build/android/app/src/main/res/layout/activity_main.xml new file mode 100644 index 000000000..e6f461f14 --- /dev/null +++ b/build/android/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,30 @@ + + + + + + + diff --git a/build/android/src/main/res/mipmap/ic_launcher.png b/build/android/app/src/main/res/mipmap/ic_launcher.png similarity index 100% rename from build/android/src/main/res/mipmap/ic_launcher.png rename to build/android/app/src/main/res/mipmap/ic_launcher.png diff --git a/build/android/app/src/main/res/values/strings.xml b/build/android/app/src/main/res/values/strings.xml new file mode 100644 index 000000000..a6fba70d5 --- /dev/null +++ b/build/android/app/src/main/res/values/strings.xml @@ -0,0 +1,10 @@ + + + + Minetest + Loading… + Required permission wasn\'t granted, Minetest can\'t run without it + Loading Minetest + Less than 1 minute… + + diff --git a/build/android/app/src/main/res/values/styles.xml b/build/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..618507e63 --- /dev/null +++ b/build/android/app/src/main/res/values/styles.xml @@ -0,0 +1,22 @@ + + + + + + + + + + diff --git a/build/android/build.gradle b/build/android/build.gradle index fa74cd497..b02e8c6df 100644 --- a/build/android/build.gradle +++ b/build/android/build.gradle @@ -1,10 +1,24 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +project.ext.set("versionMajor", 5) // Version Major +project.ext.set("versionMinor", 3) // Version Minor +project.ext.set("versionPatch", 0) // Version Patch +project.ext.set("versionExtra", "-dev") // Version Extra +project.ext.set("versionCode", 26) // Android Version Code +// NOTE: +2 after each release! +// +1 for ARM and +1 for ARM64 APK's, because +// each APK must have a larger `versionCode` than the previous + buildscript { repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.1' + classpath 'com.android.tools.build:gradle:3.6.2' + classpath 'org.ajoberstar.grgit:grgit-gradle:4.0.2' + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files } } @@ -15,161 +29,6 @@ allprojects { } } -def curl_version = "7.60.0" -def irrlicht_revision = "5150" -def openal_version = "1.18.2" -def openssl_version = "1.0.2n" -def sqlite3_version = "3240000" - -apply plugin: "com.android.application" - -android { - compileSdkVersion 29 - buildToolsVersion '29.0.2' - - defaultConfig { - versionCode 26 - versionName "${System.env.VERSION_STR}.${versionCode}" - minSdkVersion 14 - targetSdkVersion 29 - applicationId "net.minetest.minetest" - manifestPlaceholders = [package: "net.minetest.minetest", project: project.name] - ndk { - // Specifies the ABI configurations of your native - // libraries Gradle should build and package with your APK. - // abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' - abiFilters 'armeabi-v7a', 'x86', 'arm64-v8a' - } - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - lintOptions { - disable "OldTargetApi", "GoogleAppIndexingWarning" - } - - Properties props = new Properties() - props.load(new FileInputStream(file("local.properties"))) - - if (props.getProperty("keystore") != null) { - signingConfigs { - release { - storeFile file(props["keystore"]) - storePassword props["keystore.password"] - keyAlias props["key"] - keyPassword props["key.password"] - } - } - - buildTypes { - release { - signingConfig signingConfigs.release - } - } - } -} - -task cleanAssets(type: Delete) { - delete 'src/main/assets' -} - -task copyAssets { - dependsOn 'cleanAssets' - mkdir "src/main/assets" - - def mtAssetsFolder = "src/main/assets/Minetest" - def projRoot = "../.." - def gameToCopy = "minetest_game" - - doLast { - mkdir "${mtAssetsFolder}" - mkdir "${mtAssetsFolder}/client" - mkdir "${mtAssetsFolder}/fonts" - mkdir "${mtAssetsFolder}/games" - mkdir "${mtAssetsFolder}/media" - - copy { - from "${projRoot}/minetest.conf.example", "${projRoot}/README.md" into mtAssetsFolder - } - copy { - from "${projRoot}/doc/lgpl-2.1.txt" into "${mtAssetsFolder}/LICENSE.txt" - } - copy { - from "${projRoot}/builtin" into "${mtAssetsFolder}/builtin" - } - copy { - from "${projRoot}/client/shaders" into "${mtAssetsFolder}/client/shaders" - } - copy { - from "${projRoot}/fonts" include "*.ttf" into "${mtAssetsFolder}/fonts" - } - copy { - from "${projRoot}/games/${gameToCopy}" into "${mtAssetsFolder}/games/${gameToCopy}" - } - copy { - from "${projRoot}/po" into "${mtAssetsFolder}/po" - } - copy { - from "${projRoot}/textures" into "${mtAssetsFolder}/textures" - } - } -} - -task cleanIconv(type: Delete) { - delete 'deps/libiconv' -} - -task cleanIrrlicht(type: Delete) { - delete 'deps/irrlicht' -} - -task cleanLevelDB(type: Delete) { - delete 'deps/leveldb' -} - -task cleanCURL(type: Delete) { - delete 'deps/curl' - delete 'deps/curl-' + curl_version -} - -task cleanOpenSSL(type: Delete) { - delete 'deps/openssl' - delete 'deps/openssl-' + openssl_version - delete 'deps/openssl-' + openssl_version + '.tar.gz' -} - -task cleanOpenAL(type: Delete) { - delete 'deps/openal-soft' -} - -task cleanFreetype(type: Delete) { - delete 'deps/freetype2-android' -} - -task cleanOgg(type: Delete) { - delete 'deps/libvorbis-libogg-android' -} - -task cleanSQLite3(type: Delete) { - delete 'deps/sqlite-amalgamation-' + sqlite3_version - delete 'deps/sqlite-amalgamation-' + sqlite3_version + '.zip' -} - -task cleanAll(type: Delete, dependsOn: [clean, cleanAssets, cleanIconv, - cleanFreetype, cleanIrrlicht, cleanLevelDB, cleanSQLite3, cleanCURL, - cleanOpenSSL, cleanOpenAL, cleanOgg]) { - delete 'deps' - delete 'gen' - delete 'libs' - delete 'obj' - delete 'bin' - delete 'Debug' - delete 'and_env' -} - -dependencies { - implementation 'androidx.core:core:1.1.0' +task clean(type: Delete) { + delete rootProject.buildDir } diff --git a/build/android/gradle.properties b/build/android/gradle.properties index 5465fec0e..53b475cf9 100644 --- a/build/android/gradle.properties +++ b/build/android/gradle.properties @@ -1,2 +1,11 @@ +<#if isLowMemory> +org.gradle.jvmargs=-Xmx4G -XX:MaxPermSize=2G -XX:+HeapDumpOnOutOfMemoryError +<#else> +org.gradle.jvmargs=-Xmx16G -XX:MaxPermSize=8G -XX:+HeapDumpOnOutOfMemoryError + +org.gradle.daemon=true +org.gradle.parallel=true +org.gradle.parallel.threads=8 +org.gradle.configureondemand=true android.enableJetifier=true -android.useAndroidX=true \ No newline at end of file +android.useAndroidX=true diff --git a/build/android/gradle/wrapper/gradle-wrapper.jar b/build/android/gradle/wrapper/gradle-wrapper.jar index 6b6ea3ab4ff4f69d55c5fd9c0a6ac70f47d41008..5c2d1cf016b3885f6930543d57b744ea8c220a1a 100644 GIT binary patch literal 55616 zcmafaW0WS*vSoFbZJS-TZP!<}ZQEV8ZQHihW!tvx>6!c9%-lQoy;&DmfdT@8fB*sl68LLCKtKQ283+jS?^Q-bNq|NIAW8=eB==8_)^)r*{C^$z z{u;{v?IMYnO`JhmPq7|LA_@Iz75S9h~8`iX>QrjrmMeu{>hn4U;+$dor zz+`T8Q0f}p^Ao)LsYq74!W*)&dTnv}E8;7H*Zetclpo2zf_f>9>HT8;`O^F8;M%l@ z57Z8dk34kG-~Wg7n48qF2xwPp;SOUpd1}9Moir5$VSyf4gF)Mp-?`wO3;2x9gYj59oFwG>?Leva43@e(z{mjm0b*@OAYLC`O9q|s+FQLOE z!+*Y;%_0(6Sr<(cxE0c=lS&-FGBFGWd_R<5$vwHRJG=tB&Mi8@hq_U7@IMyVyKkOo6wgR(<% zQw1O!nnQl3T9QJ)Vh=(`cZM{nsEKChjbJhx@UQH+G>6p z;beBQ1L!3Zl>^&*?cSZjy$B3(1=Zyn~>@`!j%5v7IBRt6X`O)yDpVLS^9EqmHxBcisVG$TRwiip#ViN|4( zYn!Av841_Z@Ys=T7w#>RT&iXvNgDq3*d?$N(SznG^wR`x{%w<6^qj&|g})La;iD?`M=p>99p><39r9+e z`dNhQ&tol5)P#;x8{tT47i*blMHaDKqJs8!Pi*F{#)9%USFxTVMfMOy{mp2ZrLR40 z2a9?TJgFyqgx~|j0eA6SegKVk@|Pd|_6P$HvwTrLTK)Re`~%kg8o9`EAE1oAiY5Jgo=H}0*D?tSCn^=SIN~fvv453Ia(<1|s07aTVVtsRxY6+tT3589iQdi^ zC92D$ewm9O6FA*u*{Fe_=b`%q`pmFvAz@hfF@OC_${IPmD#QMpPNo0mE9U=Ch;k0L zZteokPG-h7PUeRCPPYG%H!WswC?cp7M|w42pbtwj!m_&4%hB6MdLQe&}@5-h~! zkOt;w0BbDc0H!RBw;1UeVckHpJ@^|j%FBZlC} zsm?nFOT$`F_i#1_gh4|n$rDe>0md6HvA=B%hlX*3Z%y@a&W>Rq`Fe(8smIgxTGb#8 zZ`->%h!?QCk>v*~{!qp=w?a*};Y**1uH`)OX`Gi+L%-d6{rV?@}MU#qfCU(!hLz;kWH=0A%W7E^pA zD;A%Jg5SsRe!O*0TyYkAHe&O9z*Ij-YA$%-rR?sc`xz_v{>x%xY39!8g#!Z0#03H( z{O=drKfb0cbx1F*5%q81xvTDy#rfUGw(fesh1!xiS2XT;7_wBi(Rh4i(!rR^9=C+- z+**b9;icxfq@<7}Y!PW-0rTW+A^$o*#ZKenSkxLB$Qi$%gJSL>x!jc86`GmGGhai9 zOHq~hxh}KqQHJeN$2U{M>qd*t8_e&lyCs69{bm1?KGTYoj=c0`rTg>pS6G&J4&)xp zLEGIHSTEjC0-s-@+e6o&w=h1sEWWvJUvezID1&exb$)ahF9`(6`?3KLyVL$|c)CjS zx(bsy87~n8TQNOKle(BM^>1I!2-CZ^{x6zdA}qeDBIdrfd-(n@Vjl^9zO1(%2pP9@ zKBc~ozr$+4ZfjmzEIzoth(k?pbI87=d5OfjVZ`Bn)J|urr8yJq`ol^>_VAl^P)>2r)s+*3z5d<3rP+-fniCkjmk=2hTYRa@t zCQcSxF&w%mHmA?!vaXnj7ZA$)te}ds+n8$2lH{NeD4mwk$>xZCBFhRy$8PE>q$wS`}8pI%45Y;Mg;HH+}Dp=PL)m77nKF68FggQ-l3iXlVZuM2BDrR8AQbK;bn1%jzahl0; zqz0(mNe;f~h8(fPzPKKf2qRsG8`+Ca)>|<&lw>KEqM&Lpnvig>69%YQpK6fx=8YFj zHKrfzy>(7h2OhUVasdwKY`praH?>qU0326-kiSyOU_Qh>ytIs^htlBA62xU6xg?*l z)&REdn*f9U3?u4$j-@ndD#D3l!viAUtw}i5*Vgd0Y6`^hHF5R=No7j8G-*$NWl%?t z`7Nilf_Yre@Oe}QT3z+jOUVgYtT_Ym3PS5(D>kDLLas8~F+5kW%~ZYppSrf1C$gL* zCVy}fWpZ3s%2rPL-E63^tA|8OdqKsZ4TH5fny47ENs1#^C`_NLg~H^uf3&bAj#fGV zDe&#Ot%_Vhj$}yBrC3J1Xqj>Y%&k{B?lhxKrtYy;^E9DkyNHk5#6`4cuP&V7S8ce9 zTUF5PQIRO7TT4P2a*4;M&hk;Q7&{(83hJe5BSm=9qt~;U)NTf=4uKUcnxC`;iPJeI zW#~w?HIOM+0j3ptB0{UU{^6_#B*Q2gs;1x^YFey(%DJHNWz@e_NEL?$fv?CDxG`jk zH|52WFdVsZR;n!Up;K;4E$|w4h>ZIN+@Z}EwFXI{w_`?5x+SJFY_e4J@|f8U08%dd z#Qsa9JLdO$jv)?4F@&z_^{Q($tG`?|9bzt8ZfH9P`epY`soPYqi1`oC3x&|@m{hc6 zs0R!t$g>sR@#SPfNV6Pf`a^E?q3QIaY30IO%yKjx#Njj@gro1YH2Q(0+7D7mM~c>C zk&_?9Ye>B%*MA+77$Pa!?G~5tm`=p{NaZsUsOgm6Yzclr_P^2)r(7r%n(0?4B#$e7 z!fP;+l)$)0kPbMk#WOjm07+e?{E)(v)2|Ijo{o1+Z8#8ET#=kcT*OwM#K68fSNo%< zvZFdHrOrr;>`zq!_welWh!X}=oN5+V01WJn7=;z5uo6l_$7wSNkXuh=8Y>`TjDbO< z!yF}c42&QWYXl}XaRr0uL?BNPXlGw=QpDUMo`v8pXzzG(=!G;t+mfCsg8 zJb9v&a)E!zg8|%9#U?SJqW!|oBHMsOu}U2Uwq8}RnWeUBJ>FtHKAhP~;&T4mn(9pB zu9jPnnnH0`8ywm-4OWV91y1GY$!qiQCOB04DzfDDFlNy}S{$Vg9o^AY!XHMueN<{y zYPo$cJZ6f7``tmlR5h8WUGm;G*i}ff!h`}L#ypFyV7iuca!J+C-4m@7*Pmj9>m+jh zlpWbud)8j9zvQ`8-oQF#u=4!uK4kMFh>qS_pZciyq3NC(dQ{577lr-!+HD*QO_zB9 z_Rv<#qB{AAEF8Gbr7xQly%nMA%oR`a-i7nJw95F3iH&IX5hhy3CCV5y>mK4)&5aC*12 zI`{(g%MHq<(ocY5+@OK-Qn-$%!Nl%AGCgHl>e8ogTgepIKOf3)WoaOkuRJQt%MN8W z=N-kW+FLw=1^}yN@*-_c>;0N{-B!aXy#O}`%_~Nk?{e|O=JmU8@+92Q-Y6h)>@omP=9i~ zi`krLQK^!=@2BH?-R83DyFkejZkhHJqV%^} zUa&K22zwz7b*@CQV6BQ9X*RB177VCVa{Z!Lf?*c~PwS~V3K{id1TB^WZh=aMqiws5)qWylK#^SG9!tqg3-)p_o(ABJsC!0;0v36;0tC= z!zMQ_@se(*`KkTxJ~$nIx$7ez&_2EI+{4=uI~dwKD$deb5?mwLJ~ema_0Z z6A8Q$1~=tY&l5_EBZ?nAvn$3hIExWo_ZH2R)tYPjxTH5mAw#3n-*sOMVjpUrdnj1DBm4G!J+Ke}a|oQN9f?!p-TcYej+(6FNh_A? zJ3C%AOjc<8%9SPJ)U(md`W5_pzYpLEMwK<_jgeg-VXSX1Nk1oX-{yHz z-;CW!^2ds%PH{L{#12WonyeK5A=`O@s0Uc%s!@22etgSZW!K<%0(FHC+5(BxsXW@e zAvMWiO~XSkmcz%-@s{|F76uFaBJ8L5H>nq6QM-8FsX08ug_=E)r#DC>d_!6Nr+rXe zzUt30Du_d0oSfX~u>qOVR*BmrPBwL@WhF^5+dHjWRB;kB$`m8|46efLBXLkiF|*W= zg|Hd(W}ZnlJLotYZCYKoL7YsQdLXZ!F`rLqLf8n$OZOyAzK`uKcbC-n0qoH!5-rh&k-`VADETKHxrhK<5C zhF0BB4azs%j~_q_HA#fYPO0r;YTlaa-eb)Le+!IeP>4S{b8&STp|Y0if*`-A&DQ$^ z-%=i73HvEMf_V6zSEF?G>G-Eqn+|k`0=q?(^|ZcqWsuLlMF2!E*8dDAx%)}y=lyMa z$Nn0_f8YN8g<4D>8IL3)GPf#dJYU@|NZqIX$;Lco?Qj=?W6J;D@pa`T=Yh z-ybpFyFr*3^gRt!9NnbSJWs2R-S?Y4+s~J8vfrPd_&_*)HBQ{&rW(2X>P-_CZU8Y9 z-32><7|wL*K+3{ZXE5}nn~t@NNT#Bc0F6kKI4pVwLrpU@C#T-&f{Vm}0h1N3#89@d zgcx3QyS;Pb?V*XAq;3(W&rjLBazm69XX;%^n6r}0!CR2zTU1!x#TypCr`yrII%wk8 z+g)fyQ!&xIX(*>?T}HYL^>wGC2E}euj{DD_RYKK@w=yF+44367X17)GP8DCmBK!xS zE{WRfQ(WB-v>DAr!{F2-cQKHIjIUnLk^D}7XcTI#HyjSiEX)BO^GBI9NjxojYfQza zWsX@GkLc7EqtP8(UM^cq5zP~{?j~*2T^Bb={@PV)DTkrP<9&hxDwN2@hEq~8(ZiF! z3FuQH_iHyQ_s-#EmAC5~K$j_$cw{+!T>dm#8`t%CYA+->rWp09jvXY`AJQ-l%C{SJ z1c~@<5*7$`1%b}n7ivSo(1(j8k+*Gek(m^rQ!+LPvb=xA@co<|(XDK+(tb46xJ4) zcw7w<0p3=Idb_FjQ@ttoyDmF?cT4JRGrX5xl&|ViA@Lg!vRR}p#$A?0=Qe+1)Mizl zn;!zhm`B&9t0GA67GF09t_ceE(bGdJ0mbXYrUoV2iuc3c69e;!%)xNOGG*?x*@5k( zh)snvm0s&gRq^{yyeE)>hk~w8)nTN`8HJRtY0~1f`f9ue%RV4~V(K*B;jFfJY4dBb z*BGFK`9M-tpWzayiD>p_`U(29f$R|V-qEB;+_4T939BPb=XRw~8n2cGiRi`o$2qm~ zN&5N7JU{L*QGM@lO8VI)fUA0D7bPrhV(GjJ$+@=dcE5vAVyCy6r&R#4D=GyoEVOnu z8``8q`PN-pEy>xiA_@+EN?EJpY<#}BhrsUJC0afQFx7-pBeLXR9Mr+#w@!wSNR7vxHy@r`!9MFecB4O zh9jye3iSzL0@t3)OZ=OxFjjyK#KSF|zz@K}-+HaY6gW+O{T6%Zky@gD$6SW)Jq;V0 zt&LAG*YFO^+=ULohZZW*=3>7YgND-!$2}2)Mt~c>JO3j6QiPC-*ayH2xBF)2m7+}# z`@m#q{J9r~Dr^eBgrF(l^#sOjlVNFgDs5NR*Xp;V*wr~HqBx7?qBUZ8w)%vIbhhe) zt4(#1S~c$Cq7b_A%wpuah1Qn(X9#obljoY)VUoK%OiQZ#Fa|@ZvGD0_oxR=vz{>U* znC(W7HaUDTc5F!T77GswL-jj7e0#83DH2+lS-T@_^SaWfROz9btt*5zDGck${}*njAwf}3hLqKGLTeV&5(8FC+IP>s;p{L@a~RyCu)MIa zs~vA?_JQ1^2Xc&^cjDq02tT_Z0gkElR0Aa$v@VHi+5*)1(@&}gEXxP5Xon?lxE@is z9sxd|h#w2&P5uHJxWgmtVZJv5w>cl2ALzri;r57qg){6`urTu(2}EI?D?##g=!Sbh z*L*>c9xN1a3CH$u7C~u_!g81`W|xp=54oZl9CM)&V9~ATCC-Q!yfKD@vp#2EKh0(S zgt~aJ^oq-TM0IBol!w1S2j7tJ8H7;SR7yn4-H}iz&U^*zW95HrHiT!H&E|rSlnCYr z7Y1|V7xebn=TFbkH;>WIH6H>8;0?HS#b6lCke9rSsH%3AM1#2U-^*NVhXEIDSFtE^ z=jOo1>j!c__Bub(R*dHyGa)@3h?!ls1&M)d2{?W5#1|M@6|ENYYa`X=2EA_oJUw=I zjQ)K6;C!@>^i7vdf`pBOjH>Ts$97}B=lkb07<&;&?f#cy3I0p5{1=?O*#8m$C_5TE zh}&8lOWWF7I@|pRC$G2;Sm#IJfhKW@^jk=jfM1MdJP(v2fIrYTc{;e5;5gsp`}X8-!{9{S1{h+)<@?+D13s^B zq9(1Pu(Dfl#&z|~qJGuGSWDT&u{sq|huEsbJhiqMUae}K*g+R(vG7P$p6g}w*eYWn zQ7luPl1@{vX?PMK%-IBt+N7TMn~GB z!Ldy^(2Mp{fw_0;<$dgHAv1gZgyJAx%}dA?jR=NPW1K`FkoY zNDgag#YWI6-a2#&_E9NMIE~gQ+*)i<>0c)dSRUMHpg!+AL;a;^u|M1jp#0b<+#14z z+#LuQ1jCyV_GNj#lHWG3e9P@H34~n0VgP#(SBX=v|RSuOiY>L87 z#KA{JDDj2EOBX^{`a;xQxHtY1?q5^B5?up1akjEPhi1-KUsK|J9XEBAbt%^F`t0I- zjRYYKI4OB7Zq3FqJFBZwbI=RuT~J|4tA8x)(v2yB^^+TYYJS>Et`_&yge##PuQ%0I z^|X!Vtof}`UuIxPjoH8kofw4u1pT5h`Ip}d8;l>WcG^qTe>@x63s#zoJiGmDM@_h= zo;8IZR`@AJRLnBNtatipUvL^(1P_a;q8P%&voqy#R!0(bNBTlV&*W9QU?kRV1B*~I zWvI?SNo2cB<7bgVY{F_CF$7z!02Qxfw-Ew#p!8PC#! z1sRfOl`d-Y@&=)l(Sl4CS=>fVvor5lYm61C!!iF3NMocKQHUYr0%QM}a4v2>rzPfM zUO}YRDb7-NEqW+p_;e0{Zi%0C$&B3CKx6|4BW`@`AwsxE?Vu}@Jm<3%T5O&05z+Yq zkK!QF(vlN}Rm}m_J+*W4`8i~R&`P0&5!;^@S#>7qkfb9wxFv@(wN@$k%2*sEwen$a zQnWymf+#Uyv)0lQVd?L1gpS}jMQZ(NHHCKRyu zjK|Zai0|N_)5iv)67(zDBCK4Ktm#ygP|0(m5tU`*AzR&{TSeSY8W=v5^=Ic`ahxM-LBWO+uoL~wxZmgcSJMUF9q%<%>jsvh9Dnp^_e>J_V=ySx4p?SF0Y zg4ZpZt@!h>WR76~P3_YchYOak7oOzR|`t+h!BbN}?zd zq+vMTt0!duALNWDwWVIA$O=%{lWJEj;5(QD()huhFL5=6x_=1h|5ESMW&S|*oxgF# z-0GRIb ziolwI13hJ-Rl(4Rj@*^=&Zz3vD$RX8bFWvBM{niz(%?z0gWNh_vUvpBDoa>-N=P4c zbw-XEJ@txIbc<`wC883;&yE4ayVh>+N($SJ01m}fumz!#!aOg*;y4Hl{V{b;&ux3& zBEmSq2jQ7#IbVm3TPBw?2vVN z0wzj|Y6EBS(V%Pb+@OPkMvEKHW~%DZk#u|A18pZMmCrjWh%7J4Ph>vG61 zRBgJ6w^8dNRg2*=K$Wvh$t>$Q^SMaIX*UpBG)0bqcvY%*by=$EfZAy{ZOA#^tB(D( zh}T(SZgdTj?bG9u+G{Avs5Yr1x=f3k7%K|eJp^>BHK#~dsG<&+=`mM@>kQ-cAJ2k) zT+Ht5liXdc^(aMi9su~{pJUhe)!^U&qn%mV6PS%lye+Iw5F@Xv8E zdR4#?iz+R4--iiHDQmQWfNre=iofAbF~1oGTa1Ce?hId~W^kPuN(5vhNx++ZLkn?l zUA7L~{0x|qA%%%P=8+-Ck{&2$UHn#OQncFS@uUVuE39c9o~#hl)v#!$X(X*4ban2c z{buYr9!`H2;6n73n^W3Vg(!gdBV7$e#v3qubWALaUEAf@`ava{UTx%2~VVQbEE(*Q8_ zv#me9i+0=QnY)$IT+@3vP1l9Wrne+MlZNGO6|zUVG+v&lm7Xw3P*+gS6e#6mVx~(w zyuaXogGTw4!!&P3oZ1|4oc_sGEa&m3Jsqy^lzUdJ^y8RlvUjDmbC^NZ0AmO-c*&m( zSI%4P9f|s!B#073b>Eet`T@J;3qY!NrABuUaED6M^=s-Q^2oZS`jVzuA z>g&g$!Tc>`u-Q9PmKu0SLu-X(tZeZ<%7F+$j3qOOftaoXO5=4!+P!%Cx0rNU+@E~{ zxCclYb~G(Ci%o{}4PC(Bu>TyX9slm5A^2Yi$$kCq-M#Jl)a2W9L-bq5%@Pw^ zh*iuuAz`x6N_rJ1LZ7J^MU9~}RYh+EVIVP+-62u+7IC%1p@;xmmQ`dGCx$QpnIUtK z0`++;Ddz7{_R^~KDh%_yo8WM$IQhcNOALCIGC$3_PtUs?Y44@Osw;OZ()Lk=(H&Vc zXjkHt+^1@M|J%Q&?4>;%T-i%#h|Tb1u;pO5rKst8(Cv2!3U{TRXdm&>fWTJG)n*q&wQPjRzg%pS1RO9}U0*C6fhUi&f#qoV`1{U<&mWKS<$oVFW>{&*$6)r6Rx)F4W zdUL8Mm_qNk6ycFVkI5F?V+cYFUch$92|8O^-Z1JC94GU+Nuk zA#n3Z1q4<6zRiv%W5`NGk*Ym{#0E~IA6*)H-=RmfWIY%mEC0? zSih7uchi`9-WkF2@z1ev6J_N~u;d$QfSNLMgPVpHZoh9oH-8D*;EhoCr~*kJ<|-VD z_jklPveOxWZq40E!SV@0XXy+~Vfn!7nZ1GXsn~U$>#u0d*f?RL9!NMlz^qxYmz|xt zz6A&MUAV#eD%^GcP#@5}QH5e7AV`}(N2#(3xpc!7dDmgu7C3TpgX5Z|$%Vu8=&SQI zdxUk*XS-#C^-cM*O>k}WD5K81e2ayyRA)R&5>KT1QL!T!%@}fw{>BsF+-pzu>;7{g z^CCSWfH;YtJGT@+An0Ded#zM9>UEFOdR_Xq zS~!5R*{p1Whq62ynHo|n$4p7&d|bal{iGsxAY?opi3R${)Zt*8YyOU!$TWMYXF?|i zPXYr}wJp#EH;keSG5WYJ*(~oiu#GDR>C4%-HpIWr7v`W`lzQN-lb?*vpoit z8FqJ)`LC4w8fO8Fu}AYV`awF2NLMS4$f+?=KisU4P6@#+_t)5WDz@f*qE|NG0*hwO z&gv^k^kC6Fg;5>Gr`Q46C{6>3F(p0QukG6NM07rxa&?)_C*eyU(jtli>9Zh#eUb(y zt9NbC-bp0>^m?i`?$aJUyBmF`N0zQ% zvF_;vLVI{tq%Ji%u*8s2p4iBirv*uD(?t~PEz$CfxVa=@R z^HQu6-+I9w>a35kX!P)TfnJDD!)j8!%38(vWNe9vK0{k*`FS$ABZ`rdwfQe@IGDki zssfXnsa6teKXCZUTd^qhhhUZ}>GG_>F0~LG7*<*x;8e39nb-0Bka(l)%+QZ_IVy3q zcmm2uKO0p)9|HGxk*e_$mX2?->&-MXe`=Fz3FRTFfM!$_y}G?{F9jmNgD+L%R`jM1 zIP-kb=3Hlsb35Q&qo(%Ja(LwQj>~!GI|Hgq65J9^A!ibChYB3kxLn@&=#pr}BwON0Q=e5;#sF8GGGuzx6O}z%u3l?jlKF&8Y#lUA)Cs6ZiW8DgOk|q z=YBPAMsO7AoAhWgnSKae2I7%7*Xk>#AyLX-InyBO?OD_^2^nI4#;G|tBvg3C0ldO0 z*`$g(q^es4VqXH2t~0-u^m5cfK8eECh3Rb2h1kW%%^8A!+ya3OHLw$8kHorx4(vJO zAlVu$nC>D{7i?7xDg3116Y2e+)Zb4FPAdZaX}qA!WW{$d?u+sK(iIKqOE-YM zH7y^hkny24==(1;qEacfFU{W{xSXhffC&DJV&oqw`u~WAl@=HIel>KC-mLs2ggFld zsSm-03=Jd^XNDA4i$vKqJ|e|TBc19bglw{)QL${Q(xlN?E;lPumO~;4w_McND6d+R zsc2p*&uRWd`wTDszTcWKiii1mNBrF7n&LQp$2Z<}zkv=8k2s6-^+#siy_K1`5R+n( z++5VOU^LDo(kt3ok?@$3drI`<%+SWcF*`CUWqAJxl3PAq!X|q{al;8%HfgxxM#2Vb zeBS756iU|BzB>bN2NP=AX&!{uZXS;|F`LLd9F^97UTMnNks_t7EPnjZF`2ocD2*u+ z?oKP{xXrD*AKGYGkZtlnvCuazg6g16ZAF{Nu%w+LCZ+v_*`0R$NK)tOh_c#cze;o$ z)kY(eZ5Viv<5zl1XfL(#GO|2FlXL#w3T?hpj3BZ&OAl^L!7@ zy;+iJWYQYP?$(`li_!|bfn!h~k#=v-#XXyjTLd+_txOqZZETqSEp>m+O0ji7MxZ*W zSdq+yqEmafrsLErZG8&;kH2kbCwluSa<@1yU3^Q#5HmW(hYVR0E6!4ZvH;Cr<$`qf zSvqRc`Pq_9b+xrtN3qLmds9;d7HdtlR!2NV$rZPCh6>(7f7M}>C^LeM_5^b$B~mn| z#)?`E=zeo9(9?{O_ko>51~h|c?8{F=2=_-o(-eRc z9p)o51krhCmff^U2oUi#$AG2p-*wSq8DZ(i!Jmu1wzD*)#%J&r)yZTq`3e|v4>EI- z=c|^$Qhv}lEyG@!{G~@}Wbx~vxTxwKoe9zn%5_Z^H$F1?JG_Kadc(G8#|@yaf2-4< zM1bdQF$b5R!W1f`j(S>Id;CHMzfpyjYEC_95VQ*$U3y5piVy=9Rdwg7g&)%#6;U%b2W}_VVdh}qPnM4FY9zFP(5eR zWuCEFox6e;COjs$1RV}IbpE0EV;}5IP}Oq|zcb*77PEDIZU{;@_;8*22{~JRvG~1t zc+ln^I+)Q*+Ha>(@=ra&L&a-kD;l$WEN;YL0q^GE8+})U_A_StHjX_gO{)N>tx4&F zRK?99!6JqktfeS-IsD@74yuq*aFJoV{5&K(W`6Oa2Qy0O5JG>O`zZ-p7vBGh!MxS;}}h6(96Wp`dci3DY?|B@1p8fVsDf$|0S zfE{WL5g3<9&{~yygYyR?jK!>;eZ2L#tpL2)H#89*b zycE?VViXbH7M}m33{#tI69PUPD=r)EVPTBku={Qh{ zKi*pht1jJ+yRhVE)1=Y()iS9j`FesMo$bjLSqPMF-i<42Hxl6%y7{#vw5YT(C}x0? z$rJU7fFmoiR&%b|Y*pG?7O&+Jb#Z%S8&%o~fc?S9c`Dwdnc4BJC7njo7?3bp#Yonz zPC>y`DVK~nzN^n}jB5RhE4N>LzhCZD#WQseohYXvqp5^%Ns!q^B z&8zQN(jgPS(2ty~g2t9!x9;Dao~lYVujG-QEq{vZp<1Nlp;oj#kFVsBnJssU^p-4% zKF_A?5sRmA>d*~^og-I95z$>T*K*33TGBPzs{OMoV2i+(P6K|95UwSj$Zn<@Rt(g%|iY z$SkSjYVJ)I<@S(kMQ6md{HxAa8S`^lXGV?ktLX!ngTVI~%WW+p#A#XTWaFWeBAl%U z&rVhve#Yse*h4BC4nrq7A1n>Rlf^ErbOceJC`o#fyCu@H;y)`E#a#)w)3eg^{Hw&E7);N5*6V+z%olvLj zp^aJ4`h*4L4ij)K+uYvdpil(Z{EO@u{BcMI&}5{ephilI%zCkBhBMCvOQT#zp|!18 zuNl=idd81|{FpGkt%ty=$fnZnWXxem!t4x{ zat@68CPmac(xYaOIeF}@O1j8O?2jbR!KkMSuix;L8x?m01}|bS2=&gsjg^t2O|+0{ zlzfu5r5_l4)py8uPb5~NHPG>!lYVynw;;T-gk1Pl6PQ39Mwgd2O+iHDB397H)2grN zHwbd>8i%GY>Pfy7;y5X7AN>qGLZVH>N_ZuJZ-`z9UA> zfyb$nbmPqxyF2F;UW}7`Cu>SS%0W6h^Wq5e{PWAjxlh=#Fq+6SiPa-L*551SZKX&w zc9TkPv4eao?kqomkZ#X%tA{`UIvf|_=Y7p~mHZKqO>i_;q4PrwVtUDTk?M7NCssa?Y4uxYrsXj!+k@`Cxl;&{NLs*6!R<6k9$Bq z%grLhxJ#G_j~ytJpiND8neLfvD0+xu>wa$-%5v;4;RYYM66PUab)c9ruUm%d{^s{# zTBBY??@^foRv9H}iEf{w_J%rV<%T1wv^`)Jm#snLTIifjgRkX``x2wV(D6(=VTLL4 zI-o}&5WuwBl~(XSLIn5~{cGWorl#z+=(vXuBXC#lp}SdW=_)~8Z(Vv!#3h2@pdA3d z{cIPYK@Ojc9(ph=H3T7;aY>(S3~iuIn05Puh^32WObj%hVN(Y{Ty?n?Cm#!kGNZFa zW6Ybz!tq|@erhtMo4xAus|H8V_c+XfE5mu|lYe|{$V3mKnb1~fqoFim;&_ZHN_=?t zysQwC4qO}rTi}k8_f=R&i27RdBB)@bTeV9Wcd}Rysvod}7I%ujwYbTI*cN7Kbp_hO z=eU521!#cx$0O@k9b$;pnCTRtLIzv){nVW6Ux1<0@te6`S5%Ew3{Z^9=lbL5$NFvd4eUtK?%zgmB;_I&p`)YtpN`2Im(?jPN<(7Ua_ZWJRF(CChv`(gHfWodK%+joy>8Vaa;H1w zIJ?!kA|x7V;4U1BNr(UrhfvjPii7YENLIm`LtnL9Sx z5E9TYaILoB2nSwDe|BVmrpLT43*dJ8;T@1l zJE)4LEzIE{IN}+Nvpo3=ZtV!U#D;rB@9OXYw^4QH+(52&pQEcZq&~u9bTg63ikW9! z=!_RjN2xO=F+bk>fSPhsjQA;)%M1My#34T`I7tUf>Q_L>DRa=>Eo(sapm>}}LUsN% zVw!C~a)xcca`G#g*Xqo>_uCJTz>LoWGSKOwp-tv`yvfqw{17t`9Z}U4o+q2JGP^&9 z(m}|d13XhYSnEm$_8vH-Lq$A^>oWUz1)bnv|AVn_0FwM$vYu&8+qUg$+qP}nwrykD zwmIF?wr$()X@33oz1@B9zi+?Th^nZnsES)rb@O*K^JL~ZH|pRRk$i0+ohh?Il)y&~ zQaq{}9YxPt5~_2|+r#{k#~SUhO6yFq)uBGtYMMg4h1qddg!`TGHocYROyNFJtYjNe z3oezNpq6%TP5V1g(?^5DMeKV|i6vdBq)aGJ)BRv;K(EL0_q7$h@s?BV$)w31*c(jd z{@hDGl3QdXxS=#?0y3KmPd4JL(q(>0ikTk6nt98ptq$6_M|qrPi)N>HY>wKFbnCKY z%0`~`9p)MDESQJ#A`_>@iL7qOCmCJ(p^>f+zqaMuDRk!z01Nd2A_W^D%~M73jTqC* zKu8u$$r({vP~TE8rPk?8RSjlRvG*BLF}ye~Su%s~rivmjg2F z24dhh6-1EQF(c>Z1E8DWY)Jw#9U#wR<@6J)3hjA&2qN$X%piJ4s={|>d-|Gzl~RNu z##iR(m;9TN3|zh+>HgTI&82iR>$YVoOq$a(2%l*2mNP(AsV=lR^>=tIP-R9Tw!BYnZROx`PN*JiNH>8bG}&@h0_v$yOTk#@1;Mh;-={ZU7e@JE(~@@y0AuETvsqQV@7hbKe2wiWk@QvV=Kz`%@$rN z_0Hadkl?7oEdp5eaaMqBm;#Xj^`fxNO^GQ9S3|Fb#%{lN;1b`~yxLGEcy8~!cz{!! z=7tS!I)Qq%w(t9sTSMWNhoV#f=l5+a{a=}--?S!rA0w}QF!_Eq>V4NbmYKV&^OndM z4WiLbqeC5+P@g_!_rs01AY6HwF7)$~%Ok^(NPD9I@fn5I?f$(rcOQjP+z?_|V0DiN zb}l0fy*el9E3Q7fVRKw$EIlb&T0fG~fDJZL7Qn8*a5{)vUblM)*)NTLf1ll$ zpQ^(0pkSTol`|t~`Y4wzl;%NRn>689mpQrW=SJ*rB;7}w zVHB?&sVa2%-q@ANA~v)FXb`?Nz8M1rHKiZB4xC9<{Q3T!XaS#fEk=sXI4IFMnlRqG+yaFw< zF{}7tcMjV04!-_FFD8(FtuOZx+|CjF@-xl6-{qSFF!r7L3yD()=*Ss6fT?lDhy(h$ zt#%F575$U(3-e2LsJd>ksuUZZ%=c}2dWvu8f!V%>z3gajZ!Dlk zm=0|(wKY`c?r$|pX6XVo6padb9{EH}px)jIsdHoqG^(XH(7}r^bRa8BC(%M+wtcB? z6G2%tui|Tx6C3*#RFgNZi9emm*v~txI}~xV4C`Ns)qEoczZ>j*r zqQCa5k90Gntl?EX!{iWh=1t$~jVoXjs&*jKu0Ay`^k)hC^v_y0xU~brMZ6PPcmt5$ z@_h`f#qnI$6BD(`#IR0PrITIV^~O{uo=)+Bi$oHA$G* zH0a^PRoeYD3jU_k%!rTFh)v#@cq`P3_y=6D(M~GBud;4 zCk$LuxPgJ5=8OEDlnU!R^4QDM4jGni}~C zy;t2E%Qy;A^bz_5HSb5pq{x{g59U!ReE?6ULOw58DJcJy;H?g*ofr(X7+8wF;*3{rx>j&27Syl6A~{|w{pHb zeFgu0E>OC81~6a9(2F13r7NZDGdQxR8T68&t`-BK zE>ZV0*0Ba9HkF_(AwfAds-r=|dA&p`G&B_zn5f9Zfrz9n#Rvso`x%u~SwE4SzYj!G zVQ0@jrLwbYP=awX$21Aq!I%M{x?|C`narFWhp4n;=>Sj!0_J!k7|A0;N4!+z%Oqlk z1>l=MHhw3bi1vT}1!}zR=6JOIYSm==qEN#7_fVsht?7SFCj=*2+Ro}B4}HR=D%%)F z?eHy=I#Qx(vvx)@Fc3?MT_@D))w@oOCRR5zRw7614#?(-nC?RH`r(bb{Zzn+VV0bm zJ93!(bfrDH;^p=IZkCH73f*GR8nDKoBo|!}($3^s*hV$c45Zu>6QCV(JhBW=3(Tpf z=4PT6@|s1Uz+U=zJXil3K(N6;ePhAJhCIo`%XDJYW@x#7Za);~`ANTvi$N4(Fy!K- z?CQ3KeEK64F0@ykv$-0oWCWhYI-5ZC1pDqui@B|+LVJmU`WJ=&C|{I_))TlREOc4* zSd%N=pJ_5$G5d^3XK+yj2UZasg2) zXMLtMp<5XWWfh-o@ywb*nCnGdK{&S{YI54Wh2|h}yZ})+NCM;~i9H@1GMCgYf`d5n zwOR(*EEkE4-V#R2+Rc>@cAEho+GAS2L!tzisLl${42Y=A7v}h;#@71_Gh2MV=hPr0_a% z0!={Fcv5^GwuEU^5rD|sP;+y<%5o9;#m>ssbtVR2g<420(I-@fSqfBVMv z?`>61-^q;M(b3r2z{=QxSjyH=-%99fpvb}8z}d;%_8$$J$qJg1Sp3KzlO_!nCn|g8 zzg8skdHNsfgkf8A7PWs;YBz_S$S%!hWQ@G>guCgS--P!!Ui9#%GQ#Jh?s!U-4)7ozR?i>JXHU$| zg0^vuti{!=N|kWorZNFX`dJgdphgic#(8sOBHQdBkY}Qzp3V%T{DFb{nGPgS;QwnH9B9;-Xhy{? z(QVwtzkn9I)vHEmjY!T3ifk1l5B?%%TgP#;CqG-?16lTz;S_mHOzu#MY0w}XuF{lk z*dt`2?&plYn(B>FFXo+fd&CS3q^hquSLVEn6TMAZ6e*WC{Q2e&U7l|)*W;^4l~|Q= zt+yFlLVqPz!I40}NHv zE2t1meCuGH%<`5iJ(~8ji#VD{?uhP%F(TnG#uRZW-V}1=N%ev&+Gd4v!0(f`2Ar-Y z)GO6eYj7S{T_vxV?5^%l6TF{ygS_9e2DXT>9caP~xq*~oE<5KkngGtsv)sdCC zaQH#kSL%c*gLj6tV)zE6SGq|0iX*DPV|I`byc9kn_tNQkPU%y<`rj zMC}lD<93=Oj+D6Y2GNMZb|m$^)RVdi`&0*}mxNy0BW#0iq!GGN2BGx5I0LS>I|4op z(6^xWULBr=QRpbxIJDK~?h;K#>LwQI4N<8V?%3>9I5l+e*yG zFOZTIM0c3(q?y9f7qDHKX|%zsUF%2zN9jDa7%AK*qrI5@z~IruFP+IJy7!s~TE%V3 z_PSSxXlr!FU|Za>G_JL>DD3KVZ7u&}6VWbwWmSg?5;MabycEB)JT(eK8wg`^wvw!Q zH5h24_E$2cuib&9>Ue&@%Cly}6YZN-oO_ei5#33VvqV%L*~ZehqMe;)m;$9)$HBsM zfJ96Hk8GJyWwQ0$iiGjwhxGgQX$sN8ij%XJzW`pxqgwW=79hgMOMnC|0Q@ed%Y~=_ z?OnjUB|5rS+R$Q-p)vvM(eFS+Qr{_w$?#Y;0Iknw3u(+wA=2?gPyl~NyYa3me{-Su zhH#8;01jEm%r#5g5oy-f&F>VA5TE_9=a0aO4!|gJpu470WIrfGo~v}HkF91m6qEG2 zK4j=7C?wWUMG$kYbIp^+@)<#ArZ$3k^EQxraLk0qav9TynuE7T79%MsBxl3|nRn?L zD&8kt6*RJB6*a7=5c57wp!pg)p6O?WHQarI{o9@3a32zQ3FH8cK@P!DZ?CPN_LtmC6U4F zlv8T2?sau&+(i@EL6+tvP^&=|aq3@QgL4 zOu6S3wSWeYtgCnKqg*H4ifIQlR4hd^n{F+3>h3;u_q~qw-Sh;4dYtp^VYymX12$`? z;V2_NiRt82RC=yC+aG?=t&a81!gso$hQUb)LM2D4Z{)S zI1S9f020mSm(Dn$&Rlj0UX}H@ zv={G+fFC>Sad0~8yB%62V(NB4Z|b%6%Co8j!>D(VyAvjFBP%gB+`b*&KnJ zU8s}&F+?iFKE(AT913mq;57|)q?ZrA&8YD3Hw*$yhkm;p5G6PNiO3VdFlnH-&U#JH zEX+y>hB(4$R<6k|pt0?$?8l@zeWk&1Y5tlbgs3540F>A@@rfvY;KdnVncEh@N6Mfi zY)8tFRY~Z?Qw!{@{sE~vQy)0&fKsJpj?yR`Yj+H5SDO1PBId3~d!yjh>FcI#Ug|^M z7-%>aeyQhL8Zmj1!O0D7A2pZE-$>+-6m<#`QX8(n)Fg>}l404xFmPR~at%$(h$hYD zoTzbxo`O{S{E}s8Mv6WviXMP}(YPZoL11xfd>bggPx;#&pFd;*#Yx%TtN1cp)MuHf z+Z*5CG_AFPwk624V9@&aL0;=@Ql=2h6aJoqWx|hPQQzdF{e7|fe(m){0==hk_!$ou zI|p_?kzdO9&d^GBS1u+$>JE-6Ov*o{mu@MF-?$r9V>i%;>>Fo~U`ac2hD*X}-gx*v z1&;@ey`rA0qNcD9-5;3_K&jg|qvn@m^+t?8(GTF0l#|({Zwp^5Ywik@bW9mN+5`MU zJ#_Ju|jtsq{tv)xA zY$5SnHgHj}c%qlQG72VS_(OSv;H~1GLUAegygT3T-J{<#h}))pk$FjfRQ+Kr%`2ZiI)@$96Nivh82#K@t>ze^H?R8wHii6Pxy z0o#T(lh=V>ZD6EXf0U}sG~nQ1dFI`bx;vivBkYSVkxXn?yx1aGxbUiNBawMGad;6? zm{zp?xqAoogt=I2H0g@826=7z^DmTTLB11byYvAO;ir|O0xmNN3Ec0w%yHO({-%q(go%?_X{LP?=E1uXoQgrEGOfL1?~ zI%uPHC23dn-RC@UPs;mxq6cFr{UrgG@e3ONEL^SoxFm%kE^LBhe_D6+Ia+u0J=)BC zf8FB!0J$dYg33jb2SxfmkB|8qeN&De!%r5|@H@GiqReK(YEpnXC;-v~*o<#JmYuze zW}p-K=9?0=*fZyYTE7A}?QR6}m_vMPK!r~y*6%My)d;x4R?-=~MMLC_02KejX9q6= z4sUB4AD0+H4ulSYz4;6mL8uaD07eXFvpy*i5X@dmx--+9`ur@rcJ5<L#s%nq3MRi4Dpr;#28}dl36M{MkVs4+Fm3Pjo5qSV)h}i(2^$Ty|<7N z>*LiBzFKH30D!$@n^3B@HYI_V1?yM(G$2Ml{oZ}?frfPU+{i|dHQOP^M0N2#NN_$+ zs*E=MXUOd=$Z2F4jSA^XIW=?KN=w6{_vJ4f(ZYhLxvFtPozPJv9k%7+z!Zj+_0|HC zMU0(8`8c`Sa=%e$|Mu2+CT22Ifbac@7Vn*he`|6Bl81j`44IRcTu8aw_Y%;I$Hnyd zdWz~I!tkWuGZx4Yjof(?jM;exFlUsrj5qO=@2F;56&^gM9D^ZUQ!6TMMUw19zslEu zwB^^D&nG96Y+Qwbvgk?Zmkn9%d{+V;DGKmBE(yBWX6H#wbaAm&O1U^ zS4YS7j2!1LDC6|>cfdQa`}_^satOz6vc$BfFIG07LoU^IhVMS_u+N=|QCJao0{F>p z-^UkM)ODJW9#9*o;?LPCRV1y~k9B`&U)jbTdvuxG&2%!n_Z&udT=0mb@e;tZ$_l3bj6d0K2;Ya!&)q`A${SmdG_*4WfjubB)Mn+vaLV+)L5$yD zYSTGxpVok&fJDG9iS8#oMN{vQneO|W{Y_xL2Hhb%YhQJgq7j~X7?bcA|B||C?R=Eo z!z;=sSeKiw4mM$Qm>|aIP3nw36Tbh6Eml?hL#&PlR5xf9^vQGN6J8op1dpLfwFg}p zlqYx$610Zf?=vCbB_^~~(e4IMic7C}X(L6~AjDp^;|=d$`=!gd%iwCi5E9<6Y~z0! zX8p$qprEadiMgq>gZ_V~n$d~YUqqqsL#BE6t9ufXIUrs@DCTfGg^-Yh5Ms(wD1xAf zTX8g52V!jr9TlWLl+whcUDv?Rc~JmYs3haeG*UnV;4bI=;__i?OSk)bF3=c9;qTdP zeW1exJwD+;Q3yAw9j_42Zj9nuvs%qGF=6I@($2Ue(a9QGRMZTd4ZAlxbT5W~7(alP1u<^YY!c3B7QV z@jm$vn34XnA6Gh1I)NBgTmgmR=O1PKp#dT*mYDPRZ=}~X3B8}H*e_;;BHlr$FO}Eq zJ9oWk0y#h;N1~ho724x~d)A4Z-{V%F6#e5?Z^(`GGC}sYp5%DKnnB+i-NWxwL-CuF+^JWNl`t@VbXZ{K3#aIX+h9-{T*+t(b0BM&MymW9AA*{p^&-9 zWpWQ?*z(Yw!y%AoeoYS|E!(3IlLksr@?Z9Hqlig?Q4|cGe;0rg#FC}tXTmTNfpE}; z$sfUYEG@hLHUb$(K{A{R%~%6MQN|Bu949`f#H6YC*E(p3lBBKcx z-~Bsd6^QsKzB0)$FteBf*b3i7CN4hccSa-&lfQz4qHm>eC|_X!_E#?=`M(bZ{$cvU zZpMbr|4omp`s9mrgz@>4=Fk3~8Y7q$G{T@?oE0<(I91_t+U}xYlT{c&6}zPAE8ikT z3DP!l#>}i!A(eGT+@;fWdK#(~CTkwjs?*i4SJVBuNB2$6!bCRmcm6AnpHHvnN8G<| zuh4YCYC%5}Zo;BO1>L0hQ8p>}tRVx~O89!${_NXhT!HUoGj0}bLvL2)qRNt|g*q~B z7U&U7E+8Ixy1U`QT^&W@ZSRN|`_Ko$-Mk^^c%`YzhF(KY9l5))1jSyz$&>mWJHZzHt0Jje%BQFxEV}C00{|qo5_Hz7c!FlJ|T(JD^0*yjkDm zL}4S%JU(mBV|3G2jVWU>DX413;d+h0C3{g3v|U8cUj`tZL37Sf@1d*jpwt4^B)`bK zZdlwnPB6jfc7rIKsldW81$C$a9BukX%=V}yPnaBz|i6(h>S)+Bn44@i8RtBZf0XetH&kAb?iAL zD%Ge{>Jo3sy2hgrD?15PM}X_)(6$LV`&t*D`IP)m}bzM)+x-xRJ zavhA)>hu2cD;LUTvN38FEtB94ee|~lIvk~3MBPzmTsN|7V}Kzi!h&za#NyY zX^0BnB+lfBuW!oR#8G&S#Er2bCVtA@5FI`Q+a-e?G)LhzW_chWN-ZQmjtR

eWu-UOPu^G}|k=o=;ffg>8|Z*qev7qS&oqA7%Z{4Ezb!t$f3& z^NuT8CSNp`VHScyikB1YO{BgaBVJR&>dNIEEBwYkfOkWN;(I8CJ|vIfD}STN z{097)R9iC@6($s$#dsb*4BXBx7 zb{6S2O}QUk>upEfij9C2tjqWy7%%V@Xfpe)vo6}PG+hmuY1Tc}peynUJLLmm)8pshG zb}HWl^|sOPtYk)CD-7{L+l(=F zOp}fX8)|n{JDa&9uI!*@jh^^9qP&SbZ(xxDhR)y|bjnn|K3MeR3gl6xcvh9uqzb#K zYkVjnK$;lUky~??mcqN-)d5~mk{wXhrf^<)!Jjqc zG~hX0P_@KvOKwV=X9H&KR3GnP3U)DfqafBt$e10}iuVRFBXx@uBQ)sn0J%%c<;R+! zQz;ETTVa+ma>+VF%U43w?_F6s0=x@N2(oisjA7LUOM<$|6iE|$WcO67W|KY8JUV_# zg7P9K3Yo-c*;EmbsqT!M4(WT`%9uk+s9Em-yB0bE{B%F4X<8fT!%4??vezaJ(wJhj zfOb%wKfkY3RU}7^FRq`UEbB-#A-%7)NJQwQd1As=!$u#~2vQ*CE~qp`u=_kL<`{OL zk>753UqJVx1-4~+d@(pnX-i zV4&=eRWbJ)9YEGMV53poXpv$vd@^yd05z$$@i5J7%>gYKBx?mR2qGv&BPn!tE-_aW zg*C!Z&!B zH>3J16dTJC(@M0*kIc}Jn}jf=f*agba|!HVm|^@+7A?V>Woo!$SJko*Jv1mu>;d}z z^vF{3u5Mvo_94`4kq2&R2`32oyoWc2lJco3`Ls0Ew4E7*AdiMbn^LCV%7%mU)hr4S3UVJjDLUoIKRQ)gm?^{1Z}OYzd$1?a~tEY ztjXmIM*2_qC|OC{7V%430T?RsY?ZLN$w!bkDOQ0}wiq69){Kdu3SqW?NMC))S}zq^ zu)w!>E1!;OrXO!RmT?m&PA;YKUjJy5-Seu=@o;m4*Vp$0OipBl4~Ub)1xBdWkZ47=UkJd$`Z}O8ZbpGN$i_WtY^00`S8=EHG#Ff{&MU1L(^wYjTchB zMTK%1LZ(eLLP($0UR2JVLaL|C2~IFbWirNjp|^=Fl48~Sp9zNOCZ@t&;;^avfN(NpNfq}~VYA{q%yjHo4D>JB>XEv(~Z!`1~SoY=9v zTq;hrjObE_h)cmHXLJ>LC_&XQ2BgGfV}e#v}ZF}iF97bG`Nog&O+SA`2zsn%bbB309}I$ zYi;vW$k@fC^muYBL?XB#CBuhC&^H)F4E&vw(5Q^PF{7~}(b&lF4^%DQzL0(BVk?lM zTHXTo4?Ps|dRICEiux#y77_RF8?5!1D-*h5UY&gRY`WO|V`xxB{f{DHzBwvt1W==r zdfAUyd({^*>Y7lObr;_fO zxDDw7X^dO`n!PLqHZ`by0h#BJ-@bAFPs{yJQ~Ylj^M5zWsxO_WFHG}8hH>OK{Q)9` zSRP94d{AM(q-2x0yhK@aNMv!qGA5@~2tB;X?l{Pf?DM5Y*QK`{mGA? zjx;gwnR~#Nep12dFk<^@-U{`&`P1Z}Z3T2~m8^J&7y}GaMElsTXg|GqfF3>E#HG=j zMt;6hfbfjHSQ&pN9(AT8q$FLKXo`N(WNHDY!K6;JrHZCO&ISBdX`g8sXvIf?|8 zX$-W^ut!FhBxY|+R49o44IgWHt}$1BuE|6|kvn1OR#zhyrw}4H*~cpmFk%K(CTGYc zNkJ8L$eS;UYDa=ZHWZy`rO`!w0oIcgZnK&xC|93#nHvfb^n1xgxf{$LB`H1ao+OGb zKG_}>N-RHSqL(RBdlc7J-Z$Gaay`wEGJ_u-lo88{`aQ*+T~+x(H5j?Q{uRA~>2R+} zB+{wM2m?$->unwg8-GaFrG%ZmoHEceOj{W21)Mi2lAfT)EQuNVo+Do%nHPuq7Ttt7 z%^6J5Yo64dH671tOUrA7I2hL@HKZq;S#Ejxt;*m-l*pPj?=i`=E~FAXAb#QH+a}-% z#3u^pFlg%p{hGiIp>05T$RiE*V7bPXtkz(G<+^E}Risi6F!R~Mbf(Qz*<@2&F#vDr zaL#!8!&ughWxjA(o9xtK{BzzYwm_z2t*c>2jI)c0-xo8ahnEqZ&K;8uF*!Hg0?Gd* z=eJK`FkAr>7$_i$;kq3Ks5NNJkNBnw|1f-&Ys56c9Y@tdM3VTTuXOCbWqye9va6+ZSeF0eh} zYb^ct&4lQTfNZ3M3(9?{;s><(zq%hza7zcxlZ+`F8J*>%4wq8s$cC6Z=F@ zhbvdv;n$%vEI$B~B)Q&LkTse!8Vt};7Szv2@YB!_Ztp@JA>rc(#R1`EZcIdE+JiI% zC2!hgYt+~@%xU?;ir+g92W`*j z3`@S;I6@2rO28zqj&SWO^CvA5MeNEhBF+8-U0O0Q1Co=I^WvPl%#}UFDMBVl z5iXV@d|`QTa$>iw;m$^}6JeuW zjr;{)S2TfK0Q%xgHvONSJb#NA|LOmg{U=k;R?&1tQbylMEY4<1*9mJh&(qo`G#9{X zYRs)#*PtEHnO;PV0G~6G`ca%tpKgb6<@)xc^SQY58lTo*S$*sv5w7bG+8YLKYU`8{ zNBVlvgaDu7icvyf;N&%42z2L4(rR<*Jd48X8Jnw zN>!R$%MZ@~Xu9jH?$2Se&I|ZcW>!26BJP?H7og0hT(S`nXh6{sR36O^7%v=31T+eL z)~BeC)15v>1m#(LN>OEwYFG?TE0_z)MrT%3SkMBBjvCd6!uD+03Jz#!s#Y~b1jf>S z&Rz5&8rbLj5!Y;(Hx|UY(2aw~W(8!3q3D}LRE%XX(@h5TnP@PhDoLVQx;6|r^+Bvs zaR55cR%Db9hZ<<|I%dDkone+8Sq7dqPOMnGoHk~-R*#a8w$c)`>4U`k+o?2|E>Sd4 zZ0ZVT{95pY$qKJ54K}3JB!(WcES>F+x56oJBRg))tMJ^#Qc(2rVcd5add=Us6vpBNkIg9b#ulk%!XBU zV^fH1uY(rGIAiFew|z#MM!qsVv%ZNb#why9%9In4Kj-hDYtMdirWLFzn~de!nnH(V zv0>I3;X#N)bo1$dFzqo(tzmvqNUKraAz~?)OSv42MeM!OYu;2VKn2-s7#fucX`|l~ zplxtG1Pgk#(;V=`P_PZ`MV{Bt4$a7;aLvG@KQo%E=;7ZO&Ws-r@XL+AhnPn>PAKc7 zQ_iQ4mXa-a4)QS>cJzt_j;AjuVCp8g^|dIV=DI0>v-f_|w5YWAX61lNBjZEZax3aV znher(j)f+a9_s8n#|u=kj0(unR1P-*L7`{F28xv054|#DMh}q=@rs@-fbyf(2+52L zN>hn3v!I~%jfOV=j(@xLOsl$Jv-+yR5{3pX)$rIdDarl7(C3)})P`QoHN|y<<2n;` zJ0UrF=Zv}d=F(Uj}~Yv9(@1pqUSRa5_bB*AvQ|Z-6YZ*N%p(U z<;Bpqr9iEBe^LFF!t{1UnRtaH-9=@p35fMQJ~1^&)(2D|^&z?m z855r&diVS6}jmt2)A7LZDiv;&Ys6@W5P{JHY!!n7W zvj3(2{1R9Y=TJ|{^2DK&be*ZaMiRHw>WVI^701fC) zAp1?8?oiU%Faj?Qhou6S^d11_7@tEK-XQ~%q!!7hha-Im^>NcRF7OH7s{IO7arZQ{ zE8n?2><7*!*lH}~usWPWZ}2&M+)VQo7C!AWJSQc>8g_r-P`N&uybK5)p$5_o;+58Q z-Ux2l<3i|hxqqur*qAfHq=)?GDchq}ShV#m6&w|mi~ar~`EO_S=fb~<}66U>5i7$H#m~wR;L~4yHL2R&;L*u7-SPdHxLS&Iy76q$2j#Pe)$WulRiCICG*t+ zeehM8`!{**KRL{Q{8WCEFLXu3+`-XF(b?c1Z~wg?c0lD!21y?NLq?O$STk3NzmrHM zsCgQS5I+nxDH0iyU;KKjzS24GJmG?{D`08|N-v+Egy92lBku)fnAM<}tELA_U`)xKYb=pq|hejMCT1-rg0Edt6(*E9l9WCKI1a=@c99swp2t6Tx zFHy`8Hb#iXS(8c>F~({`NV@F4w0lu5X;MH6I$&|h*qfx{~DJ*h5e|61t1QP}tZEIcjC%!Fa)omJTfpX%aI+OD*Y(l|xc0$1Zip;4rx; zV=qI!5tSuXG7h?jLR)pBEx!B15HCoVycD&Z2dlqN*MFQDb!|yi0j~JciNC!>){~ zQQgmZvc}0l$XB0VIWdg&ShDTbTkArryp3x)T8%ulR;Z?6APx{JZyUm=LC-ACkFm`6 z(x7zm5ULIU-xGi*V6x|eF~CN`PUM%`!4S;Uv_J>b#&OT9IT=jx5#nydC4=0htcDme zDUH*Hk-`Jsa>&Z<7zJ{K4AZE1BVW%zk&MZ^lHyj8mWmk|Pq8WwHROz0Kwj-AFqvR)H2gDN*6dzVk>R3@_CV zw3Z@6s^73xW)XY->AFwUlk^4Q=hXE;ckW=|RcZFchyOM0vqBW{2l*QR#v^SZNnT6j zZv|?ZO1-C_wLWVuYORQryj29JA; zS4BsxfVl@X!W{!2GkG9fL4}58Srv{$-GYngg>JuHz!7ZPQbfIQr4@6ZC4T$`;Vr@t zD#-uJ8A!kSM*gA&^6yWi|F}&59^*Rx{qn3z{(JYxrzg!X2b#uGd>&O0e=0k_2*N?3 zYXV{v={ONL{rW~z_FtFj7kSSJZ?s);LL@W&aND7blR8rlvkAb48RwJZlOHA~t~RfC zOD%ZcOzhYEV&s9%qns0&ste5U!^MFWYn`Od()5RwIz6%@Ek+Pn`s79unJY-$7n-Uf z&eUYvtd)f7h7zG_hDiFC!psCg#q&0c=GHKOik~$$>$Fw*k z;G)HS$IR)Cu72HH|JjeeauX;U6IgZ_IfxFCE_bGPAU25$!j8Etsl0Rk@R`$jXuHo8 z3Hhj-rTR$Gq(x)4Tu6;6rHQhoCvL4Q+h0Y+@Zdt=KTb0~wj7-(Z9G%J+aQu05@k6JHeCC|YRFWGdDCV}ja;-yl^9<`>f=AwOqML1a~* z9@cQYb?!+Fmkf}9VQrL8$uyq8k(r8)#;##xG9lJ-B)Fg@15&To(@xgk9SP*bkHlxiy8I*wJQylh(+9X~H-Is!g&C!q*eIYuhl&fS&|w)dAzXBdGJ&Mp$+8D| zZaD<+RtjI90QT{R0YLk6_dm=GfCg>7;$ zlyLsNYf@MfLH<}ott5)t2CXiQos zFLt^`%ygB2Vy^I$W3J_Rt4olRn~Gh}AW(`F@LsUN{d$sR%bU&3;rsD=2KCL+4c`zv zlI%D>9-)U&R3;>d1Vdd5b{DeR!HXDm44Vq*u?`wziLLsFUEp4El;*S0;I~D#TgG0s zBXYZS{o|Hy0A?LVNS)V4c_CFwyYj-E#)4SQq9yaf`Y2Yhk7yHSdos~|fImZG5_3~~o<@jTOH@Mc7`*xn-aO5F zyFT-|LBsm(NbWkL^oB-Nd31djBaYebhIGXhsJyn~`SQ6_4>{fqIjRp#Vb|~+Qi}Mdz!Zsw= zz?5L%F{c{;Cv3Q8ab>dsHp)z`DEKHf%e9sT(aE6$az?A}3P`Lm(~W$8Jr=;d8#?dm_cmv>2673NqAOenze z=&QW`?TQAu5~LzFLJvaJ zaBU3mQFtl5z?4XQDBWNPaH4y)McRpX#$(3o5Nx@hVoOYOL&-P+gqS1cQ~J;~1roGH zVzi46?FaI@w-MJ0Y7BuAg*3;D%?<_OGsB3)c|^s3A{UoAOLP8scn`!5?MFa|^cTvq z#%bYG3m3UO9(sH@LyK9-LSnlVcm#5^NRs9BXFtRN9kBY2mPO|@b7K#IH{B{=0W06) zl|s#cIYcreZ5p3j>@Ly@35wr-q8z5f9=R42IsII=->1stLo@Q%VooDvg@*K(H@*5g zUPS&cM~k4oqp`S+qp^*nxzm^0mg3h8ppEHQ@cXyQ=YKV-6)FB*$KCa{POe2^EHr{J zOxcVd)s3Mzs8m`iV?MSp=qV59blW9$+$P+2;PZDRUD~sr*CQUr&EDiCSfH@wuHez+ z`d5p(r;I7D@8>nbZ&DVhT6qe+accH;<}q$8Nzz|d1twqW?UV%FMP4Y@NQ`3(+5*i8 zP9*yIMP7frrneG3M9 zf>GsjA!O#Bifr5np-H~9lR(>#9vhE6W-r`EjjeQ_wdWp+rt{{L5t5t(Ho|4O24@}4 z_^=_CkbI`3;~sXTnnsv=^b3J}`;IYyvb1gM>#J9{$l#Zd*W!;meMn&yXO7x`Epx_Y zm-1wlu~@Ii_7D}>%tzlXW;zQT=uQXSG@t$<#6-W*^vy7Vr2TCpnix@7!_|aNXEnN<-m?Oq;DpN*x6f>w za1Wa5entFEDtA0SD%iZv#3{wl-S`0{{i3a9cmgNW`!TH{J*~{@|5f%CKy@uk*8~af zt_d34U4y&3y9IZ5cXxLQ?(XjH5?q3Z0KxK~y!-CUyWG6{<)5lkhbox0HnV&7^zNBn zjc|?X!Y=63(Vg>#&Wx%=LUr5{i@~OdzT#?P8xu#P*I_?Jl7xM4dq)4vi}3Wj_c=XI zSbc)@Q2Et4=(nBDU{aD(F&*%Ix!53_^0`+nOFk)}*34#b0Egffld|t_RV91}S0m)0 zap{cQDWzW$geKzYMcDZDAw480!1e1!1Onpv9fK9Ov~sfi!~OeXb(FW)wKx335nNY! za6*~K{k~=pw`~3z!Uq%?MMzSl#s%rZM{gzB7nB*A83XIGyNbi|H8X>a5i?}Rs+z^; z2iXrmK4|eDOu@{MdS+?@(!-Ar4P4?H_yjTEMqm7`rbV4P275(-#TW##v#Dt14Yn9UB-Sg3`WmL0+H~N;iC`Mg%pBl?1AAOfZ&e; z*G=dR>=h_Mz@i;lrGpIOQwezI=S=R8#);d*;G8I(39ZZGIpWU)y?qew(t!j23B9fD z?Uo?-Gx3}6r8u1fUy!u)7LthD2(}boE#uhO&mKBau8W8`XV7vO>zb^ZVWiH-DOjl2 zf~^o1CYVU8eBdmpAB=T%i(=y}!@3N%G-*{BT_|f=egqtucEtjRJJhSf)tiBhpPDpgzOpG12UgvOFnab&16Zn^2ZHjs)pbd&W1jpx%%EXmE^ zdn#R73^BHp3w%&v!0~azw(Fg*TT*~5#dJw%-UdxX&^^(~V&C4hBpc+bPcLRZizWlc zjR;$4X3Sw*Rp4-o+a4$cUmrz05RucTNoXRINYG*DPpzM&;d1GNHFiyl(_x#wspacQ zL)wVFXz2Rh0k5i>?Ao5zEVzT)R(4Pjmjv5pzPrav{T(bgr|CM4jH1wDp6z*_jnN{V ziN56m1T)PBp1%`OCFYcJJ+T09`=&=Y$Z#!0l0J2sIuGQtAr>dLfq5S;{XGJzNk@a^ zk^eHlC4Gch`t+ue3RviiOlhz81CD9z~d|n5;A>AGtkZMUQ#f>5M14f2d}2 z8<*LNZvYVob!p9lbmb!0jt)xn6O&JS)`}7v}j+csS3e;&Awj zoNyjnqLzC(QQ;!jvEYUTy73t_%16p)qMb?ihbU{y$i?=a7@JJoXS!#CE#y}PGMK~3 zeeqqmo7G-W_S97s2eed^erB2qeh4P25)RO1>MH7ai5cZJTEevogLNii=oKG)0(&f` z&hh8cO{of0;6KiNWZ6q$cO(1)9r{`}Q&%p*O0W7N--sw3Us;)EJgB)6iSOg(9p_mc zRw{M^qf|?rs2wGPtjVKTOMAfQ+ZNNkb$Ok0;Pe=dNc7__TPCzw^H$5J0l4D z%p(_0w(oLmn0)YDwrcFsc*8q)J@ORBRoZ54GkJpxSvnagp|8H5sxB|ZKirp%_mQt_ z81+*Y8{0Oy!r8Gmih48VuRPwoO$dDW@h53$C)duL4_(osryhwZSj%~KsZ?2n?b`Z* z#C8aMdZxYmCWSM{mFNw1ov*W}Dl=%GQpp90qgZ{(T}GOS8#>sbiEU;zYvA?=wbD5g+ahbd1#s`=| zV6&f#ofJC261~Ua6>0M$w?V1j##jh-lBJ2vQ%&z`7pO%frhLP-1l)wMs=3Q&?oth1 zefkPr@3Z(&OL@~|<0X-)?!AdK)ShtFJ;84G2(izo3cCuKc{>`+aDoziL z6gLTL(=RYeD7x^FYA%sPXswOKhVa4i(S4>h&mLvS##6-H?w8q!B<8Alk>nQEwUG)SFXK zETfcTwi=R3!ck|hSM`|-^N3NWLav&UTO{a9=&Tuz-Kq963;XaRFq#-1R18fi^Gb-; zVO>Q{Oe<^b0WA!hkBi9iJp3`kGwacXX2CVQ0xQn@Y2OhrM%e4)Ea7Y*Df$dY2BpbL zv$kX}*#`R1uNA(7lk_FAk~{~9Z*Si5xd(WKQdD&I?8Y^cK|9H&huMU1I(251D7(LL z+){kRc=ALmD;#SH#YJ+|7EJL6e~w!D7_IrK5Q=1DCulUcN(3j`+D_a|GP}?KYx}V+ zx_vLTYCLb0C?h;e<{K0`)-|-qfM16y{mnfX(GGs2H-;-lRMXyb@kiY^D;i1haxoEk zsQ7C_o2wv?;3KS_0w^G5#Qgf*>u)3bT<3kGQL-z#YiN9QH7<(oDdNlSdeHD zQJN-U*_wJM_cU}1YOH=m>DW~{%MAPxL;gLdU6S5xLb$gJt#4c2KYaEaL8ORWf=^(l z-2`8^J;&YG@vb9em%s~QpU)gG@24BQD69;*y&-#0NBkxumqg#YYomd2tyo0NGCr8N z5<5-E%utH?Ixt!(Y4x>zIz4R^9SABVMpLl(>oXnBNWs8w&xygh_e4*I$y_cVm?W-^ ze!9mPy^vTLRclXRGf$>g%Y{(#Bbm2xxr_Mrsvd7ci|X|`qGe5=54Zt2Tb)N zlykxE&re1ny+O7g#`6e_zyjVjRi5!DeTvSJ9^BJqQ*ovJ%?dkaQl!8r{F`@KuDEJB3#ho5 zmT$A&L=?}gF+!YACb=%Y@}8{SnhaGCHRmmuAh{LxAn0sg#R6P_^cJ-9)+-{YU@<^- zlYnH&^;mLVYE+tyjFj4gaAPCD4CnwP75BBXA`O*H(ULnYD!7K14C!kGL_&hak)udZ zkQN8)EAh&9I|TY~F{Z6mBv7sz3?<^o(#(NXGL898S3yZPTaT|CzZpZ~pK~*9Zcf2F zgwuG)jy^OTZD`|wf&bEdq4Vt$ir-+qM7BosXvu`>W1;iFN7yTvcpN_#at)Q4n+(Jh zYX1A-24l9H5jgY?wdEbW{(6U1=Kc?Utren80bP`K?J0+v@{-RDA7Y8yJYafdI<7-I z_XA!xeh#R4N7>rJ_?(VECa6iWhMJ$qdK0Ms27xG&$gLAy(|SO7_M|AH`fIY)1FGDp zlsLwIDshDU;*n`dF@8vV;B4~jRFpiHrJhQ6TcEm%OjWTi+KmE7+X{19 z>e!sg0--lE2(S0tK}zD&ov-{6bMUc%dNFIn{2^vjXWlt>+uxw#d)T6HNk6MjsfN~4 zDlq#Jjp_!wn}$wfs!f8NX3Rk#9)Q6-jD;D9D=1{$`3?o~caZjXU*U32^JkJ$ZzJ_% zQWNfcImxb!AV1DRBq`-qTV@g1#BT>TlvktYOBviCY!13Bv?_hGYDK}MINVi;pg)V- z($Bx1Tj`c?1I3pYg+i_cvFtcQ$SV9%%9QBPg&8R~Ig$eL+xKZY!C=;M1|r)$&9J2x z;l^a*Ph+isNl*%y1T4SviuK1Nco_spQ25v5-}7u?T9zHB5~{-+W*y3p{yjn{1obqf zYL`J^Uz8zZZN8c4Dxy~)k3Ws)E5eYi+V2C!+7Sm0uu{xq)S8o{9uszFTnE>lPhY=5 zdke-B8_*KwWOd%tQs_zf0x9+YixHp+Qi_V$aYVc$P-1mg?2|_{BUr$6WtLdIX2FaF zGmPRTrdIz)DNE)j*_>b9E}sp*(1-16}u za`dgT`KtA3;+e~9{KV48RT=CGPaVt;>-35}%nlFUMK0y7nOjoYds7&Ft~#>0$^ciZ zM}!J5Mz{&|&lyG^bnmh?YtR z*Z5EfDxkrI{QS#Iq752aiA~V)DRlC*2jlA|nCU!@CJwxO#<=j6ssn;muv zhBT9~35VtwsoSLf*(7vl&{u7d_K_CSBMbzr zzyjt&V5O#8VswCRK3AvVbS7U5(KvTPyUc0BhQ}wy0z3LjcdqH8`6F3!`)b3(mOSxL z>i4f8xor(#V+&#ph~ycJMcj#qeehjxt=~Na>dx#Tcq6Xi4?BnDeu5WBBxt603*BY& zZ#;o1kv?qpZjwK-E{8r4v1@g*lwb|8w@oR3BTDcbiGKs)a>Fpxfzh&b ziQANuJ_tNHdx;a*JeCo^RkGC$(TXS;jnxk=dx++D8|dmPP<0@ z$wh#ZYI%Rx$NKe-)BlJzB*bot0ras3I%`#HTMDthGtM_G6u-(tSroGp1Lz+W1Y`$@ zP`9NK^|IHbBrJ#AL3!X*g3{arc@)nuqa{=*2y+DvSwE=f*{>z1HX(>V zNE$>bbc}_yAu4OVn;8LG^naq5HZY zh{Hec==MD+kJhy6t=Nro&+V)RqORK&ssAxioc7-L#UQuPi#3V2pzfh6Ar400@iuV5 z@r>+{-yOZ%XQhsSfw%;|a4}XHaloW#uGluLKux0II9S1W4w=X9J=(k&8KU()m}b{H zFtoD$u5JlGfpX^&SXHlp$J~wk|DL^YVNh2w(oZ~1*W156YRmenU;g=mI zw({B(QVo2JpJ?pJqu9vijk$Cn+%PSw&b4c@uU6vw)DjGm2WJKt!X}uZ43XYlDIz%& z=~RlgZpU-tu_rD`5!t?289PTyQ zZgAEp=zMK>RW9^~gyc*x%vG;l+c-V?}Bm;^{RpgbEnt_B!FqvnvSy)T=R zGa!5GACDk{9801o@j>L8IbKp#!*Td5@vgFKI4w!5?R{>@^hd8ax{l=vQnd2RDHopo zwA+qb2cu4Rx9^Bu1WNYT`a(g}=&&vT`&Sqn-irxzX_j1=tIE#li`Hn=ht4KQXp zzZj`JO+wojs0dRA#(bXBOFn**o+7rPY{bM9m<+UBF{orv$#yF8)AiOWfuas5Fo`CJ zqa;jAZU^!bh8sjE7fsoPn%Tw11+vufr;NMm3*zC=;jB{R49e~BDeMR+H6MGzDlcA^ zKg>JEL~6_6iaR4i`tSfUhkgPaLXZ<@L7poRF?dw_DzodYG{Gp7#24<}=18PBT}aY` z{)rrt`g}930jr3^RBQNA$j!vzTh#Mo1VL`QCA&US?;<2`P+xy8b9D_Hz>FGHC2r$m zW>S9ywTSdQI5hh%7^e`#r#2906T?))i59O(V^Rpxw42rCAu-+I3y#Pg6cm#&AX%dy ze=hv0cUMxxxh1NQEIYXR{IBM&Bk8FK3NZI3z+M>r@A$ocd*e%x-?W;M0pv50p+MVt zugo<@_ij*6RZ;IPtT_sOf2Zv}-3R_1=sW37GgaF9Ti(>V z1L4ju8RzM%&(B}JpnHSVSs2LH#_&@`4Kg1)>*)^i`9-^JiPE@=4l$+?NbAP?44hX&XAZy&?}1;=8c(e0#-3bltVWg6h=k!(mCx=6DqOJ-I!-(g;*f~DDe={{JGtH7=UY|0F zNk(YyXsGi;g%hB8x)QLpp;;`~4rx>zr3?A|W$>xj>^D~%CyzRctVqtiIz7O3pc@r@JdGJiH@%XR_9vaYoV?J3K1cT%g1xOYqhXfSa`fg=bCLy% zWG74UTdouXiH$?H()lyx6QXt}AS)cOa~3IdBxddcQp;(H-O}btpXR-iwZ5E)di9Jf zfToEu%bOR11xf=Knw7JovRJJ#xZDgAvhBDF<8mDu+Q|!}Z?m_=Oy%Ur4p<71cD@0OGZW+{-1QT?U%_PJJ8T!0d2*a9I2;%|A z9LrfBU!r9qh4=3Mm3nR_~X-EyNc<;?m`?dKUNetCnS)}_-%QcWuOpw zAdZF`4c_24z&m{H9-LIL`=Hrx%{IjrNZ~U<7k6p{_wRkR84g>`eUBOQd3x5 zT^kISYq)gGw?IB8(lu1=$#Vl?iZdrx$H0%NxW)?MO$MhRHn8$F^&mzfMCu>|`{)FL z`ZgOt`z%W~^&kzMAuWy9=q~$ldBftH0}T#(K5e8;j~!x$JjyspJ1IISI?ON5OIPB$ z-5_|YUMb+QUsiv3R%Ys4tVYW+x$}dg;hw%EdoH%SXMp`)v?cxR4wic{X9pVBH>=`#`Kcj!}x4 zV!`6tj|*q?jZdG(CSevn(}4Ogij5 z-kp;sZs}7oNu0x+NHs~(aWaKGV@l~TBkmW&mPj==N!f|1e1SndS6(rPxsn7dz$q_{ zL0jSrihO)1t?gh8N zosMjR3n#YC()CVKv zos2TbnL&)lHEIiYdz|%6N^vAUvTs6?s|~kwI4uXjc9fim`KCqW3D838Xu{48p$2?I zOeEqQe1}JUZECrZSO_m=2<$^rB#B6?nrFXFpi8jw)NmoKV^*Utg6i8aEW|^QNJuW& z4cbXpHSp4|7~TW(%JP%q9W2~@&@5Y5%cXL#fMhV59AGj<3$Hhtfa>24DLk{7GZUtr z5ql**-e58|mbz%5Kk~|f!;g+Ze^b);F+5~^jdoq#m+s?Y*+=d5ruym%-Tnn8htCV; zDyyUrWydgDNM&bI{yp<_wd-q&?Ig+BN-^JjWo6Zu3%Eov^Ja>%eKqrk&7kUqeM8PL zs5D}lTe_Yx;e=K`TDya!-u%y$)r*Cr4bSfN*eZk$XT(Lv2Y}qj&_UaiTevxs_=HXjnOuBpmT> zBg|ty8?|1rD1~Ev^6=C$L9%+RkmBSQxlnj3j$XN?%QBstXdx+Vl!N$f2Ey`i3p@!f zzqhI3jC(TZUx|sP%yValu^nzEV96o%*CljO>I_YKa8wMfc3$_L()k4PB6kglP@IT#wBd*3RITYADL}g+hlzLYxFmCt=_XWS}=jg8`RgJefB57z(2n&&q>m ze&F(YMmoRZW7sQ;cZgd(!A9>7mQ2d#!-?$%G8IQ0`p1|*L&P$GnU0i0^(S;Rua4v8 z_7Qhmv#@+kjS-M|($c*ZOo?V2PgT;GKJyP1REABlZhPyf!kR(0UA7Bww~R<7_u6#t z{XNbiKT&tjne(&=UDZ+gNxf&@9EV|fblS^gxNhI-DH;|`1!YNlMcC{d7I{u_E~cJOalFEzDY|I?S3kHtbrN&}R3k zK(Ph_Ty}*L3Et6$cUW`0}**BY@44KtwEy(jW@pAt`>g> z&8>-TmJiDwc;H%Ae%k6$ndZlfKruu1GocgZrLN=sYI52}_I%d)~ z6z40!%W4I6ch$CE2m>Dl3iwWIbcm27QNY#J!}3hqc&~(F8K{^gIT6E&L!APVaQhj^ zjTJEO&?**pivl^xqfD(rpLu;`Tm1MV+Wtd4u>X6u5V{Yp%)xH$k410o{pGoKdtY0t@GgqFN zO=!hTcYoa^dEPKvPX4ukgUTmR#q840gRMMi%{3kvh9gt(wK;Fniqu9A%BMsq?U&B5DFXC8t8FBN1&UIwS#=S zF(6^Eyn8T}p)4)yRvs2rCXZ{L?N6{hgE_dkH_HA#L3a0$@UMoBw6RE9h|k_rx~%rB zUqeEPL|!Pbp|up2Q=8AcUxflck(fPNJYP1OM_4I(bc24a**Qnd-@;Bkb^2z8Xv?;3yZp*| zoy9KhLo=;8n0rPdQ}yAoS8eb zAtG5QYB|~z@Z(Fxdu`LmoO>f&(JzsO|v0V?1HYsfMvF!3| zka=}6U13(l@$9&=1!CLTCMS~L01CMs@Abl4^Q^YgVgizWaJa%{7t)2sVcZg0mh7>d z(tN=$5$r?s={yA@IX~2ot9`ZGjUgVlul$IU4N}{ zIFBzY3O0;g$BZ#X|VjuTPKyw*|IJ+&pQ` z(NpzU`o=D86kZ3E5#!3Ry$#0AW!6wZe)_xZ8EPidvJ0f+MQJZ6|ZJ$CEV6;Yt{OJnL`dewc1k>AGbkK9Gf5BbB-fg? zgC4#CPYX+9%LLHg@=c;_Vai_~#ksI~)5|9k(W()g6ylc(wP2uSeJ$QLATtq%e#zpT zp^6Y)bV+e_pqIE7#-hURQhfQvIZpMUzD8&-t$esrKJ}4`ZhT|woYi>rP~y~LRf`*2!6 z6prDzJ~1VOlYhYAuBHcu9m>k_F>;N3rpLg>pr;{EDkeQPHfPv~woj$?UTF=txmaZy z?RrVthxVcqUM;X*(=UNg4(L|0d250Xk)6GF&DKD@r6{aZo;(}dnO5@CP7pMmdsI)- zeYH*@#+|)L8x7)@GNBu0Npyyh6r z^~!3$x&w8N)T;|LVgnwx1jHmZn{b2V zO|8s#F0NZhvux?0W9NH5;qZ?P_JtPW86)4J>AS{0F1S0d}=L2`{F z_y;o;17%{j4I)znptnB z%No1W>o}H2%?~CFo~0j?pzWk?dV4ayb!s{#>Yj`ZJ!H)xn}*Z_gFHy~JDis)?9-P=z4iOQg{26~n?dTms7)+F}? zcXvnHHnnbNTzc!$t+V}=<2L<7l(84v1I3b;-)F*Q?cwLNlgg{zi#iS)*rQ5AFWe&~ zWHPPGy{8wEC9JSL?qNVY76=es`bA{vUr~L7f9G@mP}2MNF0Qhv6Sgs`r_k!qRbSXK zv16Qqq`rFM9!4zCrCeiVS~P2e{Pw^A8I?p?NSVR{XfwlQo*wj|Ctqz4X-j+dU7eGkC(2y`(P?FM?P4gKki3Msw#fM6paBq#VNc>T2@``L{DlnnA-_*i10Kre&@-H!Z7gzn9pRF61?^^ z8dJ5kEeVKb%Bly}6NLV}<0(*eZM$QTLcH#+@iWS^>$Of_@Mu1JwM!>&3evymgY6>C_)sK+n|A5G6(3RJz0k>(z2uLdzXeTw)e4*g!h} zn*UvIx-Ozx<3rCF#C`khSv`Y-b&R4gX>d5osr$6jlq^8vi!M$QGx05pJZoY#RGr*J zsJmOhfodAzYQxv-MoU?m_|h^aEwgEHt5h_HMkHwtE+OA03(7{hm1V?AlYAS7G$u5n zO+6?51qo@aQK5#l6pM`kD5OmI28g!J2Z{5kNlSuKl=Yj3QZ|bvVHU}FlM+{QV=<=) z+b|%Q!R)FE z@ycDMSKV2?*XfcAc5@IOrSI&3&aR$|oAD8WNA6O;p~q-J@ll{x`jP<*eEpIYOYnT zer_t=dYw6a0avjQtKN&#n&(KJ5Kr$RXPOp1@Fq#0Of zTXQkq4qQxKWR>x#d{Hyh?6Y)U07;Q$?BTl7mx2bSPY_juXub1 z%-$)NKXzE<%}q>RX25*oeMVjiz&r_z;BrQV-(u>!U>C*OisXNU*UftsrH6vAhTEm@ zoKA`?fZL1sdd!+G@*NNvZa>}37u^x8^T>VH0_6Bx{3@x5NAg&55{2jUE-w3zCJNJi z^IlU=+DJz-9K&4c@7iKj(zlj@%V}27?vYmxo*;!jZVXJMeDg;5T!4Y1rxNV-e$WAu zkk6^Xao8HC=w2hpLvM(!xwo|~$eG6jJj39zyQHf)E+NPJlfspUhzRv&_qr8+Z1`DA zz`EV=A)d=;2&J;eypNx~q&Ir_7e_^xXg(L9>k=X4pxZ3y#-ch$^TN}i>X&uwF%75c(9cjO6`E5 z16vbMYb!lEIM?jxn)^+Ld8*hmEXR4a8TSfqwBg1(@^8$p&#@?iyGd}uhWTVS`Mlpa zGc+kV)K7DJwd46aco@=?iASsx?sDjbHoDVU9=+^tk46|Fxxey1u)_}c1j z^(`5~PU%og1LdSBE5x4N&5&%Nh$sy0oANXwUcGa>@CCMqP`4W$ZPSaykK|giiuMIw zu#j)&VRKWP55I(5K1^cog|iXgaK1Z%wm%T;;M3X`-`TTWaI}NtIZj;CS)S%S(h}qq zRFQ#{m4Qk$7;1i*0PC^|X1@a1pcMq1aiRSCHq+mnfj^FS{oxWs0McCN-lK4>SDp#` z7=Duh)kXC;lr1g3dqogzBBDg6>et<<>m>KO^|bI5X{+eMd^-$2xfoP*&e$vdQc7J% zmFO~OHf7aqlIvg%P`Gu|3n;lKjtRd@;;x#$>_xU(HpZos7?ShZlQSU)bY?qyQM3cHh5twS6^bF8NBKDnJgXHa)? zBYv=GjsZuYC2QFS+jc#uCsaEPEzLSJCL=}SIk9!*2Eo(V*SAUqKw#?um$mUIbqQQb zF1Nn(y?7;gP#@ws$W76>TuGcG=U_f6q2uJq?j#mv7g;llvqu{Yk~Mo>id)jMD7;T> zSB$1!g)QpIf*f}IgmV;!B+3u(ifW%xrD=`RKt*PDC?M5KI)DO`VXw(7X-OMLd3iVU z0CihUN(eNrY;m?vwK{55MU`p1;JDF=6ITN$+!q8W#`iIsN8;W7H?`htf%RS9Lh+KQ z_p_4?qO4#*`t+8l-N|kAKDcOt zoHsqz_oO&n?@4^Mr*4YrkDX44BeS*0zaA1j@*c}{$;jUxRXx1rq7z^*NX6d`DcQ}L z6*cN7e%`2#_J4z8=^GM6>%*i>>X^_0u9qn%0JTUo)c0zIz|7a`%_UnB)-I1cc+ z0}jAK0}jBl|6-2VT759oxBnf%-;7vs>7Mr}0h3^$0`5FAy}2h{ps5%RJA|^~6uCqg zxBMK5bQVD{Aduh1lu4)`Up*&( zCJQ>nafDb#MuhSZ5>YmD@|TcrNv~Q%!tca;tyy8Iy2vu2CeA+AsV^q*Wohg%69XYq zP0ppEDEYJ9>Se&X(v=U#ibxg()m=83pLc*|otbG;`CYZ z*YgsakGO$E$E_$|3bns7`m9ARe%myU3$DE;RoQ<6hR8e;%`pxO1{GXb$cCZl9lVnJ$(c` z``G?|PhXaz`>)rb7jm2#v7=(W?@ zjUhrNndRFMQ}%^^(-nmD&J>}9w@)>l;mhRr@$}|4ueOd?U9ZfO-oi%^n4{#V`i}#f zqh<@f^%~(MnS?Z0xsQI|Fghrby<&{FA+e4a>c(yxFL!Pi#?DW!!YI{OmR{xEC7T7k zS_g*9VWI}d0IvIXx*d5<7$5Vs=2^=ews4qZGmAVyC^9e;wxJ%BmB(F5*&!yyABCtLVGL@`qW>X9K zpv=W~+EszGef=am3LG+#yIq5oLXMnZ_dxSLQ_&bwjC^0e8qN@v!p?7mg02H<9`uaJ zy0GKA&YQV2CxynI3T&J*m!rf4@J*eo235*!cB1zEMQZ%h5>GBF;8r37K0h?@|E*0A zIHUg0y7zm(rFKvJS48W7RJwl!i~<6X2Zw+Fbm9ekev0M;#MS=Y5P(kq^(#q11zsvq zDIppe@xOMnsOIK+5BTFB=cWLalK#{3eE>&7fd11>l2=MpNKjsZT2kmG!jCQh`~Fu0 z9P0ab`$3!r`1yz8>_7DYsO|h$kIsMh__s*^KXv?Z1O8|~sEz?Y{+GDzze^GPjk$E$ zXbA-1gd77#=tn)YKU=;JE?}De0)WrT%H9s3`fn|%YibEdyZov3|MJ>QWS>290eCZj z58i<*>dC9=kz?s$sP_9kK1p>nV3qvbleExyq56|o+oQsb{ZVmuu1n~JG z0sUvo_i4fSM>xRs8rvG$*+~GZof}&ISxn(2JU*K{L<3+b{bBw{68H&Uiup@;fWWl5 zgB?IWMab0LkXK(Hz#yq>scZbd2%=B?DO~^q9tarlzZysN+g}n0+v);JhbjUT8AYrt z3?;0r%p9zLJv1r$%q&HKF@;3~0wVwO!U5m;J`Mm|`Nc^80sZd+Wj}21*SPoF82hCF zoK?Vw;4ioafdAkZxT1er-LLVi-*0`@2Ur&*!b?0U>R;no+S%)xoBuBxRw$?weN-u~tKE}8xb@7Gs%(aC;e1-LIlSfXDK(faFW)mnHdrLc3`F z6ZBsT^u0uVS&il=>YVX^*5`k!P4g1)2LQmz{?&dgf`7JrA4ZeE0sikL`k!Eb6r=g0 z{aCy_0I>fxSAXQYz3lw5G|ivg^L@(x-uch!AphH+d;E4`175`R0#b^)Zp>EM1Ks=zx6_261>!7 z{7F#a{Tl@Tpw9S`>7_i|PbScS-(dPJv9_0-FBP_aa@Gg^2IoKNZM~#=sW$SH3MJ|{ zsQy8F43lX7hYx<{v^Q9`2QsMzeen3cGpiTgzVp- z`aj3&Wv0(he1qKI!2jpGpO-i0Wpcz%vdn`2o9x&3;^nsZPt3cfnHSl14(}!ze#uNJ zOwq~Ee}g>(n5P|-=+d-fQIs8&nEo1Q%{sw3$GLO8b^Z2lL;fA*|Ct;3-)|>ZtN&|S z|6d)r|I)E?H8Hoh_#ai#{#Dh>)x_D^!u9_$x%Smfzy3S)@4vr>;Xj**Iyt$!x&O6S zFtKq|b2o8yw{T@Nvo~>bi`CTeTF^xPLZ3(@6UVgr1|-kXM%ou=mdwiYxeB+94NgzDs+mE)Ga+Ly^k_UH5C z*$Tw4Ux`)JTW`clSj;wSpTkMxf3h5LYZ1X_d)yXW39j4pj@5OViiw2LqS+g3&3DWCnmgtrSQI?dL z?736Cw-uVf{12@tn8aO-Oj#09rPV4r!sQb^CA#PVOYHVQ3o4IRb=geYI24u(TkJ_i zeIuFQjqR?9MV`{2zUTgY&5dir>e+r^4-|bz zj74-^qyKBQV;#1R!8px8%^jiw!A6YsZkWLPO;$jv-(VxTfR1_~!I*Ys2nv?I7ysM0 z7K{`Zqkb@Z6lPyZmo{6M9sqY>f5*Kxy8XUbR9<~DHaC-1vv_JhtwqML&;rnKLSx&ip0h7nfzl)zBI70rUw7GZa>0*W8ARZjPnUuaPO!C08To znN$lYRGtyx)d$qTbYC^yIq&}hvN86-JEfSOr=Yk3K+pnGXWh^}0W_iMI@ z#=E=vL~t~qMd}^8FwgE_Mh}SWQp}xh?Ptbx$dzRPv77DIaRJ6o>qaYHSfE+_iS}ln z;@I!?iQl?8_2qITV{flaG_57C@=ALS|2|j7vjAC>jO<&MGec#;zQk%z4%%092eYXS z$fem@kSEJ6vQ-mH7!LNN>6H<_FOv{e5MDoMMwlg-afq#-w|Zp`$bZd80?qenAuQDk z@eKC-BaSg(#_Mhzv-DkTBi^iqwhm+jr8Jk2l~Ov2PKb&p^66tp9fM#(X?G$bNO0Qi#d^7jA2|Yb{Dty# z%ZrTuE9^^3|C$RP+WP{0rkD?)s2l$4{Trw&a`MBWP^5|ePiRe)eh1Krh{58%6G`pp zynITQL*j8WTo+N)p9HdEIrj0Sk^2vNlH_(&Cx0|VryTNz?8rT;(%{mcd2hFfqoh+7 z%)@$#TT?X0%)UQOD6wQ@!e3UK20`qWR$96Bs_lLEKCz0CM~I;EhNQ)YC8*fhAp;-y zG9ro^VEXfQj~>oiXu^b~#H=cDFq1m~pQM-f9r{}qrS#~je-yDxh1&sV2w@HhbD%rQ zvqF(aK|1^PfDY)2QmT*?RbqHsa?*q%=?fqC^^43G)W3!c>kxCx;=d>6@4rI!pHEJ4 zCoe~PClhmWmVca=0Wk`&1I)-_+twVqbe>EhaLa(aej;ZQMt%`{F?$#pnW~;_IHaAz zA#|5>{v!dxN&ouieHdb~fuGo>qW(ax^of8<3X{&(+Br@1bJ-0D6Chg$u$TReI=h+y zn=&-aBZ`g+mci#-+(2$LD5yFHMAVg8vNINQOHN6e4|jQhIb$~sO;+G?IYshZf)V{ZewQR z?(|^o>0Xre^gj!6e}> zTHb#iYu$Pe=|&3Y8bm`B=667b-*KMXwSbr9({a6%5J<}HiX`8&@sTKOHJuGG}oFsx9y^}APB2zP0xIzxS_Hyg5{(XFBs z^>x@qc<{m0R5JuE`~*Xx7j+Mlh8yU;#jl1$rp4`hqz$;RC(C47%q!OKCIUijULB^8 z@%X9OuE)qY7Y3_p2)FZG`{jy-MTvXFVG>m?arA&;;8L#XXv_zYE+xzlG3w?7{|{(+ z2PBOSHD7x?RN0^yTs(HvAFmAfOrff>@4q|H*h<19zai;uT@_RhlZef4L?;a`f&ps% z144>YiGZ|W%_IOSwunC&S$T1Z&LDI1EpAN4{D|F_9c^cK8`g zQ4t*yzU*=>_rK=h1_qv3NR56)5-ZsGV}C?MxA2mI>g$u>i9xQqxTY3CP6SFlmqT*kJm+Vp&6|Rd&HVjVV2iE;dO7g%DBvpKxz}%|=eqatxbO9J z26Tmn5nFnvGuWhCeQ?Xl{9b3Zn?76X;Ed_yB`4Tuh{@)~0u0g-+Z&_LbVuvfXZ0hi z<)Dcp(7mi{4J2=wr$jn!SYp3yKg*nj)GwiiYeB6=Jz5 ze_>nw@IjCW&>1ztev$h~1=OFs*n#QYa*6y3!u>`NWVdsD^W6FZ)$O=LbgMzY=6aNW zplFoLX0&iKqna6%IMp|Pv~7NW-SmpI>TkgLhX&(~iQtdJ4)~YUD3|+3J-`WfB|P2T zKia5&pE5L|hjvX`9gmw7v=bVal$_n*B&#A(4ZvvYVPfl@PI(5e!i4KS_sd`yS0R*R zt|Yp((|SofnsEsS8|&NyWo{U<<66>|)Ny{8(!hRcc&anv%ru(Oac)?%qn}g3etD=i zt6c#E^r&Ee#V}}Gw*0b1*n829iQ&QWLudUqSuO3_7xb~%Y!oRTVaOEei3o>?hmsf) z;_S_U>QXOG$fT6jv$dsI*kSvnPz=lrX#`RUNgb><2ex!06DPaN9^bVm^9pB1w&da} zI*&uh$!}B4)}{XY$ZZ6Nm0DP#+Y&@Ip9K%wCd;-QFPlDRJHLtFX~{V>`?TLxj8*x9 z*jS4bpX>d!Y&MZQ6EDrOY)o3BTi4E%6^Mp#l zq~RuQGD*{Kt9jrupV_gAjFggPSviGh)%1f35fvMk zrQGJZx2EnWQBy8XP+BjYan<&eGzs{tifUr7v1YdZH&>PQ$B7|UWPCr_Dp`oC%^0Rx zRsQMQ7@_=I8}s$7eOHa7i>cw?BIWKXa(W9-?dj+%`j)E%hfDjn$ywH=Zkko}o96NuqwWpty9I2QtUU6%Hh#}_->hVJ-f711&8$r7V~O^7sth1qdm+?fD?&gIjAc zyqFI*LNCe9r)#GW?r@x@=2cx756awNnnx7U6`y?7hMG~_*tSv_iX)jBjoam}%=SnL zQ>U^OCihLy24_3n!SV-gS zOc&9qhB7Ek%eZMq6j(?A@-DKtoAhCsG+Uuq3MlDQHgk4SY)xK$_R~$fy+|1^I3G2_ z%5Ss|QBcETpy^7Fak21m_;GRNFx4lC$y8Fsv?Ai^RuL6`{ZB<{Vh#&W=x%}TG%(@; zT)NU7Dy$MnbU{*R-74J&=92U75>jfM3qQ=|sBrk_gUpJ|3@m-(S} zqrmISaynDD_ioO6)*i^7o0;!bDMmWp0YMpaG8btAu^OJ)=_<07isXtT+3lF76nBJ{ z`;coD)dJ6*+R@2)aG#M$ba<~O=E&W~Ufgk7r@zL&qQ~h_DGzk<>-6*EUF#I+(fVvF zF0q3(GM8?WRWvoMY~XEg>9%PN1tw>wLt5DP-`2`e)KL%jgPt=`R_Tf+MJBwzz@6P` zYkcqgt{25RF6%_*@D6opLzleQ)7W@Gs4H3i#4LADwy$Js;!`pfiwBoJts0Aw#g{Mb zYooE6OW7NcUMd1}sH)Ri=3(K0WmBtvK!2KaY?U&Htr#Q|+gK<+)P!19dIyUlV-~ZD zWTnl`xcUr)m5@2S1Lk4U(6nbH$;vl%qb5Vh|G5KA{_*04p!LOkPsWhxMRz}sl&mDWMOvz5;Kq0`+&T6$VoLdpvEBn-UN`Yb8ZZ0wMcv3XC z&vdicA-t=}LW3(&B6Kj(>TT!YHdrG%6Mp}$B2)7 z+;)t8QsBkfxDOo?z_{=$3mKym5Go;g$Mk=-laVV$8~3tYKU*>B?!wZzsj%|0`(rDZ zQlak~9a?7KG<`P_r`)fK5tmRtfJx2_{|%4C{wGh4l@LS$tQ$Tbg&CH~tGKZcy%EgW z`Ej2=-Hlzs6Deb(!HzY)2>45_jU5(2ZZtAeg#)2VsD^#*$8x<;w5s&*^tt+nA0nto#6hJ&M?xQ5=lhI*Tap+o@#YI~Hi-l#@sdjZ4PCVcFr zrtJF2C$N~X&6L4W47_$Flt4D!po1W~)1L9HNr#|W_L09d`a-4_H0Mx`rv5icDMbTk zjgibis*{cth+j!U;jr1ejW?${hBE1{p6EKm8=(ABt9m z73d7-{oHvvZQ4|t%Yl|k2ISat%`52J25OJ=M|CD{m|Q`~Q%t0|TS>zV%Z(g_Tfm4* zrnW_nWqsh&V(Vg+lY`u)?gp>c{g&12){~5SxL)&$i>$($pDhnsXK=$u3m0Cx-kD$+ z5Sf?E*TYQ#^KvHWJU1%*={yG9NjM(7`Q)rS7&uMenLoOe2N*xk(vN5F{sf(%CH8#I;sdqf1dw%kBI&pS`K)){>EF18AT6CAYZz0_Bc|Ws1Nh3 z%twB`i+Lm2(%hoXJP|J5lGpD^-5BDO7S(}JJ>5B*GC`HoszjIH2&%(H9^gwUpLh!i z3Qy1nE2J}h@;Ak+bcPP0N_i9XP zGP%F-_xo6mx<}RTyu}Gtjo&rvdJ)cjDjdsF2#cIzUZPQ4jw3ooBicqI*=>s6PhTHP zUbqtt70zm3RGvU{bmEBy@7>pUvN*V&xd}e^Utpe0V;b_!mCArr(MJKQnMqizhhON$ z0PU2%@B_9xKJKKe6`VjcwmWC;Y0r{P@{$)pR~JK z7W*a7V+;ltQ(0F8#ai=9MTrhuKUuc?XHbAd#{@4h9w}rzVRuq6yXejFE!8sdL8=54 zlMy{taj5+w=D#noC@!#8;au}K+eZu|Qu0-kgkp6xNYzcURuN-6Kl%)%2VR8!wVGU1 zWZEqJTSbol6_)?Gn*57aSh-rbxyjqOxm!5?6VUdE?S~B!MwhszTd>6tpLmj(o$a(h zAs07xg*#7|8#vhWTd4=LC(iu_{`BjJsuC)6y+j zVt~bjACA>0y~vnuy8LtP`50?}Sv@t*JN-yL!!hVgrCPk1MZ}gKt0uixMw>b}LVSYT zO2tkmt!7v#jQQ>8j*U6`G)hEPOU>LGS_Bb0_fM;F-V(W)wq65Rk*aya3yO z_E*B&%-+Mz#?wO5#@<52%(}O6W4o%BNVbB8s4!4(PR*gSb z$j7Eencvf9?_))K7b19T597Ql)q~!PlMm$u$j3)NoBF(=YuwSFa=2J3EM=@!qJ=bK z2UY^`gcpl_0a{Nbh&mL-S}|dXDc@FYTzkR9u>DlO|r9zMbY9 zcvi~*Sn!-XdibS9>V|VmH54$J!N;-k>U|!e$!EePWpr0wZn4~|?w4vo%-Ffcx{+}N z74+Dx>^&$SsYtq~oLkztY&j;cG5S5NN)rYFS~F@`)MVA%911fMO^vLB+%;E2kGcx|C?bj%K*Y#Btv7K6inqIt~eN9{d@I&&(VF z1}bT14cQy!1jpa|7DiCJuBh_{+56)f_l3}qLWwox4&D>1NwX@~lG&(9Cp!ZS@vbCbV>$9jV0PWrUoc zGQm`Y5){E1K~q2RUK#=U*e^6&?8-y!fP9=6o+W+4nm+mSQeDNJD5!E8CaU;I#+HM)Gt`;3%$yq7H_kqm0#(U8c<8HUpZ5@8zRzEG5L^AX4{< zwDEN(lUW!^k%H!t&T_;T6To1i4r0S|tu+lWr|`3wjbo+~>MjOj62{&D3H$OiWs=Dw z`m6MW^8|~J3*ER5G^h~UbH*UPW$7ZHfg&@9%r2u(d@8YN94k?}pzw`3tuCNVl%MV&<#4ESfo@VX7dX=)C-e#!(E` z#+;b>rvW^#ug1(yr&cS%w96I($;2(O*FuVoTK-KiA2Qgwkhs0^Xt=eXkh&mx)iBSK z+r|&Xi($%(!3BO6G7f)2qliGTP)G50)i_iAAQYn_^v$7h=>j<98G2H|p1$BA(xe5i z0+-b-VX6A*!r*B>W<`WMPAsKiypzr_G25*NMBd*U0dSwuCz+0CPmX1%rGDw|L|sg- zFo|-kDGXpl#GVVhHIe#KRr^fX8dd>odTlP=D0<~ke(zU1xB8^1);p2#8t_>~o&?jKIG49W)EmhTo5fZ|aP=E2~}6=bv=O`0e4FpgaP@U~KHt>V*oR z{wKtxe`uCFdgYHlbLL2`H>|$?L@G&exvem8R^wQppk+Gu8BI;LR4v=pU`U4vlmwFw zxYbNZXbzdqO{7#b`Eo2>XlNcQEFC-Gk2v__^hqHG{bb%6gvMRe9ikQ>94zOK3o85` z)Ew{!is}|b0%g#qa2H+$A1i=5;*y)hv$5m)&;Z~CTv zpdZz#9k)yhrLH%G>|ly;%|Fe`K{}d{6vyNO^Gk$ZYOIL$3&5XuJTqse&XvY7TH(_z zb3L0aT`$6i&c(dBQVcLsV?yM^@BTj>C_2=Ih6Yxsk zP5r-Yg34bu;lJUUrT!1Gt>I?jD(&Q8A@Ag5=i&TcT(g><60QjPmt>;B(xYk(bt}+T z4_t3m_flhFXrd}o9hw+M$vh0Ej(*GdO21EJaL-eD*b$UHHZnUN|OJ z0Jp^;Ep{EvhbQw6K_&t~eB7m4_csSE=CWXyWY4sLL-`>gdwbXUqW8FqVwQ((K>Hes z6?QDu2SZjI&_Oqc`A&D$)~oa&r%dn2G?-*9nvEt&L!4PeU(lyXCgK1^guGj|F$M$j z(GuZXkiyMXV}lhNuz5oi;9>+0nCgNO|gp>9FS%CFa9W(t_WRn1h zi*Vk4IQG@3-{J`U=9`Ky!DmF2O%ld1w#`8Drc@C6KGz2^NhY^gQZo9SG}}BF9G0<> zUIO))F&%dt6uAb`cN%_jf&q5I)?_7J^9T09fb~#ll%%T{?}PznT^_22(*OROJ`X;tg`78+=eW z{nLQs1%;?R)4yhs=QXy;Ww3ta7dfE~<&UNFZ#6bKVY=m1@p+4G(=Yx{7vDsa`}d$v2%*jQt+wTN!@Q4~!T4`0#GI8YfG!RD zA-RJ))sAlYej5x5RQ-^2I`1%|`iFfD*JoRd`hJ1Hjq_1EjBZ7V)S;?@^TS;{^==d= z)f-C;4#XD*THtvXh>{A80hZC?O(tJ)M}tK1Z4n%Y}= z7G#ciWgC-qm?9fE0?893;j3|Em(+qaH${U|Z^A^QleR%Z7 z1tb3_8mwUDjv6g+M+PH*#OmXvrsOq;C|~Oa;`LR+=Ou;zBgy?^)d&PxR|BoHj6&sQLvauxiJO7V_3Dc#Yum zGB>eK>>aZ64e9dY{FHaG&8nfRUW*u+r;2EK&_#d;m#{&#@xVG;SRy=AUe9+PcYYs7 zj96WKYn5YVi{SKZ^0v}b<>~7D3U^W@eJTVKCDk#O!fc5%`1KJ%473-~Ep)z$w6SC^ zTLzy~^~c+8J4q^gv9G_h((u6+#9K|Hwyv?kkbEpaO6^U013F*&bbnuxwtH~v%F9#0 zmtLmWALa{|zD`KnzKOv=DK^Qdb+qyOnd??*IXEprOa{&tVKg3pExuAFe~YQ4t|)j) zij8hA%U)XCd1Xs~{O?y^$^Ay>@J#8GF%+8%LcH*p@gmDRZXB5qIXD z8>)QYQpTPLtK)oS#azTHeBGCqsnlj9NCIGNEpJb;iSSJPZ2?lGVE8nj#y*wRnoLNP zUDvlQvp`STbAjrwgsMtnowuaK;8{D_vB36%w zJv*S667QTThf?Cmh=Z!={xFo+ID2<-Vy`H~ArX{AKl+?KW=|8LZO0Np%7v|KE(}&? zkm-iqK;uMF5)cH3KYs+zl0BM%jvE+hMDx-L*xqRy;-OS_rAK2sX;%0n1!Ma{5Lmy9 z^imumWb?xIHBgd8Q<3ZITO&oZe53WDFt~k-gkZB#xr?4x**{ecHCK=){(+%{U)emp7C}WTX-ec@8h(}WY4jqVq71BVnXwP*x&;{_d zN*3_vi&qrs&)e8zxt-odRm_T)R;UhvD$t{UlTf!SlB8E1GF4cNqHtgHu}%8Q8%zI^ zpO2!5*(g*etB5GgYL`Ac=M!b)Xq2bNT3ITjN-o2|WjTohM*|Zlubs@v$LuHc` zZ9L$4X`?POL_=tgyId{qVRj|31h_W~uwSBS8Ah`MRZtYNw3)JW;zH~Pv)aMi=uCgq z#Os}gx^be(^r#pj-M0If8r_YMPZT)4&1&7mrz) zh!z$uE9c|~q;;`W8Ai3H!KF-#GtuGf98}gBI3*2zD4rHswCwmtL-<*{PH$;(Ich%i zT*e+^HTbEiukgv7AMqKZ_!%!^91tMZXJ&a+eBiBB>)uZd6=!3wJGNOlZBqfyTo_(Jq z52h7Y#wYwKScBP<{-&F}%`x@JiQDol9`9Y82JRmh8^6_R_^6I7I(oY45vsM)2Mg0! zNA^4MWmRnm?JM)uuzN;;ogInuA5}Qk;oaQ$cs9Ai)!zvU7TmWOs>`bxrdCQ#mnxk} z5Qpoyg#i0duj8%&Cc)XL_UW9Y?IgF{#`HuraxSoAO7mma*cOEu@T)wAF;<^bOp|dR zADP}}$WhfJnAd^kp5&R5b(nQw_sNEB!jZ-p!ty@M!(=`!YrVm5qzwmXy!+l^Qp||H zv)&M{iBPo$VxFKnW{T}^(SSQhrcO8bGeIkBJ=JR;#?sW8mMt~^yS(gY`@?F17Z%jH zb{eMek^AG53t{vvM+t+R{@qK?fCZn7^EkTA!lZMl?}J59=&K`ZSgNCVJpfBBkb%)0eYGJXVS%p1UU)y*F6#Od-P`RT#1*&Ua*G-rTNAwiZ_43phR z$Tt_#Lfj(r=Zu@nx5yBV zF=8b~y8XrjculznaTL$d_A?<3CJzV%`@=R?nu3qGhpnniU7b64jQx=U%#3e_@5n7P z9CZn~<+hnXIoahha&pWlKH!M&^LRKwKLg-_J)&7>fN$!Zhh*IevmsWNm%}J!& zx5esSGz=)HgFY>*tW#_Bh8hH?clu~3dMZr!u|cf<&P_Ks1R4orwjF4Qmy<{9I7j2^-P1Qe-E$ZHv^Y2|8)>4abo8@^ExNA7B+Oy;0NIqz z!#d;E2rU+kkB0P#KYyn7N;Nuo2k!qQugm($Hr+YiqO^0y2CRX2m^!SZq@xDICbo~5 z6K1##iSi zz-lajV(rBC^a}AEt3AqMcJSKZsorc=(iiiCwip4!9->vgGF5(@L;ix&mq$LxsQ;yn zCD@C_!;8(Kv^6$mb||Lfhhf5I6~WBlJ&cje30%f>NXFsAPq<6#QkQbOXF|Tn)4360 z9ZbI~k=SJ5#>G^Tk#7(x7#q*dL8Sx?4!s4*FGxDT3=jA- zd3uD7(hY0)XnNaS4GSis{9xF|$|=it<}R2GMf5Wql`jRfCIlWupKy@#xLkR# zzy28n_OG7iR%5>`{zXeUk^Xy69o^hb?Ct;Aua~R!?uV|06R7mWI$`-8S=U+5dQNhM z9s#aU873GO#z8Dy7*7=3%%h3V9+Hyn{DMBc>JiWew5`@Gwe3-l_Nq*xKzBH=U3-iE z^S$p)>!sqFt2ukqJ`MWF=P8G0+duu;f17Wc$LD>!z8BIM?+Xa8che3}l(H+vip?rN zmY_r$9RkS~39e{MO_?Yzg1K;KPT?$jv_RTuk&)P+*soxUT1qYm&lKDw?VqTQ%1uUT zmCPM}PwG>IM$|7Qv1``k--JdqO2vCC<1Y(PqH-1)%9q(|e$hwGPd83}5d~GExM|@R zBpbvU{*sds{b~YOaqyS#(!m;7!FP>%-U9*#Xa%fS%Lbx0X!c_gTQ_QIyy)Dc6#Hr4 z2h++MI(zSGDx;h_rrWJ%@OaAd34-iHC9B05u6e0yO^4aUl?u6zeTVJm*kFN~0_QlT zNv9T613ncxsZW(l%w`Lcf8uh@QgOnrm@^!>hcB=(a!3*OzFIV{R;wE73{p_aFYtg2 zzCY5;Ui~l_OVU;KGeSM9-wd66)uL6N3DqJHJ0L6rET&y2=f)>fP6;^5N)R`BXeL+& zo6QZ-BrVcmm1m{!!%^&u^*L!e>>{Tg?Du<%-A6<{O8xZCvmdNv?|;Xmm;55oj300) zByD!GlJZaPau!g@XX#!j!>VHPl5bWf^qk=Z+M%N_!myUu=dg$C;S{|)(pcrOI5b6g zcV*=qSI|KVEI(o_(QiDzss>!+>B>W5IhxlS^Eop*rIB0e3~F_Ry*d7(0zb2SYv%Kb z_K~7;{#bI4uy<>P8(6oG^->yVwA%#Ga{s{Xn{$C^=B;Y4GEp4m=&suBjN6XN-ws|h z6tG__V^Wl+rCfTPUf8trHW>GCue? z58?dkGg|8!;YQ(dl}+2_Im{K0{l$)Ec5rW*Y2Z!w?tGQ@ZkO%A?&@KMXBFF9EHi`i zOwT#+Fz~do?#nt1Hz3;_?3rEQU^K$J2BgxOX2AT>!bmMv8&0nQSVYKW83j(9ZEV#w zjN&G|L)`7uiV;>?**_x)mP$&Zg}sh;>8W-$u!qozJS8IH9zQ1|+90mWT-zni7m2b0$Anx2<6 zpgF=^bxuc|t#XClG*jIl^LA3hx?Z^%49PiWfiUKeVVv(xH_AIRe8-Pl=_1S?FaEF$ zZ!IPxsXgx_Sl%jaPlB<1tvQ^!2ii2R`W@xr@#^kRW!y^B-x4+3`V!9)HHE^F%>IqO zh;0Ul3|&UwF?&L-&5@Spcs2w(uSgY{aIB{MbAqjDb%)nrZUw`=7S+4d)K9AS5NS1B ztX^Dm+m$5hO#;9xtxqoNB6(|gHUyBn4`2C_<%a8abEB~01nwRf!?+T#Big__!bMbF zt|-LS;8LPy3a$3$gAD6^;xulrXsZXjKW-1pFu829!mWo?yqwx&THb1Th-c*q*u2^k zeefe7T+G~7CiS=Z5~B?}bW-J>-WuqL13Xx~@Q^)QhHxDgk+x*nyVFjnX8tR1^Sdl-R(PR#|j?hx!oryI`_wmmB4z4{7wrEBF>sclHoe z2JB6c#_$aL%lp4!UAb@_!sLIi3O&()fDr#T(f=PY@t^ItF#Z^atwL1KN7GYN4G^O3 zHDst`gr4lwxJkr~B*Z2x#CzmkNiiD~)46h}=bA*Cx|c;BZ5Un^r5fs}?6g3Svj=j;fV|OR^i@=cCh)VMW_5+L*;k;r!;9t>|w{@)`;;)E->kUinNJ?X8kN! z8`}GhsA>#DPeGkd8dg4r`L zyS19T8YH@ihS=4~WrkUhg$=sYId}&g^9vO>KCnTIzZ66a=?JDsc*B=vngxfB?;*qV zL|Xu(P(H={Trz4ndsE#KyKv}^sWN(EEpcsO6`4%x-hL6fp-yZ@=m!LME{*J|u;(PU zhn!*SVlA=jA^0#&C;}}4DRC|Tk)2eG1v`?uIH(hb7|mL7IBeI~W6fP_36}|0t9q!} z@!h`tf|zFCFY8G0K$!&iwF*jOb@C9E-u5s?^Rlaad%bCX{YDpPTBm z829R2aPrE$*^pP7-pjT|pATPS5NnI|WwT++-L34$e1-}4%*dsYYnu}Hm#92MgFE{o~NjJ{EMM1=Mai)NW%TmhhCo7lUYkk_3rXFLXs;*u? zgRA~x>&_K>WvT0`Pd9_t44Z?otM8lH}ukI$yM3RtOb}S@I`i-+*_MWx=B>k@KtGEN8>e7{~g_4w!LHb-T8%?i{F01C+zU_~n>ZWyA#$r92il-{03qE7w z=Cpz1(vmmZVhNpscjG0M0K4$Tenmdqi6Sa_1=KMJKbaxz-TB2#j| z6%G1&3`Cs*FXeBf5(kCLyAWQvCo0ZsL(P{pXxPqF2l6D7M->xL%)qCYEkc|mAi<}j zM!2f7X2*gpVHIkatPI>>9cVyXLNiS%vFL9?smnYBm z(8k{xAaDSFG3*O+n{p-<+h z7l32L?Kv`Udr$(2lSmFBW$yYNd>T2?L+3N;I5dSOJ3s}q5#UX0X^z@DgEB$HV&10A zh$rhWVb)Pj!doaXx0#;$Bcn=|-z~XKopH&SA^!)ZkvcurJVErdUW4&BwdCV8j+VY$ zciQn&1L7%B8%%^|UFw={uTc`symy1L3LMfFY3N*^yU?cSJQCgLc%}394vUB-)Itp( z))pWllOb*Nj8O0}RkoI!FBX!U4yC?kPD@vFu|>qeg`S&VXlPQMy2}GEa<|}5e#^L&lXX^D1U!rce9c0+G>TC7~L+bTW5AF8gv#eYG z_;WNQQpE>x&kqA*?^}TS2B(=Mr5>Ase_e4xngO--eRT4DtMq`h?QLjn;YW)HTixlc zpnP+~DkXWgh7H1Lu2wUeE>u&y<%4N*+>;F)+x=UWvKjon(XuB@r$%7Jb7cQh^@qdO zM9XJ}Xo(M1KWX8xU^Y0d(B!s?4bx`v-M6p0@$DZP?GrT3lb%%H>>?4TX%etz)cC`dOmZ__G2X+AGcJoGFy@wtQ zeakz$cBhhehjg_(SuL#qVk-xYE(aUTzIG8AK3XD0mZM0EJ13YVzUS$oZg^^hO{b+^ zWy#6}LqU}|3q#lZqO#g=>*2Az7iHbW68sdBHa@f4CwB*}eQsFu7Tt1TJhp;6vXBue z4Z&aWG#~BbN)h`=E<(Vw-4-1?9pAqoG$@yitG#M$ z{V)~zAZdJ9n{7$_oi$!R(XyIv*uawdn?iLi0_|*UpE{z}H(+r#IfP9?u^% z!kKxcc+??s1pNs5YaXS!5+zbthP-;O;!^z!rLXWNUgHa3&8% zFnn7A;Y{bf;(_n0W1vs@RX}8v>GhLDF1~V3{R_i?vJdlO68|#BgDk4eW|fA=Px|8~ zxE(@omgp2MOi2Be%RhF!?{Ga)FTRJW;ECWYF+u9F?c_jdOf1i1BmIzVaa^@Hjh%Dc z?F+^by1;e_#f|(klA^TO3A`*eE5&0ZPj%0yYALQ9XCW@RI&St+OHRvu1>@Onb5fQeP=E$YVLhC zMpkEIz*}74t>;PK?7p#~Z%%f?7~v`0DRg{|bgVzLd*4!|S_D~Bs^i}}-~bm7W%PuM#$_t2fExWw_|WAamWxY6S=i?9Vv z%r%BcXG@HRZ58<(=pqR3&TX^GGZa(U>rmsz|48$YB!5Mbd}P5~h{T9z78BD2Hc~3x zKc=D%SQ$%P6OieeGg?oR7gqz4+_JkSUx-yl&y1FKX^s)nU<6PVuXc@ z5Q^F76 z{SeBk&t7-TvH9etn33qag}(s;Y#{$}DuS}%Dsh-D+#S{21Xu}Sk&DG)xHL^Qw|H>V zxET9a!QifM%L2`JPex5!_AtdT_*%k`VeIDQ?HT<-M)oaKV}&lR%R{pCedOz43WD^xnWfcqCkBF@ z9VL7YK`@>c7LO}V=2TqML`PYb>%P~dvj3iOGBECvD{|;Qxf^$-ay$lo8O#nsR?je@BD*SU*98?E={03WiP!k{}RCQ9m z$}#Jzcn)I25#^-Qz>JN^??=RtAucr-Jg~DzhqOS$;j`Nvn04M4em6Ki1o7#9mexRO za1Xpdyz4D?3QY~9CFGp2%?f=2jo6e$v!*L(L}2VrIGXj$Qo`z2<~wn>{lP=(&WO_z z%zI*bMxNYxqS^^Q%LdYtVK#tB?aiXO4M+CB7<&gG$J=dtc-o$}ZB5&@ZQGo-ZTIxF z?P=S#ZQHi><-O-zocEspSGOvuN>x%xCBL0#@4fcgYaPtE*C$-&zfn?1nvHwV@O&dC zG^{=q@PJg5&e5rlee5d-ODOnh6pYWDcTevPVX6aF32}|q?MUjK+zG*Eg8hu>!3>vD z#6To(MH{H&m`%fZA$a*i0#{J?r7@@lM+hFZ z&ZkBG^|Djlz`YH*w<4v~Wf(c9SiXfhK0TTB7=G%_h5B*3VY-{Mr(#39NsH^FNsIi; zbfxqAyrNQ|a#A0m7Atn+lg=3qU>Le0FJVKJVZ-!!H%^eg-}|c|9)H>y68Q0=*0_Oz zj);+PpOgpiW3pf$Q<5JIr*HEOxnn!+l4z9__M2)HZ8Z$+XX;AZ4 zbHeS12|r^f>l}=2^&)K!_^^W_D)E)M=1IgV!9z8LAPB%sc zPfA)!?gE~CA`W;t+Fw9h{?f;&?A$Tm_@-u*b8N8WiLs=eDGS`on6oyWd#S{1$L757 zf)WBI4i03wm3IuvA1X3b{AIQi7$I~~>(GGoK=za2_GL#OaF;LQ)qCcH`vjYBzK~$= z8Pz)i^xaU&JmDzMok`x+%n?!0bCdjZ7)(3Fx`LMX5b=Ibd#gKQjek*#?H^z|(iG`& z9gfD8eco3tfy*L+vcV~ap1Wq!*0z%Hr2o#6Y1i(hACyJEoZ%`KXD;~_i{W%q#4i83 zNI?4S=5i6y2*l~+n+CW+ns$7A_VjHX|CNRQ!j z?mg!Xz92QTb1GkuDZB%`Ugcs$*t+rVsyBSZyZmjMjM6`7R3Z4AAoM>m8iOks(K^CE z2|I$r-a!i#g9|>xP%+Ij4TnV(BTI z%%kwU#e70lAB%7oi6%RK1w3x$KI+NOzoSF9bqOASP4WW^GZCQ)^?byH4anaRnL@(UWICDLm4gkT$mXtQj? z4&JyPx>?hI@@x9bW99~*U4rvV%vUPiou`~wf*g`5pYaj*zF45+jx1~xBwpaH2WD@5mYxd=2TkSejx!w1-_NboC`d9<2=P#gtojMh|)3>Vrr9TAr?Hm5TN7$r)n*A3aKREvF=d3)+P*?I0RTaaaopcIv zCbWoJ$WI2c5MwArd?-`0w~B=HN-2w6l<2Pr-(akPe*AZk_xz}%MmQw(x?foUsRWMf zJ1XDL&sVr@1i5(eZByW6J8J*6VlsumAHq6eT!QO~b_4=()B0htMc}TO%TRr*Onr>& zN3b=g5*I1DHlE#>wK{#fRYiTguA3#^@v^LKjepXHN{t}7*rQsC27_|v8*p`IaGmuX z4)XJ3MAsEs8!H`)1`t?mGIQlGvP$rk2b5`aPFi9NPH5ufv2I6%7dl|6zbj|^X@GA0!QGH3UbZXEjmCk}Q%Lg&3;i2r(tBoCGQEA*(s}-*YDPP}>x(et$5< z;;{)ap336H;$!SzR{XU7E-a0OiSs8;P*ad8+OwH%M*s_6K|DW9OpqIG7wP~ild*5` z>;31enRY&K(gFu8wkD`r=)Cx6hSBP#xcZ-g z9PRpS)ZLwdIlXYoNwE&6U}*0TsOg-O6_mXKU(t+v*hLA`5l+D%AAZG8D6(W9g4@J$ zNLKMmV#!-Z!(}o_M2@N3_V6SKZW(!t%w<7B{Z7~vjTbJW?6~(3bMKI4#%53`li4a- zzdA>|B-utDJ47y^XO(Z0FWU+5F^FZ0KMH1lbV?kC@l zqxh3u&D6Dm)u42V#Ww=Se3o&t;I{?W3O9+e8pSl{rQB%RlV@RPEjfc{SttrHXQhHU zQ9IVJcOU;Al9mLPzv_ViLRTQ)zOn!Nkd!xYG8b@kG_f(XHgO=4{%K@jEezO{aj-CS zcCz^SPr75GqLvgkfRa0Dy0PF?X5Y}bs#WhEW_7l@t0g6X1WH&RjE3(;A^n?Bwsi$A zUMBKOvPb?pm#-UNg_|j4wiv-{Io0uv)^T~P3*Gly`#>4TxPApByqwJaIL?%J`@I6$ zvkl8|ta3K})^S8Ok*Y>}71E2(dMUNc^{o+0@i_u3R_bLxF3oCql&{6il@zWo;>*pZ zK7r?iu;rjTzH;epY*5GP{f)%Ti1ppC?Zw(gk{`^XG7wf+o4<*0Ln7$&bmN$UJf}R=2)McW#-0yqN(irp^RcznCL%+t)Q#RU zvzFgw@7(Yy@tbqopkDeCMy z+K%eiJz<$w0gHa z^rgk!yvUb3pmqHw^GWirm*^1iLV(`M=LOh}qyV;=VBq!HXz41onlee>Ot*=BUml%`T?f7 zSPSc!SIiZ&L&5Is?qluXVd-pPVCnNPYHbV9&amg@a?}v;dJXYWnnH0d`=yZsR7PLA zeJwoVpuORc{9rgBZ)a@l^B7(dKJZ#X45l@O9!)w_U6sHp(#K|$#2A|{5=cfAo0fE< zt2mv7qpgaNMsZN$;Hl{$KuW zuu{$B*xJT0Sj<{tF*j4Q@3XXfVcui+bXSvRZE{BGYg)fFAvmxo;_7rw)A7AM+-}F( zy9yPIW}@Dyn4t9!*I*Q_u;?B0StPDYNk6@{Z{aAuHrT96UAaE%%i(!PAiI{aZpHEd zb!(kKIL_;=5KVhMx0lHK1=!uRKJ_AD5(MOIcRw&)U?rD~km!(RtA`M=;ur6vQ$-!dK`hH3gHeoUCb zLuwpr*G4`Nbymsjnf%cah!P!2C5-*}3|ui+_7z7O4TLF-=&&6oqxRN=iynr8%Xd@m zgRoZ^pvEEt%(<7Y>qCm@%LpSaboV=wSl%IBnYke{)mkwJ+y;Ie!fExziX4$YQ(}&o zKc|+9-Z;W_A)F*P=WoArRoT_tP@{G&(g$j6p04i`Q~BiYG(BfVY*{^nd=~G>J=X=$ z!Y`9em<&z`E;>X9zgjwVw|-j!go!Kjr5K599nX3&Myph zV4X=emYk1nly0fmao+HR_ncaXxJ%?_{`Vqx{xJvv9KJF><9W{hd}tm2fVr+;xg zNZkAl?CPi#PNI^p+AMQ7*87)3f~R#P4*uS0M+WNTjxyY6S=K3O48tTpzMvZdeqO!?c%hzi9aa;89nCmI~`9+ z#?PWzmHH)w(ZUc*$f<&mITm5s5SQG_VZ9lw?-xXkib4=-ny8_BV(d<#?8^4_A(N3i zZ>>X*CxcHX9<%a$^2X>xYKj{>m*Q|bTn~002shz1=9K}=II11Y4qp&f z-4TJzl96E{yc>xB*mK29dX0nZy4ja>YXjIXaAQZ2OS}DDyaTk)ZEbT44z_u9osoeP zp4}P>;o!8)!zBEZr;WV>i70Oq>y;Ct)Xk2(DY9Sk9hPa~E5z&tR_U|Sdp+77M-0N~ z(zq6|lKjIPrt^v66VihrH1=8;;w5zmxF(~pJ&cqtEspaQ@rUQ}+CC}#FJ37d%BD)E zcWYFT*oRF4_KtYltBTzXINe=cW;sTsx%v#^y}GQgAm7HzTp0WZ?&5j%9+j%$mlK5N z+7cQUkKrMq7D9=h?m}KpoK?(I7#_8OKDbzNOiT=^6npcig81dV`pscUxeY7$ECU>C zdv<@7Dnn*nq8mDm9ao9%FVZYzQL?!kW7NPZg0$Ai#!M&fg9^^V;comJBdTx#QE5>^1>MRgk&)Qw%qgRZahaBS5H(Gw{7(6 zZ_BpE9^+fT0h>!a0HsX&f1fLr+yTqPHh|S)fYPRug^8oMfh|C$^S{J0wUo3}P(E2D z*a>k)JDA0_3L1j66zRlC>#0ykP=QGy3w2KkGsr?i9Ct?~fPOx_YU<&bod*8=KFK~g zpG-d-<^3d9vL#Ejzc^}K`?zZ5?RnAA)vzS{`T7>i2h<++)BAX!Ab=A8l>Vg8S(-ZK zriVEC=Sz;hsw|OWTkf_Em?QL|w|Q>?x&jBScn!sX48HOY3Ab{@F}ET_YW2k3r1kwj z=vKVzgKdiK-ZTlb=2C$qf$)w1FD- zG!1zxAsOh=w&WJZpdm*;xDX|mS4Ab^ZPqk7E7o$CZ3kzX&}<@+ho+h8(j=NDP*#y! zl}=FE@hJ+d)N?V33qv8G=gN%=1n)G{&e}spjE+~6{JLPV8Rj&Kwuz+aYbJ?(jSW1= zD~oXZ7*8BG=3Ftw>yTGyHk?K|G}X7}_r5DQ4~qE5{Qe-0v9*dJjps|`9o4Xv5prJz zjuz>stxJ+t#p_F^<#;$jdSbvfIHB0{Wc$EB%0B=i2dsJ9v<&*eF%TPA$}XBlotQa# z@1}I7BsT1M_=jZ`DRWaKmo|r?gKEY;r7kc^Tow{k8iHtVDMUi~R~9L2inf;#`4>P7 z4cb;IIQU=g^(WWk^ObLgNl zKz1n+r&t4~L}pwfzDEq!7y*j|rh)pDTedv-olf*HEGH*G2Ni!088v&C2{n7qKZ5SM zFrZ4=EBYrWxZI{9Fim2zIzLTew2duF74_OX>zTYekn!1=BXkCbOX6dqu-h&rHF4mG zleD22@WPW}&Zsg8i?%;q<67Od?hsXq8yD~bKM}ZrgqmXZ$@j6o|ORnHVEE*1^`{A@7@NZ(NEQuZ9+LKlUc7=nt$YA|< z>{IxRe#wy@_(L!m3q4a+zu-X*NHqmgtYJzZHr$Oy{8^QC) z50zi~J|lcz(s+oYiIK+=+8F0u&xbjgyZ0>eHhZA4# z^~`jO64}3%RG{^qazK+=mPd5j;>eD9&h6gPA%dyz6a0q)2zE_42d*)eUczhAA z0}VI(?-TnqiLkFDdiWY=M`mI5pd2v@*yJ<@NOcj2%k{hj`S6$z5T6DwU{%{{QHK)R zhV{HoNT~a?2KNZAsjEUx$SYzVHti9~*Nl`4c7fDlC!`JaG4}VnX4*YgKZ5bM9GB>& z=oNm*_P8dlHh2N)6+MdTdfw^%YcDVkrz;u<04iPp{lNcYJM*6lZ$dw9O)bov9Sr`v z6^xFzkwX?h82VZ}S`6e3@XO01x**KR*=B-*S7A_rMHTlFs`9^DPQYnW2$4i%l^2~etVmm())IJO%W=UGNR8Ki4z5TY0oz_!Oiy6;@&+W zh!ttUZ9M&G!*_kI%2urtYEW%&?!yQ-1RYf|@lXUCy!je&q6J%6Tx7&)lP|$iMDx_a z6bKTMyQzHFouQ|0?GlSIt9QOInT6K6G$2YAf!+HQg?nT$@;k*^U&xyU)%m< zT86xNahaNFGgtSbL4w@lf59}5Rk_5vn$@yZ6E&6P?q%&hD7&wwbCkbv=|N^jxbC$E zy-3^ME?+V7bL!1Osm7xwv@WSoVP=l1XpgqC6KsYL;V1PC3(Bu0`Q1O`(IG%^BAe_F*?NhUoO-*WXVa@N^gy4X-xR}c!chjE zFLLQ1^-wxVyg2Sb^fR*0=`&p@riNqB_`2^E&q3`w64(V8qm&FXKG8<$;&DZPTZ2JG zI3!T&C*(0i$*V?!E0{)c_n~T|CS&Zo)0Fs%9iFXJCm>`*#+&WhYa{QHp2pnRdcT6E zIwokRWD-nF*!9}YlagJF!)%S(;j*C+*kc+iLNN;Lp#mNih+=iXLw?b}?`lc@Du89o z2W_bUml!2*EJ(cqQA8k!m;6-@Tbl#gk`F#IN)Rh?R{$@r;3rKfpvXAvNGh%Z_xra% zl0@AsL;(rErR1-ASVgsfV*s83TPvHkIsdnIsam)vGN99~i2LEL0XvLQ%@F<#MDRC*Yx8duY^C*Ac^YiXxj_vn zE6?z9)H2jWw8d9SMO zRug*0n$k0SWFl-QFoHi!@s=25yOsg(_^}6lXp&&h67^HUoMSy55AXB>3-b~e2Lm7T z6k84s?vF=Eh#0Bxt88h}!emBT_NlbipR8<70t1PrI66(sP0l}ul4(JURDP90CwTCJ zEKJVk&&8oFtr4lb9_C&{mppqXaXwIGgC0tICp$g4S(?J|Mc}fuDWU>QG&K5s` zwfEX)qZ{OR*wl(*_c$wC=2EAkcL>J zOzQ6v&DOXgA({9P2@hFI%(H6SS@V=SB$t8Go~xi`N7b=}V+?<=*61G^jrDRMVvL&{2Kt1HG`xE&};wS7R+3+$S{@>6GvAV{oB>Ie9xG(#lfPUS1{ zpgd+wnmsq{`Z8xI$B%7}7A8IO(4{4~i;)T9$fV$y49-wvhFaEO?h~gtn5PFY6j-E8 zN-b&7VlHqLA=g9)c_k$pKo(Ic9Gt(H=B-EL!3}ui!plmSD)IN7es;>&o?n0v{*ccp zVji=?&=BELQTsuN_~v^{SOB#(5{_Jh+>{iDuSl1yLVGlJ#t0jEt_1Tz-}6M zV>JU;9@C_1s-;b2)H2?Z(zQmkOWk2?bk%YREWjH*#Oaq zN=D)wk^9AOEd?b=Elj=M*DoE${eUJ>(tgW*o7z6YCe_xo0On4a(vOHVce)$;@@*6C z{7-Frx8j7Rd(4RndMJsZKjvWEoDze=Y(Ib4#+bqp-G!hoOe&sO7p9fy!^zqSLGN%u zcSc^-^j;~gwTzuATw}GX_8_)v_9)y_xus0t4x|L&Z-*9;pHVK*HWX7f$6!N46MXsf zrbAS8zhatkpM_@^(iR0{0GM z`u-bJhS&Rdz_Lw(g9ajnt?UdFF9S<7CgNNLPKh2RhM68fNu;aiC+d5QS{DTA)~vP4 z+jvb+5z6@P{DhaiN1^_-(a8j%+?o-Oul%*xJ7o|b^)n2)2$~V$yGqa2^%KHp?soQb za*z;+s4|JyeUz8NyV1#X566=lFxRFM(k+tGxa?9wv1*jQkxwar2#HP(d0`pat8~gwMz^Tm)P)uU*ApDqr3N1AF0eE z^|F2Xh$^#e*G1yE8>(Ksw?Ew6xtbj+=u7EGsA=D zK}@usV}ZMaM`L=r%1lSN;eAX#0+iRPAV-~J0yKLJd@8yZCt?DMhJZtp-x)QX;fGx? zgSH-o5*^_US%o|ehv5K(FDQQf`^G&ed*~F5IZAZDTS}d~l_IMXx-g1#NnK-IPK+3B z27^2bbai@XCedmA8(&N#?FqpMn7J9Pt|;*i4QacHS~Yi8dw@8%J(vs><1X+d`ERuv zBA--t6Xq$SLUmEq8|K&rllt-eg-tD^tA_B7hR02w$IT9ulwP(L0s3!UINhgTA+Yw?z z7T3gyI8CBD)yu+Vp-~aeuN#Y^HM)RI5YhTiOSG2(a$awFgYBP6)VM#Dl20Xu0rIwK ziMhTWQ<-Ti0!-NWjdy0gHWNJO_VnlM6asw(j-7KH`1^Map+(%GftNd!(p(H9aWev) z;{_ET-JkqodBK&h+l6Uve1bLO1{|aW#Fw>lEl_CwG4X;@K_reuU_>P8MRkm+HuCbo zw%^!qPGE-Zw{zlscH9J^~1gX)JxC0_|OvLahi!`09# zPC-padbs735gF_=UIy+&asa9&5>|cWc~wCrQ34 zL<|`1_w1?5Xe@`2hkqrI$6Qp>{B?_=Y3Gb)B8sU9dd>-3EXVFZX%I-VMBX_3%$c(h z1<`J2)3TMp$$Av7pIF#9JWd+cP4b=d{o6!xFL+uH4^RXFB)9)Vxc(nzA~gSW2%-58 zXAe8T{D;==zkm#CiqR=a8CuFl89GVn5s3wv$&r03stM|mahV3Nzu_c+cl|F<6Tqh3 ze|Vbw<0I&dtS$bR0m-l7`y_5a+o1%QkN!=w?XQ;$82)8FV&o+B)5ZpXrbt`ZngH4l z7XZHUpSVh*@;~+EVIrv;!)z+Hrr{6roz{3$1;rs}%mqskXZwdtFqdrflVOGOeS5d^ z=$L2v@wa0cH#L6AC)M8@9Bp!VUbQ$LZf@}T`hJ4jg%N{5ogXi=AoRol;Z7w!3A%IO zy5oZ3iiEfgJZNi}gdN@%!D?lHkokXhlod#;>^}Ih6Pkg%v#Yd@cbB#exhO6 z4luCN?H=#hf?z=DI8I2!ET;@UfYij_KefFYqQtCxc?@o zV-gZ^{UlSS!fBYlx6*i}CgB%6-a;gln#g65Xv5MFWmRqd_9h^U;%XiZp^rsfPc{Uk zE)sFRAtj#nBY(0&AuI1qRF$~x1tu;QJuC}FlGr?0(LQK-6Y}P24w~9nz#Xc5&WE^I z8RJNnit=aXW_5R)oLo?zlAB*>LfK>-6gw;V5ylW-+92PbXYzfkAnt)Wevgo>n&bgh z{ieUqMR(i>>7@Y(-w{Ckh3kJu?tg~jf8%@q@1U$u)l$O-fPJ!z2Kp%u;RUFAE@yvKn$i9>s2DIGS z#9UF%*04s%T3#=P2zrv&glu6DeJR~)8Ow)bF=16LpOs;uM0gCa1O(gy4RdSVB{E6S3nEDGi3;Z8lZ zGKJ?j4BC z($jRwW+Y;dbrw|XBQyK!&nhIfW7s&S_qQRaxWxe-BFp2q2) zEZu*zYF1AEwk0CAs9BZ<>cfS{S~4yXqF#{}-B_dwcP>nd%E~KoUhXHI-O}$ zEGe^!PAkz&f}vcdPUp4BV%#vG5&~1O4ul|P4Xp7H-V+%jSXfm#L_cC~jod&#Dt2*j zuXK(4(@qZvrMwc*5!-TmAF~zHe!Z_I*AtGs;5) zw(#q;R<|RO6J3`Lz?ZW{TkyoHQYi0|)!lD2ZV#6TshM*D2-#v{)}C}9`d2Qu93lmOV5L4vx{4Q0ICPYry1b1tj<;K8Omjzb->QuMN@!UEn!1ce+E0}!1YSW zbM7_?p@-XSs{BT~2TcI!#oYX6ZI!*pHPRmVk~D)Q@n+G51@r!WtJ1f}pRb8}nrt5j zbaC%H_~M>$#CLF4T@N_H9Ono>*|{sm-u*b@6bnr&B0D*QS2GeeNn{Ga)hKxQ-@BV% zL{}j7M@H*afrJpV3?Z1TmAFEt&xlq|&E40)om#yG2srlitvHZiKD}-k!!<@xZ#8#J zf5L7G&G2;%X2(HvMZQ88q9jDqn;6E`UK1V=$~?P3tr+zV5UUdk zM~2PN$sYHr_p;=HMa_lk17Ee=9IV|OoH*Wsu${TrHVWV9{9N*PObT}loCLPF-6dx8 zZ5o{2rLR}Q}fz$WzgP_{>Oi46e_mf|o4Rmp~NNgp8o1MY-kQFu7!Cn{9h zJaS}6n0Xzv-JeW#FDNpEcoz`nnamhdf`L683|*HJet*iL4^Nq#C$&BJL&Ds=q)Qv2 zKH2T<4=kA^Z|cjU9Yc;rp2R~TDrjNnxN>)8%gx&B*m4O_fStb`WUJyMg)4lEr;01Q{bcWr{Gl}bjn}L);q6AY3m%9a1WZmit!a}~j00l3pZd|WSgaK}kF*)C|-dzoq+|aaJ8lG47Y%_vodoq6h&lB4b?DQ(fqjEll&gs zzRQxkJX0~@fOAKVvEdb+v}MKvN_(qPJ!tG=GQBG3(if(8!euuQ?Inu3Zbdnr-(250 zjYbfeCjDZi+~kH82b-l@PkB8}a!B>NoqE63KIG7V=k4F517WZRZ3_Vv;sMAdBlm|{cB zmBZP$k6UE76Rj~ReDk6piPV$(@X*P7x%<%ikC^h|T9agHa^y^&GM=`rOCQgDzR%AG zwr_NMYZQ$Jk^|TZ^#-LNS_~WhnC+B>8ZXUweK@xLcE~?RhSmVolpG^n5mgb|h{;n* z!a~=Agyh)(FAT)>m~EXBW@7b((g1F&5ix}UT+~M31*#;tGI_;m78k9qGBYZZzH#Y@ z+vKqB~xJB{cRj}qZ{ zxaihBN_WO2K?*tw z_GQS`+Pl>DiX-W`ku*`$eogIpm==b70X{K5cKb91tcQsV(Ym{a zIBaNEFBKtlIaWKd*)zLa-)9Fm4hxm@a&|NE$0yM8@8VThk3zMLXgdMAn))bkYc)b( zOVBP>%cS^}B`sw;c$Z~vIXgU2mTvg?6vwvKaS`w=UO}-d(`jc6`TdvVn#_8Ac;^e( zP`nG(a+29Qjx8SnyoZ)NC)nqExUNbQJrxR1f60w+ zp{>;R#hsw8Pexjd5ugex)u~O^iuI%m2=v=s(WA9iK6SRy;LYET3AM&XzC~eCu}giN zD-+&auW~{o63R2u05Z?6VqydvqrSBp01J1w0rY?jX;TQ9#x)m zE;aAxnI(&&AADdGc=@Gm&BP!qMV1uFD^5+bzM)*mAxM5ivB)7*TFl=w5<$~m>4}C0 zgaRm%rPp58+z&8L6!I0T&Cwx7{9mfW=T;V1u>XQmsg#%Lc z;xmRA44>^QWAPH5?qCq%vBh?fLVmn$ER@aPrO$8Ldlpz0MAaWuUo#W^0jRJKFPNJp4kHV#=~gQ$tmpxs>{- zSU&I;<7HEpUJ?vq zWYoEZ$kR7j22Y*&LX(otkQOKGqWQ!aJAxjz2-7YvwR%HRoxJkB$fI{-5U%WPkl|<6 z%-7CRei$ghZ8LmMgKA+KAh$K2nc%xr^Lws@3z)ivxp#`Dm_55fnb}A0rw)Lv6MhYM7m7u& z{HpOckMHzw^?c}DUWb2s6oTPnlKIfK%+lumwT=_tHbd0nZR;QrDK@wvF316)DxjGHa4LmsS(x z7PxE9#8qua0gxnEKbN6N4oy86VznEk z3auiAy2y-PZa)?UR6O_%s@JzI5HlzFRQva%sMuX0_Dcz96sh!H`n~KrPnRbzGuOH{ zj;>Fyx9eAFi0w4^x->;>;)4gDKTG-SPH_Eyr@%`Debq+oftje8q&^+rpA&vc3N(^Kw`TC}f zsu90nXQTd5iZarnLqlssv%g}ne-GWgH-)E(m5^~Kft6`ZVle5G{+U)<2_?>0zuNAN zN-5Lpv68MCzcm`yUVcD?IVazs-L5@*bncGH`m&uAjU%UxiRaC+QA=JVDJX?*ve4OK zgN%Ot3kdei>~<%!FH&P*#{>O9DvB-;)?agyAq>-dY?vyZswyRhF&!ui56UMaep{%_ zPYj8SfmC0!7Z#7niNhq&V0elya@pT%7@{m!Y zC6b|*=25(DOij`(_^I)1FZ1j~Io~HK$%N!ieu-C=Q))PVS(k`+14ow<=XUVfwr2=% zB~7Mkrn@%&QBb2^y;6eBIz`o;XlH-;R6Fe@7Z5@JIM6!g>GtB~oep#C8#uzAIAdLv zncI|6h7RHFLxl}?-T4&vL|?VAIpk~%<9r0wO%i|@;S?8pWRH#X8<;UB!t6tBoe=%- z19uA}3&`Gn1(tiJKGlBqe|`DPzP=Jr{~q^;aM)$0xemfUb?u_34F@`2{B%o=^#Z4P z_sH*@LvsbDzRm=6nR+ZU$9u+~3rbszt)-_0yT66vm;$&Nswp=A9!*DD$^5-Qe_;H( zQRPwSiXc?8-8b5t*zJ@7u!>?1biw6O%dTJsKNw+h3XqBW-BXegmAoZxB9E}%C4O>4 z3?N_20R-}n2<3Z@b^Umh~RmMa7FH?noe**o-zw#etr{h2V zjTMPDa&v$sj;|){vtw{suU0n~rPQU7a7_|SOPZ;2O$6NyPiNVa=Md1e^jRkeZ*gf6f)OwXv}KCtC5cc9z14jHt^qH4;Dsi@6t z?4T153(|=$RNUN4KcBRwV8NJ!#p?OXvtN=nFOueIEB1EkWwZ6_qlD~94cygpAqj^L zPhvm?oW2})CnbL5pc*wH6YPbGNgBrlDzI_qXJqR~cU%R->H!m7xqV}{!OioA02{lz8s?u?+574{ zD$*AQuj7TYuUv!Oisz~mmw`g;ahkJFSpv7jwzWq>e19s*`+;%6#;@vg%HOX!!@R^} z-z?xIl+4FZtl=YUy#y?imB9k<@q{B(7pI3#r&EG~S47t?DRw~-B$39BIl|*0TZQxQ z6&3Nh%3=3O*CQAbz6%kKmHc7|sYBdDtjIa0@Dh7%$@LYLG+ll=`BseyEM>Fwy&3_i z&?$x_c>k^$Blk*_#p<`Emx$Wn64j_DnQS^#%xL zXP8OKi5+7zifwuVfWm6(#G%b0LJoH9BufPg8@FVEHC1o`Kiv(6CB>YVQs|rG&tcy6 zxAs+N2JP?^kcqqiMk3t*zwPTkGm)T)=}!lMr^vreMK(&vYA8OowRZM(=HhUPjmzSJ z{JM|=W&8**h`*4+Z4y|Qn`G4I7L1oxtV?}!`EtK{C+h=~N*=Y$UJJkS`SRu*U5y~g zs(bAJ=v|JrOz|AGOl5gKem-3Nr2AH2uQ#YMo|$K=D~jQWgNccRX7XcO^P5!jE4NO70(-2!ahH^QNK0Pt^!wpt#Q_FOL(X=+KK1_pU%X!H( zXE7R;5v0*nlZMs`&DIpQ=-)YG2)Z+u=}C=$w4B?fDOkK2DX>FwHC9SBtE@oN??^B& zPQzreDDe5)!sgu3LImb0mP<{J@K;(b?7SxF_hUBH>&@efkT zxlh+yaWO6XQ*h3tAQf$dYKO>nQiN>q40#T=C-8kd8PD7#eUA%_N|MMhb*Jsxxs^n zlT9f344}R2J{rAH{a|^T^eT=rB?L}oj5=Z3yevC6k)Y{yn zfWXX#-ILE&zRb%(UI@_+T404C>bkea_81=5-*Zi(e2nxmfj-gSJK*Q$Eyv-+=@M?a zujYB;WgMG^pTb4eszlYWkSudDS_f`Ma)f@GB&$buhCoRp*)XK##lZue6NG@`dME5l z7-A_RkZ82JH*;5r&pV3Ixa6pI+4Z4i(lemXLiaI9oidp@jm$_z(e4=?d1~8xX%B?X zSN(D^JK^xk`k`<-M0%sG%b%e;KzWLYm~ES_WK?GUxCT} zWadInK;B#gOi)DsFK395fuo6pt)q#pqlFW|phyX@U1n-|JBf z^N1EZ3T&Vs;c`5a$I*21{QL=DuM^mOyWcP7w|^9;qFY`}5$AW6=JNc~{6G1VzicJc zLTo~WTO1~Tox2J3RL>+^0gLg-$&Jv64axQ^ zw;ictI{C7BPlmQ-N@&WA-ew8aXJ|)&fMUma>27Fo`AA4i9YjnsDAUfhxU_T6hv0n{ zYm_XIH_Uc^(4fV$r>gnD&eeJ%ZsI_E;1A9fV?x%NyhqZv$RY9qYYH)9aMLY)z6-rD zfo1I&Woz6i41}GfQY+?#>IV2B*g{_cCSy;B^IN;p`^L}tY378O2P^RklW3bfMvu*T z{4h4fj^16x7UD$X-fkLXv1)0YKEvUy0>+wf8eHblRf#)lyA@}wXbK{L+8eUnDE;eGtFD4VRGiXwvp>s`sE!NUAgZwcS zEnjdq9WQOSLCKc{TPKyv$CF;~^Cr2iDn69ezT-f;2XRWLIDgwp8rd9O4$O;+y7D3{UhfoIT<*a{G-0xP`7eJIY9O4GLF|E0|^QK=C4|m z_RH829w>6Uo-nTtaK9npM@a26ENIUlK{MeO|XZ z?_n`d?(5P0mD~GuE4zZn%+v*-4_h71_jZ&HSchBhbbOn<9Qexe1>)!0OsoNOt;``M z%ttmtlEx%dkCM2(b=S4l#nILNBPW3YZzR}@h`F>~3=8JUa34(HsqRm=GbZiSB)!|! zyXHyar84N@#S`UeV%_J>*y;cCcBIJ|u<2&ddlhoSGq|qjf3*kE{x07e`~1v~&quI_ zftPS?gy~$}`wZnv?(R+zm3{kUfEl}OCjE8?{SN#j^-NmkuH0J%Sb&r-2axg){j9JL z!-C?2R+58rZK^CzUE~BEaW)XmFY3*B5_yusUl?6+9;; zdWSaHSFjvlg)j2<*`HVs_%Rq-+K!U-u)xH)zP<&S#?*s9T^ib77Vpg0>wF$|f=PGG z(Ze-KZ3}wa-1uA-mAPW>N|QM~N~R{)0+WhHcdwSWpF2BiInqp) zLyzGuTzCs$Qc2L&pV;Wu9*FP`BS6K%@NaK@!JlYkv~Ec4{3f<(ufLn^8AH?MbYB_u z)`v2r&<9Z+jX7b%$T&Q^HP>V}hknda>w#;I%OwY091pEsYi!70H+wz?;FGyxJ*w7f zcDODS%i*z<$AV1(0;aKpuPG#_ZCy78o+1G#hP;E z_UhUUZ|OI#k)E>FKOXw?ZwN)6JbqU=WomvLcNOgvZK104BJ3@Xiw-$pyIcUtZ7N=8 zeF#jP2V={d#f-$7kFCQa&g_{rCVCH2A>pdnsY&x-^`P9f20Ei3U%ZaAir8=ka%Jut zNm>_)Q!oo=J39PL5LkBDjNqaGo!-;8X|t8dlx1eojJD7cWBSvy4gIMY?xCid(}g9f z>-%EpRvQ|g>{R08PlY9kI*H4eK@%E0Z9d#(K|1M>ykaXK0$8KnKJHZ|z?!h5-x?uz zw-++o9AJX@|bQ+`S!d`Ff1~$)bHwr>68~IEH4IiV7Q+2ezGMVVdez;bNyuKoZCH2MV zHeZovS|&_A>G!WskoiWI@8!_hX&Y_aWbo=S2bEJE-?_~3v$|pjioI5h3l!ee04DpQ z3KgfJZEyM5*|X2ss%El30h%WM=RW4Diq#>-^5H z`zgx}PqX8!+mrWx(v{8CF~O)GKL?ngbKR00;fYY{`4pILp-AQEgXd3j1_YVBVGI0j zI*pQNdXCaH`E3G4MWh6ZI`fQVRpcN(%Cv{)l{!x-)fom`Xl#R2noyZ5PQ)hE1)?nZ zkQ(2WKK{C(rOOA1s-1kip1NS3kTQDWgR3n?Ol;DRZTwsjp~01A@I$tSMtg3hSacB? zfh@N0sv}w7d;82vf-Ozb~OTbcV-3~Wd#gj>!7>!T3vpN&0JF26-znxld6=Wlu)GPrutQ9dE_kb+Bb@#JTj-biJP3{aZ1xKf7kr){*8TIIR=;7H1$866Ht z&KRlhxtBF%&8wU~;jrCluwUL<;^#~{Vc}o-j0ei)*?1Xo0jr`$cF?RKyQdnTA*yJK zcFg)2S6JL(rxq$We0%i1)i6S1{%g4{U>3C+OLqs<%J- z+`q$d65~dF8C(IXSezEJO17E=UcaWQsF6!an+?RySTG6ytmgP^pGm!F{q=19X_nd> zJ?KrrK*|Y!Xhqv#RXx}U-I)W3pu!CXzHg-JoOK%*<$>WJr>~I-pRf-xj69*N3+bu4 z)#TSIe4ov@gZhQOzl`sDD+Go62{3=X2LH`9u&kMb17ODb#~cB$+5V>qLVCQm{Io8> z0W{9mRCZvPMbO5C9@k1>5aQ!Q=10#c$I_|mr;1RT%(|jDg|J0#%<*ug^*Yl(%BL!q@)BBQOZ#fM(kcz z@ZLoyIB5~aeuj&M*i74{$s@SLW-k9L0mu~{=Eki(_-?H))g`^fqtpdD%Zw45Das{w z3Y6GF*N6dy6Yn?<78;(x+%Cg<+S= zS`RnU1~Jr^FtroYW5y(y3R*e|IQm@8KL(J_(b{29O){;`$~C$mOk)ukeISc%&Jn6L zaY$9rG6Cv7Zwp#oDcq(N+ZzpUiN_#|-0I4*R&&3K^cs%}V|w3XtZ^mWP4M{%(XLv44wgpSFS;jLxXTJ`>D2K zqMmUzFMas8TK$Rwm_)*rQB1QtpI$;$Gc`GX5->teLM}|ABR(_2_hjD>fwDa|$h+?I zf(CF5@yNzqFmz9{s}VRPO>)~f<)T65W7Ndv&BDPZ@_~xCVVp$TSY4sF-+EhaQou#} zF>@T)nMwnX35UvK5+pzS+Twx)7IDR$ST)Gw(H&v4*$x7clg8)09zLX3E z53dvEXWzlF5!i~rnQlPILgV2TP>39Vs+W&HK7`RfED4_W5XMggmenKjStcB=T&o1B ze5^CnVOL&Qt{m3c%69~d)e%)6XBKA#!4xs&AT>q2MW)sR{f@5EB|61?AwqTaA{9hk zN2Nm&pa&EKdcbeZk^gP_E_(Jxf14whDIdup0~T)e+D%8!RjAos>k#^gO(@W;1BK8? zj3jU=Gc29n^+y`$_03<8=RS&`K|O3C$cjXe@c97Z!ZZ^!rcy*VGsnh8k{t?Mz8*h4 zTs}hhxRsJe^}xY#Rev`V%FRs0B4f-agb?nn0Y_z~GG--VDAd;xjV4rgNR>UFkxnpR z3QyFUq+kK9STfEw)(q^|ay9lmM=*{j{K{Y7a;Syxh+eKuLGpgop5~dZySvENwZWsj zE6cLU$()T8guBdm7De85wqW4RV3}QWS0L#l!KVRdOs0=IcL@iUEnkV=P~R^XwzM5_ z6fD#-waKbb)}X*QI}s*rlyx*4w>v7V63npIFw(W$u*~FJJUsYVNvlUv@Qby*iepiP z&-5lmn|L4?WZkOV+-o{34Li7S&NP*Gtwnjm8i#bPxRUpAr_z;%~;*Co_ zIrEI$1Mgc1i9_)6tE${0N$|Q54$W^#~qUwDfHwz~svSCeQvm%fdfQ{-u{9UfBZR@W=3yo1awR z!r00gfeBGm(T#iM_eR84?6cvkSWG1TgvpVZa#Abt2h69}Z8u=yBthd(6r1jI;N+<& zv1PlhJSRIXiC6QpA2WfZT&am8I5GVn7=7HJV3@M@Bpk%8e68BR^gUptK<#I2t+u*plMLA@K47g0GQn9aP^qVlsFdyI+}7j6$gp{T zo61MQUbOm^V&cAw7G6l27cX07pm3=`8g}{&eEyWQ$zpm_<;%BdJAKo-4VD^>b#*ym z1SimBN=J%o_{fp>SuWBup#iesHD^^ul>05TU5TPW584y3kE|sd7=mH*Wp@<;8oovr z-l46S@4{&9Y3G*{RN2?mTW+_sH_#g_z%XF}i4AF?Dlq4c7j7yO(urACH9H@7NiC@t zIQv|rL?qX$)u-PFl)1|B1^JSklX)h4!GckG*A8?LHl znKn0(nuCR1pke31Vdc1FLHd5gu~Xk<;WBHCO5+VajevYbd~vuXU)S^cxKtZYrnrb{@b z7^OAJI}##O0Te&zXr3E3$)KYFV-;g^(&yavJo!Mr8<4x)P#3mWh%jc(cw_0!yBWj0 zE>91SkFe{n-+35T?sxYV1jhth1sxVCO{Fm!7Q0)4*CSqo3b#?lH(*|H3$2~Yi6r+L zFYhR%T9}<|}VrAZye^=)r%tKYclC})Jp?V4ga<`K^r-X9@}ef zukBF5X>;?T4-~1#g1fZNww2>YJS4Ccb`(j%Pb<5Df>yp69(6aZ1TdE}Dm?|uMrfP~ zxb)`NNK>|L;VeKoBni$52X2_&DKntx0KSksp>%M!PFRT;L$Ts|6tYB(r0=`v4if_n zOo&u@o4^7L8I7;JJ8va@{lCN+dOrIipzMl)-rPVo)UeUyHH64h(&=&b=8U4#I2h4* z3GIdVerfLwBkq#miBPFZNGL0OfHOxJGTO7$8@r4qr+Mu~CZcx*_Sd0MeA4(Z1~3$+ z0gl-*|Nc<;huikw!cdBUZ$99?Pb1XD)oKqVQl$7PFVY%OZjy)eVIdR0LWTu@hC5PA zuyjdX>D|k{0ey-WA(-reIL!`sDWDcw0=;qAUFCK-=G`6pSDM~epEkb`lxM|}85Bed zss}kxDorH?=j#!|!5NtqPtg?Es%B_U*}m%r3F5d;g>9_meTvqEcS)Ty-dnPENY?AH z2(H_W`K;gU+%UwTdB{7TN@>MNVy+|1U^s87T6$9N9PpfQ!Xf1R{oC@F%{JOCieyNa zBOk%FH*nlW6dpTGT@{=>kf28z78z?bDSS2@UB%pW%I6xi$83gS?8^uN?>HjJUnLhn zzFQDn+Q^)D3%d(PlYR^+5USX+a2)^&nn#~<t#eax_u++( zgFCsomyIwE92)blFNWNjX_vt#k6g0IQOyd9zK(AN@jN!bKF(pt#`Q_+$jK$o&dM@?PRP3E3;>;G9QZ^rtef`z79JM40h~g@!=?n575z1`B~jm0qv# z$xMVR!!1fq23naty&0b13HZlMU~+C<;m}d>b+{PuuI%KUMuQ&sru7uR)O2EU<_QMe zQGxF86yFQ$Y@decF018zJ+aNEWHXZ_*^(*75h~4|yrvk8m1ABlQ7m?|!05XdVc-~# zR@>eH6ITY9`2WWQ_t!fU=}O}O$pe%p<0hkhjjZpvy0sx{+4%!+1t2L2W5~#4u^2m} z_N*vknGBnyo$GtN!Q@tX7Q)aaSQs-NbHi=wP~&r0@tjvb-mbc@wYYtL*Y5cMn-$;$ z12v*qd7)2aqu=T0E85D#R+U#Txk#2E8;1d27gy3{6{OZyIj*bJB0R|ORHsIpfR?o ztm8HdaPM%qrpmd8$Sf5bf}0j#HXx?PSJH|`bmxe}LdSM3`ZtvpB5kpqA=HmAQHoKv zM88O-cp|Kuy9cJc#&PqK;JCUAuCgziIPR<}4c^g_&o=k#2s!l}SEV|jJ7*t;Z3Jvj zkX$Ksqv}cHdmhLKXk^U$n`pc;AX@ARrFzwtF)U0W^jd!21c3$tbFYrJDf1-coq-x6 z?DjTtt{nZ>h{e2g3tfGa&d>_Z;KeN6&r~f|1~NKR7{(BHj}9AE#$U59X6m-+Cx)Oy z@lLc+@yL2ZpDMtfGaBADtrbWaoqWX&4gU|_Jq(G%!ue69mB%Y@P05?@7u+UeX=hkgUw|I?Dcdjue2B= zwq6;V@dpJX@&$`Wr*&ft!UDuwb>nKxVkF?EtWe*GeC7V@;7yBa>IVU^>}J5`8`JL$ z-hW%K#VfA;5FUM!qeOvm=vY=_L1xEcVEg95j3G;sk`!eHWsKn7EYRH)r|Gand&hsf z8Air;192mcId1jE&>z%nDg*yI?Zjg@ZE4Nh>j~Hvs9y|giH&JtEXRBc)0t+5mIX3d zHRB>@K0v9}PKbfKbAq(gnRg#gC;Yzrj^d8bU1~*_-~lhvwpl2EKuG$xyn)V^s#pDU#)$nM})3mrm7D4QG7 zF)hDF!EEahR1CDG&yPYFj{WYlP^hzR^w%@~Fme0qF|mvS6?FT`X$#@zoYKHMr%IaZT*dKvjl3uv$4V z8M7cGI8~L5z+#$_>7Fs=CGOXGO@>s)5iz8gj-ExVV_ytgTm=2~U<%=Pk>c}*DOIB< zR>s_lBNVo6OAw_`HJ*9kWulw)lsAvsUHdw?F0wyn`fqOahRv&jLdz246#N zWD|uD<>xD-XarX4&XXu^?HLB8$i%%neWxXX`jHCV%jbE$Z@w!6o4u*Bg*O=*QHa!T z>8Gf4n07lEQy~gIOhABnn0(sjnYs%rmcABue;!G9wPxFf4EzBKIPT0lN|Y&m_{3C zicNUtWo?q7#(T#rw8GR&eZ0nJPkBv^?X-fgg^$h8EM2Q?v zma4}Z>Pb48ws!^)Q8iV(0X2tsU5ht(+qhg&QADYJGR#kiO!uIHo?`6xetcJ`g?ln3 zNV-5KK;EQuhEGyjl(*ChG9fu8c61F~(mIBc8}qg9L_}R}w=L$EEbB%bA3K4PVWO(* zJ`SW3ub(*SHiEYa3@LRwZ0E;z@O#)6r@V2G4i9?@OTswuF^;zHL4~qPoLLk##aFQZ zPMAxiwjkg0rJ^YYNm=Ea1U(&u7Iq%NepnJ)0xmz$66f1l2z-9U(IREk?s$P+3^9;& z1BrXCFy+3J@Bqe4+Az8A-6$Un(9G2y48}HDl-)k?An98g+wqn@yf{@Am|uf#f&>KA zNAw4$3Hh8di73T^GC&3eyGqE# z_zub>B?BpZ%9)|MR4B>O^;9h?QxTO6Q7A1t(YGq`T;a1kIl5fcTynQ@UwUt$x!-=3 zoID}}Pjp(K@$yaCTDbvifk-h%CYqCjWH`{?7aML6i@FaJK^Mkv8#34*y^~ zTaoKXcdF=v`W8;QqnS1r=Hc9zZk^;gmMgQg)PAnreWi{dxmzBgt!OUPvrjx@yM8=$ z+sxa{8e2r^@TVB~A7{;YK29%GOq1Z9Y%%X#gWk%Zgi3O0cgK2a(GZ&qnuLbST%NI* z4o-V|)b%ktLNkPIBSlC%73*KwCD-hHhZ+clzEy(ur`q6FQLJ}q;s>tz9}ifqqmHQ%8yEX6L{6kVmMPlj%{_|b zR3W#Vv-t%3*FL@e6qPHrWww7b2kK!m=W}lv zpLOh@bA-Q4k6|ffaG9z0KzMH{#&nW$`k5}tGR8;nZY!tgNI7QnK4OK4dPdoDW`ns< z+Y#t~zq55Y>eLX*HJ$V}Ywqa=>F%ZOXl*@r`&!Hh^~t^l%z74h!Oh;n7KU3@Yi5@eW$iQF zPgLf$>dhr8sdlEQIs+_J`qa&(+=B*6SWc~9pi-9mbTt>kT|}$8calGc9cB_TFRK_a zt2HnoS(TWFrO*XqSFG-05hgQ`J#-!Y*kA#(%XYw3BsDOK|g|0 zrAfbD<<-VIbIyd_ZjunW89pid9p*Tg)9G9R+)?u`%3 zaa~Z}jH8%SSkvG}2o0`fwlGZK$2z_fp(IL zEOr17wHC;xYzTEQ`hlfZ1>7K~$f9``ZehVJsEJ_4AaG0JwsqM$j49eJ1uH>0y1W52 zD>rCBAWaze8^?g5otHfZ3o&zCkbTDMQs22*y<_8)6f430)AWSe?CB_4$Hky&#;u0; z#}oarTU^(560Z^KK9N{?YLlQ;r^NTC3oX7X<>4Uf8QhnsGe2NsKwMUgt%{?rHtIlS zq*fkqt#_`i3zhGKL#mM(4QWuJ#Ah16eialpWN09r?m`mVy*yJmwx>k(&Dh~HYM5*) zw*%SqMNGC}77Cca*l{ul_3rSHL(pgYH`#lUbxU$L4HY?{uZpRfX75p-dSkpHeTi+XYx+Fg+FMK5fE!+HXt zVK}S11sVVS8@_9x*AQ&3*_amnWOkd}dlWD(W-UwW)@@T+!TXE_o7s{6f``$4SnrHZ z@m8r}`H3@2l8b|Ru5b=C)IB5m?qS;!DyCiAJ2Q6<;GS^SfYOE|Y5i@sK|=gPq5b*C z*#W9~lq{{^(A3$tFg|@+aJ}6e-2q?gf`Dy{Z`VDwdJy%u+2sZ@C6zYFhYIbDHv(T9 zgb3WD^FR423}nShKg}c^++*hUp(=DV-biAYg+o>)bvSoYVrIQN=VGB#9UHb*LWudw z3Bh}C-Tju&{{&r_r^5x~fq>uewA*7~oqn1ZoWJX%xkt}>1!TP?1pE-2KmJw)83++_ zJE>P&`o?;#!myuzvN7CeAM6IX4^Hi5nf-8He(f2{Ccrb@OJxa4wqw|2=ZDg1o$}um zF*S=K#73<-nOMBAd=V+w_7X3s{Xd4j%G@x4QXf_<4C(YlvOC_d z+TRH8_{_MtzIy}ie}C%+nOxp-0Srv3qD2D(%SUL&(T5qq>ZP#P?n^{kCI+%tmrRJ# ztc}Z2su;*&PVauu%UsZJi~?cMYYYiFF{QoiM?_#*s}zbx{~@{E?6jT)+x**zEe8@k zo2Eu6v6+QzDIB?YidBl*a(G{u3)t3CFJMba3Cj^?rTAvFbSnAS7m2rR?>=|XX(q|*F9dhu}Baeu8>^E=z-e8#c%ibao^HEw(LjtmPHC8Kwa6j z*k+ZEbA3`)=YKyz>+Rq4)g&8jh_?b0`7j3BbZfn-($O}Vp9rL>Ljd(*ouxeQ!ZAPh znI*7fk7e$*?_=^&H$^~Dn-sh!dPaU8D*PPqr4oak5k!r#CH)cAI}TTrhGpwMtkM;` z%PjwYWAYK#Ns&n>bn zX_KQzo6E~;^K)uMIbl*N90{AmBzx0!m7RJp&m%`mXX(a(!cfv^yeb%Utc~NAS)dW?$B!qu zvLcP6jQ_>BSK$)&Q^gXh;s6rMc~GgXW{Y+pC2SNr6uU^5B*a(hp>4K=Ft2j9qLDG@ zP~O50IS?4-sYcrj;-tl#=<=~k!D!7Sc)0J|gm&x(dn589rfAh9<5H}h z_Hzt`i-P_A!g1>Hb;XQ{vaBY~OVu1$l01$M;>g2q;n^??;#-!=tc^0FL1Hfp)cT2E zLABq^ScK-B2|jS$NA!l3rCbznaLh*mm#R-}y#&>|j>*!HzM>wT z)^S}cbDNziBK2VuGHFV`*H58@)CmC@bgwI5F5FhR{#;(-eQRbXpTZMIBlYGr#l+@fe67mq)c2Gp7>yIGDMKr* zESnf-KwCl*WEw#yz?CJrP>vZ$41LBiuL)Y4_XtB4#1Wq(9RVUM@(y$Wn5Zm{G7*QSL{@HWXGGP0uK??ZQ% zgB}|_wr7ULO(`7*B~{rOy#opm@)KY04;h_fMSAdj&I$esL6V_Gl@a+CXf1*zl5J9{ z$CXxF4t)|$Ls~WJgZGjdwUZ*Vwk)k9vbsc-iikQkuk_Ic64-uoO@tSC@im1A{#%Ij z9EOiskRS8qG9@vi)mnFE}h>td{W=7K;Nl)@iZh($9#LejWBiH&(@%iQF z&q``C*9x$2K$@bx<=M~i_f?*#SNia$k2qtVknVXUDyRrf7!RwZNi?cM{oibq*8 z6$mnSX9Uu*rGuL(?j2l^?BfWJ@du(dPMDXZTnbuS=cr0mOiyP`XZg3z1*bp0ntPAb zZgI=`9-J2;{+zqAhf(qp$At-D(jD|}W3HoJ)EZYjL2l=r0zNN9>NPo|m;!HRbQxPu ztIreEdq!U_2Sy^yiugvt0!tuB%k?H~DI6&fI$AI-h;;RBSbaNswdLIoef*e5(p0eK z?8cxfSwHO7nyj{#>`jr{CFLW^?6| zt&U5&4dJ;7W1h+0)mb6VQ=NjOeAj%esVQnn90T*116E07eFb*#e!nFs6s7HI(mp9C zb1ZnD?vtG=g~bd|H_{acWov+73tK8o;3#yZf<#DoJH_C(K7;y)kvU7c#;0Y_M5iff zff_o3w?|$+1vj2@7}MgHy3PS)2r}{*Jf7ba+AAtIILiD`K2>Tgv`M*zUh7Rk&+B#^ zjb9#kI)0GeGa(|_&N7YT4Rh9k0?%I|*(a@;4(0KapY1oZs)g7fl%~UN$z!fHOjpbP zI9IYGb(8GdHM~s!MllxHbfzhSw+0bg6sd$2gfcmTizl#GR}KM__mGKe zgaLd)6CN_;>V@?{AJ#TJ-ly(PxZG;p;muE8H%6>(XkXB+N%3#1?)5)#JqF18Nh7Vo z=jd}#>Wa<-C6O9B5Z*JshiPGzXiskwwjt(OD>MUYCTG0o4!F9W37ws|r080aW;GO! zgQ$iB^TLvUYi0*Ku>jui%-0%L#k&5fkK|LVneQsXUNGdXmRGWu2)`K8&8_+!6pQVo zWgEoes+jfRA=q7!6tiRsr>PaMcf!>9E|9Y396f{axhrw+7H?iY9sTf!yWK?7YzXZc zdDV_&<5qXcTZ?U4t=`D0$;On^GpnTvbP@E8^&|Bo_SIK${#SP# zRNfIzdGAlU>wwXR_xL-AA(jKj)AzF~_PqV)g6S!~p`xsUjST0>hYmo<6B>$F zM2|lpOqL5oyE{jS6PA!Ggx%a1)fQFKMgwK^ZOyDo3o3EMY%j%}FMZzq_*Q~udQy0! z8!APDZPbe$=)TWOW0@r1gx+Zm0_7%e>pCw~iK;nX=U4#g)hY}u4*e_(@EZT5=^Zn{ zqi~A6x33jn&hVZM1<{k7JA(^txIGLr?-&Q;g6R0xCrP1u(>M(AS;ka<*w?1xg5DK= z&gh38`F_sq@BxTaJBG8NSBw3GWH>&nTYr%j0nO^hnIyjWuG)gUq|r!J72s( zQ9I@nvYuyFQo-PsJ2RoUs3|4{4-GKi9^konDkbp@DMbs%5!G&}_@IxTvl79r$-W41 zt_i!NF7ldQ`}Lbl=#)J)_+K?THK83jVPpn4^DmC)wBntMn(_xdq?8(S6iNo;9g zN~B7;KXQdkd72}^h%<;}!nG)Di%b@0iPBEeRs$N@f=E8fByMuxgQk>p_C#QQK3GbE zCv%u@9t#v1e**i>*%-D>%c<(?Hg0At>A40*dS-wu-!=EHhe_iU|I>XxKgbQks(co5 z5G=Fr>u|Jfg#s9om6OoCA9-O|`7!=+YxIkjG+ zffqf&RDupSTdt835F7DMe8otTHPoN3V<6596(TG_gTl=JoYeEwZnoGo5X!+$ffZV@ zDLdVsCNdn6Q@O4t)Og`oC4cg!)L3z+vo9UUA3iFdHbq*a6GF;N)lwR_K6F-e(;>GO z-bAVba<3J;j;%8?0uZVAQF3o&jxw#1RhswRl-S*vM2Jihn5^sgsc~`GF6#l*nXJ(J zp)^%#6D4VM3!BfqJ85JALb0+?gq{@vS6nAJ26bj0W#RIL7d3+l(j<~ua2qJN0nX1$(SFqy{@V+=c{!kMRYGfd7BHFiEr%ruyW%=$6 zQk=9hK*=bgE3XJ9$3GU|kxAt&%1HGSyhj6U78jGLb6~S2jnmeJ(FAzd>CGi@eZ2GR9Z=FBTx(oWXf_9$H9g-`s$ToG z)}YDsG?MJ*vC9lB_>2uon|!}PLw!9kM;GWmmCyE+y2S>8f+GL~=~(@l%UbDr$?ri;;(F=k=*47=H%>sp0WgcIG-(6_f`^{)97RwjQx#qX(tV@lyvVh*mp} zwEd!O<_PrY=6P4m53S%Gio5jHQK%#9aek-|eyZbSivBL5e7Wn1H>km46@HX}+#W!; zkE|+24`Q9pr#Z0^{DxfkuD z8)zt4=Tbp!2`)r=z$+QuW@98LOha{ww$4yU>uz$Xty02DDL5XIWhXB$NAtevCg<@|3-I0P~L}_bb%T11E z!!?^hhf2X#8Xw_Q)tua0L_7)&7Xiv&EAW)C{L9|c9l?AsTj`G*LXum)aKfQ(9~K`5 z!{e5iW-v+@?CeHO$Tfig{W$$Y@NFkXxvD_@P4JjUi#H@PyYrQ@UCL>BQ8A~gmYIza zD&K10#KEnJT7%q4V8xqrGIYcwBK7ZWX|DN*w5!Sou$%+zoOj0BRgPO+(#HZAyLMku zcsMg}<35zF2^PijkGe2zyEA^cX9&}-tiq<>^lAx!)ghD2<*`e9^+jSsFPt!_a57B% zl<}!QiFA`A^0iIO4YF&TGhSDJdIh22tH@1^b%~FNqFqo!&}+wIdGec*QfW9IF+v`G zDgkodO~hB^j$?ri;nHn^>7N}C3CVC7sd^e-Kl_whz=uOl@h)z09H)G{UWWW&_thBc zd4n5}b!cgito~X~yie;XnAndu_=~X6_oRs9_YfaE?%GlpoY*o~k6M~?oJvj?hSJ-2 zZ8o1Q_*U-IhxUYVI7#+I6HpUP%5V)Qx=B3KoSf58}Y>=eg11-2R9FpkCuYz4k^6cz^#;i3F~njn~HzaRt9iZDwH=&|*>kyxDeYO<*( z3uEQ6%@CA^Od3_;R7@r<(T%e+_q2q49#sD>iUzJ!&zG>9Qj>eQ@vAr9R?c^qv1KLr zO-z+RS|Ll63iVnS!9AdlyYKg`8F{-2Z)sNCBI`TO)9&eSj*m7eJQpYnK;7F_WQ5y> zg(Gu`gh?SB&bwg^R`{U~#p{V(<11@#-v`0kw zS}1}P=-ISGq3A7dN6(!;c2)-RZq{~N< z^hi$UyiY&zSmR`FfA)BOrHe>SY53-if()Ub5W*cpX3kDfXsRSlUX)KpA1w`;ou=2x zrv~cw>+R~i&9+boXe9R$OFLD;g6iR`q}A^MMXCV@wA6b=(B1kv!yC}XO8J~`yjxIutyy~zx2%eY<~?a{>9C8s#6}rYw!ms^%_KhHfD!J- z?H9LAU1zWt)cuWY-lAaQ9aI0#rE>G6u8Q_sD;8coO(i-rTN_2JHw;PiX^A3ua<4_w zczqpH(s)!ztX_`}}4<`zQ0^u!NRB;VLWoI-r? zyDHMQOJeaeFH*|Qyy-6z!b8TLOL55nt*$Iq~D4U!4026J)jY0Gw-u0i0{)`b96Ww=p*|aQq!z-}D%1`7QyJz;Q58 z5fA=1-8qLHpjgOGTf_?C)Hx&=*TUQhj8?(0AW+Xzs$_HzubwEjP>LBBM7C&-_tQAn zE}RQ&PUtIuuBtQz(6HSszgESIQwAU5I75CxMuhehlTfvA36N22N~>H(B5cP4*DkkK zpJyM_kmed`H;@uJUl`fTz<3?0@z$-bFzLWy=`3(X<-0HUqC_S&?M)V?zfYibjfG+m zv4OpljN0XmiK)l*yiia;gn8LzhuFxK`ra4ZGLgOHy|Isbr1LU2%cOD0bKsFkXOV%C zI8?#!K786~<-eQ@;i4c4=J8z&(D#;_jktnB$1N{g2zC5!e4s-mecdpN3%yob0H>zB zdWxmeiW{E0Y{r1c=sjQo*VX9_A7RVkpY8&oQMJaQ#9(sFkA?Z>La$&fHQ6dIeC&wV zKVw7~8cgvsvI8zm0b1d!+%RMhs9{E}j~f>n-|WC?J%y*=?MVTrWQY!b*fR%CNfxDs z`gH3;UUc~)SS1#SJNd^ueE^JZoPU3(FH^DoY3=etfipd3SgKn9C1`x1#HzM#&U{vM znNS@g9nTmE^yyH@gjuQq!{s*BfM&#kVy&P&amg3`fOMwi`)t`byQg$C|MNzHXI zC-kyC&R7IYDGNvxI8Qtar{_(-DvIycD=DjTQ?Kf>K71BV!6S3mvf9Z?xUy-7Zc{)2 zqsdHij`eGfhkn+gCG9LaF<+FKn0ALs2+qrOg<;?iV>z4ESjkk#@ecR&0)S;NloZuh zgDQ933dA(L+K)0w4qd*Uy3hxYc(uvoxf&H!?6X zvvvHlyuCCn)!4}RIrXTl6m2!@B=a0IC}4pM0h#2Drico75Fi==`1=(w3J{=ve*y>C z-oFY!!0knm6;%?Xm6Q{sfBBdwzk$e)nyCP;A3yeI`Jo&8e~-xu%1MfeDk{;*ioHbm z@x*_K0muFRRMG(VHuffeFUrUL)}YP{~<93;jqc_Osvt`tC0Pgludae<=Rj%IcX}10pJa>ioZ~o2j3naV`LF z7H|>�A``0fKpc0WAU$bg;D1GyIQa;7hdW#MKpuc+fPkN63DB8-QCon}w55{+ zK*~kT%+g5EzyQD?t7onEf4S{n5`Y%HU(o_IxB{TT|7ske_`f6&x7P#Y(^Lk?K1$eF z8Ohk#SUB1Kx@itd&0`AyGX5-pngUK={i!e#{R8yBlYsrOyWkeC%j+RF5iuzNd@qNfB>rpz#I8f@s{`{nv9Lfe|_68v(EoSLz4a_*l*>a ze`!-MGn)To!IAynEWd7smziIGVoE6e67%Kc<1cw&U)K0#-o>Bj6zac3|F@C;A`9b7 z=$C2lenNw4{S)+GliV}2G}0N|fG z)sG;wmk+am&9E z{i*){Mdkk`{7ZrQpYTT3{{;VHviuVEr7rtV*j}4|g8j3f;U(rv3E-cYWBU$VtD_%M1M5Tztu!v61)^^{7FFK`5OfPAl>+q z>7}IGPbO2}-(dPJfwz~OFNL~(a)Jl^2IoJ?cDeQ`pGlj`8S@I)6PGc(f|02zx2HPq$%$HzbV~+ v^TYh7&j0bc{Ml*p!|U?1+ylV=n-AuVG#FqV^dowa3FsZ*6oN|6kH7vOrq diff --git a/build/android/patches/irrlicht-back_button.patch b/build/android/patches/irrlicht-back_button.patch deleted file mode 100644 index e17b81347..000000000 --- a/build/android/patches/irrlicht-back_button.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp.orig 2015-08-29 15:43:09.000000000 +0300 -+++ irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp 2016-05-13 21:36:22.880388505 +0300 -@@ -486,7 +486,7 @@ - event.KeyInput.Char = 0; - } - -- device->postEventFromUser(event); -+ status = device->postEventFromUser(event); - } - break; - default: -@@ -543,7 +543,7 @@ - KeyMap[1] = KEY_LBUTTON; // AKEYCODE_SOFT_LEFT - KeyMap[2] = KEY_RBUTTON; // AKEYCODE_SOFT_RIGHT - KeyMap[3] = KEY_HOME; // AKEYCODE_HOME -- KeyMap[4] = KEY_BACK; // AKEYCODE_BACK -+ KeyMap[4] = KEY_CANCEL; // AKEYCODE_BACK - KeyMap[5] = KEY_UNKNOWN; // AKEYCODE_CALL - KeyMap[6] = KEY_UNKNOWN; // AKEYCODE_ENDCALL - KeyMap[7] = KEY_KEY_0; // AKEYCODE_0 diff --git a/build/android/patches/irrlicht-native_activity.patch b/build/android/patches/irrlicht-native_activity.patch deleted file mode 100644 index a9d2610c3..000000000 --- a/build/android/patches/irrlicht-native_activity.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- irrlicht/source/Irrlicht/CEGLManager.cpp.orig 2018-09-11 18:19:51.453403631 +0300 -+++ irrlicht/source/Irrlicht/CEGLManager.cpp 2018-09-11 18:36:24.603471869 +0300 -@@ -9,6 +9,10 @@ - #include "irrString.h" - #include "os.h" - -+#if defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) -+#include -+#endif -+ - namespace irr - { - namespace video diff --git a/build/android/patches/irrlicht-texturehack.patch b/build/android/patches/irrlicht-texturehack.patch deleted file mode 100644 index a458ede72..000000000 --- a/build/android/patches/irrlicht-texturehack.patch +++ /dev/null @@ -1,240 +0,0 @@ ---- irrlicht/source/Irrlicht/COGLESTexture.cpp.orig 2014-06-22 17:01:13.266568869 +0200 -+++ irrlicht/source/Irrlicht/COGLESTexture.cpp 2014-06-22 17:03:59.298572810 +0200 -@@ -366,112 +366,140 @@ - void(*convert)(const void*, s32, void*) = 0; - getFormatParameters(ColorFormat, InternalFormat, filtering, PixelFormat, PixelType, convert); - -- // make sure we don't change the internal format of existing images -- if (!newTexture) -- InternalFormat = oldInternalFormat; -- -- Driver->setActiveTexture(0, this); -- -- if (Driver->testGLError()) -- os::Printer::log("Could not bind Texture", ELL_ERROR); -- -- // mipmap handling for main texture -- if (!level && newTexture) -- { -- // auto generate if possible and no mipmap data is given -- if (!IsCompressed && HasMipMaps && !mipmapData && Driver->queryFeature(EVDF_MIP_MAP_AUTO_UPDATE)) -- { -- if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED)) -- glHint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST); -- else if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY)) -- glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST); -- else -- glHint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE); -+ bool retry = false; -+ -+ do { -+ if (retry) { -+ InternalFormat = GL_RGBA; -+ PixelFormat = GL_RGBA; -+ convert = CColorConverter::convert_A8R8G8B8toA8B8G8R8; -+ } -+ // make sure we don't change the internal format of existing images -+ if (!newTexture) -+ InternalFormat = oldInternalFormat; - -- glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); -- AutomaticMipmapUpdate=true; -- } -+ Driver->setActiveTexture(0, this); - -- // enable bilinear filter without mipmaps -- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering); -- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering); -- } -+ if (Driver->testGLError()) -+ os::Printer::log("Could not bind Texture", ELL_ERROR); - -- // now get image data and upload to GPU -+ // mipmap handling for main texture -+ if (!level && newTexture) -+ { -+ // auto generate if possible and no mipmap data is given -+ if (!IsCompressed && HasMipMaps && !mipmapData && Driver->queryFeature(EVDF_MIP_MAP_AUTO_UPDATE)) -+ { -+ if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED)) -+ glHint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST); -+ else if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY)) -+ glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST); -+ else -+ glHint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE); -+ -+ glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); -+ AutomaticMipmapUpdate=true; -+ } -+ -+ // enable bilinear filter without mipmaps -+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering); -+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering); -+ } - -- u32 compressedImageSize = IImage::getCompressedImageSize(ColorFormat, image->getDimension().Width, image->getDimension().Height); -+ // now get image data and upload to GPU - -- void* source = image->lock(); -+ u32 compressedImageSize = IImage::getCompressedImageSize(ColorFormat, image->getDimension().Width, image->getDimension().Height); - -- IImage* tmpImage = 0; -+ void* source = image->lock(); - -- if (convert) -- { -- tmpImage = new CImage(image->getColorFormat(), image->getDimension()); -- void* dest = tmpImage->lock(); -- convert(source, image->getDimension().getArea(), dest); -- image->unlock(); -- source = dest; -- } -+ IImage* tmpImage = 0; - -- if (newTexture) -- { -- if (IsCompressed) -+ if (convert) - { -- glCompressedTexImage2D(GL_TEXTURE_2D, 0, InternalFormat, image->getDimension().Width, -- image->getDimension().Height, 0, compressedImageSize, source); -+ tmpImage = new CImage(image->getColorFormat(), image->getDimension()); -+ void* dest = tmpImage->lock(); -+ convert(source, image->getDimension().getArea(), dest); -+ image->unlock(); -+ source = dest; - } -- else -- glTexImage2D(GL_TEXTURE_2D, level, InternalFormat, image->getDimension().Width, -- image->getDimension().Height, 0, PixelFormat, PixelType, source); -- } -- else -- { -- if (IsCompressed) -+ -+ if (newTexture) - { -- glCompressedTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width, -- image->getDimension().Height, PixelFormat, compressedImageSize, source); -+ if (IsCompressed) -+ { -+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, InternalFormat, image->getDimension().Width, -+ image->getDimension().Height, 0, compressedImageSize, source); -+ } -+ else -+ glTexImage2D(GL_TEXTURE_2D, level, InternalFormat, image->getDimension().Width, -+ image->getDimension().Height, 0, PixelFormat, PixelType, source); - } - else -- glTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width, -- image->getDimension().Height, PixelFormat, PixelType, source); -- } -- -- if (convert) -- { -- tmpImage->unlock(); -- tmpImage->drop(); -- } -- else -- image->unlock(); -- -- if (!level && newTexture) -- { -- if (IsCompressed && !mipmapData) - { -- if (image->hasMipMaps()) -- mipmapData = static_cast(image->lock())+compressedImageSize; -+ if (IsCompressed) -+ { -+ glCompressedTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width, -+ image->getDimension().Height, PixelFormat, compressedImageSize, source); -+ } - else -- HasMipMaps = false; -+ glTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width, -+ image->getDimension().Height, PixelFormat, PixelType, source); - } - -- regenerateMipMapLevels(mipmapData); -- -- if (HasMipMaps) // might have changed in regenerateMipMapLevels -+ if (convert) - { -- // enable bilinear mipmap filter -- GLint filteringMipMaps = GL_LINEAR_MIPMAP_NEAREST; -- -- if (filtering != GL_LINEAR) -- filteringMipMaps = GL_NEAREST_MIPMAP_NEAREST; -+ tmpImage->unlock(); -+ tmpImage->drop(); -+ } -+ else -+ image->unlock(); -+ -+ if (glGetError() != GL_NO_ERROR) { -+ static bool warned = false; -+ if ((!retry) && (ColorFormat == ECF_A8R8G8B8)) { -+ -+ if (!warned) { -+ os::Printer::log("Your driver claims to support GL_BGRA but fails on trying to upload a texture, converting to GL_RGBA and trying again", ELL_ERROR); -+ warned = true; -+ } -+ } -+ else if (retry) { -+ os::Printer::log("Neither uploading texture as GL_BGRA nor, converted one using GL_RGBA succeeded", ELL_ERROR); -+ } -+ retry = !retry; -+ continue; -+ } else { -+ retry = false; -+ } - -- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filteringMipMaps); -- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering); -+ if (!level && newTexture) -+ { -+ if (IsCompressed && !mipmapData) -+ { -+ if (image->hasMipMaps()) -+ mipmapData = static_cast(image->lock())+compressedImageSize; -+ else -+ HasMipMaps = false; -+ } -+ -+ regenerateMipMapLevels(mipmapData); -+ -+ if (HasMipMaps) // might have changed in regenerateMipMapLevels -+ { -+ // enable bilinear mipmap filter -+ GLint filteringMipMaps = GL_LINEAR_MIPMAP_NEAREST; -+ -+ if (filtering != GL_LINEAR) -+ filteringMipMaps = GL_NEAREST_MIPMAP_NEAREST; -+ -+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filteringMipMaps); -+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering); -+ } - } -- } - -- if (Driver->testGLError()) -- os::Printer::log("Could not glTexImage2D", ELL_ERROR); -+ if (Driver->testGLError()) -+ os::Printer::log("Could not glTexImage2D", ELL_ERROR); -+ } -+ while(retry); - } - - ---- irrlicht/source/Irrlicht/COGLESTexture.cpp.orig 2014-06-25 00:28:50.820501856 +0200 -+++ irrlicht/source/Irrlicht/COGLESTexture.cpp 2014-06-25 00:08:37.712544692 +0200 -@@ -422,6 +422,9 @@ - source = dest; - } - -+ //clear old error -+ glGetError(); -+ - if (newTexture) - { - if (IsCompressed) diff --git a/build/android/patches/irrlicht-touchcount.patch b/build/android/patches/irrlicht-touchcount.patch deleted file mode 100644 index d4e4b9c3e..000000000 --- a/build/android/patches/irrlicht-touchcount.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- irrlicht.orig/include/IEventReceiver.h 2014-06-03 19:43:50.433713133 +0200 -+++ irrlicht/include/IEventReceiver.h 2014-06-03 19:44:36.993711489 +0200 -@@ -375,6 +375,9 @@ - // Y position of simple touch. - s32 Y; - -+ // number of current touches -+ s32 touchedCount; -+ - //! Type of touch event. - ETOUCH_INPUT_EVENT Event; - }; ---- irrlicht.orig/source/Irrlicht/Android/CIrrDeviceAndroid.cpp 2014-06-03 19:43:50.505713130 +0200 -+++ irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp 2014-06-03 19:45:37.265709359 +0200 -@@ -315,6 +315,7 @@ - event.TouchInput.ID = AMotionEvent_getPointerId(androidEvent, i); - event.TouchInput.X = AMotionEvent_getX(androidEvent, i); - event.TouchInput.Y = AMotionEvent_getY(androidEvent, i); -+ event.TouchInput.touchedCount = AMotionEvent_getPointerCount(androidEvent); - - device->postEventFromUser(event); - } -@@ -326,6 +327,7 @@ - event.TouchInput.ID = AMotionEvent_getPointerId(androidEvent, pointerIndex); - event.TouchInput.X = AMotionEvent_getX(androidEvent, pointerIndex); - event.TouchInput.Y = AMotionEvent_getY(androidEvent, pointerIndex); -+ event.TouchInput.touchedCount = AMotionEvent_getPointerCount(androidEvent); - - device->postEventFromUser(event); - } diff --git a/build/android/patches/libvorbis-libogg-fpu.patch b/build/android/patches/libvorbis-libogg-fpu.patch deleted file mode 100644 index 52ab397ac..000000000 --- a/build/android/patches/libvorbis-libogg-fpu.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- libvorbis-libogg-android/jni/libvorbis-jni/Android.mk.orig 2014-06-17 19:22:50.621559073 +0200 -+++ libvorbis-libogg-android/jni/libvorbis-jni/Android.mk 2014-06-17 19:38:20.641581140 +0200 -@@ -4,9 +4,6 @@ - - LOCAL_MODULE := vorbis-jni - LOCAL_CFLAGS += -I$(LOCAL_PATH)/../include -fsigned-char --ifeq ($(TARGET_ARCH),arm) -- LOCAL_CFLAGS += -march=armv6 -marm -mfloat-abi=softfp -mfpu=vfp --endif - - LOCAL_SHARED_LIBRARIES := libogg libvorbis - ---- libvorbis-libogg-android/jni/libvorbis/Android.mk.orig 2014-06-17 19:22:39.077558797 +0200 -+++ libvorbis-libogg-android/jni/libvorbis/Android.mk 2014-06-17 19:38:52.121581887 +0200 -@@ -4,9 +4,6 @@ - - LOCAL_MODULE := libvorbis - LOCAL_CFLAGS += -I$(LOCAL_PATH)/../include -ffast-math -fsigned-char --ifeq ($(TARGET_ARCH),arm) -- LOCAL_CFLAGS += -march=armv6 -marm -mfloat-abi=softfp -mfpu=vfp --endif - LOCAL_SHARED_LIBRARIES := libogg - - LOCAL_SRC_FILES := \ ---- libvorbis-libogg-android/jni/libogg/Android.mk.orig 2014-06-17 19:22:33.965558675 +0200 -+++ libvorbis-libogg-android/jni/libogg/Android.mk 2014-06-17 19:38:25.337581252 +0200 -@@ -4,10 +4,6 @@ - - LOCAL_MODULE := libogg - LOCAL_CFLAGS += -I$(LOCAL_PATH)/../include -ffast-math -fsigned-char --ifeq ($(TARGET_ARCH),arm) -- LOCAL_CFLAGS += -march=armv6 -marm -mfloat-abi=softfp -mfpu=vfp --endif -- - - LOCAL_SRC_FILES := \ - bitwise.c \ diff --git a/build/android/patches/openssl_arch.patch b/build/android/patches/openssl_arch.patch deleted file mode 100644 index d15e2b137..000000000 --- a/build/android/patches/openssl_arch.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- openssl-1.0.2e.orig/Configure 2015-12-03 15:04:23.000000000 +0100 -+++ openssl-1.0.2e/Configure 2015-12-14 21:01:40.351265968 +0100 -@@ -464,8 +464,10 @@ - # Android: linux-* but without pointers to headers and libs. - "android","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", - "android-x86","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:".eval{my $asm=${x86_elf_asm};$asm=~s/:elf/:android/;$asm}.":dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", -+"android-arm","gcc:-march=armv4 -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", - "android-armv7","gcc:-march=armv7-a -mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", - "android-mips","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", -+"android-mips32","gcc:-mandroid -I\$(ANDROID_DEV)/include -B\$(ANDROID_DEV)/lib -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", - - #### *BSD [do see comment about ${BSDthreads} above!] - "BSD-generic32","gcc:-O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", diff --git a/build/android/settings.gradle b/build/android/settings.gradle index b0cee5dad..b048fca7c 100644 --- a/build/android/settings.gradle +++ b/build/android/settings.gradle @@ -1 +1,2 @@ rootProject.name = "Minetest" +include ':app', ':native' diff --git a/build/android/src/main/java/net.minetest.minetest/MainActivity.java b/build/android/src/main/java/net.minetest.minetest/MainActivity.java deleted file mode 100644 index 71b0ce144..000000000 --- a/build/android/src/main/java/net.minetest.minetest/MainActivity.java +++ /dev/null @@ -1,77 +0,0 @@ -package net.minetest.minetest; - -import android.Manifest; -import android.app.Activity; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.os.Build; -import android.os.Bundle; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class MainActivity extends Activity { - private final static int PERMISSIONS = 1; - private static final String[] REQUIRED_SDK_PERMISSIONS = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - checkPermission(); - } else { - next(); - } - } - - private void checkPermission() { - final List missingPermissions = new ArrayList<>(); - // check required permission - for (final String permission : REQUIRED_SDK_PERMISSIONS) { - final int result = ContextCompat.checkSelfPermission(this, permission); - if (result != PackageManager.PERMISSION_GRANTED) { - missingPermissions.add(permission); - } - } - if (!missingPermissions.isEmpty()) { - // request permission - final String[] permissions = missingPermissions - .toArray(new String[0]); - ActivityCompat.requestPermissions(this, permissions, PERMISSIONS); - } else { - final int[] grantResults = new int[REQUIRED_SDK_PERMISSIONS.length]; - Arrays.fill(grantResults, PackageManager.PERMISSION_GRANTED); - onRequestPermissionsResult(PERMISSIONS, REQUIRED_SDK_PERMISSIONS, - grantResults); - } - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, - @NonNull int[] grantResults) { - if (requestCode == PERMISSIONS) { - for (int index = 0; index < permissions.length; index++) { - if (grantResults[index] != PackageManager.PERMISSION_GRANTED) { - // permission not granted - toast and exit - Toast.makeText(this, R.string.not_granted, Toast.LENGTH_LONG).show(); - finish(); - return; - } - } - // permission were granted - run - next(); - } - } - - private void next() { - Intent intent = new Intent(this, MtNativeActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK); - startActivity(intent); - } -} diff --git a/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java b/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java deleted file mode 100644 index 84cfca796..000000000 --- a/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java +++ /dev/null @@ -1,371 +0,0 @@ -package net.minetest.minetest; - -import android.annotation.SuppressLint; -import android.app.Activity; -import android.content.res.AssetFileDescriptor; -import android.os.AsyncTask; -import android.os.Build; -import android.os.Bundle; -import android.os.Environment; -import android.util.Log; -import android.view.Display; -import android.view.View; -import android.widget.ProgressBar; -import android.widget.TextView; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.util.Vector; - -public class MinetestAssetCopy extends Activity { - private ProgressBar m_ProgressBar; - private TextView m_Filename; - private copyAssetTask m_AssetCopy; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.assetcopy); - m_ProgressBar = findViewById(R.id.progressBar1); - m_Filename = findViewById(R.id.textView1); - Display display = getWindowManager().getDefaultDisplay(); - m_ProgressBar.getLayoutParams().width = (int) (display.getWidth() * 0.8); - m_ProgressBar.invalidate(); - - /* check if there's already a copy in progress and reuse in case it is*/ - MinetestAssetCopy prevActivity = - (MinetestAssetCopy) getLastNonConfigurationInstance(); - if (prevActivity != null) { - m_AssetCopy = prevActivity.m_AssetCopy; - } else { - m_AssetCopy = new copyAssetTask(); - m_AssetCopy.execute(); - } - } - - @Override - protected void onResume() { - super.onResume(); - makeFullScreen(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (m_AssetCopy != null) { - m_AssetCopy.cancel(true); - } - } - - private void makeFullScreen() { - if (Build.VERSION.SDK_INT >= 19) - this.getWindow().getDecorView().setSystemUiVisibility( - View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); - } - - @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); - if (hasFocus) - makeFullScreen(); - } - - /* preserve asset copy background task to prevent restart of copying */ - /* this way of doing it is not recommended for latest android version */ - /* but the recommended way isn't available on android 2.x */ - public Object onRetainNonConfigurationInstance() { - return this; - } - - @SuppressLint("StaticFieldLeak") - private class copyAssetTask extends AsyncTask { - boolean m_copy_started = false; - String m_Foldername = "media"; - Vector m_foldernames; - Vector m_filenames; - Vector m_tocopy; - Vector m_asset_size_unknown; - - private long getFullSize(String filename) { - long size = 0; - try { - InputStream src = getAssets().open(filename); - byte[] buf = new byte[4096]; - - int len; - while ((len = src.read(buf)) > 0) { - size += len; - } - } catch (IOException e) { - e.printStackTrace(); - } - return size; - } - - @Override - protected String doInBackground(String... files) { - m_foldernames = new Vector<>(); - m_filenames = new Vector<>(); - m_tocopy = new Vector<>(); - m_asset_size_unknown = new Vector<>(); - String baseDir = - Environment.getExternalStorageDirectory().getAbsolutePath() - + "/"; - - - // prepare temp folder - File TempFolder = new File(baseDir + "Minetest/tmp/"); - - if (!TempFolder.exists()) { - TempFolder.mkdir(); - } else { - File[] todel = TempFolder.listFiles(); - - for (File file : todel) { - Log.v("MinetestAssetCopy", "deleting: " + file.getAbsolutePath()); - file.delete(); - } - } - - // add a .nomedia file - try { - OutputStream dst = new FileOutputStream(baseDir + "Minetest/.nomedia"); - dst.close(); - } catch (IOException e) { - Log.e("MinetestAssetCopy", "Failed to create .nomedia file"); - e.printStackTrace(); - } - - - // build lists from prepared data - BuildFolderList(); - BuildFileList(); - - // scan filelist - ProcessFileList(); - - // doing work - m_copy_started = true; - m_ProgressBar.setMax(m_tocopy.size()); - - for (int i = 0; i < m_tocopy.size(); i++) { - try { - String filename = m_tocopy.get(i); - publishProgress(i); - - boolean asset_size_unknown = false; - long filesize = -1; - - if (m_asset_size_unknown.contains(filename)) { - File testme = new File(baseDir + "/" + filename); - - if (testme.exists()) - filesize = testme.length(); - - asset_size_unknown = true; - } - - InputStream src; - try { - src = getAssets().open(filename); - } catch (IOException e) { - Log.e("MinetestAssetCopy", "Copying file: " + filename + " FAILED (not in assets)"); - e.printStackTrace(); - continue; - } - - // Transfer bytes from in to out - byte[] buf = new byte[1024]; - int len = src.read(buf, 0, 1024); - - /* following handling is crazy but we need to deal with */ - /* compressed assets.Flash chips limited livetime due to */ - /* write operations, we can't allow large files to destroy */ - /* users flash. */ - if (asset_size_unknown) { - if ((len > 0) && (len < buf.length) && (len == filesize)) { - src.close(); - continue; - } - - if (len == buf.length) { - src.close(); - long size = getFullSize(filename); - if (size == filesize) { - continue; - } - src = getAssets().open(filename); - len = src.read(buf, 0, 1024); - } - } - if (len > 0) { - int total_filesize = 0; - OutputStream dst; - try { - dst = new FileOutputStream(baseDir + "/" + filename); - } catch (IOException e) { - Log.e("MinetestAssetCopy", "Copying file: " + baseDir + - "/" + filename + " FAILED (couldn't open output file)"); - e.printStackTrace(); - src.close(); - continue; - } - dst.write(buf, 0, len); - total_filesize += len; - - while ((len = src.read(buf)) > 0) { - dst.write(buf, 0, len); - total_filesize += len; - } - - dst.close(); - Log.v("MinetestAssetCopy", "Copied file: " + - m_tocopy.get(i) + " (" + total_filesize + - " bytes)"); - } else if (len < 0) { - Log.e("MinetestAssetCopy", "Copying file: " + - m_tocopy.get(i) + " failed, size < 0"); - } - src.close(); - } catch (IOException e) { - Log.e("MinetestAssetCopy", "Copying file: " + - m_tocopy.get(i) + " failed"); - e.printStackTrace(); - } - } - return ""; - } - - /** - * update progress bar - */ - protected void onProgressUpdate(Integer... progress) { - - if (m_copy_started) { - String todisplay = m_tocopy.get(progress[0]); - m_ProgressBar.setProgress(progress[0]); - m_Filename.setText(todisplay); - } else { - String todisplay = m_Foldername; - String full_text = "scanning " + todisplay + " ..."; - m_Filename.setText(full_text); - } - } - - /** - * check all files and folders in filelist - */ - void ProcessFileList() { - String FlashBaseDir = - Environment.getExternalStorageDirectory().getAbsolutePath(); - - for (String current_path : m_filenames) { - String FlashPath = FlashBaseDir + "/" + current_path; - - if (isAssetFolder(current_path)) { - /* store information and update gui */ - m_Foldername = current_path; - publishProgress(0); - - /* open file in order to check if it's a folder */ - File current_folder = new File(FlashPath); - if (!current_folder.exists()) { - if (!current_folder.mkdirs()) { - Log.e("MinetestAssetCopy", "\t failed create folder: " + - FlashPath); - } else { - Log.v("MinetestAssetCopy", "\t created folder: " + - FlashPath); - } - } - - continue; - } - - /* if it's not a folder it's most likely a file */ - boolean refresh = true; - - File testme = new File(FlashPath); - - long asset_filesize = -1; - long stored_filesize; - - if (testme.exists()) { - try { - AssetFileDescriptor fd = getAssets().openFd(current_path); - asset_filesize = fd.getLength(); - fd.close(); - } catch (IOException e) { - m_asset_size_unknown.add(current_path); - Log.e("MinetestAssetCopy", "Failed to open asset file \"" + - FlashPath + "\" for size check"); - } - - stored_filesize = testme.length(); - - if (asset_filesize == stored_filesize) - refresh = false; - - } - - if (refresh) - m_tocopy.add(current_path); - } - } - - /** - * read list of folders prepared on package build - */ - void BuildFolderList() { - try { - InputStream is = getAssets().open("index.txt"); - BufferedReader reader = new BufferedReader(new InputStreamReader(is)); - - String line = reader.readLine(); - while (line != null) { - m_foldernames.add(line); - line = reader.readLine(); - } - is.close(); - } catch (IOException e1) { - Log.e("MinetestAssetCopy", "Error on processing index.txt"); - e1.printStackTrace(); - } - } - - /** - * read list of asset files prepared on package build - */ - void BuildFileList() { - long entrycount = 0; - try { - InputStream is = getAssets().open("filelist.txt"); - BufferedReader reader = new BufferedReader(new InputStreamReader(is)); - - String line = reader.readLine(); - while (line != null) { - m_filenames.add(line); - line = reader.readLine(); - entrycount++; - } - is.close(); - } catch (IOException e1) { - Log.e("MinetestAssetCopy", "Error on processing filelist.txt"); - e1.printStackTrace(); - } - } - - protected void onPostExecute(String result) { - finish(); - } - - boolean isAssetFolder(String path) { - return m_foldernames.contains(path); - } - } -} diff --git a/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java b/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java deleted file mode 100644 index cb7ba8d3b..000000000 --- a/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java +++ /dev/null @@ -1,87 +0,0 @@ -package net.minetest.minetest; - -import android.app.Activity; -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.os.Bundle; -import android.text.InputType; -import android.view.KeyEvent; -import android.view.View; -import android.view.View.OnKeyListener; -import android.widget.EditText; - -public class MinetestTextEntry extends Activity { - private final int MultiLineTextInput = 1; - private final int SingleLineTextInput = 2; - private final int SingleLinePasswordInput = 3; - private AlertDialog mTextInputDialog; - private EditText mTextInputWidget; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - Bundle b = getIntent().getExtras(); - String acceptButton = b.getString("EnterButton"); - String hint = b.getString("hint"); - String current = b.getString("current"); - int editType = b.getInt("editType"); - - AlertDialog.Builder builder = new AlertDialog.Builder(this); - mTextInputWidget = new EditText(this); - mTextInputWidget.setHint(hint); - mTextInputWidget.setText(current); - mTextInputWidget.setMinWidth(300); - if (editType == SingleLinePasswordInput) { - mTextInputWidget.setInputType(InputType.TYPE_CLASS_TEXT | - InputType.TYPE_TEXT_VARIATION_PASSWORD); - } else { - mTextInputWidget.setInputType(InputType.TYPE_CLASS_TEXT); - } - - builder.setView(mTextInputWidget); - - if (editType == MultiLineTextInput) { - builder.setPositiveButton(acceptButton, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - pushResult(mTextInputWidget.getText().toString()); - } - }); - } - - builder.setOnCancelListener(new DialogInterface.OnCancelListener() { - public void onCancel(DialogInterface dialog) { - cancelDialog(); - } - }); - - mTextInputWidget.setOnKeyListener(new OnKeyListener() { - @Override - public boolean onKey(View view, int KeyCode, KeyEvent event) { - if (KeyCode == KeyEvent.KEYCODE_ENTER) { - - pushResult(mTextInputWidget.getText().toString()); - return true; - } - return false; - } - }); - - mTextInputDialog = builder.create(); - mTextInputDialog.show(); - } - - private void pushResult(String text) { - Intent resultData = new Intent(); - resultData.putExtra("text", text); - setResult(Activity.RESULT_OK, resultData); - mTextInputDialog.dismiss(); - finish(); - } - - private void cancelDialog() { - setResult(Activity.RESULT_CANCELED); - mTextInputDialog.dismiss(); - finish(); - } -} diff --git a/build/android/src/main/res/layout/assetcopy.xml b/build/android/src/main/res/layout/assetcopy.xml deleted file mode 100644 index b3da2f027..000000000 --- a/build/android/src/main/res/layout/assetcopy.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - diff --git a/build/android/src/main/res/values-v21/styles.xml b/build/android/src/main/res/values-v21/styles.xml deleted file mode 100644 index 8b0777467..000000000 --- a/build/android/src/main/res/values-v21/styles.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/build/android/src/main/res/values/strings.xml b/build/android/src/main/res/values/strings.xml deleted file mode 100644 index a5eaef5d1..000000000 --- a/build/android/src/main/res/values/strings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - Preparing media… - Required permission wasn\'t granted, Minetest can\'t run without it - \ No newline at end of file diff --git a/build/android/src/main/res/values/styles.xml b/build/android/src/main/res/values/styles.xml deleted file mode 100644 index 1bd41ae76..000000000 --- a/build/android/src/main/res/values/styles.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - diff --git a/doc/README.android b/doc/README.android index c21279583..f6b67978f 100644 --- a/doc/README.android +++ b/doc/README.android @@ -1,6 +1,5 @@ -Minetest Android port -===================== -Date: 2014 06 28 +Minetest: Android version +========================= Controls -------- @@ -40,25 +39,6 @@ file can usually be found at /mnt/sdcard/Minetest. main menu is too big or small on your device, try changing this value. -Known issues ------------- -Not all issues are fixed by now: - -* Unable to exit from volume menu -- don't use the volume menu, use Android's - volume controls instead. -* 512 MB RAM seems to be inadequate -- this depends on the server you join. - Try to play on more lightweight servers. - -Versioning ----------- -Android version numbers are 4 digits instead of Minetest's 3 digits. The last -number of Android's version represents the Android internal version code. This -version code is strictly incremental. It's incremented for each official -Minetest Android build. - -E.g. prerelease Minetest Android builds have been 0.4.9.3, while the first -official version most likely will be 0.4.10.4 - Requirements ------------ @@ -69,9 +49,9 @@ following software packages. The version number in parenthesis denotes the version that was tested at the time this README was drafted; newer/older versions may or may not work. -* android SDK (api-26) -* android NDK (r17c) -* wget (1.13.4) +* Android SDK 29 +* Android NDK r21 +* Android Studio 3 [optional] Additionally, you'll need to have an Internet connection available on the build system, as the Android build will download some source packages. @@ -79,16 +59,15 @@ build system, as the Android build will download some source packages. Build ----- -Debug build: -* Enter "build/android" subdirectory -* Execute "make" -* Answer the questions about where SDK and NDK are located on your filesystem -* Wait for build to finish +The new build system Minetest Android is fully functional and is designed to +speed up and simplify the work, as well as adding the possibility of +cross-platform build. +You can use `./gradlew assemblerelease` or `./gradlew assembledebug` from the +command line or use Android Studio and click the build button. -After the build is finished, the resulting apk can be fond in -build/android/bin/. It will be called Minetest-debug.apk - -Release build: +When using gradlew, the newest NDK will be downloaded and installed +automatically. Or you can create a `local.properties` file and specify +`sdk.dir` and `ndk.dir` yourself. * In order to make a release build you'll have to have a keystore setup to sign the resulting apk package. How this is done is not part of this README. There @@ -97,32 +76,6 @@ Release build: * Once your keystore is setup, enter build/android subdirectory and create a new file "ant.properties" there. Add following lines to that file: - + > key.store= > key.alias=Minetest - -* Execute "make release" -* Enter your keystore as well as your Mintest key password once asked. Be - careful it's shown on console in clear text! -* The result can be found at "bin/Minetest-release.apk" - -Other things that may be nice to know ------------- -* The environment for Android development tools is saved within Android build - build folder. If you want direct access to it do: - - > make envpaths - > . and_env - - After you've done this you'll have your path and path variables set correct - to use adb and all other Android development tools - -* You can build a single dependency by calling make and the dependency's name, - e.g.: - - > make irrlicht - -* You can completely cleanup a dependency by calling make and the "clean" target, - e.g.: - - > make clean_irrlicht diff --git a/src/config.h b/src/config.h index 039100914..9d58a8cc1 100644 --- a/src/config.h +++ b/src/config.h @@ -11,12 +11,12 @@ #if defined USE_CMAKE_CONFIG_H #include "cmake_config.h" -#elif defined (__ANDROID__) || defined (ANDROID) +#elif defined (__ANDROID__) #define PROJECT_NAME "minetest" #define PROJECT_NAME_C "Minetest" #define STATIC_SHAREDIR "" - #include "android_version.h" - #ifdef NDEBUG + #define VERSION_STRING STR(VERSION_MAJOR) "." STR(VERSION_MINOR) "." STR(VERSION_PATCH) STR(VERSION_EXTRA) +#ifdef NDEBUG #define BUILD_TYPE "Release" #else #define BUILD_TYPE "Debug" diff --git a/src/main.cpp b/src/main.cpp index 8df2fe7d3..db020661a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -457,7 +457,6 @@ static bool create_userdata_path() } else { success = true; } - porting::copyAssets(); #else // Create user data directory success = fs::CreateDir(porting::path_user); diff --git a/src/porting_android.cpp b/src/porting_android.cpp index 7c74f7b5b..4130bdb6d 100644 --- a/src/porting_android.cpp +++ b/src/porting_android.cpp @@ -69,10 +69,10 @@ void android_main(android_app *app) /* TODO this doesn't work as expected, no idea why but there's a workaround */ /* for it right now */ extern "C" { - JNIEXPORT void JNICALL Java_net_minetest_MtNativeActivity_putMessageBoxResult( + JNIEXPORT void JNICALL Java_net_minetest_minetest_GameActivity_putMessageBoxResult( JNIEnv * env, jclass thiz, jstring text) { - errorstream << "Java_net_minetest_MtNativeActivity_putMessageBoxResult got: " + errorstream << "Java_net_minetest_minetest_GameActivity_putMessageBoxResult got: " << std::string((const char*)env->GetStringChars(text,0)) << std::endl; } @@ -107,17 +107,6 @@ jclass findClass(std::string classname) return (jclass) jnienv->CallObjectMethod(cls, findClass, strClassName); } -void copyAssets() -{ - jmethodID assetcopy = jnienv->GetMethodID(nativeActivity,"copyAssets","()V"); - - if (assetcopy == 0) { - assert("porting::copyAssets unable to find copy assets method" == 0); - } - - jnienv->CallVoidMethod(app_global->activity->clazz, assetcopy); -} - void initAndroid() { porting::jnienv = NULL; @@ -136,7 +125,7 @@ void initAndroid() exit(-1); } - nativeActivity = findClass("net/minetest/minetest/MtNativeActivity"); + nativeActivity = findClass("net/minetest/minetest/GameActivity"); if (nativeActivity == 0) { errorstream << "porting::initAndroid unable to find java native activity class" << diff --git a/src/porting_android.h b/src/porting_android.h index 0b3f2575e..60eb2a9c0 100644 --- a/src/porting_android.h +++ b/src/porting_android.h @@ -48,11 +48,6 @@ void cleanupAndroid(); */ void initializePathsAndroid(); -/** - * use java function to copy media from assets to external storage - */ -void copyAssets(); - /** * show text input dialog in java * @param acceptButton text to display on accept button diff --git a/src/version.cpp b/src/version.cpp index c0c59ee99..ae5ca3412 100644 --- a/src/version.cpp +++ b/src/version.cpp @@ -20,10 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "version.h" #include "config.h" -#if defined(__ANDROID__) - #include "android_version.h" - #include "android_version_githash.h" -#elif defined(USE_CMAKE_CONFIG_H) +#if USE_CMAKE_CONFIG_H #include "cmake_config_githash.h" #endif From e8ac5a31cf12afcfddf8e3ed31e8038930edb06f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Thu, 16 Apr 2020 08:25:48 +0200 Subject: [PATCH 108/424] Optimize get_objects_inside_radius calls (#9671) * Optimize getObjectsInsideRadius calls our previous implementation calls the ActiveObjectMgr to return ids and then lookup those ids in the same map and test each object Instead now we call the global map to return the pointers directly and we ask filtering when building the list using lamba. This drop double looping over ranges of active objects (and then filtered one) and drop x lookups on the map regarding the first call results --- src/collision.cpp | 20 +++++++++-------- src/script/lua_api/l_env.cpp | 24 ++++++++++----------- src/server/activeobjectmgr.cpp | 10 +++++---- src/server/activeobjectmgr.h | 5 +++-- src/serverenvironment.cpp | 12 +++++------ src/serverenvironment.h | 5 +++-- src/unittest/test_serveractiveobjectmgr.cpp | 18 +++++++++++++--- 7 files changed, 55 insertions(+), 39 deletions(-) diff --git a/src/collision.cpp b/src/collision.cpp index d9fbd3202..6d24bc699 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -360,17 +360,19 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, // Calculate distance by speed, add own extent and 1.5m of tolerance f32 distance = speed_f->getLength() * dtime + box_0.getExtent().getLength() + 1.5f * BS; - std::vector s_objects; - s_env->getObjectsInsideRadius(s_objects, *pos_f, distance); - for (u16 obj_id : s_objects) { - ServerActiveObject *current = s_env->getActiveObject(obj_id); - - if (!self || (self != current && - self != current->getParent())) { - objects.push_back((ActiveObject*)current); + // search for objects which are not us, or we are not its parent + // we directly use the callback to populate the result to prevent + // a useless result loop here + auto include_obj_cb = [self, &objects] (ServerActiveObject *obj) { + if (!self || (self != obj && self != obj->getParent())) { + objects.push_back((ActiveObject *)obj); } - } + return false; + }; + + std::vector s_objects; + s_env->getObjectsInsideRadius(s_objects, *pos_f, distance, include_obj_cb); } } diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index 8c45a1510..831464d3b 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -681,22 +681,22 @@ int ModApiEnvMod::l_get_player_by_name(lua_State *L) int ModApiEnvMod::l_get_objects_inside_radius(lua_State *L) { GET_ENV_PTR; + ScriptApiBase *script = getScriptApiBase(L); // Do it v3f pos = checkFloatPos(L, 1); float radius = readParam(L, 2) * BS; - std::vector ids; - env->getObjectsInsideRadius(ids, pos, radius); - ScriptApiBase *script = getScriptApiBase(L); - lua_createtable(L, ids.size(), 0); - std::vector::const_iterator iter = ids.begin(); - for(u32 i = 0; iter != ids.end(); ++iter) { - ServerActiveObject *obj = env->getActiveObject(*iter); - if (!obj->isGone()) { - // Insert object reference into table - script->objectrefGetOrCreate(L, obj); - lua_rawseti(L, -2, ++i); - } + std::vector objs; + + auto include_obj_cb = [](ServerActiveObject *obj){ return !obj->isGone(); }; + env->getObjectsInsideRadius(objs, pos, radius, include_obj_cb); + + int i = 0; + lua_createtable(L, objs.size(), 0); + for (const auto obj : objs) { + // Insert object reference into table + script->objectrefGetOrCreate(L, obj); + lua_rawseti(L, -2, ++i); } return 1; } diff --git a/src/server/activeobjectmgr.cpp b/src/server/activeobjectmgr.cpp index 984ae7794..1b8e31409 100644 --- a/src/server/activeobjectmgr.cpp +++ b/src/server/activeobjectmgr.cpp @@ -111,17 +111,19 @@ void ActiveObjectMgr::removeObject(u16 id) } // clang-format on -void ActiveObjectMgr::getObjectsInsideRadius( - const v3f &pos, float radius, std::vector &result) +void ActiveObjectMgr::getObjectsInsideRadius(const v3f &pos, float radius, + std::vector &result, + std::function include_obj_cb) { float r2 = radius * radius; for (auto &activeObject : m_active_objects) { ServerActiveObject *obj = activeObject.second; - u16 id = activeObject.first; const v3f &objectpos = obj->getBasePosition(); if (objectpos.getDistanceFromSQ(pos) > r2) continue; - result.push_back(id); + + if (!include_obj_cb || include_obj_cb(obj)) + result.push_back(obj); } } diff --git a/src/server/activeobjectmgr.h b/src/server/activeobjectmgr.h index 5fea1bea6..bc2085499 100644 --- a/src/server/activeobjectmgr.h +++ b/src/server/activeobjectmgr.h @@ -35,8 +35,9 @@ public: bool registerObject(ServerActiveObject *obj) override; void removeObject(u16 id) override; - void getObjectsInsideRadius( - const v3f &pos, float radius, std::vector &result); + void getObjectsInsideRadius(const v3f &pos, float radius, + std::vector &result, + std::function include_obj_cb); void getAddedActiveObjectsAroundPos(const v3f &player_pos, f32 radius, f32 player_radius, std::set ¤t_objects, diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 739384673..27f0c1e3d 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -1608,14 +1608,12 @@ void ServerEnvironment::getSelectedActiveObjects( const core::line3d &shootline_on_map, std::vector &objects) { - std::vector objectIds; - getObjectsInsideRadius(objectIds, shootline_on_map.start, - shootline_on_map.getLength() + 10.0f); + std::vector objs; + getObjectsInsideRadius(objs, shootline_on_map.start, + shootline_on_map.getLength() + 10.0f, nullptr); const v3f line_vector = shootline_on_map.getVector(); - for (u16 objectId : objectIds) { - ServerActiveObject* obj = getActiveObject(objectId); - + for (auto obj : objs) { aabb3f selection_box; if (!obj->getSelectionBox(&selection_box)) continue; @@ -1630,7 +1628,7 @@ void ServerEnvironment::getSelectedActiveObjects( if (boxLineCollision(offsetted_box, shootline_on_map.start, line_vector, ¤t_intersection, ¤t_normal)) { objects.emplace_back( - (s16) objectId, current_intersection, current_normal, + (s16) obj->getId(), current_intersection, current_normal, (current_intersection - shootline_on_map.start).getLengthSQ()); } } diff --git a/src/serverenvironment.h b/src/serverenvironment.h index 55ecbd05f..f814b95c0 100644 --- a/src/serverenvironment.h +++ b/src/serverenvironment.h @@ -323,9 +323,10 @@ public: bool swapNode(v3s16 p, const MapNode &n); // Find all active objects inside a radius around a point - void getObjectsInsideRadius(std::vector &objects, const v3f &pos, float radius) + void getObjectsInsideRadius(std::vector &objects, const v3f &pos, float radius, + std::function include_obj_cb) { - return m_ao_manager.getObjectsInsideRadius(pos, radius, objects); + return m_ao_manager.getObjectsInsideRadius(pos, radius, objects, include_obj_cb); } // Clear objects, loading and going through every MapBlock diff --git a/src/unittest/test_serveractiveobjectmgr.cpp b/src/unittest/test_serveractiveobjectmgr.cpp index 0806972ab..aa0047400 100644 --- a/src/unittest/test_serveractiveobjectmgr.cpp +++ b/src/unittest/test_serveractiveobjectmgr.cpp @@ -148,14 +148,26 @@ void TestServerActiveObjectMgr::testGetObjectsInsideRadius() saomgr.registerObject(new TestServerActiveObject(p)); } - std::vector result; - saomgr.getObjectsInsideRadius(v3f(), 50, result); + std::vector result; + saomgr.getObjectsInsideRadius(v3f(), 50, result, nullptr); UASSERTCMP(int, ==, result.size(), 1); result.clear(); - saomgr.getObjectsInsideRadius(v3f(), 750, result); + saomgr.getObjectsInsideRadius(v3f(), 750, result, nullptr); UASSERTCMP(int, ==, result.size(), 2); + result.clear(); + saomgr.getObjectsInsideRadius(v3f(), 750000, result, nullptr); + UASSERTCMP(int, ==, result.size(), 5); + + result.clear(); + auto include_obj_cb = [](ServerActiveObject *obj) { + return (obj->getBasePosition().X != 10); + }; + + saomgr.getObjectsInsideRadius(v3f(), 750000, result, include_obj_cb); + UASSERTCMP(int, ==, result.size(), 4); + clearSAOMgr(&saomgr); } From 5cbe8437a8f7efc9c76baf23de700e96ad96b385 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 16 Apr 2020 10:23:48 +0200 Subject: [PATCH 109/424] Swap out -ffast-math for a safe subset of optimization flags (#9682) It caused more trouble than its worth. fixes #3943, fixes #5330 --- src/CMakeLists.txt | 7 ++++++- src/collision.cpp | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index fa261547b..d5f774d77 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -713,6 +713,11 @@ else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWIN32_LEAN_AND_MEAN") endif() + # Use a safe subset of flags to speed up math calculations: + # - we don't need errno or math exceptions + # - we don't deal with Inf/NaN or signed zero + set(MATH_FLAGS "-fno-math-errno -fno-trapping-math -ffinite-math-only -fno-signed-zeros") + set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${RELEASE_WARNING_FLAGS} ${WARNING_FLAGS} ${OTHER_FLAGS} -Wall -pipe -funroll-loops") if(CMAKE_SYSTEM_NAME MATCHES "(Darwin|BSD|DragonFly)") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os") @@ -723,7 +728,7 @@ else() AND CMAKE_CXX_COMPILER_VERSION MATCHES "^9\\.") # Clang 9 has broken -ffast-math on glibc else() - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffast-math") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${MATH_FLAGS}") endif() endif(CMAKE_SYSTEM_NAME MATCHES "(Darwin|BSD|DragonFly)") set(CMAKE_CXX_FLAGS_SEMIDEBUG "-g -O1 -Wall -Wabi ${WARNING_FLAGS} ${OTHER_FLAGS}") diff --git a/src/collision.cpp b/src/collision.cpp index 6d24bc699..a089f3377 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -32,6 +32,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/timetaker.h" #include "profiler.h" +#ifdef __FAST_MATH__ +#warning "-ffast-math is known to cause bugs in collision code, do not use!" +#endif struct NearbyCollisionInfo { NearbyCollisionInfo(bool is_ul, bool is_obj, int bouncy, From 45999b74e610b13e8cda20c0c420e152b9837ea6 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Thu, 16 Apr 2020 18:32:07 +0200 Subject: [PATCH 110/424] Camera: Fix shooting line offsets (#9681) Removes duplicated offset calculations from Game and use whatever the Camera class returns. This keeps the eye position nicely in sync, and gets rid of duplicated code. --- src/client/camera.cpp | 24 ++++++++++++++---------- src/client/camera.h | 6 ++++++ src/client/game.cpp | 20 +++++++------------- src/client/localplayer.h | 3 +++ 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/client/camera.cpp b/src/client/camera.cpp index 871ea709d..fb1c3ff56 100644 --- a/src/client/camera.cpp +++ b/src/client/camera.cpp @@ -333,17 +333,21 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r fall_bobbing *= m_cache_fall_bobbing_amount; } - // Calculate players eye offset for different camera modes - v3f PlayerEyeOffset = player->getEyeOffset(); - if (m_camera_mode == CAMERA_MODE_FIRST) - PlayerEyeOffset += player->eye_offset_first; - else - PlayerEyeOffset += player->eye_offset_third; + // Calculate and translate the head SceneNode offsets + { + v3f eye_offset = player->getEyeOffset(); + if (m_camera_mode == CAMERA_MODE_FIRST) + eye_offset += player->eye_offset_first; + else + eye_offset += player->eye_offset_third; - // Set head node transformation - m_headnode->setPosition(PlayerEyeOffset+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(); + // Set head node transformation + eye_offset.Y += cameratilt * -player->hurt_tilt_strength + fall_bobbing; + m_headnode->setPosition(eye_offset); + m_headnode->setRotation(v3f(player->getPitch(), 0, + cameratilt * player->hurt_tilt_strength)); + m_headnode->updateAbsolutePosition(); + } // Compute relative camera position and target v3f rel_cam_pos = v3f(0,0,0); diff --git a/src/client/camera.h b/src/client/camera.h index 88de3570a..6ec37fe10 100644 --- a/src/client/camera.h +++ b/src/client/camera.h @@ -75,6 +75,12 @@ public: return m_camera_position; } + // Returns the absolute position of the head SceneNode in the world + inline v3f getHeadPosition() const + { + return m_headnode->getAbsolutePosition(); + } + // Get the camera direction (in absolute camera coordinates). // This has view bobbing applied. inline v3f getDirection() const diff --git a/src/client/game.cpp b/src/client/game.cpp index f7234eea6..4b2d7c652 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -3029,16 +3029,9 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug) { LocalPlayer *player = client->getEnv().getLocalPlayer(); - v3f player_position = player->getPosition(); - v3f player_eye_position = player->getEyePosition(); - v3f camera_position = camera->getPosition(); - v3f camera_direction = camera->getDirection(); - v3s16 camera_offset = camera->getOffset(); - - if (camera->getCameraMode() == CAMERA_MODE_FIRST) - player_eye_position += player->eye_offset_first; - else - player_eye_position += player->eye_offset_third; + const v3f head_position = camera->getHeadPosition(); + const v3f camera_direction = camera->getDirection(); + const v3s16 camera_offset = camera->getOffset(); /* Calculate what block is the crosshair pointing to @@ -3053,11 +3046,11 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug) core::line3d shootline; if (camera->getCameraMode() != CAMERA_MODE_THIRD_FRONT) { - shootline = core::line3d(player_eye_position, - player_eye_position + camera_direction * BS * d); + shootline = core::line3d(head_position, + head_position + camera_direction * BS * d); } else { // prevent player pointing anything in front-view - shootline = core::line3d(camera_position, camera_position); + shootline = core::line3d(head_position, head_position); } #ifdef HAVE_TOUCHSCREENGUI @@ -3145,6 +3138,7 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug) } else if (pointed.type == POINTEDTHING_NODE) { handlePointingAtNode(pointed, selected_item, hand_item, dtime); } else if (pointed.type == POINTEDTHING_OBJECT) { + v3f player_position = player->getPosition(); handlePointingAtObject(pointed, tool_item, player_position, show_debug); } else if (input->getLeftState()) { // When button is held down in air, show continuous animation diff --git a/src/client/localplayer.h b/src/client/localplayer.h index d88ae17ac..345aec9d9 100644 --- a/src/client/localplayer.h +++ b/src/client/localplayer.h @@ -135,6 +135,9 @@ public: } v3f getPosition() const { return m_position; } + + // Non-transformed eye offset getters + // For accurate positions, use the Camera functions v3f getEyePosition() const { return m_position + getEyeOffset(); } v3f getEyeOffset() const; void setEyeHeight(float eye_height) { m_eye_height = eye_height; } From 57038b3cb4b48d242af8e7dc9d598edf2e1018c4 Mon Sep 17 00:00:00 2001 From: Maksim Date: Thu, 16 Apr 2020 19:19:47 +0200 Subject: [PATCH 111/424] Android: fix formspec input for AArch64 devices (#9685) --- src/gui/guiFormSpecMenu.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index aac039ad6..b0255cf1b 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -3346,28 +3346,24 @@ bool GUIFormSpecMenu::getAndroidUIInput() if (!hasAndroidUIInput()) return false; + // still waiting + if (porting::getInputDialogState() == -1) + return true; + std::string fieldname = m_jni_field_name; m_jni_field_name.clear(); - for (std::vector::iterator iter = m_fields.begin(); - iter != m_fields.end(); ++iter) { - - if (iter->fname != fieldname) { + for (const FieldSpec &field : m_fields) { + if (field.fname != fieldname) continue; - } - IGUIElement *tochange = getElementFromId(iter->fid, true); - if (tochange == 0) { - return false; - } + IGUIElement *element = getElementFromId(field.fid, true); - if (tochange->getType() != irr::gui::EGUIET_EDIT_BOX) { + if (!element || element->getType() != irr::gui::EGUIET_EDIT_BOX) return false; - } std::string text = porting::getInputDialogValue(); - - ((gui::IGUIEditBox *)tochange)->setText(utf8_to_wide(text).c_str()); + ((gui::IGUIEditBox *)element)->setText(utf8_to_wide(text).c_str()); } return false; } From 093e79ea78c872293386bf10b76416ff284ac5b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Thu, 16 Apr 2020 19:21:47 +0200 Subject: [PATCH 112/424] Drop -Wabi useless flag (#9676) --- src/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d5f774d77..c3f4f439f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,7 +6,7 @@ INCLUDE(CheckIncludeFiles) INCLUDE(CheckLibraryExists) # Add custom SemiDebug build mode -set(CMAKE_CXX_FLAGS_SEMIDEBUG "-O1 -g -Wall -Wabi" CACHE STRING +set(CMAKE_CXX_FLAGS_SEMIDEBUG "-O1 -g -Wall" CACHE STRING "Flags used by the C++ compiler during semidebug builds." FORCE ) @@ -731,8 +731,8 @@ else() set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${MATH_FLAGS}") endif() endif(CMAKE_SYSTEM_NAME MATCHES "(Darwin|BSD|DragonFly)") - set(CMAKE_CXX_FLAGS_SEMIDEBUG "-g -O1 -Wall -Wabi ${WARNING_FLAGS} ${OTHER_FLAGS}") - set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wabi ${WARNING_FLAGS} ${OTHER_FLAGS}") + set(CMAKE_CXX_FLAGS_SEMIDEBUG "-g -O1 -Wall ${WARNING_FLAGS} ${OTHER_FLAGS}") + set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall ${WARNING_FLAGS} ${OTHER_FLAGS}") if(USE_GPROF) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg") From 7539267d370ae9a1b547008a937bd7f57bece541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Thu, 16 Apr 2020 20:43:49 +0200 Subject: [PATCH 113/424] Add an option to disable unittest build, & disable them on Docker build (#9677) --- CMakeLists.txt | 1 + Dockerfile | 1 + README.md | 1 + src/CMakeLists.txt | 11 +++++++++-- src/cmake_config.h.in | 1 + src/main.cpp | 6 ++++++ 6 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8cf89dd17..ae842918b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,6 +49,7 @@ set(RUN_IN_PLACE ${DEFAULT_RUN_IN_PLACE} CACHE BOOL set(BUILD_CLIENT TRUE CACHE BOOL "Build client") set(BUILD_SERVER FALSE CACHE BOOL "Build server") +set(BUILD_UNITTESTS TRUE CACHE BOOL "Build unittests") set(WARN_ALL TRUE CACHE BOOL "Enable -Wall for Release build") diff --git a/Dockerfile b/Dockerfile index 3c41ce0f4..7c1107288 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,6 +30,7 @@ RUN apk add --no-cache git build-base irrlicht-dev cmake bzip2-dev libpng-dev \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SERVER=TRUE \ + -DBUILD_UNITTESTS=FALSE \ -DBUILD_CLIENT=FALSE && \ make -j2 && \ make install diff --git a/README.md b/README.md index cfd5a8ae0..e9065dfa7 100644 --- a/README.md +++ b/README.md @@ -218,6 +218,7 @@ General options and their default values: BUILD_CLIENT=TRUE - Build Minetest client BUILD_SERVER=FALSE - Build Minetest server + BUILD_UNITTESTS=TRUE - Build unittest sources CMAKE_BUILD_TYPE=Release - Type of build (Release vs. Debug) Release - Release build Debug - Debug build diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c3f4f439f..dbd6b5922 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -435,9 +435,12 @@ set(common_SRCS ${JTHREAD_SRCS} ${common_SCRIPT_SRCS} ${UTIL_SRCS} - ${UNITTEST_SRCS} ) +if(BUILD_UNITTESTS) + set(common_SRCS ${common_SRCS} ${UNITTEST_SRCS}) +endif() + # This gives us the icon and file version information if(WIN32) @@ -472,8 +475,12 @@ set(client_SRCS ${client_network_SRCS} ${client_irrlicht_changes_SRCS} ${client_SCRIPT_SRCS} - ${UNITTEST_CLIENT_SRCS} ) + +if(BUILD_UNITTESTS) + set(client_SRCS ${client_SRCS} ${UNITTEST_CLIENT_SRCS}) +endif() + list(SORT client_SRCS) # Server sources diff --git a/src/cmake_config.h.in b/src/cmake_config.h.in index cb54cb488..cac6335d4 100644 --- a/src/cmake_config.h.in +++ b/src/cmake_config.h.in @@ -34,3 +34,4 @@ #cmakedefine01 CURSES_HAVE_NCURSES_CURSES_H #cmakedefine01 CURSES_HAVE_NCURSESW_NCURSES_H #cmakedefine01 CURSES_HAVE_NCURSESW_CURSES_H +#cmakedefine01 BUILD_UNITTESTS diff --git a/src/main.cpp b/src/main.cpp index db020661a..82666e463 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -187,7 +187,13 @@ int main(int argc, char *argv[]) #ifndef __ANDROID__ // Run unit tests if (cmd_args.getFlag("run-unittests")) { +#if BUILD_UNITTESTS return run_tests(); +#else + errorstream << "Unittest support is not enabled in this binary. " + << "If you want to enable it, compile project with BUILD_UNITTESTS=1 flag." + << std::endl; +#endif } #endif From e88719bcdd49c5bfe295dc89bc2852e0f3dc8065 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 17 Apr 2020 08:10:28 +0200 Subject: [PATCH 114/424] Rename "subgame" to "game" in 2 error messages (#9680) --- src/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 82666e463..147f686ed 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -781,7 +781,7 @@ static bool determine_subgame(GameParams *game_params) gamespec = findSubgame(g_settings->get("default_game")); infostream << "Using default gameid [" << gamespec.id << "]" << std::endl; if (!gamespec.isValid()) { - errorstream << "Subgame specified in default_game [" + errorstream << "Game specified in default_game [" << g_settings->get("default_game") << "] is invalid." << std::endl; return false; @@ -806,7 +806,7 @@ static bool determine_subgame(GameParams *game_params) } if (!gamespec.isValid()) { - errorstream << "Subgame [" << gamespec.id << "] could not be found." + errorstream << "Game [" << gamespec.id << "] could not be found." << std::endl; return false; } From 4e2473ec493689c3bc7d619fe17ee31c7f20945b Mon Sep 17 00:00:00 2001 From: Paramat Date: Fri, 17 Apr 2020 09:24:51 +0100 Subject: [PATCH 115/424] Document which noise APIs add world seed to noiseparams seed (#9693) --- doc/lua_api.txt | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index ccb605c8e..77f06682f 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -3250,9 +3250,9 @@ For this parameter you can randomly choose any whole number. Usually it is preferable for this to be different from other seeds, but sometimes it is useful to be able to create identical noise patterns. -When used in mapgen this is actually a 'seed offset', it is added to the -'world seed' to create the seed used by the noise, to ensure the noise has a -different pattern in different worlds. +In some noise APIs the world seed is added to the seed specified in noise +parameters. This is done to make the resulting noise pattern vary in different +worlds, and be 'world-specific'. ### `octaves` @@ -4649,8 +4649,11 @@ Environment access * Return value: Table with all node positions with a node air above * Area volume is limited to 4,096,000 nodes * `minetest.get_perlin(noiseparams)` + * Return world-specific perlin noise. + * The actual seed used is the noiseparams seed plus the world seed. * `minetest.get_perlin(seeddiff, octaves, persistence, spread)` - * Return world-specific perlin noise (`int(worldseed)+seeddiff`) + * Deprecated: use `minetest.get_perlin(noiseparams)` instead. + * Return world-specific perlin noise. * `minetest.get_voxel_manip([pos1, pos2])` * Return voxel manipulator object. * Loads the manipulator from the map if positions are passed. @@ -6207,10 +6210,15 @@ It can be created via `PcgRandom(seed)` or `PcgRandom(seed, sequence)`. ------------- A perlin noise generator. -It can be created via `PerlinNoise(seed, octaves, persistence, spread)` -or `PerlinNoise(noiseparams)`. -Alternatively with `minetest.get_perlin(seeddiff, octaves, persistence, spread)` -or `minetest.get_perlin(noiseparams)`. +It can be created via `PerlinNoise()` or `minetest.get_perlin()`. +For `minetest.get_perlin()`, the actual seed used is the noiseparams seed +plus the world seed, to create world-specific noise. + +`PerlinNoise(noiseparams)` +`PerlinNoise(seed, octaves, persistence, spread)` (Deprecated). + +`minetest.get_perlin(noiseparams)` +`minetest.get_perlin(seeddiff, octaves, persistence, spread)` (Deprecated). ### Methods @@ -6224,6 +6232,8 @@ A fast, bulk perlin noise generator. It can be created via `PerlinNoiseMap(noiseparams, size)` or `minetest.get_perlin_map(noiseparams, size)`. +For `minetest.get_perlin_map()`, the actual seed used is the noiseparams seed +plus the world seed, to create world-specific noise. Format of `size` is `{x=dimx, y=dimy, z=dimz}`. The `z` component is omitted for 2D noise, and it must be must be larger than 1 for 3D noise (otherwise From 23c6d0c31f2e0a4a6032b0afb02fab1d5f9c517b Mon Sep 17 00:00:00 2001 From: Maksim Date: Fri, 17 Apr 2020 23:46:30 +0200 Subject: [PATCH 116/424] Android: fix handling non-latin characters on older Android devices (#9309) --- src/server.cpp | 8 ++++++++ src/util/string.cpp | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/src/server.cpp b/src/server.cpp index b3992b9b1..c32aa5306 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -3031,8 +3031,16 @@ std::wstring Server::handleChat(const std::string &name, const std::wstring &wna line += L"-!- You don't have permission to shout."; broadcast_line = false; } else { + /* + Workaround for fixing chat on Android. Lua doesn't handle + the Cyrillic alphabet and some characters on older Android devices + */ +#ifdef __ANDROID__ + line += L"<" + wname + L"> " + wmessage; +#else line += narrow_to_wide(m_script->formatChatMessage(name, wide_to_narrow(wmessage))); +#endif } /* diff --git a/src/util/string.cpp b/src/util/string.cpp index e6c52585d..2ee3ec735 100644 --- a/src/util/string.cpp +++ b/src/util/string.cpp @@ -209,6 +209,9 @@ wchar_t *narrow_to_wide_c(const char *str) } std::wstring narrow_to_wide(const std::string &mbs) { +#ifdef __ANDROID__ + return utf8_to_wide(mbs); +#else size_t wcl = mbs.size(); Buffer wcs(wcl + 1); size_t len = mbstowcs(*wcs, mbs.c_str(), wcl); @@ -216,11 +219,15 @@ std::wstring narrow_to_wide(const std::string &mbs) { return L""; wcs[len] = 0; return *wcs; +#endif } std::string wide_to_narrow(const std::wstring &wcs) { +#ifdef __ANDROID__ + return wide_to_utf8(wcs); +#else size_t mbl = wcs.size() * 4; SharedBuffer mbs(mbl+1); size_t len = wcstombs(*mbs, wcs.c_str(), mbl); @@ -229,6 +236,7 @@ std::string wide_to_narrow(const std::wstring &wcs) mbs[len] = 0; return *mbs; +#endif } From 7b57d3f613bab05914d3f7210064a3282ea37013 Mon Sep 17 00:00:00 2001 From: HybridDog <3192173+HybridDog@users.noreply.github.com> Date: Sat, 18 Apr 2020 17:19:53 +0200 Subject: [PATCH 117/424] serverpackethandler: Reduce pkt->getPeerId() invocations and more (#9689) --- src/network/serverpackethandler.cpp | 613 ++++++++++++---------------- src/server.h | 1 - 2 files changed, 272 insertions(+), 342 deletions(-) diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index b2fdb2a22..c685500ce 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -52,11 +52,12 @@ void Server::handleCommand_Init(NetworkPacket* pkt) if(pkt->getSize() < 1) return; - RemoteClient* client = getClient(pkt->getPeerId(), CS_Created); + session_t peer_id = pkt->getPeerId(); + RemoteClient *client = getClient(peer_id, CS_Created); std::string addr_s; try { - Address address = getPeerAddress(pkt->getPeerId()); + Address address = getPeerAddress(peer_id); addr_s = address.serializeString(); } catch (con::PeerNotFoundException &e) { @@ -66,27 +67,27 @@ void Server::handleCommand_Init(NetworkPacket* pkt) * respond for some time, your server was overloaded or * things like that. */ - infostream << "Server::ProcessData(): Canceling: peer " - << pkt->getPeerId() << " not found" << std::endl; + infostream << "Server::ProcessData(): Canceling: peer " << peer_id << + " not found" << std::endl; return; } // If net_proto_version is set, this client has already been handled if (client->getState() > CS_Created) { - verbosestream << "Server: Ignoring multiple TOSERVER_INITs from " - << addr_s << " (peer_id=" << pkt->getPeerId() << ")" << std::endl; + verbosestream << "Server: Ignoring multiple TOSERVER_INITs from " << + addr_s << " (peer_id=" << peer_id << ")" << std::endl; return; } - verbosestream << "Server: Got TOSERVER_INIT from " << addr_s << " (peer_id=" - << pkt->getPeerId() << ")" << std::endl; + verbosestream << "Server: Got TOSERVER_INIT from " << addr_s << + " (peer_id=" << peer_id << ")" << std::endl; // Do not allow multiple players in simple singleplayer mode. // This isn't a perfect way to do it, but will suffice for now if (m_simple_singleplayer_mode && m_clients.getClientIDs().size() > 1) { - infostream << "Server: Not allowing another client (" << addr_s - << ") to connect in simple singleplayer mode" << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_SINGLEPLAYER); + infostream << "Server: Not allowing another client (" << addr_s << + ") to connect in simple singleplayer mode" << std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_SINGLEPLAYER); return; } @@ -109,11 +110,11 @@ void Server::handleCommand_Init(NetworkPacket* pkt) depl_serial_v = SER_FMT_VER_INVALID; if (depl_serial_v == SER_FMT_VER_INVALID) { - actionstream << "Server: A mismatched client tried to connect from " - << addr_s << std::endl; - infostream<<"Server: Cannot negotiate serialization version with " - << addr_s << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_WRONG_VERSION); + actionstream << "Server: A mismatched client tried to connect from " << + addr_s << std::endl; + infostream << "Server: Cannot negotiate serialization version with " << + addr_s << " client_max=" << (int)client_max << std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_WRONG_VERSION); return; } @@ -146,9 +147,9 @@ void Server::handleCommand_Init(NetworkPacket* pkt) net_proto_version != LATEST_PROTOCOL_VERSION) || net_proto_version < SERVER_PROTOCOL_VERSION_MIN || net_proto_version > SERVER_PROTOCOL_VERSION_MAX) { - actionstream << "Server: A mismatched client tried to connect from " - << addr_s << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_WRONG_VERSION); + actionstream << "Server: A mismatched client tried to connect from " << + addr_s << std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_WRONG_VERSION); return; } @@ -159,56 +160,56 @@ void Server::handleCommand_Init(NetworkPacket* pkt) size_t pns = playerName.size(); if (pns == 0 || pns > PLAYERNAME_SIZE) { - actionstream << "Server: Player with " - << ((pns > PLAYERNAME_SIZE) ? "a too long" : "an empty") - << " name tried to connect from " << addr_s << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_WRONG_NAME); + actionstream << "Server: Player with " << + ((pns > PLAYERNAME_SIZE) ? "a too long" : "an empty") << + " name tried to connect from " << addr_s << std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_WRONG_NAME); return; } if (!string_allowed(playerName, PLAYERNAME_ALLOWED_CHARS)) { - actionstream << "Server: Player with an invalid name " - << "tried to connect from " << addr_s << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_WRONG_CHARS_IN_NAME); + actionstream << "Server: Player with an invalid name tried to connect " + "from " << addr_s << std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_WRONG_CHARS_IN_NAME); return; } - m_clients.setPlayerName(pkt->getPeerId(), playername); + m_clients.setPlayerName(peer_id, playername); //TODO (later) case insensitivity std::string legacyPlayerNameCasing = playerName; if (!isSingleplayer() && strcasecmp(playername, "singleplayer") == 0) { - actionstream << "Server: Player with the name \"singleplayer\" " - << "tried to connect from " << addr_s << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_WRONG_NAME); + actionstream << "Server: Player with the name \"singleplayer\" tried " + "to connect from " << addr_s << std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_WRONG_NAME); return; } { std::string reason; if (m_script->on_prejoinplayer(playername, addr_s, &reason)) { - actionstream << "Server: Player with the name \"" << playerName << "\" " - << "tried to connect from " << addr_s << " " - << "but it was disallowed for the following reason: " - << reason << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_CUSTOM_STRING, reason); + actionstream << "Server: Player with the name \"" << playerName << + "\" tried to connect from " << addr_s << + " but it was disallowed for the following reason: " << reason << + std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_CUSTOM_STRING, reason); return; } } - infostream << "Server: New connection: \"" << playerName << "\" from " - << addr_s << " (peer_id=" << pkt->getPeerId() << ")" << std::endl; + infostream << "Server: New connection: \"" << playerName << "\" from " << + addr_s << " (peer_id=" << peer_id << ")" << std::endl; // Enforce user limit. // Don't enforce for users that have some admin right or mod permits it. if (m_clients.isUserLimitReached() && playername != g_settings->get("name") && !m_script->can_bypass_userlimit(playername, addr_s)) { - actionstream << "Server: " << playername << " tried to join from " - << addr_s << ", but there" << " are already max_users=" - << g_settings->getU16("max_users") << " players." << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_TOO_MANY_USERS); + actionstream << "Server: " << playername << " tried to join from " << + addr_s << ", but there are already max_users=" << + g_settings->getU16("max_users") << " players." << std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_TOO_MANY_USERS); return; } @@ -228,20 +229,19 @@ void Server::handleCommand_Init(NetworkPacket* pkt) auth_mechs |= AUTH_MECHANISM_SRP; client->enc_pwd = encpwd; } else { - actionstream << "User " << playername - << " tried to log in, but password field" - << " was invalid (unknown mechcode)." << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_SERVER_FAIL); + actionstream << "User " << playername << " tried to log in, " + "but password field was invalid (unknown mechcode)." << + std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_SERVER_FAIL); return; } } else if (base64_is_valid(encpwd)) { auth_mechs |= AUTH_MECHANISM_LEGACY_PASSWORD; client->enc_pwd = encpwd; } else { - actionstream << "User " << playername - << " tried to log in, but password field" - << " was invalid (invalid base64)." << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_SERVER_FAIL); + actionstream << "User " << playername << " tried to log in, but " + "password field was invalid (invalid base64)." << std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_SERVER_FAIL); return; } } else { @@ -264,8 +264,8 @@ void Server::handleCommand_Init(NetworkPacket* pkt) verbosestream << "Sending TOCLIENT_HELLO with auth method field: " << auth_mechs << std::endl; - NetworkPacket resp_pkt(TOCLIENT_HELLO, 1 + 4 - + legacyPlayerNameCasing.size(), pkt->getPeerId()); + NetworkPacket resp_pkt(TOCLIENT_HELLO, + 1 + 4 + legacyPlayerNameCasing.size(), peer_id); u16 depl_compress_mode = NETPROTO_COMPRESSION_NONE; resp_pkt << depl_serial_v << depl_compress_mode << net_proto_version @@ -276,16 +276,16 @@ void Server::handleCommand_Init(NetworkPacket* pkt) client->allowed_auth_mechs = auth_mechs; client->setDeployedCompressionMode(depl_compress_mode); - m_clients.event(pkt->getPeerId(), CSE_Hello); + m_clients.event(peer_id, CSE_Hello); } void Server::handleCommand_Init2(NetworkPacket* pkt) { - verbosestream << "Server: Got TOSERVER_INIT2 from " - << pkt->getPeerId() << std::endl; + session_t peer_id = pkt->getPeerId(); + verbosestream << "Server: Got TOSERVER_INIT2 from " << peer_id << std::endl; - m_clients.event(pkt->getPeerId(), CSE_GotInit2); - u16 protocol_version = m_clients.getProtocolVersion(pkt->getPeerId()); + m_clients.event(peer_id, CSE_GotInit2); + u16 protocol_version = m_clients.getProtocolVersion(peer_id); std::string lang; if (pkt->getSize() > 0) @@ -295,45 +295,45 @@ void Server::handleCommand_Init2(NetworkPacket* pkt) Send some initialization data */ - infostream << "Server: Sending content to " - << getPlayerName(pkt->getPeerId()) << std::endl; + infostream << "Server: Sending content to " << getPlayerName(peer_id) << + std::endl; // Send item definitions - SendItemDef(pkt->getPeerId(), m_itemdef, protocol_version); + SendItemDef(peer_id, m_itemdef, protocol_version); // Send node definitions - SendNodeDef(pkt->getPeerId(), m_nodedef, protocol_version); + SendNodeDef(peer_id, m_nodedef, protocol_version); - m_clients.event(pkt->getPeerId(), CSE_SetDefinitionsSent); + m_clients.event(peer_id, CSE_SetDefinitionsSent); // Send media announcement - sendMediaAnnouncement(pkt->getPeerId(), lang); + sendMediaAnnouncement(peer_id, lang); - RemoteClient *client = getClient(pkt->getPeerId(), CS_InitDone); + RemoteClient *client = getClient(peer_id, CS_InitDone); // Send active objects { - PlayerSAO *sao = getPlayerSAO(pkt->getPeerId()); + PlayerSAO *sao = getPlayerSAO(peer_id); if (client && sao) SendActiveObjectRemoveAdd(client, sao); } // Send detached inventories - sendDetachedInventories(pkt->getPeerId(), false); + sendDetachedInventories(peer_id, false); // Send player movement settings - SendMovement(pkt->getPeerId()); + SendMovement(peer_id); // Send time of day u16 time = m_env->getTimeOfDay(); float time_speed = g_settings->getFloat("time_speed"); - SendTimeOfDay(pkt->getPeerId(), time, time_speed); + SendTimeOfDay(peer_id, time, time_speed); - SendCSMRestrictionFlags(pkt->getPeerId()); + SendCSMRestrictionFlags(peer_id); // Warnings about protocol version can be issued here if (client->net_proto_version < LATEST_PROTOCOL_VERSION) { - SendChatMessage(pkt->getPeerId(), ChatMessage(CHATMESSAGE_TYPE_SYSTEM, + SendChatMessage(peer_id, ChatMessage(CHATMESSAGE_TYPE_SYSTEM, L"# Server: WARNING: YOUR CLIENT'S VERSION MAY NOT BE FULLY COMPATIBLE " L"WITH THIS SERVER!")); } @@ -346,8 +346,9 @@ void Server::handleCommand_RequestMedia(NetworkPacket* pkt) *pkt >> numfiles; - infostream << "Sending " << numfiles << " files to " - << getPlayerName(pkt->getPeerId()) << std::endl; + session_t peer_id = pkt->getPeerId(); + infostream << "Sending " << numfiles << " files to " << + getPlayerName(peer_id) << std::endl; verbosestream << "TOSERVER_REQUEST_MEDIA: " << std::endl; for (u16 i = 0; i < numfiles; i++) { @@ -360,7 +361,7 @@ void Server::handleCommand_RequestMedia(NetworkPacket* pkt) << name << std::endl; } - sendRequestedMedia(pkt->getPeerId(), tosend); + sendRequestedMedia(peer_id, tosend); } void Server::handleCommand_ClientReady(NetworkPacket* pkt) @@ -370,18 +371,16 @@ void Server::handleCommand_ClientReady(NetworkPacket* pkt) PlayerSAO* playersao = StageTwoClientInit(peer_id); if (playersao == NULL) { - actionstream - << "TOSERVER_CLIENT_READY stage 2 client init failed for peer_id: " - << peer_id << std::endl; + errorstream << "TOSERVER_CLIENT_READY stage 2 client init failed " + "peer_id=" << peer_id << std::endl; DisconnectPeer(peer_id); return; } if (pkt->getSize() < 8) { - errorstream - << "TOSERVER_CLIENT_READY client sent inconsistent data, disconnecting peer_id: " - << peer_id << std::endl; + errorstream << "TOSERVER_CLIENT_READY client sent inconsistent data, " + "disconnecting peer_id: " << peer_id << std::endl; DisconnectPeer(peer_id); return; } @@ -390,9 +389,8 @@ void Server::handleCommand_ClientReady(NetworkPacket* pkt) std::string full_ver; *pkt >> major_ver >> minor_ver >> patch_ver >> reserved >> full_ver; - m_clients.setClientVersion( - peer_id, major_ver, minor_ver, patch_ver, - full_ver); + m_clients.setClientVersion(peer_id, major_ver, minor_ver, patch_ver, + full_ver); if (pkt->getRemainingBytes() >= 2) *pkt >> playersao->getPlayer()->formspec_version; @@ -414,7 +412,7 @@ void Server::handleCommand_ClientReady(NetworkPacket* pkt) m_script->on_joinplayer(playersao); // Send shutdown timer if shutdown has been scheduled if (m_shutdown_state.isTimerRunning()) { - SendChatMessage(pkt->getPeerId(), m_shutdown_state.getShutdownTimerMessage()); + SendChatMessage(peer_id, m_shutdown_state.getShutdownTimerMessage()); } } @@ -508,21 +506,22 @@ void Server::process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao, void Server::handleCommand_PlayerPos(NetworkPacket* pkt) { - RemotePlayer *player = m_env->getPlayer(pkt->getPeerId()); + session_t peer_id = pkt->getPeerId(); + RemotePlayer *player = m_env->getPlayer(peer_id); if (player == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } PlayerSAO *playersao = player->getPlayerSAO(); if (playersao == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player object for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player object for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } @@ -568,22 +567,23 @@ void Server::handleCommand_DeletedBlocks(NetworkPacket* pkt) void Server::handleCommand_InventoryAction(NetworkPacket* pkt) { - RemotePlayer *player = m_env->getPlayer(pkt->getPeerId()); + session_t peer_id = pkt->getPeerId(); + RemotePlayer *player = m_env->getPlayer(peer_id); if (player == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } PlayerSAO *playersao = player->getPlayerSAO(); if (playersao == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player object for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player object for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } @@ -761,12 +761,13 @@ void Server::handleCommand_ChatMessage(NetworkPacket* pkt) message += (wchar_t)tmp_wchar; } - RemotePlayer *player = m_env->getPlayer(pkt->getPeerId()); + session_t peer_id = pkt->getPeerId(); + RemotePlayer *player = m_env->getPlayer(peer_id); if (player == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } @@ -777,8 +778,8 @@ void Server::handleCommand_ChatMessage(NetworkPacket* pkt) std::wstring answer_to_sender = handleChat(name, wname, message, true, player); if (!answer_to_sender.empty()) { // Send the answer to sender - SendChatMessage(pkt->getPeerId(), ChatMessage(CHATMESSAGE_TYPE_NORMAL, - answer_to_sender, wname)); + SendChatMessage(peer_id, ChatMessage(CHATMESSAGE_TYPE_NORMAL, + answer_to_sender, wname)); } } @@ -788,22 +789,23 @@ void Server::handleCommand_Damage(NetworkPacket* pkt) *pkt >> damage; - RemotePlayer *player = m_env->getPlayer(pkt->getPeerId()); + session_t peer_id = pkt->getPeerId(); + RemotePlayer *player = m_env->getPlayer(peer_id); if (player == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } PlayerSAO *playersao = player->getPlayerSAO(); if (playersao == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player object for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player object for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } @@ -825,105 +827,28 @@ void Server::handleCommand_Damage(NetworkPacket* pkt) } } -void Server::handleCommand_Password(NetworkPacket* pkt) -{ - if (pkt->getSize() != PASSWORD_SIZE * 2) - return; - - std::string oldpwd; - std::string newpwd; - - // Deny for clients using the new protocol - RemoteClient* client = getClient(pkt->getPeerId(), CS_Created); - if (client->net_proto_version >= 25) { - infostream << "Server::handleCommand_Password(): Denying change: " - << " Client protocol version for peer_id=" << pkt->getPeerId() - << " too new!" << std::endl; - return; - } - - for (u16 i = 0; i < PASSWORD_SIZE - 1; i++) { - char c = pkt->getChar(i); - if (c == 0) - break; - oldpwd += c; - } - - for (u16 i = 0; i < PASSWORD_SIZE - 1; i++) { - char c = pkt->getChar(PASSWORD_SIZE + i); - if (c == 0) - break; - newpwd += c; - } - - RemotePlayer *player = m_env->getPlayer(pkt->getPeerId()); - if (player == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); - return; - } - - if (!base64_is_valid(newpwd)) { - infostream<<"Server: " << player->getName() << - " supplied invalid password hash" << std::endl; - // Wrong old password supplied!! - SendChatMessage(pkt->getPeerId(), ChatMessage(CHATMESSAGE_TYPE_SYSTEM, - L"Invalid new password hash supplied. Password NOT changed.")); - return; - } - - infostream << "Server: Client requests a password change from " - << "'" << oldpwd << "' to '" << newpwd << "'" << std::endl; - - std::string playername = player->getName(); - - std::string checkpwd; - m_script->getAuth(playername, &checkpwd, NULL); - - if (oldpwd != checkpwd) { - infostream << "Server: invalid old password" << std::endl; - // Wrong old password supplied!! - SendChatMessage(pkt->getPeerId(), ChatMessage(CHATMESSAGE_TYPE_SYSTEM, - L"Invalid old password supplied. Password NOT changed.")); - return; - } - - bool success = m_script->setPassword(playername, newpwd); - if (success) { - actionstream << player->getName() << " changes password" << std::endl; - SendChatMessage(pkt->getPeerId(), ChatMessage(CHATMESSAGE_TYPE_SYSTEM, - L"Password change successful.")); - } else { - actionstream << player->getName() << " tries to change password but " - << "it fails" << std::endl; - SendChatMessage(pkt->getPeerId(), ChatMessage(CHATMESSAGE_TYPE_SYSTEM, - L"Password change failed or unavailable.")); - } -} - void Server::handleCommand_PlayerItem(NetworkPacket* pkt) { if (pkt->getSize() < 2) return; - RemotePlayer *player = m_env->getPlayer(pkt->getPeerId()); + session_t peer_id = pkt->getPeerId(); + RemotePlayer *player = m_env->getPlayer(peer_id); if (player == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } PlayerSAO *playersao = player->getPlayerSAO(); if (playersao == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player object for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player object for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } @@ -936,12 +861,13 @@ void Server::handleCommand_PlayerItem(NetworkPacket* pkt) void Server::handleCommand_Respawn(NetworkPacket* pkt) { - RemotePlayer *player = m_env->getPlayer(pkt->getPeerId()); + session_t peer_id = pkt->getPeerId(); + RemotePlayer *player = m_env->getPlayer(peer_id); if (player == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } @@ -951,7 +877,7 @@ void Server::handleCommand_Respawn(NetworkPacket* pkt) if (!playersao->isDead()) return; - RespawnPlayer(pkt->getPeerId()); + RespawnPlayer(peer_id); actionstream << player->getName() << " respawns at " << PP(playersao->getBasePosition() / BS) << std::endl; @@ -1006,22 +932,23 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) verbosestream << "TOSERVER_INTERACT: action=" << (int)action << ", item=" << item_i << ", pointed=" << pointed.dump() << std::endl; - RemotePlayer *player = m_env->getPlayer(pkt->getPeerId()); + session_t peer_id = pkt->getPeerId(); + RemotePlayer *player = m_env->getPlayer(peer_id); if (player == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } PlayerSAO *playersao = player->getPlayerSAO(); if (playersao == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player object for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player object for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } @@ -1030,7 +957,7 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) << " tried to interact while dead; ignoring." << std::endl; if (pointed.type == POINTEDTHING_NODE) { // Re-send block to revert change on client-side - RemoteClient *client = getClient(pkt->getPeerId()); + RemoteClient *client = getClient(peer_id); v3s16 blockpos = getNodeBlockPos(pointed.node_undersurface); client->SetBlockNotSent(blockpos); } @@ -1081,7 +1008,7 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) pointed.dump() << " without 'interact' privilege" << std::endl; // Re-send block to revert change on client-side - RemoteClient *client = getClient(pkt->getPeerId()); + RemoteClient *client = getClient(peer_id); // Digging completed -> under if (action == INTERACT_DIGGING_COMPLETED) { v3s16 blockpos = getNodeBlockPos(floatToInt(pointed_pos_under, BS)); @@ -1109,7 +1036,7 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) if (!checkInteractDistance(player, d, pointed.dump())) { // Re-send block to revert change on client-side - RemoteClient *client = getClient(pkt->getPeerId()); + RemoteClient *client = getClient(peer_id); v3s16 blockpos = getNodeBlockPos(floatToInt(pointed_pos_under, BS)); client->SetBlockNotSent(blockpos); return; @@ -1132,11 +1059,10 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) n = m_env->getMap().getNode(p_under, &pos_ok); if (!pos_ok) { - infostream << "Server: Not punching: Node not found." - << " Adding block to emerge queue." - << std::endl; - m_emerge->enqueueBlockEmerge(pkt->getPeerId(), - getNodeBlockPos(p_above), false); + infostream << "Server: Not punching: Node not found. " + "Adding block to emerge queue." << std::endl; + m_emerge->enqueueBlockEmerge(peer_id, getNodeBlockPos(p_above), + false); } if (n.getContent() != CONTENT_IGNORE) @@ -1202,11 +1128,10 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) bool pos_ok; MapNode n = m_env->getMap().getNode(p_under, &pos_ok); if (!pos_ok) { - infostream << "Server: Not finishing digging: Node not found." - << " Adding block to emerge queue." - << std::endl; - m_emerge->enqueueBlockEmerge(pkt->getPeerId(), - getNodeBlockPos(p_above), false); + infostream << "Server: Not finishing digging: Node not found. " + "Adding block to emerge queue." << std::endl; + m_emerge->enqueueBlockEmerge(peer_id, getNodeBlockPos(p_above), + false); } /* Cheat prevention */ @@ -1282,7 +1207,7 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) m_script->node_on_dig(p_under, n, playersao); v3s16 blockpos = getNodeBlockPos(floatToInt(pointed_pos_under, BS)); - RemoteClient *client = getClient(pkt->getPeerId()); + RemoteClient *client = getClient(peer_id); // Send unusual result (that is, node not being removed) if (m_env->getMap().getNode(p_under).getContent() != CONTENT_AIR) { // Re-send block to revert change on client-side @@ -1304,7 +1229,7 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) // Reset build time counter if (pointed.type == POINTEDTHING_NODE && selected_item.getDefinition(m_itemdef).type == ITEM_NODE) - getClient(pkt->getPeerId())->m_time_from_building = 0.0; + getClient(peer_id)->m_time_from_building = 0.0; if (pointed.type == POINTEDTHING_OBJECT) { // Right click object @@ -1338,7 +1263,7 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) // If item has node placement prediction, always send the // blocks to make sure the client knows what exactly happened - RemoteClient *client = getClient(pkt->getPeerId()); + RemoteClient *client = getClient(peer_id); v3s16 blockpos = getNodeBlockPos(floatToInt(pointed_pos_above, BS)); v3s16 blockpos2 = getNodeBlockPos(floatToInt(pointed_pos_under, BS)); if (!selected_item.getDefinition(m_itemdef).node_placement_prediction.empty()) { @@ -1441,22 +1366,23 @@ void Server::handleCommand_NodeMetaFields(NetworkPacket* pkt) fields[fieldname] = pkt->readLongString(); } - RemotePlayer *player = m_env->getPlayer(pkt->getPeerId()); + session_t peer_id = pkt->getPeerId(); + RemotePlayer *player = m_env->getPlayer(peer_id); if (player == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } PlayerSAO *playersao = player->getPlayerSAO(); if (playersao == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player object for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player object for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } @@ -1492,22 +1418,23 @@ void Server::handleCommand_InventoryFields(NetworkPacket* pkt) fields[fieldname] = pkt->readLongString(); } - RemotePlayer *player = m_env->getPlayer(pkt->getPeerId()); + session_t peer_id = pkt->getPeerId(); + RemotePlayer *player = m_env->getPlayer(peer_id); if (player == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } PlayerSAO *playersao = player->getPlayerSAO(); if (playersao == NULL) { - errorstream << "Server::ProcessData(): Canceling: " - "No player object for peer_id=" << pkt->getPeerId() - << " disconnecting peer!" << std::endl; - DisconnectPeer(pkt->getPeerId()); + errorstream << + "Server::ProcessData(): Canceling: No player object for peer_id=" << + peer_id << " disconnecting peer!" << std::endl; + DisconnectPeer(peer_id); return; } @@ -1517,7 +1444,7 @@ void Server::handleCommand_InventoryFields(NetworkPacket* pkt) } // verify that we displayed the formspec to the user - const auto peer_state_iterator = m_formspec_state_data.find(pkt->getPeerId()); + const auto peer_state_iterator = m_formspec_state_data.find(peer_id); if (peer_state_iterator != m_formspec_state_data.end()) { const std::string &server_formspec_name = peer_state_iterator->second; if (client_formspec_name == server_formspec_name) { @@ -1543,7 +1470,8 @@ void Server::handleCommand_InventoryFields(NetworkPacket* pkt) void Server::handleCommand_FirstSrp(NetworkPacket* pkt) { - RemoteClient* client = getClient(pkt->getPeerId(), CS_Invalid); + session_t peer_id = pkt->getPeerId(); + RemoteClient *client = getClient(peer_id, CS_Invalid); ClientState cstate = client->getState(); std::string playername = client->getName(); @@ -1551,7 +1479,7 @@ void Server::handleCommand_FirstSrp(NetworkPacket* pkt) std::string salt; std::string verification_key; - std::string addr_s = getPeerAddress(pkt->getPeerId()).serializeString(); + std::string addr_s = getPeerAddress(peer_id).serializeString(); u8 is_empty; *pkt >> salt >> verification_key >> is_empty; @@ -1565,7 +1493,7 @@ void Server::handleCommand_FirstSrp(NetworkPacket* pkt) actionstream << "Server: Client from " << addr_s << " tried to set password without being " << "authenticated, or the username being new." << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_UNEXPECTED_DATA); + DenyAccess(peer_id, SERVER_ACCESSDENIED_UNEXPECTED_DATA); return; } @@ -1574,7 +1502,7 @@ void Server::handleCommand_FirstSrp(NetworkPacket* pkt) is_empty == 1) { actionstream << "Server: " << playername << " supplied empty password from " << addr_s << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_EMPTY_PASSWORD); + DenyAccess(peer_id, SERVER_ACCESSDENIED_EMPTY_PASSWORD); return; } @@ -1583,7 +1511,7 @@ void Server::handleCommand_FirstSrp(NetworkPacket* pkt) initial_ver_key = encode_srp_verifier(verification_key, salt); m_script->createAuth(playername, initial_ver_key); - acceptAuth(pkt->getPeerId(), false); + acceptAuth(peer_id, false); } else { if (cstate < CS_SudoMode) { infostream << "Server::ProcessData(): Ignoring TOSERVER_FIRST_SRP from " @@ -1591,48 +1519,48 @@ void Server::handleCommand_FirstSrp(NetworkPacket* pkt) << std::endl; return; } - m_clients.event(pkt->getPeerId(), CSE_SudoLeave); + m_clients.event(peer_id, CSE_SudoLeave); std::string pw_db_field = encode_srp_verifier(verification_key, salt); bool success = m_script->setPassword(playername, pw_db_field); if (success) { actionstream << playername << " changes password" << std::endl; - SendChatMessage(pkt->getPeerId(), ChatMessage(CHATMESSAGE_TYPE_SYSTEM, - L"Password change successful.")); + SendChatMessage(peer_id, ChatMessage(CHATMESSAGE_TYPE_SYSTEM, + L"Password change successful.")); } else { - actionstream << playername << " tries to change password but " - << "it fails" << std::endl; - SendChatMessage(pkt->getPeerId(), ChatMessage(CHATMESSAGE_TYPE_SYSTEM, - L"Password change failed or unavailable.")); + actionstream << playername << + " tries to change password but it fails" << std::endl; + SendChatMessage(peer_id, ChatMessage(CHATMESSAGE_TYPE_SYSTEM, + L"Password change failed or unavailable.")); } } } void Server::handleCommand_SrpBytesA(NetworkPacket* pkt) { - RemoteClient* client = getClient(pkt->getPeerId(), CS_Invalid); + session_t peer_id = pkt->getPeerId(); + RemoteClient *client = getClient(peer_id, CS_Invalid); ClientState cstate = client->getState(); bool wantSudo = (cstate == CS_Active); if (!((cstate == CS_HelloSent) || (cstate == CS_Active))) { - actionstream << "Server: got SRP _A packet in wrong state " - << cstate << " from " - << getPeerAddress(pkt->getPeerId()).serializeString() - << ". Ignoring." << std::endl; + actionstream << "Server: got SRP _A packet in wrong state " << cstate << + " from " << getPeerAddress(peer_id).serializeString() << + ". Ignoring." << std::endl; return; } if (client->chosen_mech != AUTH_MECHANISM_NONE) { - actionstream << "Server: got SRP _A packet, while auth" - << "is already going on with mech " << client->chosen_mech - << " from " << getPeerAddress(pkt->getPeerId()).serializeString() - << " (wantSudo=" << wantSudo << "). Ignoring." << std::endl; + actionstream << "Server: got SRP _A packet, while auth is already " + "going on with mech " << client->chosen_mech << " from " << + getPeerAddress(peer_id).serializeString() << + " (wantSudo=" << wantSudo << "). Ignoring." << std::endl; if (wantSudo) { - DenySudoAccess(pkt->getPeerId()); + DenySudoAccess(peer_id); return; } - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_UNEXPECTED_DATA); + DenyAccess(peer_id, SERVER_ACCESSDENIED_UNEXPECTED_DATA); return; } @@ -1649,19 +1577,19 @@ void Server::handleCommand_SrpBytesA(NetworkPacket* pkt) if (wantSudo) { if (!client->isSudoMechAllowed(chosen)) { - actionstream << "Server: Player \"" << client->getName() - << "\" at " << getPeerAddress(pkt->getPeerId()).serializeString() - << " tried to change password using unallowed mech " - << chosen << "." << std::endl; - DenySudoAccess(pkt->getPeerId()); + actionstream << "Server: Player \"" << client->getName() << + "\" at " << getPeerAddress(peer_id).serializeString() << + " tried to change password using unallowed mech " << chosen << + "." << std::endl; + DenySudoAccess(peer_id); return; } } else { if (!client->isMechAllowed(chosen)) { - actionstream << "Server: Client tried to authenticate from " - << getPeerAddress(pkt->getPeerId()).serializeString() - << " using unallowed mech " << chosen << "." << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_UNEXPECTED_DATA); + actionstream << "Server: Client tried to authenticate from " << + getPeerAddress(peer_id).serializeString() << + " using unallowed mech " << chosen << "." << std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_UNEXPECTED_DATA); return; } } @@ -1677,10 +1605,10 @@ void Server::handleCommand_SrpBytesA(NetworkPacket* pkt) &verifier, &salt); } else if (!decode_srp_verifier_and_salt(client->enc_pwd, &verifier, &salt)) { // Non-base64 errors should have been catched in the init handler - actionstream << "Server: User " << client->getName() - << " tried to log in, but srp verifier field" - << " was invalid (most likely invalid base64)." << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_SERVER_FAIL); + actionstream << "Server: User " << client->getName() << + " tried to log in, but srp verifier field was invalid (most likely " + "invalid base64)." << std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_SERVER_FAIL); return; } @@ -1700,22 +1628,23 @@ void Server::handleCommand_SrpBytesA(NetworkPacket* pkt) << " tried to log in, SRP-6a safety check violated in _A handler." << std::endl; if (wantSudo) { - DenySudoAccess(pkt->getPeerId()); + DenySudoAccess(peer_id); return; } - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_UNEXPECTED_DATA); + DenyAccess(peer_id, SERVER_ACCESSDENIED_UNEXPECTED_DATA); return; } - NetworkPacket resp_pkt(TOCLIENT_SRP_BYTES_S_B, 0, pkt->getPeerId()); + NetworkPacket resp_pkt(TOCLIENT_SRP_BYTES_S_B, 0, peer_id); resp_pkt << salt << std::string(bytes_B, len_B); Send(&resp_pkt); } void Server::handleCommand_SrpBytesM(NetworkPacket* pkt) { - RemoteClient* client = getClient(pkt->getPeerId(), CS_Invalid); + session_t peer_id = pkt->getPeerId(); + RemoteClient *client = getClient(peer_id, CS_Invalid); ClientState cstate = client->getState(); bool wantSudo = (cstate == CS_Active); @@ -1723,25 +1652,24 @@ void Server::handleCommand_SrpBytesM(NetworkPacket* pkt) verbosestream << "Server: Received TOCLIENT_SRP_BYTES_M." << std::endl; if (!((cstate == CS_HelloSent) || (cstate == CS_Active))) { - actionstream << "Server: got SRP _M packet in wrong state " - << cstate << " from " - << getPeerAddress(pkt->getPeerId()).serializeString() - << ". Ignoring." << std::endl; + actionstream << "Server: got SRP _M packet in wrong state " << cstate << + " from " << getPeerAddress(peer_id).serializeString() << + ". Ignoring." << std::endl; return; } if (client->chosen_mech != AUTH_MECHANISM_SRP && client->chosen_mech != AUTH_MECHANISM_LEGACY_PASSWORD) { - actionstream << "Server: got SRP _M packet, while auth" - << "is going on with mech " << client->chosen_mech - << " from " << getPeerAddress(pkt->getPeerId()).serializeString() - << " (wantSudo=" << wantSudo << "). Denying." << std::endl; + actionstream << "Server: got SRP _M packet, while auth is going on " + "with mech " << client->chosen_mech << " from " << + getPeerAddress(peer_id).serializeString() << + " (wantSudo=" << wantSudo << "). Denying." << std::endl; if (wantSudo) { - DenySudoAccess(pkt->getPeerId()); + DenySudoAccess(peer_id); return; } - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_UNEXPECTED_DATA); + DenyAccess(peer_id, SERVER_ACCESSDENIED_UNEXPECTED_DATA); return; } @@ -1750,10 +1678,10 @@ void Server::handleCommand_SrpBytesM(NetworkPacket* pkt) if (srp_verifier_get_session_key_length((SRPVerifier *) client->auth_data) != bytes_M.size()) { - actionstream << "Server: User " << client->getName() - << " at " << getPeerAddress(pkt->getPeerId()).serializeString() - << " sent bytes_M with invalid length " << bytes_M.size() << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_UNEXPECTED_DATA); + actionstream << "Server: User " << client->getName() << " at " << + getPeerAddress(peer_id).serializeString() << + " sent bytes_M with invalid length " << bytes_M.size() << std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_UNEXPECTED_DATA); return; } @@ -1764,21 +1692,19 @@ void Server::handleCommand_SrpBytesM(NetworkPacket* pkt) if (!bytes_HAMK) { if (wantSudo) { - actionstream << "Server: User " << client->getName() - << " at " << getPeerAddress(pkt->getPeerId()).serializeString() - << " tried to change their password, but supplied wrong" - << " (SRP) password for authentication." << std::endl; - DenySudoAccess(pkt->getPeerId()); + actionstream << "Server: User " << client->getName() << " at " << + getPeerAddress(peer_id).serializeString() << + " tried to change their password, but supplied wrong (SRP) " + "password for authentication." << std::endl; + DenySudoAccess(peer_id); return; } - std::string ip = getPeerAddress(pkt->getPeerId()).serializeString(); - actionstream << "Server: User " << client->getName() - << " at " << ip - << " supplied wrong password (auth mechanism: SRP)." - << std::endl; + std::string ip = getPeerAddress(peer_id).serializeString(); + actionstream << "Server: User " << client->getName() << " at " << ip << + " supplied wrong password (auth mechanism: SRP)." << std::endl; m_script->on_auth_failure(client->getName(), ip); - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_WRONG_PASSWORD); + DenyAccess(peer_id, SERVER_ACCESSDENIED_WRONG_PASSWORD); return; } @@ -1788,15 +1714,16 @@ void Server::handleCommand_SrpBytesM(NetworkPacket* pkt) std::string checkpwd; // not used, but needed for passing something if (!m_script->getAuth(playername, &checkpwd, NULL)) { - actionstream << "Server: " << playername << " cannot be authenticated" - << " (auth handler does not work?)" << std::endl; - DenyAccess(pkt->getPeerId(), SERVER_ACCESSDENIED_SERVER_FAIL); + actionstream << "Server: " << playername << + " cannot be authenticated (auth handler does not work?)" << + std::endl; + DenyAccess(peer_id, SERVER_ACCESSDENIED_SERVER_FAIL); return; } client->create_player_on_auth_success = false; } - acceptAuth(pkt->getPeerId(), wantSudo); + acceptAuth(peer_id, wantSudo); } /* @@ -1808,20 +1735,21 @@ void Server::handleCommand_ModChannelJoin(NetworkPacket *pkt) std::string channel_name; *pkt >> channel_name; - NetworkPacket resp_pkt(TOCLIENT_MODCHANNEL_SIGNAL, 1 + 2 + channel_name.size(), - pkt->getPeerId()); + session_t peer_id = pkt->getPeerId(); + NetworkPacket resp_pkt(TOCLIENT_MODCHANNEL_SIGNAL, + 1 + 2 + channel_name.size(), peer_id); // Send signal to client to notify join succeed or not if (g_settings->getBool("enable_mod_channels") && - m_modchannel_mgr->joinChannel(channel_name, pkt->getPeerId())) { + m_modchannel_mgr->joinChannel(channel_name, peer_id)) { resp_pkt << (u8) MODCHANNEL_SIGNAL_JOIN_OK; - infostream << "Peer " << pkt->getPeerId() << " joined channel " << channel_name - << std::endl; + infostream << "Peer " << peer_id << " joined channel " << + channel_name << std::endl; } else { resp_pkt << (u8)MODCHANNEL_SIGNAL_JOIN_FAILURE; - infostream << "Peer " << pkt->getPeerId() << " tried to join channel " - << channel_name << ", but was already registered." << std::endl; + infostream << "Peer " << peer_id << " tried to join channel " << + channel_name << ", but was already registered." << std::endl; } resp_pkt << channel_name; Send(&resp_pkt); @@ -1832,19 +1760,20 @@ void Server::handleCommand_ModChannelLeave(NetworkPacket *pkt) std::string channel_name; *pkt >> channel_name; - NetworkPacket resp_pkt(TOCLIENT_MODCHANNEL_SIGNAL, 1 + 2 + channel_name.size(), - pkt->getPeerId()); + session_t peer_id = pkt->getPeerId(); + NetworkPacket resp_pkt(TOCLIENT_MODCHANNEL_SIGNAL, + 1 + 2 + channel_name.size(), peer_id); // Send signal to client to notify join succeed or not if (g_settings->getBool("enable_mod_channels") && - m_modchannel_mgr->leaveChannel(channel_name, pkt->getPeerId())) { + m_modchannel_mgr->leaveChannel(channel_name, peer_id)) { resp_pkt << (u8)MODCHANNEL_SIGNAL_LEAVE_OK; - infostream << "Peer " << pkt->getPeerId() << " left channel " << channel_name - << std::endl; + infostream << "Peer " << peer_id << " left channel " << channel_name << + std::endl; } else { resp_pkt << (u8) MODCHANNEL_SIGNAL_LEAVE_FAILURE; - infostream << "Peer " << pkt->getPeerId() << " left channel " << channel_name - << ", but was not registered." << std::endl; + infostream << "Peer " << peer_id << " left channel " << channel_name << + ", but was not registered." << std::endl; } resp_pkt << channel_name; Send(&resp_pkt); @@ -1855,8 +1784,10 @@ void Server::handleCommand_ModChannelMsg(NetworkPacket *pkt) std::string channel_name, channel_msg; *pkt >> channel_name >> channel_msg; - verbosestream << "Mod channel message received from peer " << pkt->getPeerId() - << " on channel " << channel_name << " message: " << channel_msg << std::endl; + session_t peer_id = pkt->getPeerId(); + verbosestream << "Mod channel message received from peer " << peer_id << + " on channel " << channel_name << " message: " << channel_msg << + std::endl; // If mod channels are not enabled, discard message if (!g_settings->getBool("enable_mod_channels")) { @@ -1865,8 +1796,8 @@ void Server::handleCommand_ModChannelMsg(NetworkPacket *pkt) // If channel not registered, signal it and ignore message if (!m_modchannel_mgr->channelRegistered(channel_name)) { - NetworkPacket resp_pkt(TOCLIENT_MODCHANNEL_SIGNAL, 1 + 2 + channel_name.size(), - pkt->getPeerId()); + NetworkPacket resp_pkt(TOCLIENT_MODCHANNEL_SIGNAL, + 1 + 2 + channel_name.size(), peer_id); resp_pkt << (u8)MODCHANNEL_SIGNAL_CHANNEL_NOT_REGISTERED << channel_name; Send(&resp_pkt); return; @@ -1874,5 +1805,5 @@ void Server::handleCommand_ModChannelMsg(NetworkPacket *pkt) // @TODO: filter, rate limit - broadcastModChannelMessage(channel_name, channel_msg, pkt->getPeerId()); + broadcastModChannelMessage(channel_name, channel_msg, peer_id); } diff --git a/src/server.h b/src/server.h index 680de57b5..eecc2c0f0 100644 --- a/src/server.h +++ b/src/server.h @@ -165,7 +165,6 @@ public: void handleCommand_InventoryAction(NetworkPacket* pkt); void handleCommand_ChatMessage(NetworkPacket* pkt); void handleCommand_Damage(NetworkPacket* pkt); - void handleCommand_Password(NetworkPacket* pkt); void handleCommand_PlayerItem(NetworkPacket* pkt); void handleCommand_Respawn(NetworkPacket* pkt); void handleCommand_Interact(NetworkPacket* pkt); From 241bf442608d27df0ce3c74889c357fb5589ab20 Mon Sep 17 00:00:00 2001 From: DS Date: Sat, 18 Apr 2020 17:20:20 +0200 Subject: [PATCH 118/424] Apply a scrollbar's default value to scroll containers (#9699) Fixes #9691. --- games/minimal/mods/test/formspec.lua | 2 +- src/gui/guiScrollContainer.h | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/games/minimal/mods/test/formspec.lua b/games/minimal/mods/test/formspec.lua index 53e92b243..4ab4f2717 100644 --- a/games/minimal/mods/test/formspec.lua +++ b/games/minimal/mods/test/formspec.lua @@ -251,7 +251,7 @@ Number] "box[1,22.5;4,1;#a00a]".. "scroll_container_end[]".. "scrollbaroptions[max=170]".. -- lowest seen pos is: 0.1*170+6=23 (factor*max+height) - "scrollbar[7.5,0;0.3,4;vertical;scrbar;0]".. + "scrollbar[7.5,0;0.3,4;vertical;scrbar;20]".. "scrollbar[8,0;0.3,4;vertical;scrbarhmmm;0]".. "dropdown[0,6;2;hmdrpdwnnn;apple,bulb;1]", } diff --git a/src/gui/guiScrollContainer.h b/src/gui/guiScrollContainer.h index 9eaa880bf..a0306291e 100644 --- a/src/gui/guiScrollContainer.h +++ b/src/gui/guiScrollContainer.h @@ -38,7 +38,11 @@ public: updateScrolling(); } - inline void setScrollBar(GUIScrollBar *scrollbar) { m_scrollbar = scrollbar; } + inline void setScrollBar(GUIScrollBar *scrollbar) + { + m_scrollbar = scrollbar; + updateScrolling(); + } private: enum OrientationEnum From 4fb6b6afa7329676166bbbccb897bd625155d038 Mon Sep 17 00:00:00 2001 From: DS Date: Sat, 18 Apr 2020 17:21:10 +0200 Subject: [PATCH 119/424] Formspec: allow lists to change size and existence while the formspec is open (#9700) Fixes #9640. --- src/gui/guiFormSpecMenu.cpp | 30 +------------------------- src/gui/guiInventoryList.cpp | 42 ++++++++++++++++++++++++++---------- src/gui/guiInventoryList.h | 5 ++++- 3 files changed, 36 insertions(+), 41 deletions(-) diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index b0255cf1b..85ab2eb50 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -489,38 +489,10 @@ void GUIFormSpecMenu::parseList(parserData *data, const std::string &element) start_i = stoi(startindex); if (geom.X < 0 || geom.Y < 0 || start_i < 0) { - errorstream<< "Invalid list element: '" << element << "'" << std::endl; + errorstream << "Invalid list element: '" << element << "'" << std::endl; return; } - // check for the existence of inventory and list - Inventory *inv = m_invmgr->getInventory(loc); - if (!inv) { - warningstream << "GUIFormSpecMenu::parseList(): " - << "The inventory location " - << "\"" << loc.dump() << "\" doesn't exist" - << std::endl; - return; - } - InventoryList *ilist = inv->getList(listname); - if (!ilist) { - warningstream << "GUIFormSpecMenu::parseList(): " - << "The inventory list \"" << listname << "\" " - << "@ \"" << loc.dump() << "\" doesn't exist" - << std::endl; - return; - } - - // trim geom if it is larger than the actual inventory size - s32 list_size = (s32)ilist->getSize(); - if (list_size < geom.X * geom.Y + start_i) { - list_size -= MYMAX(start_i, 0); - geom.Y = list_size / geom.X; - geom.Y += list_size % geom.X > 0 ? 1 : 0; - if (geom.Y <= 1) - geom.X = list_size; - } - if (!data->explicit_size) warningstream << "invalid use of list without a size[] element" << std::endl; diff --git a/src/gui/guiInventoryList.cpp b/src/gui/guiInventoryList.cpp index 536471229..dfdb60448 100644 --- a/src/gui/guiInventoryList.cpp +++ b/src/gui/guiInventoryList.cpp @@ -47,7 +47,8 @@ GUIInventoryList::GUIInventoryList(gui::IGUIEnvironment *env, m_fs_menu(fs_menu), m_options(options), m_font(font), - m_hovered_i(-1) + m_hovered_i(-1), + m_already_warned(false) { } @@ -58,20 +59,27 @@ void GUIInventoryList::draw() Inventory *inv = m_invmgr->getInventory(m_inventoryloc); if (!inv) { - warningstream << "GUIInventoryList::draw(): " - << "The inventory location " - << "\"" << m_inventoryloc.dump() << "\" doesn't exist anymore" - << std::endl; + if (!m_already_warned) { + warningstream << "GUIInventoryList::draw(): " + << "The inventory location " + << "\"" << m_inventoryloc.dump() << "\" doesn't exist" + << std::endl; + m_already_warned = true; + } return; } InventoryList *ilist = inv->getList(m_listname); if (!ilist) { - warningstream << "GUIInventoryList::draw(): " - << "The inventory list \"" << m_listname << "\" @ \"" - << m_inventoryloc.dump() << "\" doesn't exist anymore" - << std::endl; + if (!m_already_warned) { + warningstream << "GUIInventoryList::draw(): " + << "The inventory list \"" << m_listname << "\" @ \"" + << m_inventoryloc.dump() << "\" doesn't exist" + << std::endl; + m_already_warned = true; + } return; } + m_already_warned = false; video::IVideoDriver *driver = Environment->getVideoDriver(); Client *client = m_fs_menu->getClient(); @@ -80,9 +88,11 @@ void GUIInventoryList::draw() core::rect imgrect(0, 0, m_slot_size.X, m_slot_size.Y); v2s32 base_pos = AbsoluteRect.UpperLeftCorner; + const s32 list_size = (s32)ilist->getSize(); + for (s32 i = 0; i < m_geom.X * m_geom.Y; i++) { s32 item_i = i + m_start_item_i; - if (item_i >= (s32)ilist->getSize()) + if (item_i >= list_size) break; v2s32 p((i % m_geom.X) * m_slot_spacing.X, @@ -192,10 +202,19 @@ bool GUIInventoryList::OnEvent(const SEvent &event) s32 GUIInventoryList::getItemIndexAtPos(v2s32 p) const { + // no item if no gui element at pointer if (!IsVisible || AbsoluteClippingRect.getArea() <= 0 || !AbsoluteClippingRect.isPointInside(p)) return -1; + // there can not be an item if the inventory or the inventorylist does not exist + Inventory *inv = m_invmgr->getInventory(m_inventoryloc); + if (!inv) + return -1; + InventoryList *ilist = inv->getList(m_listname); + if (!ilist) + return -1; + core::rect imgrect(0, 0, m_slot_size.X, m_slot_size.Y); v2s32 base_pos = AbsoluteRect.UpperLeftCorner; @@ -210,7 +229,8 @@ s32 GUIInventoryList::getItemIndexAtPos(v2s32 p) const rect.clipAgainst(AbsoluteClippingRect); - if (rect.getArea() > 0 && rect.isPointInside(p)) + if (rect.getArea() > 0 && rect.isPointInside(p) && + i + m_start_item_i < (s32)ilist->getSize()) return i + m_start_item_i; return -1; diff --git a/src/gui/guiInventoryList.h b/src/gui/guiInventoryList.h index fd2c3601b..28e95fbbf 100644 --- a/src/gui/guiInventoryList.h +++ b/src/gui/guiInventoryList.h @@ -107,7 +107,7 @@ private: const InventoryLocation m_inventoryloc; const std::string m_listname; - // specifies the width and height of the inventorylist in itemslots + // the specified width and height of the shown inventorylist in itemslots const v2s32 m_geom; // the first item's index in inventory const s32 m_start_item_i; @@ -127,4 +127,7 @@ private: // the index of the hovered item; -1 if no item is hovered s32 m_hovered_i; + + // we do not want to write a warning on every draw + bool m_already_warned; }; From 87829cd7446dd13d1dfd27d96e0b4aeb2f234e33 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 18 Apr 2020 17:21:58 +0200 Subject: [PATCH 120/424] script: Move SAO usability check so that it covers all functions (#9698) see also 91eef646a59575bd9ae792e257bb6ad12fafc0b1 --- src/script/lua_api/l_object.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index bb1456ac9..d7afb84da 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -50,6 +50,8 @@ ObjectRef* ObjectRef::checkobject(lua_State *L, int narg) ServerActiveObject* ObjectRef::getobject(ObjectRef *ref) { ServerActiveObject *co = ref->m_object; + if (co && co->isGone()) + return NULL; return co; } @@ -60,8 +62,6 @@ LuaEntitySAO* ObjectRef::getluaobject(ObjectRef *ref) return NULL; if (obj->getType() != ACTIVEOBJECT_TYPE_LUAENTITY) return NULL; - if (obj->isGone()) - return NULL; return (LuaEntitySAO*)obj; } @@ -72,8 +72,6 @@ PlayerSAO* ObjectRef::getplayersao(ObjectRef *ref) return NULL; if (obj->getType() != ACTIVEOBJECT_TYPE_PLAYER) return NULL; - if (obj->isGone()) - return NULL; return (PlayerSAO*)obj; } @@ -132,7 +130,6 @@ int ObjectRef::l_set_pos(lua_State *L) { NO_MAP_LOCK_REQUIRED; ObjectRef *ref = checkobject(L, 1); - //LuaEntitySAO *co = getluaobject(ref); ServerActiveObject *co = getobject(ref); if (co == NULL) return 0; // pos @@ -147,7 +144,6 @@ int ObjectRef::l_move_to(lua_State *L) { NO_MAP_LOCK_REQUIRED; ObjectRef *ref = checkobject(L, 1); - //LuaEntitySAO *co = getluaobject(ref); ServerActiveObject *co = getobject(ref); if (co == NULL) return 0; // pos @@ -1102,17 +1098,13 @@ int ObjectRef::l_add_player_velocity(lua_State *L) ObjectRef *ref = checkobject(L, 1); v3f vel = checkFloatPos(L, 2); - RemotePlayer *player = getplayer(ref); PlayerSAO *co = getplayersao(ref); - if (!player || !co) + if (!co) return 0; - session_t peer_id = player->getPeerId(); - if (peer_id == PEER_ID_INEXISTENT) - return 0; // Do it co->setMaxSpeedOverride(vel); - getServer(L)->SendPlayerSpeed(peer_id, vel); + getServer(L)->SendPlayerSpeed(co->getPeerID(), vel); return 0; } From c87d52a5fa21f31c2d68795822b48c8bf993ca6b Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 18 Apr 2020 18:36:47 +0200 Subject: [PATCH 121/424] Shaders: Complete 478e753. OpenGL 4.3 compatiblity --- client/shaders/nodes_shader/opengl_vertex.glsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/shaders/nodes_shader/opengl_vertex.glsl b/client/shaders/nodes_shader/opengl_vertex.glsl index ccff1260d..0d8d0a2a5 100644 --- a/client/shaders/nodes_shader/opengl_vertex.glsl +++ b/client/shaders/nodes_shader/opengl_vertex.glsl @@ -101,8 +101,8 @@ void main(void) float disp_x; float disp_z; -#if (MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES) || \ - (MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS) +// OpenGL < 4.3 does not support continued preprocessor lines +#if (MATERIAL_TYPE == TILE_MATERIAL_WAVING_LEAVES && ENABLE_WAVING_LEAVES) || (MATERIAL_TYPE == TILE_MATERIAL_WAVING_PLANTS && ENABLE_WAVING_PLANTS) vec4 pos2 = mWorld * gl_Vertex; float tOffset = (pos2.x + pos2.y) * 0.001 + pos2.z * 0.002; disp_x = (smoothTriangleWave(animationTimer * 23.0 + tOffset) + From cdbe3c5e5784b34e548c58b08579ff55b3096fb9 Mon Sep 17 00:00:00 2001 From: Danila Shutov Date: Sun, 19 Apr 2020 19:47:13 +0300 Subject: [PATCH 122/424] Reuse object_shader for "wielditem" and "item" entity drawtypes (#9537) --- .../wielded_shader/opengl_fragment.glsl | 127 ------------------ .../shaders/wielded_shader/opengl_vertex.glsl | 32 ----- src/client/camera.cpp | 2 +- src/client/content_cao.cpp | 9 +- src/client/wieldmesh.cpp | 17 ++- src/client/wieldmesh.h | 2 + 6 files changed, 24 insertions(+), 165 deletions(-) delete mode 100644 client/shaders/wielded_shader/opengl_fragment.glsl delete mode 100644 client/shaders/wielded_shader/opengl_vertex.glsl diff --git a/client/shaders/wielded_shader/opengl_fragment.glsl b/client/shaders/wielded_shader/opengl_fragment.glsl deleted file mode 100644 index 546aef71d..000000000 --- a/client/shaders/wielded_shader/opengl_fragment.glsl +++ /dev/null @@ -1,127 +0,0 @@ -uniform sampler2D baseTexture; -uniform sampler2D normalTexture; -uniform sampler2D textureFlags; - -uniform vec4 skyBgColor; -uniform float fogDistance; -uniform vec3 eyePosition; - -varying vec3 vPosition; -varying vec3 worldPosition; - -varying vec3 eyeVec; -varying vec3 lightVec; - -bool normalTexturePresent = false; -bool texTileableHorizontal = false; -bool texTileableVertical = false; -bool texSeamless = false; - -const float e = 2.718281828459; -const float BS = 10.0; -const float fogStart = FOG_START; -const float fogShadingParameter = 1 / ( 1 - fogStart); - -void get_texture_flags() -{ - vec4 flags = texture2D(textureFlags, vec2(0.0, 0.0)); - if (flags.r > 0.5) { - normalTexturePresent = true; - } - if (flags.g > 0.5) { - texTileableHorizontal = true; - } - if (flags.b > 0.5) { - texTileableVertical = true; - } - if (texTileableHorizontal && texTileableVertical) { - texSeamless = true; - } -} - -float intensity(vec3 color) -{ - return (color.r + color.g + color.b) / 3.0; -} - -float get_rgb_height(vec2 uv) -{ - if (texSeamless) { - return intensity(texture2D(baseTexture, uv).rgb); - } else { - return intensity(texture2D(baseTexture, clamp(uv, 0.0, 0.999)).rgb); - } -} - -vec4 get_normal_map(vec2 uv) -{ - vec4 bump = texture2D(normalTexture, uv).rgba; - bump.xyz = normalize(bump.xyz * 2.0 - 1.0); - return bump; -} - -void main(void) -{ - vec3 color; - vec4 bump; - vec2 uv = gl_TexCoord[0].st; - bool use_normalmap = false; - get_texture_flags(); - -#if USE_NORMALMAPS == 1 - if (normalTexturePresent) { - bump = get_normal_map(uv); - use_normalmap = true; - } -#endif - -#if GENERATE_NORMALMAPS == 1 - if (normalTexturePresent == false) { - float tl = get_rgb_height(vec2(uv.x - SAMPLE_STEP, uv.y + SAMPLE_STEP)); - float t = get_rgb_height(vec2(uv.x - SAMPLE_STEP, uv.y - SAMPLE_STEP)); - float tr = get_rgb_height(vec2(uv.x + SAMPLE_STEP, uv.y + SAMPLE_STEP)); - float r = get_rgb_height(vec2(uv.x + SAMPLE_STEP, uv.y)); - float br = get_rgb_height(vec2(uv.x + SAMPLE_STEP, uv.y - SAMPLE_STEP)); - float b = get_rgb_height(vec2(uv.x, uv.y - SAMPLE_STEP)); - float bl = get_rgb_height(vec2(uv.x -SAMPLE_STEP, uv.y - SAMPLE_STEP)); - float l = get_rgb_height(vec2(uv.x - SAMPLE_STEP, uv.y)); - float dX = (tr + 2.0 * r + br) - (tl + 2.0 * l + bl); - float dY = (bl + 2.0 * b + br) - (tl + 2.0 * t + tr); - bump = vec4(normalize(vec3 (dX, dY, NORMALMAPS_STRENGTH)), 1.0); - use_normalmap = true; - } -#endif - - vec4 base = texture2D(baseTexture, uv).rgba; - -#ifdef ENABLE_BUMPMAPPING - if (use_normalmap) { - vec3 L = normalize(lightVec); - vec3 E = normalize(eyeVec); - float specular = pow(clamp(dot(reflect(L, bump.xyz), E), 0.0, 1.0), 1.0); - float diffuse = dot(-E,bump.xyz); - color = (diffuse + 0.1 * specular) * base.rgb; - } else { - color = base.rgb; - } -#else - color = base.rgb; -#endif - - vec4 col = vec4(color.rgb, base.a); - col *= gl_Color; - // Due to a bug in some (older ?) graphics stacks (possibly in the glsl compiler ?), - // the fog will only be rendered correctly if the last operation before the - // clamp() is an addition. Else, the clamp() seems to be ignored. - // E.g. the following won't work: - // float clarity = clamp(fogShadingParameter - // * (fogDistance - length(eyeVec)) / fogDistance), 0.0, 1.0); - // As additions usually come for free following a multiplication, the new formula - // should be more efficient as well. - // Note: clarity = (1 - fogginess) - float clarity = clamp(fogShadingParameter - - fogShadingParameter * length(eyeVec) / fogDistance, 0.0, 1.0); - col = mix(skyBgColor, col, clarity); - - gl_FragColor = vec4(col.rgb, base.a); -} diff --git a/client/shaders/wielded_shader/opengl_vertex.glsl b/client/shaders/wielded_shader/opengl_vertex.glsl deleted file mode 100644 index 9f05b833a..000000000 --- a/client/shaders/wielded_shader/opengl_vertex.glsl +++ /dev/null @@ -1,32 +0,0 @@ -uniform mat4 mWorldViewProj; -uniform mat4 mWorld; - -uniform vec3 eyePosition; -uniform float animationTimer; - -varying vec3 vPosition; -varying vec3 worldPosition; - -varying vec3 eyeVec; -varying vec3 lightVec; -varying vec3 tsEyeVec; -varying vec3 tsLightVec; - -const float e = 2.718281828459; -const float BS = 10.0; - -void main(void) -{ - gl_TexCoord[0] = gl_MultiTexCoord0; - gl_Position = mWorldViewProj * gl_Vertex; - - vPosition = gl_Position.xyz; - worldPosition = (mWorld * gl_Vertex).xyz; - - vec3 sunPosition = vec3 (0.0, eyePosition.y * BS + 900.0, 0.0); - - lightVec = sunPosition - worldPosition; - eyeVec = -(gl_ModelViewMatrix * gl_Vertex).xyz; - - gl_FrontColor = gl_BackColor = gl_Color; -} diff --git a/src/client/camera.cpp b/src/client/camera.cpp index fb1c3ff56..69bd82a47 100644 --- a/src/client/camera.cpp +++ b/src/client/camera.cpp @@ -542,7 +542,7 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r m_wieldnode->setPosition(wield_position); m_wieldnode->setRotation(wield_rotation); - m_wieldnode->setColor(player->light_color); + m_wieldnode->setNodeLightColor(player->light_color); // Set render distance updateViewingRange(); diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index 39ea4ab1e..e9e1cebd3 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -826,11 +826,12 @@ void GenericCAO::setNodeLight(u8 light) video::SColor color(255, light, light, light); if (m_prop.visual == "wielditem" || m_prop.visual == "item") { - // Since these types of visuals are using their own shader - // they should be handled separately if (m_wield_meshnode) - m_wield_meshnode->setColor(color); - } else if (m_enable_shaders) { + m_wield_meshnode->setNodeLightColor(color); + return; + } + + if (m_enable_shaders) { scene::ISceneNode *node = getSceneNode(); if (node == nullptr) diff --git a/src/client/wieldmesh.cpp b/src/client/wieldmesh.cpp index 2c6807fab..997eb1b5b 100644 --- a/src/client/wieldmesh.cpp +++ b/src/client/wieldmesh.cpp @@ -347,7 +347,7 @@ void WieldMeshSceneNode::setItem(const ItemStack &item, Client *client, bool che scene::SMesh *mesh = nullptr; if (m_enable_shaders) { - u32 shader_id = shdrsrc->getShader("wielded_shader", TILE_MATERIAL_BASIC, NDT_NORMAL); + u32 shader_id = shdrsrc->getShader("object_shader", TILE_MATERIAL_BASIC, NDT_NORMAL); m_material_type = shdrsrc->getShaderInfo(shader_id).material; } @@ -471,6 +471,21 @@ void WieldMeshSceneNode::setColor(video::SColor c) } } +void WieldMeshSceneNode::setNodeLightColor(video::SColor color) +{ + if (!m_meshnode) + return; + + if (m_enable_shaders) { + for (u32 i = 0; i < m_meshnode->getMaterialCount(); ++i) { + video::SMaterial &material = m_meshnode->getMaterial(i); + material.EmissiveColor = color; + } + } else { + setColor(color); + } +} + void WieldMeshSceneNode::render() { // note: if this method is changed to actually do something, diff --git a/src/client/wieldmesh.h b/src/client/wieldmesh.h index 7c80a811b..933097230 100644 --- a/src/client/wieldmesh.h +++ b/src/client/wieldmesh.h @@ -87,6 +87,8 @@ public: // Must only be used if the constructor was called with lighting = false void setColor(video::SColor color); + void setNodeLightColor(video::SColor color); + scene::IMesh *getMesh() { return m_meshnode->getMesh(); } virtual void render(); From 338195ff250bd7552ef8167348de2eb05e421c29 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 19 Apr 2020 19:07:54 +0200 Subject: [PATCH 123/424] Fix alias handling of get_content_id (#9712) fixes #9632 --- src/itemdef.cpp | 34 +++++++++++++--------------------- src/script/lua_api/l_item.cpp | 13 ++++++++++++- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/itemdef.cpp b/src/itemdef.cpp index a13b3f7d4..8e0492827 100644 --- a/src/itemdef.cpp +++ b/src/itemdef.cpp @@ -270,17 +270,16 @@ public: // Convert name according to possible alias std::string name = getAlias(name_); // Get the definition - std::map::const_iterator i; - i = m_item_definitions.find(name); - if(i == m_item_definitions.end()) + auto i = m_item_definitions.find(name); + if (i == m_item_definitions.cend()) i = m_item_definitions.find("unknown"); - assert(i != m_item_definitions.end()); + assert(i != m_item_definitions.cend()); return *(i->second); } virtual const std::string &getAlias(const std::string &name) const { - StringMap::const_iterator it = m_aliases.find(name); - if (it != m_aliases.end()) + auto it = m_aliases.find(name); + if (it != m_aliases.cend()) return it->second; return name; } @@ -300,8 +299,7 @@ public: // Convert name according to possible alias std::string name = getAlias(name_); // Get the definition - std::map::const_iterator i; - return m_item_definitions.find(name) != m_item_definitions.end(); + return m_item_definitions.find(name) != m_item_definitions.cend(); } #ifndef SERVER public: @@ -443,11 +441,9 @@ public: } void clear() { - for(std::map::const_iterator - i = m_item_definitions.begin(); - i != m_item_definitions.end(); ++i) + for (auto &i : m_item_definitions) { - delete i->second; + delete i.second; } m_item_definitions.clear(); m_aliases.clear(); @@ -520,10 +516,8 @@ public: u16 count = m_item_definitions.size(); writeU16(os, count); - for (std::map::const_iterator - it = m_item_definitions.begin(); - it != m_item_definitions.end(); ++it) { - ItemDefinition *def = it->second; + for (const auto &it : m_item_definitions) { + ItemDefinition *def = it.second; // Serialize ItemDefinition and write wrapped in a string std::ostringstream tmp_os(std::ios::binary); def->serialize(tmp_os, protocol_version); @@ -532,11 +526,9 @@ public: writeU16(os, m_aliases.size()); - for (StringMap::const_iterator - it = m_aliases.begin(); - it != m_aliases.end(); ++it) { - os << serializeString(it->first); - os << serializeString(it->second); + for (const auto &it : m_aliases) { + os << serializeString(it.first); + os << serializeString(it.second); } } void deSerialize(std::istream &is) diff --git a/src/script/lua_api/l_item.cpp b/src/script/lua_api/l_item.cpp index 9f12d3ac7..0a403acbd 100644 --- a/src/script/lua_api/l_item.cpp +++ b/src/script/lua_api/l_item.cpp @@ -609,10 +609,21 @@ int ModApiItemMod::l_get_content_id(lua_State *L) NO_MAP_LOCK_REQUIRED; std::string name = luaL_checkstring(L, 1); + const IItemDefManager *idef = getGameDef(L)->getItemDefManager(); const NodeDefManager *ndef = getGameDef(L)->getNodeDefManager(); + + // If this is called at mod load time, NodeDefManager isn't aware of + // aliases yet, so we need to handle them manually + std::string alias_name = idef->getAlias(name); + content_t content_id; - if (!ndef->getId(name, content_id)) + if (alias_name != name) { + if (!ndef->getId(alias_name, content_id)) + throw LuaError("Unknown node: " + alias_name + + " (from alias " + name + ")"); + } else if (!ndef->getId(name, content_id)) { throw LuaError("Unknown node: " + name); + } lua_pushinteger(L, content_id); return 1; /* number of results */ From 27a485a472706bededf38f0de2630688739ca0b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Mon, 20 Apr 2020 20:18:40 +0200 Subject: [PATCH 124/424] Replace travis with github actions (#9641) * Move outside of travis to Github actions This will permit to have better integrated CI workflow than the previous travis one. --- .github/workflows/build.yml | 171 ++++++++++++++++++ .github/workflows/cpp_lint.yml | 53 ++++++ .github/workflows/lua_lint.yml | 32 ++++ .gitlab-ci.yml | 5 - .travis.yml | 98 ---------- README.md | 2 +- util/buildbot/buildwin32.sh | 9 +- util/buildbot/buildwin64.sh | 9 +- util/ci/build.sh | 8 + .../{travis => ci}/clang-format-whitelist.txt | 1 + util/ci/clang-tidy.sh | 18 ++ util/{travis => ci}/common.sh | 18 +- util/{travis => ci}/lint.sh | 2 +- util/{travis => ci}/run-clang-tidy.py | 0 util/travis/before_install.sh | 29 --- util/travis/clangtidy.sh | 28 --- util/travis/script.sh | 69 ------- util/travis/toolchain_mingw.cmake.in | 18 -- 18 files changed, 296 insertions(+), 274 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/cpp_lint.yml create mode 100644 .github/workflows/lua_lint.yml delete mode 100644 .travis.yml create mode 100755 util/ci/build.sh rename util/{travis => ci}/clang-format-whitelist.txt (99%) create mode 100755 util/ci/clang-tidy.sh rename util/{travis => ci}/common.sh (66%) rename util/{travis => ci}/lint.sh (93%) rename util/{travis => ci}/run-clang-tidy.py (100%) delete mode 100755 util/travis/before_install.sh delete mode 100755 util/travis/clangtidy.sh delete mode 100755 util/travis/script.sh delete mode 100644 util/travis/toolchain_mingw.cmake.in diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..0d559b197 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,171 @@ +name: build + +# build on c/cpp changes or workflow changes +on: + push: + paths: + - 'lib/**.[ch]' + - 'lib/**.cpp' + - 'src/**.[ch]' + - 'src/**.cpp' + - '**/CMakeLists.txt' + - 'cmake/Modules/**' + - 'util/buildbot/**' + - 'util/ci/**' + - '.github/workflows/**.yml' + pull_request: + paths: + - 'lib/**.[ch]' + - 'lib/**.cpp' + - 'src/**.[ch]' + - 'src/**.cpp' + - '**/CMakeLists.txt' + - 'cmake/Modules/**' + - 'util/buildbot/**' + - 'util/ci/**' + - '.github/workflows/**.yml' + +jobs: + # This is our minor gcc compiler + gcc_6: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + sudo apt-get install g++-6 gcc-6 -qyy + source ./util/ci/common.sh + install_linux_deps + + - name: Build + run: | + ./util/ci/build.sh + env: + CMAKE_FLAGS: "-DCMAKE_C_COMPILER=gcc-6 -DCMAKE_CXX_COMPILER=g++-6" + + - name: Test + run: | + ./bin/minetest --run-unittests + + # This is the current gcc compiler (available in bionic) + gcc_8: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + sudo apt-get install g++-8 gcc-8 -qyy + source ./util/ci/common.sh + install_linux_deps + + - name: Build + run: | + ./util/ci/build.sh + env: + CMAKE_FLAGS: "-DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8" + + - name: Test + run: | + ./bin/minetest --run-unittests + + # This is our minor clang compiler + clang_3_9: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + sudo apt-get install clang-3.9 -qyy + source ./util/ci/common.sh + install_linux_deps + + - name: Build + run: | + ./util/ci/build.sh + env: + CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-3.9 -DCMAKE_CXX_COMPILER=clang++-3.9" + + - name: Test + run: | + ./bin/minetest --run-unittests + + # This is the current clang version + clang_9: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + sudo apt-get install clang-9 valgrind -qyy + source ./util/ci/common.sh + install_linux_deps + env: + WITH_LUAJIT: 1 + + - name: Build + run: | + ./util/ci/build.sh + env: + CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9" + + - name: Test + run: | + ./bin/minetest --run-unittests + + - name: Valgrind + run: | + valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ./bin/minetest --run-unittests + + + # Some builds doesn't require freetype, ensure it compiled properly + clang_9_no_freetype: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + sudo apt-get install clang-9 -qyy + source ./util/ci/common.sh + install_linux_deps + + - name: Build + run: | + ./util/ci/build.sh + env: + CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9 -DENABLE_FREETYPE=0" + + - name: Test + run: | + ./bin/minetest --run-unittests + + win32: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + wget http://minetest.kitsunemimi.pw/mingw-w64-i686_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz + sudo tar -xaf mingw.tar.xz -C /usr + + - name: Build + run: | + EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin32.sh winbuild + env: + NO_MINETEST_GAME: 1 + NO_PACKAGE: 1 + + win64: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + wget http://minetest.kitsunemimi.pw/mingw-w64-x86_64_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz + sudo tar -xaf mingw.tar.xz -C /usr + + - name: Build + run: | + EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh winbuild + env: + NO_MINETEST_GAME: 1 + NO_PACKAGE: 1 diff --git a/.github/workflows/cpp_lint.yml b/.github/workflows/cpp_lint.yml new file mode 100644 index 000000000..3044d5186 --- /dev/null +++ b/.github/workflows/cpp_lint.yml @@ -0,0 +1,53 @@ +name: cpp_lint + +# lint on c/cpp changes or workflow changes +on: + push: + paths: + - 'lib/**.[ch]' + - 'lib/**.cpp' + - 'src/**.[ch]' + - 'src/**.cpp' + - '**/CMakeLists.txt' + - 'cmake/Modules/**' + - 'util/ci/**' + - '.github/workflows/**.yml' + pull_request: + paths: + - 'lib/**.[ch]' + - 'lib/**.cpp' + - 'src/**.[ch]' + - 'src/**.cpp' + - '**/CMakeLists.txt' + - 'cmake/Modules/**' + - 'util/ci/**' + - '.github/workflows/**.yml' + +jobs: + clang_format: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install clang-format + run: | + sudo apt-get install ${CLANG_FORMAT} -qyy + env: + CLANG_FORMAT: clang-format-9 + - name: Run clang-format + run: | + source ./util/ci/lint.sh + perform_lint + + clang_tidy: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install clang-tidy + run: | + sudo apt-get install clang-tidy-9 -qyy + source ./util/ci/common.sh + install_linux_deps + + - name: Run clang-tidy + run: | + ./util/ci/clang-tidy.sh diff --git a/.github/workflows/lua_lint.yml b/.github/workflows/lua_lint.yml new file mode 100644 index 000000000..1b2c01192 --- /dev/null +++ b/.github/workflows/lua_lint.yml @@ -0,0 +1,32 @@ +name: lua_lint + +# Lint on lua changes on builtin or if workflow changed +on: + push: + paths: + - 'builtin/**.lua' + - '.github/workflows/**.yml' + pull_request: + paths: + - 'builtin/**.lua' + - '.github/workflows/**.yml' + +jobs: + luacheck: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install luarocks + run: | + sudo apt-get update -qyy + sudo apt-get install luarocks -qyy + + - name: Install luarocks tools + run: | + luarocks install --local luacheck + luarocks install --local busted + + - name: Run checks + run: | + $HOME/.luarocks/bin/luacheck builtin + $HOME/.luarocks/bin/busted builtin diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a3d634261..d03b7b601 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -219,7 +219,6 @@ build:fedora-24: - apt-get update -y - apt-get install -y wget xz-utils unzip git cmake gettext - wget -q http://minetest.kitsunemimi.pw/mingw-w64-${WIN_ARCH}_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz - - sed -e "s|%PREFIX%|${WIN_ARCH}-w64-mingw32|" -e "s|%ROOTPATH%|/usr/${WIN_ARCH}-w64-mingw32|" < util/travis/toolchain_mingw.cmake.in > ${TOOLCHAIN_OUTPUT} - tar -xaf mingw.tar.xz -C /usr .build_win_template: @@ -256,7 +255,6 @@ build:win32: variables: NO_PACKAGE: "1" WIN_ARCH: "i686" - TOOLCHAIN_OUTPUT: "util/buildbot/toolchain_mingw.cmake" package:win32: extends: .package_win_template @@ -265,7 +263,6 @@ package:win32: variables: NO_PACKAGE: "1" WIN_ARCH: "i686" - TOOLCHAIN_OUTPUT: "util/buildbot/toolchain_mingw.cmake" build:win64: extends: .build_win_template @@ -274,7 +271,6 @@ build:win64: variables: NO_PACKAGE: "1" WIN_ARCH: "x86_64" - TOOLCHAIN_OUTPUT: "util/buildbot/toolchain_mingw64.cmake" package:win64: extends: .package_win_template @@ -283,7 +279,6 @@ package:win64: variables: NO_PACKAGE: "1" WIN_ARCH: "x86_64" - TOOLCHAIN_OUTPUT: "util/buildbot/toolchain_mingw64.cmake" package:docker: stage: package diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 7b224b549..000000000 --- a/.travis.yml +++ /dev/null @@ -1,98 +0,0 @@ -language: cpp -before_install: ./util/travis/before_install.sh -script: ./util/travis/script.sh -os: linux -dist: bionic -group: edge -notifications: - email: false -matrix: - fast_finish: true - include: - - - env: CLANG_FORMAT=clang-format-8 - compiler: clang - os: linux - addons: - apt: - packages: ['clang-format-8'] - - - name: "Builtin Luacheck and Unit Tests" - language: generic - compiler: null - os: linux - addons: - apt: - packages: - - luarocks - before_install: - - luarocks install --local luacheck - - luarocks install --local busted - script: - - $HOME/.luarocks/bin/luacheck builtin - - $HOME/.luarocks/bin/busted builtin - - - env: CLANG_TIDY=clang-tidy-8 - compiler: clang - os: linux - script: ./util/travis/clangtidy.sh - addons: - apt: - packages: ['clang-tidy-8'] - - - name: "MinGW cross-compiler (32-bit)" - env: PLATFORM=Win32 - compiler: gcc - os: linux - - - name: "MinGW cross-compiler (64-bit)" - env: PLATFORM=Win64 - compiler: gcc - os: linux - -# - env: PLATFORM=Unix -# compiler: clang -# os: osx -# osx_image: xcode8 - - - env: PLATFORM=Unix COMPILER=gcc-6 - compiler: gcc - os: linux - addons: - apt: - packages: ['gcc-6', 'g++-6'] - - - env: PLATFORM=Unix COMPILER=gcc-8 - compiler: gcc - os: linux - addons: - apt: - packages: ['gcc-8', 'g++-8'] - - - env: PLATFORM=Unix COMPILER=clang-3.9 - compiler: clang - os: linux - addons: - apt: - packages: ['clang-3.9'] - - - env: PLATFORM=Unix COMPILER=clang-9 - compiler: clang - os: linux - addons: - apt: - packages: ['clang-9'] - - - env: PLATFORM=Unix COMPILER=clang-9 FREETYPE=0 - compiler: clang - os: linux - addons: - apt: - packages: ['clang-9'] - - - env: PLATFORM=Unix COMPILER=clang-9 VALGRIND=1 - compiler: clang - os: linux - addons: - apt: - packages: ['valgrind', 'clang-9'] diff --git a/README.md b/README.md index e9065dfa7..4c6539af7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Minetest ======== -[![Build Status](https://travis-ci.org/minetest/minetest.svg?branch=master)](https://travis-ci.org/minetest/minetest) +![Build Status](https://github.com/minetest/minetest/workflows/validate/badge.svg) [![Translation status](https://hosted.weblate.org/widgets/minetest/-/svg-badge.svg)](https://hosted.weblate.org/engage/minetest/?utm_source=widget) [![License](https://img.shields.io/badge/license-LGPLv2.1%2B-blue.svg)](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html) diff --git a/util/buildbot/buildwin32.sh b/util/buildbot/buildwin32.sh index 090ac7b0d..e62d32969 100755 --- a/util/buildbot/buildwin32.sh +++ b/util/buildbot/buildwin32.sh @@ -86,22 +86,21 @@ cd $libdir # Get minetest cd $builddir if [ ! "x$EXISTING_MINETEST_DIR" = "x" ]; then - ln -s $EXISTING_MINETEST_DIR $CORE_NAME + cd /$EXISTING_MINETEST_DIR # must be absolute path else [ -d $CORE_NAME ] && (cd $CORE_NAME && git pull) || (git clone -b $CORE_BRANCH $CORE_GIT) + cd $CORE_NAME fi -cd $CORE_NAME git_hash=$(git rev-parse --short HEAD) # Get minetest_game -cd games if [ "x$NO_MINETEST_GAME" = "x" ]; then + cd games [ -d $GAME_NAME ] && (cd $GAME_NAME && git pull) || (git clone -b $GAME_BRANCH $GAME_GIT) + cd .. fi -cd ../.. # Build the thing -cd $CORE_NAME [ -d _build ] && rm -Rf _build/ mkdir _build cd _build diff --git a/util/buildbot/buildwin64.sh b/util/buildbot/buildwin64.sh index b24a478d8..94e009c29 100755 --- a/util/buildbot/buildwin64.sh +++ b/util/buildbot/buildwin64.sh @@ -78,22 +78,21 @@ cd $libdir # Get minetest cd $builddir if [ ! "x$EXISTING_MINETEST_DIR" = "x" ]; then - ln -s $EXISTING_MINETEST_DIR $CORE_NAME + cd /$EXISTING_MINETEST_DIR # must be absolute path else [ -d $CORE_NAME ] && (cd $CORE_NAME && git pull) || (git clone -b $CORE_BRANCH $CORE_GIT) + cd $CORE_NAME fi -cd $CORE_NAME git_hash=$(git rev-parse --short HEAD) # Get minetest_game -cd games if [ "x$NO_MINETEST_GAME" = "x" ]; then + cd games [ -d $GAME_NAME ] && (cd $GAME_NAME && git pull) || (git clone -b $GAME_BRANCH $GAME_GIT) + cd .. fi -cd ../.. # Build the thing -cd $CORE_NAME [ -d _build ] && rm -Rf _build/ mkdir _build cd _build diff --git a/util/ci/build.sh b/util/ci/build.sh new file mode 100755 index 000000000..59069b00a --- /dev/null +++ b/util/ci/build.sh @@ -0,0 +1,8 @@ +#! /bin/bash -eu + +mkdir cmakebuild +cd cmakebuild +cmake -DCMAKE_BUILD_TYPE=Debug \ + -DRUN_IN_PLACE=TRUE -DENABLE_GETTEXT=TRUE \ + -DBUILD_SERVER=TRUE ${CMAKE_FLAGS} .. +make -j2 diff --git a/util/travis/clang-format-whitelist.txt b/util/ci/clang-format-whitelist.txt similarity index 99% rename from util/travis/clang-format-whitelist.txt rename to util/ci/clang-format-whitelist.txt index 02c8b2660..3334257ae 100644 --- a/util/travis/clang-format-whitelist.txt +++ b/util/ci/clang-format-whitelist.txt @@ -434,6 +434,7 @@ src/threading/thread.cpp src/threading/thread.h src/threads.h src/tileanimation.cpp +src/tileanimation.h src/tool.cpp src/tool.h src/translation.cpp diff --git a/util/ci/clang-tidy.sh b/util/ci/clang-tidy.sh new file mode 100755 index 000000000..d048f54ee --- /dev/null +++ b/util/ci/clang-tidy.sh @@ -0,0 +1,18 @@ +#! /bin/bash -eu + +mkdir -p cmakebuild +cd cmakebuild +cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ + -DRUN_IN_PLACE=TRUE \ + -DENABLE_GETTEXT=TRUE \ + -DENABLE_SOUND=FALSE \ + -DBUILD_SERVER=TRUE .. +make GenerateVersion + +cd .. + +./util/ci/run-clang-tidy.py \ + -clang-tidy-binary=clang-tidy-9 -p cmakebuild \ + -quiet -config="$(cat .clang-tidy)" \ + 'src/.*' diff --git a/util/travis/common.sh b/util/ci/common.sh similarity index 66% rename from util/travis/common.sh rename to util/ci/common.sh index cf9ce020e..5a4f78457 100644 --- a/util/travis/common.sh +++ b/util/ci/common.sh @@ -21,9 +21,10 @@ install_linux_deps() { local pkgs=(libirrlicht-dev cmake libbz2-dev libpng-dev \ libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev \ libhiredis-dev libogg-dev libgmp-dev libvorbis-dev libopenal-dev \ - gettext libpq-dev postgresql-server-dev-all libleveldb-dev) + gettext libpq-dev postgresql-server-dev-all libleveldb-dev \ + libcurl4-openssl-dev) # for better coverage, build some jobs with luajit - if [[ "$CC" == "clang"* && -z "$VALGRIND$FREETYPE" ]]; then + if [ -n "$WITH_LUAJIT" ]; then pkgs+=(libluajit-5.1-dev) fi @@ -42,16 +43,3 @@ install_macosx_deps() { fi #brew upgrade postgresql } - -# Relative to git-repository root: -TRIGGER_COMPILE_PATHS="src/.*\.(c|cpp|h)|CMakeLists.txt|cmake/Modules/|util/travis/|util/buildbot/" - -needs_compile() { - RANGE="$TRAVIS_COMMIT_RANGE" - if [[ "$(git diff --name-only $RANGE -- 2>/dev/null)" == "" ]]; then - RANGE="$TRAVIS_COMMIT^...$TRAVIS_COMMIT" - echo "Fixed range: $RANGE" - fi - git diff --name-only $RANGE -- | egrep -q "^($TRIGGER_COMPILE_PATHS)" -} - diff --git a/util/travis/lint.sh b/util/ci/lint.sh similarity index 93% rename from util/travis/lint.sh rename to util/ci/lint.sh index b3027c689..395445ca7 100644 --- a/util/travis/lint.sh +++ b/util/ci/lint.sh @@ -5,7 +5,7 @@ function perform_lint() { CLANG_FORMAT=clang-format fi echo "LINT: Using binary $CLANG_FORMAT" - CLANG_FORMAT_WHITELIST="util/travis/clang-format-whitelist.txt" + CLANG_FORMAT_WHITELIST="util/ci/clang-format-whitelist.txt" files_to_lint="$(find src/ -name '*.cpp' -or -name '*.h')" diff --git a/util/travis/run-clang-tidy.py b/util/ci/run-clang-tidy.py similarity index 100% rename from util/travis/run-clang-tidy.py rename to util/ci/run-clang-tidy.py diff --git a/util/travis/before_install.sh b/util/travis/before_install.sh deleted file mode 100755 index 649486dad..000000000 --- a/util/travis/before_install.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -e - -echo "Preparing for $TRAVIS_COMMIT_RANGE" - -. util/travis/common.sh - -if [[ ! -z "${CLANG_FORMAT}" ]]; then - exit 0 -fi - -needs_compile || exit 0 - -if [[ $PLATFORM == "Unix" ]] || [[ ! -z "${CLANG_TIDY}" ]]; then - if [[ $TRAVIS_OS_NAME == "linux" ]] || [[ ! -z "${CLANG_TIDY}" ]]; then - install_linux_deps - else - install_macosx_deps - fi -elif [[ $PLATFORM == "Win32" ]]; then - wget http://minetest.kitsunemimi.pw/mingw-w64-i686_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz - # buildwin32.sh detects the installed toolchain automatically - sudo tar -xaf mingw.tar.xz -C /usr -elif [[ $PLATFORM == "Win64" ]]; then - wget http://minetest.kitsunemimi.pw/mingw-w64-x86_64_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz - sed -e "s|%PREFIX%|x86_64-w64-mingw32|" \ - -e "s|%ROOTPATH%|/usr/x86_64-w64-mingw32|" \ - < util/travis/toolchain_mingw.cmake.in > util/buildbot/toolchain_mingw64.cmake - sudo tar -xaf mingw.tar.xz -C /usr -fi diff --git a/util/travis/clangtidy.sh b/util/travis/clangtidy.sh deleted file mode 100755 index ed6523b0b..000000000 --- a/util/travis/clangtidy.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -e -. util/travis/common.sh - -needs_compile || exit 0 - -if [ -z "${CLANG_TIDY}" ]; then - CLANG_TIDY=clang-tidy -fi - -mkdir -p cmakebuild && cd cmakebuild -cmake -DCMAKE_BUILD_TYPE=Debug \ - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ - -DRUN_IN_PLACE=TRUE \ - -DENABLE_GETTEXT=TRUE \ - -DENABLE_SOUND=FALSE \ - -DBUILD_SERVER=TRUE .. -make GenerateVersion -cd .. - -echo "Performing clang-tidy checks..." -./util/travis/run-clang-tidy.py \ - -clang-tidy-binary=${CLANG_TIDY} -p cmakebuild \ - -quiet -config="$(cat .clang-tidy)" \ - 'src/.*' - -RET=$? -echo "Clang tidy returned $RET" -exit $RET diff --git a/util/travis/script.sh b/util/travis/script.sh deleted file mode 100755 index 19aa2fdf7..000000000 --- a/util/travis/script.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash -e -. util/travis/common.sh -. util/travis/lint.sh - -needs_compile || exit 0 - -if [[ ! -z "${CLANG_FORMAT}" ]]; then - # Lint and exit CI - perform_lint - exit 0 -fi - -set_linux_compiler_env - -if [[ ${PLATFORM} == "Unix" ]]; then - mkdir -p travisbuild - cd travisbuild || exit 1 - - CMAKE_FLAGS='' - - if [[ ${TRAVIS_OS_NAME} == "osx" ]]; then - CMAKE_FLAGS+=' -DCUSTOM_GETTEXT_PATH=/usr/local/opt/gettext' - fi - - if [[ -n "${FREETYPE}" ]] && [[ "${FREETYPE}" == "0" ]]; then - CMAKE_FLAGS+=' -DENABLE_FREETYPE=0' - fi - - cmake -DCMAKE_BUILD_TYPE=Debug \ - -DRUN_IN_PLACE=TRUE \ - -DENABLE_GETTEXT=TRUE \ - -DBUILD_SERVER=TRUE \ - ${CMAKE_FLAGS} .. - make -j2 - - echo "Running unit tests." - CMD="../bin/minetest --run-unittests" - if [[ "${VALGRIND}" == "1" ]]; then - valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ${CMD} && exit 0 - else - ${CMD} && exit 0 - fi - -elif [[ $PLATFORM == Win* ]]; then - [[ $CC == "clang" ]] && exit 1 # Not supposed to happen - # We need to have our build directory outside of the minetest directory because - # CMake will otherwise get very very confused with symlinks and complain that - # something is not a subdirectory of something even if it actually is. - # e.g.: - # /home/travis/minetest/minetest/travisbuild/minetest - # \/ \/ \/ - # /home/travis/minetest/minetest/travisbuild/minetest/travisbuild/minetest - # \/ \/ \/ - # /home/travis/minetest/minetest/travisbuild/minetest/travisbuild/minetest/travisbuild/minetest - # You get the idea. - OLDDIR=$(pwd) - cd .. - export EXISTING_MINETEST_DIR=$OLDDIR - export NO_MINETEST_GAME=1 - if [[ $PLATFORM == "Win32" ]]; then - "$OLDDIR/util/buildbot/buildwin32.sh" travisbuild && exit 0 - elif [[ $PLATFORM == "Win64" ]]; then - "$OLDDIR/util/buildbot/buildwin64.sh" travisbuild && exit 0 - fi -else - echo "Unknown platform \"${PLATFORM}\"." - exit 1 -fi - diff --git a/util/travis/toolchain_mingw.cmake.in b/util/travis/toolchain_mingw.cmake.in deleted file mode 100644 index 65f67517e..000000000 --- a/util/travis/toolchain_mingw.cmake.in +++ /dev/null @@ -1,18 +0,0 @@ -# Target operating system name -set(CMAKE_SYSTEM_NAME Windows) - -# Compilers to use -set(CMAKE_C_COMPILER %PREFIX%-gcc) -set(CMAKE_CXX_COMPILER %PREFIX%-g++) -set(CMAKE_RC_COMPILER %PREFIX%-windres) - -# Location of the target environment -set(CMAKE_FIND_ROOT_PATH %ROOTPATH%) - -# Adjust the default behaviour of the FIND_XXX() commands: -# search for headers and libraries in the target environment, -# search for programs in the host environment -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - From c2ac7b1a83a581005a953551790e4582630af23f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Mon, 20 Apr 2020 20:22:23 +0200 Subject: [PATCH 125/424] Fix build badge since switching to github actions --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c6539af7..b3b2b863e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Minetest ======== -![Build Status](https://github.com/minetest/minetest/workflows/validate/badge.svg) +![Build Status](https://github.com/minetest/minetest/workflows/build/badge.svg) [![Translation status](https://hosted.weblate.org/widgets/minetest/-/svg-badge.svg)](https://hosted.weblate.org/engage/minetest/?utm_source=widget) [![License](https://img.shields.io/badge/license-LGPLv2.1%2B-blue.svg)](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html) From 8ef239b448c52485cf94d334c1d8b1c6de37d976 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 20 Apr 2020 23:22:00 +0200 Subject: [PATCH 126/424] Improve protocol-level receiving code (#9617) --- src/network/connection.cpp | 4 +- src/network/connectionthreads.cpp | 282 +++++++++++++++--------------- src/network/connectionthreads.h | 2 +- 3 files changed, 142 insertions(+), 146 deletions(-) diff --git a/src/network/connection.cpp b/src/network/connection.cpp index 15eda7725..3692e45a9 100644 --- a/src/network/connection.cpp +++ b/src/network/connection.cpp @@ -1173,7 +1173,9 @@ Connection::Connection(u32 protocol_id, u32 max_packet_size, float timeout, m_bc_peerhandler(peerhandler) { - m_udpSocket.setTimeoutMs(5); + /* Amount of time Receive() will wait for data, this is entirely different + * from the connection timeout */ + m_udpSocket.setTimeoutMs(500); m_sendThread->setParent(this); m_receiveThread->setParent(this); diff --git a/src/network/connectionthreads.cpp b/src/network/connectionthreads.cpp index 13d82e06d..1f33d2ded 100644 --- a/src/network/connectionthreads.cpp +++ b/src/network/connectionthreads.cpp @@ -812,6 +812,14 @@ void *ConnectionReceiveThread::run() ThreadIdentifier); PROFILE(ThreadIdentifier << "ConnectionReceive: [" << m_connection->getDesc() << "]"); + // use IPv6 minimum allowed MTU as receive buffer size as this is + // theoretical reliable upper boundary of a udp packet for all IPv6 enabled + // infrastructure + const unsigned int packet_maxsize = 1500; + SharedBuffer packetdata(packet_maxsize); + + bool packet_queued = true; + #ifdef DEBUG_CONNECTION_KBPS u64 curtime = porting::getTimeMs(); u64 lasttime = curtime; @@ -830,7 +838,7 @@ void *ConnectionReceiveThread::run() #endif /* receive packets */ - receive(); + receive(packetdata, packet_queued); #ifdef DEBUG_CONNECTION_KBPS debug_print_timer += dtime; @@ -892,157 +900,142 @@ void *ConnectionReceiveThread::run() } // Receive packets from the network and buffers and create ConnectionEvents -void ConnectionReceiveThread::receive() +void ConnectionReceiveThread::receive(SharedBuffer &packetdata, + bool &packet_queued) { - // use IPv6 minimum allowed MTU as receive buffer size as this is - // theoretical reliable upper boundary of a udp packet for all IPv6 enabled - // infrastructure - unsigned int packet_maxsize = 1500; - SharedBuffer packetdata(packet_maxsize); - - bool packet_queued = true; - - unsigned int loop_count = 0; - - /* first of all read packets from socket */ - /* check for incoming data available */ - while ((loop_count < 10) && - (m_connection->m_udpSocket.WaitData(50))) { - loop_count++; - try { - if (packet_queued) { - bool data_left = true; - session_t peer_id; - SharedBuffer resultdata; - while (data_left) { - try { - data_left = getFromBuffers(peer_id, resultdata); - if (data_left) { - ConnectionEvent e; - e.dataReceived(peer_id, resultdata); - m_connection->putEvent(e); - } - } - catch (ProcessedSilentlyException &e) { - /* try reading again */ + try { + // First, see if there any buffered packets we can process now + if (packet_queued) { + bool data_left = true; + session_t peer_id; + SharedBuffer resultdata; + while (data_left) { + try { + data_left = getFromBuffers(peer_id, resultdata); + if (data_left) { + ConnectionEvent e; + e.dataReceived(peer_id, resultdata); + m_connection->putEvent(e); } } - packet_queued = false; - } - - Address sender; - s32 received_size = m_connection->m_udpSocket.Receive(sender, *packetdata, - packet_maxsize); - - if ((received_size < BASE_HEADER_SIZE) || - (readU32(&packetdata[0]) != m_connection->GetProtocolID())) { - LOG(derr_con << m_connection->getDesc() - << "Receive(): Invalid incoming packet, " - << "size: " << received_size - << ", protocol: " - << ((received_size >= 4) ? readU32(&packetdata[0]) : -1) - << std::endl); - continue; - } - - session_t peer_id = readPeerId(*packetdata); - u8 channelnum = readChannel(*packetdata); - - if (channelnum > CHANNEL_COUNT - 1) { - LOG(derr_con << m_connection->getDesc() - << "Receive(): Invalid channel " << (u32)channelnum << std::endl); - throw InvalidIncomingDataException("Channel doesn't exist"); - } - - /* Try to identify peer by sender address (may happen on join) */ - if (peer_id == PEER_ID_INEXISTENT) { - peer_id = m_connection->lookupPeer(sender); - // We do not have to remind the peer of its - // peer id as the CONTROLTYPE_SET_PEER_ID - // command was sent reliably. - } - - /* The peer was not found in our lists. Add it. */ - if (peer_id == PEER_ID_INEXISTENT) { - peer_id = m_connection->createPeer(sender, MTP_MINETEST_RELIABLE_UDP, 0); - } - - PeerHelper peer = m_connection->getPeerNoEx(peer_id); - - if (!peer) { - LOG(dout_con << m_connection->getDesc() - << " got packet from unknown peer_id: " - << peer_id << " Ignoring." << std::endl); - continue; - } - - // Validate peer address - - Address peer_address; - - if (peer->getAddress(MTP_UDP, peer_address)) { - if (peer_address != sender) { - LOG(derr_con << m_connection->getDesc() - << m_connection->getDesc() - << " Peer " << peer_id << " sending from different address." - " Ignoring." << std::endl); - continue; - } - } else { - - bool invalid_address = true; - if (invalid_address) { - LOG(derr_con << m_connection->getDesc() - << m_connection->getDesc() - << " Peer " << peer_id << " unknown." - " Ignoring." << std::endl); - continue; + catch (ProcessedSilentlyException &e) { + /* try reading again */ } } - - peer->ResetTimeout(); - - Channel *channel = 0; - - if (dynamic_cast(&peer) != 0) { - channel = &(dynamic_cast(&peer)->channels[channelnum]); - } - - if (channel != 0) { - channel->UpdateBytesReceived(received_size); - } - - // Throw the received packet to channel->processPacket() - - // Make a new SharedBuffer from the data without the base headers - SharedBuffer strippeddata(received_size - BASE_HEADER_SIZE); - memcpy(*strippeddata, &packetdata[BASE_HEADER_SIZE], - strippeddata.getSize()); - - try { - // Process it (the result is some data with no headers made by us) - SharedBuffer resultdata = processPacket - (channel, strippeddata, peer_id, channelnum, false); - - LOG(dout_con << m_connection->getDesc() - << " ProcessPacket from peer_id: " << peer_id - << ", channel: " << (u32)channelnum << ", returned " - << resultdata.getSize() << " bytes" << std::endl); - - ConnectionEvent e; - e.dataReceived(peer_id, resultdata); - m_connection->putEvent(e); - } - catch (ProcessedSilentlyException &e) { - } - catch (ProcessedQueued &e) { - packet_queued = true; - } + packet_queued = false; } - catch (InvalidIncomingDataException &e) { + + // Call Receive() to wait for incoming data + Address sender; + s32 received_size = m_connection->m_udpSocket.Receive(sender, + *packetdata, packetdata.getSize()); + if (received_size < 0) + return; + + if ((received_size < BASE_HEADER_SIZE) || + (readU32(&packetdata[0]) != m_connection->GetProtocolID())) { + LOG(derr_con << m_connection->getDesc() + << "Receive(): Invalid incoming packet, " + << "size: " << received_size + << ", protocol: " + << ((received_size >= 4) ? readU32(&packetdata[0]) : -1) + << std::endl); + return; + } + + session_t peer_id = readPeerId(*packetdata); + u8 channelnum = readChannel(*packetdata); + + if (channelnum > CHANNEL_COUNT - 1) { + LOG(derr_con << m_connection->getDesc() + << "Receive(): Invalid channel " << (u32)channelnum << std::endl); + return; + } + + /* Try to identify peer by sender address (may happen on join) */ + if (peer_id == PEER_ID_INEXISTENT) { + peer_id = m_connection->lookupPeer(sender); + // We do not have to remind the peer of its + // peer id as the CONTROLTYPE_SET_PEER_ID + // command was sent reliably. + } + + /* The peer was not found in our lists. Add it. */ + if (peer_id == PEER_ID_INEXISTENT) { + peer_id = m_connection->createPeer(sender, MTP_MINETEST_RELIABLE_UDP, 0); + } + + PeerHelper peer = m_connection->getPeerNoEx(peer_id); + if (!peer) { + LOG(dout_con << m_connection->getDesc() + << " got packet from unknown peer_id: " + << peer_id << " Ignoring." << std::endl); + return; + } + + // Validate peer address + + Address peer_address; + if (peer->getAddress(MTP_UDP, peer_address)) { + if (peer_address != sender) { + LOG(derr_con << m_connection->getDesc() + << " Peer " << peer_id << " sending from different address." + " Ignoring." << std::endl); + return; + } + } else { + LOG(derr_con << m_connection->getDesc() + << " Peer " << peer_id << " doesn't have an address?!" + " Ignoring." << std::endl); + return; + } + + peer->ResetTimeout(); + + Channel *channel = nullptr; + if (dynamic_cast(&peer)) { + channel = &dynamic_cast(&peer)->channels[channelnum]; + } else { + LOG(derr_con << m_connection->getDesc() + << "Receive(): peer_id=" << peer_id << " isn't an UDPPeer?!" + " Ignoring." << std::endl); + return; + } + + channel->UpdateBytesReceived(received_size); + + // Throw the received packet to channel->processPacket() + + // Make a new SharedBuffer from the data without the base headers + SharedBuffer strippeddata(received_size - BASE_HEADER_SIZE); + memcpy(*strippeddata, &packetdata[BASE_HEADER_SIZE], + strippeddata.getSize()); + + try { + // Process it (the result is some data with no headers made by us) + SharedBuffer resultdata = processPacket + (channel, strippeddata, peer_id, channelnum, false); + + LOG(dout_con << m_connection->getDesc() + << " ProcessPacket from peer_id: " << peer_id + << ", channel: " << (u32)channelnum << ", returned " + << resultdata.getSize() << " bytes" << std::endl); + + ConnectionEvent e; + e.dataReceived(peer_id, resultdata); + m_connection->putEvent(e); } catch (ProcessedSilentlyException &e) { } + catch (ProcessedQueued &e) { + // we set it to true anyway (see below) + } + + /* Every time we receive a packet it can happen that a previously + * buffered packet is now ready to process. */ + packet_queued = true; + } + catch (InvalidIncomingDataException &e) { } } @@ -1189,7 +1182,8 @@ SharedBuffer ConnectionReceiveThread::handlePacketType_Control(Channel *chan m_connection->TriggerSend(); } catch (NotFoundException &e) { LOG(derr_con << m_connection->getDesc() - << "WARNING: ACKed packet not in outgoing queue" << std::endl); + << "WARNING: ACKed packet not in outgoing queue" + << " seqnum=" << seqnum << std::endl); channel->UpdatePacketTooLateCounter(); } diff --git a/src/network/connectionthreads.h b/src/network/connectionthreads.h index da4ea92f5..612407c3b 100644 --- a/src/network/connectionthreads.h +++ b/src/network/connectionthreads.h @@ -101,7 +101,7 @@ public: } private: - void receive(); + void receive(SharedBuffer &packetdata, bool &packet_queued); // Returns next data from a buffer if possible // If found, returns true; if not, false. From 4361bfcb4da0b6f9de74c7de9f2d08084877713e Mon Sep 17 00:00:00 2001 From: HybridDog <3192173+HybridDog@users.noreply.github.com> Date: Wed, 22 Apr 2020 00:07:12 +0200 Subject: [PATCH 127/424] Fix configuration caching in log_deprecated (#9697) * Fix configuration caching in log_deprecated The configured variable was never set to true. I've set the variables to thread_local because the configuration should be reloaded after reentering the world from mainmenu. --- src/script/common/c_internal.cpp | 9 +++++---- src/script/lua_api/l_util.cpp | 2 +- src/script/lua_api/l_util.h | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/script/common/c_internal.cpp b/src/script/common/c_internal.cpp index b19af9f82..6df1f8b7b 100644 --- a/src/script/common/c_internal.cpp +++ b/src/script/common/c_internal.cpp @@ -157,9 +157,9 @@ static void script_log(lua_State *L, const std::string &message, void log_deprecated(lua_State *L, const std::string &message, int stack_depth) { - static bool configured = false; - static bool do_log = false; - static bool do_error = false; + static thread_local bool configured = false; + static thread_local bool do_log = false; + static thread_local bool do_error = false; // Only read settings on first call if (!configured) { @@ -167,9 +167,10 @@ void log_deprecated(lua_State *L, const std::string &message, int stack_depth) if (value == "log") { do_log = true; } else if (value == "error") { - do_log = true; + do_log = true; do_error = true; } + configured = true; } if (do_log) diff --git a/src/script/lua_api/l_util.cpp b/src/script/lua_api/l_util.cpp index ae3e5df3d..28ee39fc8 100644 --- a/src/script/lua_api/l_util.cpp +++ b/src/script/lua_api/l_util.cpp @@ -44,7 +44,7 @@ with this program; if not, write to the Free Software Foundation, Inc., // log([level,] text) // Writes a line to the logger. -// The one-argument version logs to infostream. +// The one-argument version logs to LL_NONE. // The two-argument version accepts a log level. // Either the special case "deprecated" for deprecation notices, or any specified in // Logger::stringToLevel(name). diff --git a/src/script/lua_api/l_util.h b/src/script/lua_api/l_util.h index 5697aab15..9ff91bb53 100644 --- a/src/script/lua_api/l_util.h +++ b/src/script/lua_api/l_util.h @@ -37,7 +37,7 @@ private: // log([level,] text) // Writes a line to the logger. - // The one-argument version logs to infostream. + // The one-argument version logs to LL_NONE. // The two-argument version accepts a log level. static int l_log(lua_State *L); From 5355cb1d87f60bc5548a8a9311e597b9c6046013 Mon Sep 17 00:00:00 2001 From: HybridDog <3192173+HybridDog@users.noreply.github.com> Date: Wed, 22 Apr 2020 16:43:48 +0200 Subject: [PATCH 128/424] minetest.serialize: Reversible number serialization (#9722) * minetest.serialize: Reversible number to string conversion The %a format is not supported in Lua 5.1. This commit also adds two tests for number serialization. --- builtin/common/serialize.lua | 11 ++--------- builtin/common/tests/serialize_spec.lua | 12 ++++++++++++ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/builtin/common/serialize.lua b/builtin/common/serialize.lua index 163aa67ad..300b394c6 100644 --- a/builtin/common/serialize.lua +++ b/builtin/common/serialize.lua @@ -120,15 +120,8 @@ function core.serialize(x) elseif tp == "function" then return string.format("loadstring(%q)", string.dump(x)) elseif tp == "number" then - -- Serialize integers with string.format to prevent - -- scientific notation, which doesn't preserve - -- precision and breaks things like node position - -- hashes. Serialize floats normally. - if math.floor(x) == x then - return string.format("%d", x) - else - return tostring(x) - end + -- Serialize numbers reversibly with string.format + return string.format("%.17g", x) elseif tp == "table" then local vals = {} local idx_dumped = {} diff --git a/builtin/common/tests/serialize_spec.lua b/builtin/common/tests/serialize_spec.lua index c41b0a372..17c6a60f7 100644 --- a/builtin/common/tests/serialize_spec.lua +++ b/builtin/common/tests/serialize_spec.lua @@ -18,6 +18,18 @@ describe("serialize", function() assert.same(test_in, test_out) end) + it("handles precise numbers", function() + local test_in = 0.2695949158945771 + local test_out = core.deserialize(core.serialize(test_in)) + assert.same(test_in, test_out) + end) + + it("handles big integers", function() + local test_in = 269594915894577 + local test_out = core.deserialize(core.serialize(test_in)) + assert.same(test_in, test_out) + end) + it("handles recursive structures", function() local test_in = { hello = "world" } test_in.foo = test_in From 6ba44d74526031a07bbc5093b708b8b99a27456a Mon Sep 17 00:00:00 2001 From: Maksim Date: Wed, 22 Apr 2020 20:03:46 +0200 Subject: [PATCH 129/424] Android: add OpenGL ES 2 support (#9715) .. and bump gradle to 3.6.3 --- build/android/app/build.gradle | 9 ++++++--- build/android/build.gradle | 2 +- src/client/renderingengine.cpp | 7 ++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/build/android/app/build.gradle b/build/android/app/build.gradle index 6a34a6d70..9d14cdab8 100644 --- a/build/android/app/build.gradle +++ b/build/android/app/build.gradle @@ -63,8 +63,12 @@ task prepareAssets() { copy { from "${projRoot}/builtin" into "${assetsFolder}/builtin" } - copy { + /*copy { + // ToDo: fix Minetest shaders that currently don't work with OpenGL ES from "${projRoot}/client/shaders" into "${assetsFolder}/client/shaders" + }*/ + copy { + from "../native/deps/Android/Irrlicht/shaders" into "${assetsFolder}/client/shaders/Irrlicht" } copy { from "${projRoot}/fonts" include "*.ttf" into "${assetsFolder}/fonts" @@ -73,8 +77,7 @@ task prepareAssets() { from "${projRoot}/games/${gameToCopy}" into "${assetsFolder}/games/${gameToCopy}" } /*copy { - // locales broken right now - // ToDo: fix it! + // ToDo: fix broken locales from "${projRoot}/po" into "${assetsFolder}/po" }*/ copy { diff --git a/build/android/build.gradle b/build/android/build.gradle index b02e8c6df..c4de09bf8 100644 --- a/build/android/build.gradle +++ b/build/android/build.gradle @@ -15,7 +15,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.6.2' + classpath 'com.android.tools.build:gradle:3.6.3' classpath 'org.ajoberstar.grgit:grgit-gradle:4.0.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/src/client/renderingengine.cpp b/src/client/renderingengine.cpp index eae6ca7d3..f5aca8f58 100644 --- a/src/client/renderingengine.cpp +++ b/src/client/renderingengine.cpp @@ -130,12 +130,9 @@ RenderingEngine::RenderingEngine(IEventReceiver *receiver) params.HighPrecisionFPU = g_settings->getBool("high_precision_fpu"); params.ZBufferBits = 24; #ifdef __ANDROID__ - // clang-format off params.PrivateData = porting::app_global; - params.OGLES2ShaderPath = std::string(porting::path_user + DIR_DELIM + "media" + - DIR_DELIM + "Shaders" + DIR_DELIM).c_str(); - // clang-format on -#elif ENABLE_GLES +#endif +#if ENABLE_GLES // there is no standardized path for these on desktop std::string rel_path = std::string("client") + DIR_DELIM + "shaders" + DIR_DELIM + "Irrlicht"; From ce5b0932f8e17244bd6c1e307f1fce76b16e6474 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Thu, 23 Apr 2020 12:16:36 +0200 Subject: [PATCH 130/424] Camera: Fix shootline line offsets II (#9730) --- src/client/game.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/client/game.cpp b/src/client/game.cpp index 4b2d7c652..3429cc57b 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -3029,7 +3029,6 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug) { LocalPlayer *player = client->getEnv().getLocalPlayer(); - const v3f head_position = camera->getHeadPosition(); const v3f camera_direction = camera->getDirection(); const v3s16 camera_offset = camera->getOffset(); @@ -3045,13 +3044,22 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug) core::line3d shootline; - if (camera->getCameraMode() != CAMERA_MODE_THIRD_FRONT) { - shootline = core::line3d(head_position, - head_position + camera_direction * BS * d); - } else { + switch (camera->getCameraMode()) { + case CAMERA_MODE_FIRST: + // Shoot from camera position, with bobbing + shootline.start = camera->getPosition(); + break; + case CAMERA_MODE_THIRD: + // Shoot from player head, no bobbing + shootline.start = camera->getHeadPosition(); + break; + case CAMERA_MODE_THIRD_FRONT: + shootline.start = camera->getHeadPosition(); // prevent player pointing anything in front-view - shootline = core::line3d(head_position, head_position); + d = 0; + break; } + shootline.end = shootline.start + camera_direction * BS * d; #ifdef HAVE_TOUCHSCREENGUI From 914dbeaa0be4b5ef87506b605ef4e241cd3732dc Mon Sep 17 00:00:00 2001 From: luk3yx Date: Thu, 23 Apr 2020 23:07:19 +1200 Subject: [PATCH 131/424] Add LevelDB auth database. (#9476) * Add leveldb auth database. --- src/database/database-leveldb.cpp | 98 ++++++++++++++++++++++++++++++- src/database/database-leveldb.h | 17 ++++++ src/serverenvironment.cpp | 8 +++ 3 files changed, 122 insertions(+), 1 deletion(-) diff --git a/src/database/database-leveldb.cpp b/src/database/database-leveldb.cpp index 4a4904c6a..1aab4c43d 100644 --- a/src/database/database-leveldb.cpp +++ b/src/database/database-leveldb.cpp @@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "log.h" #include "filesys.h" #include "exceptions.h" +#include "util/serialize.h" #include "util/string.h" #include "leveldb/db.h" @@ -97,5 +98,100 @@ void Database_LevelDB::listAllLoadableBlocks(std::vector &dst) delete it; } -#endif // USE_LEVELDB +AuthDatabaseLevelDB::AuthDatabaseLevelDB(const std::string &savedir) +{ + leveldb::Options options; + options.create_if_missing = true; + leveldb::Status status = leveldb::DB::Open(options, + savedir + DIR_DELIM + "auth.db", &m_database); + ENSURE_STATUS_OK(status); +} +AuthDatabaseLevelDB::~AuthDatabaseLevelDB() +{ + delete m_database; +} + +bool AuthDatabaseLevelDB::getAuth(const std::string &name, AuthEntry &res) +{ + std::string raw; + leveldb::Status s = m_database->Get(leveldb::ReadOptions(), name, &raw); + if (!s.ok()) + return false; + std::istringstream is(raw); + + /* + u8 version = 1 + std::string password + u16 number of privileges + for each privilege { + std::string privilege + } + s64 last_login + */ + + if (readU8(is) > 1) + return false; + + res.id = 1; + res.name = name; + res.password = deSerializeString(is); + + u16 privilege_count = readU16(is); + res.privileges.clear(); + res.privileges.reserve(privilege_count); + for (u16 i = 0; i < privilege_count; i++) { + res.privileges.push_back(deSerializeString(is)); + } + + res.last_login = readS64(is); + return true; +} + +bool AuthDatabaseLevelDB::saveAuth(const AuthEntry &authEntry) +{ + std::ostringstream os; + writeU8(os, 1); + os << serializeString(authEntry.password); + + size_t privilege_count = authEntry.privileges.size(); + FATAL_ERROR_IF(privilege_count > U16_MAX, + "Unsupported number of privileges"); + writeU16(os, privilege_count); + for (const std::string &privilege : authEntry.privileges) { + os << serializeString(privilege); + } + + writeS64(os, authEntry.last_login); + leveldb::Status s = m_database->Put(leveldb::WriteOptions(), + authEntry.name, os.str()); + return s.ok(); +} + +bool AuthDatabaseLevelDB::createAuth(AuthEntry &authEntry) +{ + return saveAuth(authEntry); +} + +bool AuthDatabaseLevelDB::deleteAuth(const std::string &name) +{ + leveldb::Status s = m_database->Delete(leveldb::WriteOptions(), name); + return s.ok(); +} + +void AuthDatabaseLevelDB::listNames(std::vector &res) +{ + leveldb::Iterator* it = m_database->NewIterator(leveldb::ReadOptions()); + res.clear(); + for (it->SeekToFirst(); it->Valid(); it->Next()) { + res.emplace_back(it->key().ToString()); + } + delete it; +} + +void AuthDatabaseLevelDB::reload() +{ + // No-op for LevelDB. +} + +#endif // USE_LEVELDB diff --git a/src/database/database-leveldb.h b/src/database/database-leveldb.h index d30f9f8f5..a9bd0faa4 100644 --- a/src/database/database-leveldb.h +++ b/src/database/database-leveldb.h @@ -45,4 +45,21 @@ private: leveldb::DB *m_database; }; +class AuthDatabaseLevelDB : public AuthDatabase +{ +public: + AuthDatabaseLevelDB(const std::string &savedir); + virtual ~AuthDatabaseLevelDB(); + + virtual bool getAuth(const std::string &name, AuthEntry &res); + virtual bool saveAuth(const AuthEntry &authEntry); + virtual bool createAuth(AuthEntry &authEntry); + virtual bool deleteAuth(const std::string &name); + virtual void listNames(std::vector &res); + virtual void reload(); + +private: + leveldb::DB *m_database; +}; + #endif // USE_LEVELDB diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 27f0c1e3d..08d796118 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -44,6 +44,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #if USE_POSTGRESQL #include "database/database-postgresql.h" #endif +#if USE_LEVELDB +#include "database/database-leveldb.h" +#endif #include "server/luaentity_sao.h" #include "server/player_sao.h" @@ -2187,6 +2190,11 @@ AuthDatabase *ServerEnvironment::openAuthDatabase( if (name == "files") return new AuthDatabaseFiles(savedir); +#if USE_LEVELDB + if (name == "leveldb") + return new AuthDatabaseLevelDB(savedir); +#endif + throw BaseException(std::string("Database backend ") + name + " not supported."); } From cee3c5e73d7af2a876aa76275234ee76e7cb1bbc Mon Sep 17 00:00:00 2001 From: EvidenceB Kidscode <49488517+EvidenceBKidscode@users.noreply.github.com> Date: Sat, 25 Apr 2020 07:20:00 +0200 Subject: [PATCH 132/424] Add server side translations capability (#9733) * Add server side translations capability --- doc/lua_api.txt | 15 +++++++++++ src/client/client.cpp | 2 +- src/client/game.cpp | 2 +- src/clientiface.h | 6 +++++ src/network/serverpackethandler.cpp | 3 +++ src/script/lua_api/l_env.cpp | 16 +++++++++++ src/script/lua_api/l_env.h | 3 +++ src/script/lua_api/l_server.cpp | 7 ++++- src/server.cpp | 22 +++++++++++++++- src/server.h | 5 +++- src/translation.cpp | 13 +++++++-- src/translation.h | 5 +++- src/util/string.cpp | 41 ++++++++++++++++++++++------- src/util/string.h | 4 +++ 14 files changed, 126 insertions(+), 18 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 77f06682f..3ca32649a 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -3176,8 +3176,22 @@ Strings that need to be translated can contain several escapes, preceded by `@`. `minetest.translate`, but is in translation files. * `@n` acts as a literal newline as well. +Server side translations +------------------------ +On some specific cases, server translation could be useful. For example, filter +a list on labels and send results to client. A method is supplied to achieve +that: +`minetest.get_translated_string(lang_code, string)`: Translates `string` using +translations for `lang_code` language. It gives the same result as if the string +was translated by the client. + +The `lang_code` to use for a given player can be retrieved from +the table returned by `minetest.get_player_information(name)`. + +IMPORTANT: This functionality should only be used for sorting, filtering or similar purposes. +You do not need to use this to get translated strings to show up on the client. Perlin noise ============ @@ -4153,6 +4167,7 @@ Utilities connection_uptime = 200, -- seconds since client connected protocol_version = 32, -- protocol version used by client formspec_version = 2, -- supported formspec version + lang_code = "fr" -- Language code used for translation -- following information is available on debug build only!!! -- DO NOT USE IN MODS --ser_vers = 26, -- serialization version used by client diff --git a/src/client/client.cpp b/src/client/client.cpp index 8ee0869cd..941fc203d 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -736,7 +736,7 @@ bool Client::loadMedia(const std::string &data, const std::string &filename) if (!name.empty()) { TRACESTREAM(<< "Client: Loading translation: " << "\"" << filename << "\"" << std::endl); - g_translations->loadTranslation(data); + g_client_translations->loadTranslation(data); return true; } diff --git a/src/client/game.cpp b/src/client/game.cpp index 3429cc57b..610522dc2 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -1055,7 +1055,7 @@ bool Game::startup(bool *kill, m_invert_mouse = g_settings->getBool("invert_mouse"); m_first_loop_after_window_activation = true; - g_translations->clear(); + g_client_translations->clear(); if (!init(map_dir, address, port, gamespec)) return false; diff --git a/src/clientiface.h b/src/clientiface.h index bf95df4a8..83fa6fe99 100644 --- a/src/clientiface.h +++ b/src/clientiface.h @@ -339,12 +339,18 @@ public: u8 getMinor() const { return m_version_minor; } u8 getPatch() const { return m_version_patch; } const std::string &getFull() const { return m_full_version; } + + void setLangCode(const std::string &code) { m_lang_code = code; } + const std::string &getLangCode() const { return m_lang_code; } private: // Version is stored in here after INIT before INIT2 u8 m_pending_serialization_version = SER_FMT_VER_INVALID; /* current state of client */ ClientState m_state = CS_Created; + + // Client sent language code + std::string m_lang_code; /* Blocks that have been sent to client. diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index c685500ce..5136eb0ec 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -311,6 +311,9 @@ void Server::handleCommand_Init2(NetworkPacket* pkt) RemoteClient *client = getClient(peer_id, CS_InitDone); + // Keep client language for server translations + client->setLangCode(lang); + // Send active objects { PlayerSAO *sao = getPlayerSAO(peer_id); diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index 831464d3b..3fb58b8c8 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -40,6 +40,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "remoteplayer.h" #include "server/luaentity_sao.h" #include "server/player_sao.h" +#include "util/string.h" +#include "translation.h" #ifndef SERVER #include "client/client.h" #endif @@ -1302,6 +1304,19 @@ int ModApiEnvMod::l_forceload_free_block(lua_State *L) return 0; } +// get_translated_string(lang_code, string) +int ModApiEnvMod::l_get_translated_string(lua_State * L) +{ + GET_ENV_PTR; + std::string lang_code = luaL_checkstring(L, 1); + std::string string = luaL_checkstring(L, 2); + getServer(L)->loadTranslationLanguage(lang_code); + string = wide_to_utf8(translate_string(utf8_to_wide(string), + &(*g_server_translations)[lang_code])); + lua_pushstring(L, string.c_str()); + return 1; +} + void ModApiEnvMod::Initialize(lua_State *L, int top) { API_FCT(set_node); @@ -1349,6 +1364,7 @@ void ModApiEnvMod::Initialize(lua_State *L, int top) API_FCT(transforming_liquid_add); API_FCT(forceload_block); API_FCT(forceload_free_block); + API_FCT(get_translated_string); } void ModApiEnvMod::InitializeClient(lua_State *L, int top) diff --git a/src/script/lua_api/l_env.h b/src/script/lua_api/l_env.h index ac2f8b588..9050b4306 100644 --- a/src/script/lua_api/l_env.h +++ b/src/script/lua_api/l_env.h @@ -187,6 +187,9 @@ private: // stops forceloading a position static int l_forceload_free_block(lua_State *L); + // Get a string translated server side + static int l_get_translated_string(lua_State * L); + public: static void Initialize(lua_State *L, int top); static void InitializeClient(lua_State *L, int top); diff --git a/src/script/lua_api/l_server.cpp b/src/script/lua_api/l_server.cpp index 00e849cdf..7137484e8 100644 --- a/src/script/lua_api/l_server.cpp +++ b/src/script/lua_api/l_server.cpp @@ -163,6 +163,7 @@ int ModApiServer::l_get_player_information(lua_State *L) u16 prot_vers; u8 ser_vers,major,minor,patch; std::string vers_string; + std::string lang_code; #define ERET(code) \ if (!(code)) { \ @@ -182,7 +183,7 @@ int ModApiServer::l_get_player_information(lua_State *L) &avg_jitter)) ERET(getServer(L)->getClientInfo(player->getPeerId(), &state, &uptime, &ser_vers, - &prot_vers, &major, &minor, &patch, &vers_string)) + &prot_vers, &major, &minor, &patch, &vers_string, &lang_code)) lua_newtable(L); int table = lua_gettop(L); @@ -237,6 +238,10 @@ int ModApiServer::l_get_player_information(lua_State *L) lua_pushnumber(L, player->formspec_version); lua_settable(L, table); + lua_pushstring(L, "lang_code"); + lua_pushstring(L, lang_code.c_str()); + lua_settable(L, table); + #ifndef NDEBUG lua_pushstring(L,"serialization_version"); lua_pushnumber(L, ser_vers); diff --git a/src/server.cpp b/src/server.cpp index c32aa5306..af6d3e40d 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -64,6 +64,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "chat_interface.h" #include "remoteplayer.h" #include "server/player_sao.h" +#include "translation.h" class ClientNotFoundException : public BaseException { @@ -1266,7 +1267,8 @@ bool Server::getClientInfo( u8* major, u8* minor, u8* patch, - std::string* vers_string + std::string* vers_string, + std::string* lang_code ) { *state = m_clients.getClientState(peer_id); @@ -1286,6 +1288,7 @@ bool Server::getClientInfo( *minor = client->getMinor(); *patch = client->getPatch(); *vers_string = client->getFull(); + *lang_code = client->getLangCode(); m_clients.unlock(); @@ -3937,3 +3940,20 @@ void Server::broadcastModChannelMessage(const std::string &channel, m_script->on_modchannel_message(channel, sender, message); } } + +void Server::loadTranslationLanguage(const std::string &lang_code) +{ + if (g_server_translations->count(lang_code)) + return; // Already loaded + + std::string suffix = "." + lang_code + ".tr"; + for (const auto &i : m_media) { + if (str_ends_with(i.first, suffix)) { + std::ifstream t(i.second.path); + std::string data((std::istreambuf_iterator(t)), + std::istreambuf_iterator()); + + (*g_server_translations)[lang_code].loadTranslation(data); + } + } +} diff --git a/src/server.h b/src/server.h index eecc2c0f0..b995aba28 100644 --- a/src/server.h +++ b/src/server.h @@ -334,7 +334,7 @@ public: bool getClientConInfo(session_t peer_id, con::rtt_stat_type type, float *retval); bool getClientInfo(session_t peer_id, ClientState *state, u32 *uptime, u8* ser_vers, u16* prot_vers, u8* major, u8* minor, u8* patch, - std::string* vers_string); + std::string* vers_string, std::string* lang_code); void printToConsoleOnly(const std::string &text); @@ -358,6 +358,9 @@ public: // Send block to specific player only bool SendBlock(session_t peer_id, const v3s16 &blockpos); + // Load translations for a language + void loadTranslationLanguage(const std::string &lang_code); + // Bind address Address m_bind_addr; diff --git a/src/translation.cpp b/src/translation.cpp index d17467ce7..8bbaee0a3 100644 --- a/src/translation.cpp +++ b/src/translation.cpp @@ -20,9 +20,18 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "translation.h" #include "log.h" #include "util/string.h" +#include -static Translations main_translations; -Translations *g_translations = &main_translations; + +#ifndef SERVER +// Client translations +Translations client_translations; +Translations *g_client_translations = &client_translations; +#endif + +// Per language server translations +std::unordered_map server_translations; +std::unordered_map *g_server_translations = &server_translations; Translations::~Translations() { diff --git a/src/translation.h b/src/translation.h index 18fc6c38f..71423b15e 100644 --- a/src/translation.h +++ b/src/translation.h @@ -23,7 +23,10 @@ with this program; if not, write to the Free Software Foundation, Inc., #include class Translations; -extern Translations *g_translations; +extern std::unordered_map *g_server_translations; +#ifndef SERVER +extern Translations *g_client_translations; +#endif class Translations { diff --git a/src/util/string.cpp b/src/util/string.cpp index 2ee3ec735..6e1db798c 100644 --- a/src/util/string.cpp +++ b/src/util/string.cpp @@ -693,10 +693,12 @@ void str_replace(std::string &str, char from, char to) * before filling it again. */ -void translate_all(const std::wstring &s, size_t &i, std::wstring &res); +void translate_all(const std::wstring &s, size_t &i, + Translations *translations, std::wstring &res); -void translate_string(const std::wstring &s, const std::wstring &textdomain, - size_t &i, std::wstring &res) { +void translate_string(const std::wstring &s, Translations *translations, + const std::wstring &textdomain, size_t &i, std::wstring &res) +{ std::wostringstream output; std::vector args; int arg_number = 1; @@ -750,7 +752,7 @@ void translate_string(const std::wstring &s, const std::wstring &textdomain, if (arg_number >= 10) { errorstream << "Ignoring too many arguments to translation" << std::endl; std::wstring arg; - translate_all(s, i, arg); + translate_all(s, i, translations, arg); args.push_back(arg); continue; } @@ -758,7 +760,7 @@ void translate_string(const std::wstring &s, const std::wstring &textdomain, output << arg_number; ++arg_number; std::wstring arg; - translate_all(s, i, arg); + translate_all(s, i, translations, arg); args.push_back(arg); } else { // This is an escape sequence *inside* the template string to translate itself. @@ -767,8 +769,13 @@ void translate_string(const std::wstring &s, const std::wstring &textdomain, } } + std::wstring toutput; // Translate the template. - std::wstring toutput = g_translations->getTranslation(textdomain, output.str()); + if (translations != nullptr) + toutput = translations->getTranslation( + textdomain, output.str()); + else + toutput = output.str(); // Put back the arguments in the translated template. std::wostringstream result; @@ -802,7 +809,9 @@ void translate_string(const std::wstring &s, const std::wstring &textdomain, res = result.str(); } -void translate_all(const std::wstring &s, size_t &i, std::wstring &res) { +void translate_all(const std::wstring &s, size_t &i, + Translations *translations, std::wstring &res) +{ std::wostringstream output; while (i < s.length()) { // Not an escape sequence: just add the character. @@ -851,7 +860,7 @@ void translate_all(const std::wstring &s, size_t &i, std::wstring &res) { if (parts.size() > 1) textdomain = parts[1]; std::wstring translated; - translate_string(s, textdomain, i, translated); + translate_string(s, translations, textdomain, i, translated); output << translated; } else { // Another escape sequence, such as colors. Preserve it. @@ -862,9 +871,21 @@ void translate_all(const std::wstring &s, size_t &i, std::wstring &res) { res = output.str(); } -std::wstring translate_string(const std::wstring &s) { +// Translate string server side +std::wstring translate_string(const std::wstring &s, Translations *translations) +{ size_t i = 0; std::wstring res; - translate_all(s, i, res); + translate_all(s, i, translations, res); return res; } + +// Translate string client side +std::wstring translate_string(const std::wstring &s) +{ +#ifdef SERVER + return translate_string(s, nullptr); +#else + return translate_string(s, g_client_translations); +#endif +} diff --git a/src/util/string.h b/src/util/string.h index 0d2a6bdb2..185fb55e2 100644 --- a/src/util/string.h +++ b/src/util/string.h @@ -31,6 +31,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include +class Translations; + #define STRINGIFY(x) #x #define TOSTRING(x) STRINGIFY(x) @@ -650,6 +652,8 @@ std::vector > split(const std::basic_string &s, T delim) return tokens; } +std::wstring translate_string(const std::wstring &s, Translations *translations); + std::wstring translate_string(const std::wstring &s); inline std::wstring unescape_translate(const std::wstring &s) { From 6cc5c7cbb489a429009e769a958f07da33a9d2ca Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Sat, 25 Apr 2020 07:48:04 +0200 Subject: [PATCH 133/424] Simplify how parseElement splits element string (#9726) --- src/gui/guiFormSpecMenu.cpp | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index 85ab2eb50..0ed525f97 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -2668,24 +2668,12 @@ void GUIFormSpecMenu::parseElement(parserData* data, const std::string &element) if (parseVersionDirect(element)) return; - std::vector parts = split(element,'['); - - // ugly workaround to keep compatibility - if (parts.size() > 2) { - if (trim(parts[0]) == "image") { - for (unsigned int i=2;i< parts.size(); i++) { - parts[1] += "[" + parts[i]; - } - } - else { return; } - } - - if (parts.size() < 2) { + size_t pos = element.find('['); + if (pos == std::string::npos) return; - } - std::string type = trim(parts[0]); - std::string description = trim(parts[1]); + std::string type = trim(element.substr(0, pos)); + std::string description = element.substr(pos+1); if (type == "container") { parseContainer(data, description); From 49ed0ca00a9a79b5db0bd6cc4589d56d7f1b3d45 Mon Sep 17 00:00:00 2001 From: Paul Ouellette Date: Sat, 25 Apr 2020 03:42:18 -0400 Subject: [PATCH 134/424] Ensure game is shutdown if server throws exception (#9742) --- src/client/game.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/game.cpp b/src/client/game.cpp index 610522dc2..3bdac786c 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -4284,7 +4284,6 @@ void the_game(bool *kill, reconnect_requested, &chat_backend, gamespec, simple_singleplayer_mode)) { game.run(); - game.shutdown(); } } catch (SerializationError &e) { @@ -4300,4 +4299,5 @@ void the_game(bool *kill, strgettext("\nCheck debug.txt for details."); errorstream << error_message << std::endl; } + game.shutdown(); } From 73180a73da9b290e2da8629799696cd8c4eab268 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 25 Apr 2020 12:39:17 +0200 Subject: [PATCH 135/424] mapblock_mesh: Optimize a few things (#9713) --- src/client/mapblock_mesh.cpp | 91 +++++++++++++++++------------------- 1 file changed, 44 insertions(+), 47 deletions(-) diff --git a/src/client/mapblock_mesh.cpp b/src/client/mapblock_mesh.cpp index a5bee6b88..0a1619b3f 100644 --- a/src/client/mapblock_mesh.cpp +++ b/src/client/mapblock_mesh.cpp @@ -225,7 +225,7 @@ static u16 getSmoothLightCombined(const v3s16 &p, return f.light_propagates; }; - std::array obstructed = {{ 1, 1, 1, 1 }}; + bool obstructed[4] = { true, true, true, true }; add_node(0); bool opaque1 = !add_node(1); bool opaque2 = !add_node(2); @@ -372,6 +372,32 @@ void final_color_blend(video::SColor *result, Mesh generation helpers */ +// This table is moved outside getNodeVertexDirs to avoid the compiler using +// a mutex to initialize this table at runtime right in the hot path. +// For details search the internet for "cxa_guard_acquire". +static const v3s16 vertex_dirs_table[] = { + // ( 1, 0, 0) + v3s16( 1,-1, 1), v3s16( 1,-1,-1), + v3s16( 1, 1,-1), v3s16( 1, 1, 1), + // ( 0, 1, 0) + v3s16( 1, 1,-1), v3s16(-1, 1,-1), + v3s16(-1, 1, 1), v3s16( 1, 1, 1), + // ( 0, 0, 1) + v3s16(-1,-1, 1), v3s16( 1,-1, 1), + v3s16( 1, 1, 1), v3s16(-1, 1, 1), + // invalid + v3s16(), v3s16(), v3s16(), v3s16(), + // ( 0, 0,-1) + v3s16( 1,-1,-1), v3s16(-1,-1,-1), + v3s16(-1, 1,-1), v3s16( 1, 1,-1), + // ( 0,-1, 0) + v3s16( 1,-1, 1), v3s16(-1,-1, 1), + v3s16(-1,-1,-1), v3s16( 1,-1,-1), + // (-1, 0, 0) + v3s16(-1,-1,-1), v3s16(-1,-1, 1), + v3s16(-1, 1, 1), v3s16(-1, 1,-1) +}; + /* vertex_dirs: v3s16[4] */ @@ -384,44 +410,16 @@ static void getNodeVertexDirs(const v3s16 &dir, v3s16 *vertex_dirs) 2: top-left 3: top-right */ - if (dir == v3s16(0, 0, 1)) { - // If looking towards z+, this is the face that is behind - // the center point, facing towards z+. - vertex_dirs[0] = v3s16(-1,-1, 1); - vertex_dirs[1] = v3s16( 1,-1, 1); - vertex_dirs[2] = v3s16( 1, 1, 1); - vertex_dirs[3] = v3s16(-1, 1, 1); - } else if (dir == v3s16(0, 0, -1)) { - // faces towards Z- - vertex_dirs[0] = v3s16( 1,-1,-1); - vertex_dirs[1] = v3s16(-1,-1,-1); - vertex_dirs[2] = v3s16(-1, 1,-1); - vertex_dirs[3] = v3s16( 1, 1,-1); - } else if (dir == v3s16(1, 0, 0)) { - // faces towards X+ - vertex_dirs[0] = v3s16( 1,-1, 1); - vertex_dirs[1] = v3s16( 1,-1,-1); - vertex_dirs[2] = v3s16( 1, 1,-1); - vertex_dirs[3] = v3s16( 1, 1, 1); - } else if (dir == v3s16(-1, 0, 0)) { - // faces towards X- - vertex_dirs[0] = v3s16(-1,-1,-1); - vertex_dirs[1] = v3s16(-1,-1, 1); - vertex_dirs[2] = v3s16(-1, 1, 1); - vertex_dirs[3] = v3s16(-1, 1,-1); - } else if (dir == v3s16(0, 1, 0)) { - // faces towards Y+ (assume Z- as "down" in texture) - vertex_dirs[0] = v3s16( 1, 1,-1); - vertex_dirs[1] = v3s16(-1, 1,-1); - vertex_dirs[2] = v3s16(-1, 1, 1); - vertex_dirs[3] = v3s16( 1, 1, 1); - } else if (dir == v3s16(0, -1, 0)) { - // faces towards Y- (assume Z+ as "down" in texture) - vertex_dirs[0] = v3s16( 1,-1, 1); - vertex_dirs[1] = v3s16(-1,-1, 1); - vertex_dirs[2] = v3s16(-1,-1,-1); - vertex_dirs[3] = v3s16( 1,-1,-1); - } + + // Direction must be (1,0,0), (-1,0,0), (0,1,0), (0,-1,0), + // (0,0,1), (0,0,-1) + assert(dir.X * dir.X + dir.Y * dir.Y + dir.Z * dir.Z == 1); + + // Convert direction to single integer for table lookup + u8 idx = (dir.X + 2 * dir.Y + 3 * dir.Z) & 7; + idx = (idx - 1) * 4; + + memcpy(vertex_dirs, &vertex_dirs_table[idx], 4 * sizeof(v3s16)); } static void getNodeTextureCoords(v3f base, const v3f &scale, const v3s16 &dir, float *u, float *v) @@ -892,6 +890,8 @@ static void updateFastFaceRow( u16 lights[4] = {0, 0, 0, 0}; u8 waving; TileSpec tile; + + // Get info of first tile getTileInfo(data, p, face_dir, makes_face, p_corrected, face_dir_corrected, lights, waving, tile); @@ -902,8 +902,6 @@ static void updateFastFaceRow( // If tiling can be done, this is set to false in the next step bool next_is_different = true; - v3s16 p_next; - bool next_makes_face = false; v3s16 next_p_corrected; v3s16 next_face_dir_corrected; @@ -912,9 +910,9 @@ static void updateFastFaceRow( // If at last position, there is nothing to compare to and // the face must be drawn anyway if (j != MAP_BLOCKSIZE - 1) { - p_next = p + translate_dir; + p += translate_dir; - getTileInfo(data, p_next, face_dir, + getTileInfo(data, p, face_dir, next_makes_face, next_p_corrected, next_face_dir_corrected, next_lights, waving, @@ -923,7 +921,7 @@ static void updateFastFaceRow( if (next_makes_face == makes_face && next_p_corrected == p_corrected + translate_dir && next_face_dir_corrected == face_dir_corrected - && memcmp(next_lights, lights, ARRLEN(lights) * sizeof(u16)) == 0 + && memcmp(next_lights, lights, sizeof(lights)) == 0 // Don't apply fast faces to waving water. && (waving != 3 || !waving_liquids) && next_tile.isTileable(tile)) { @@ -961,10 +959,9 @@ static void updateFastFaceRow( makes_face = next_makes_face; p_corrected = next_p_corrected; face_dir_corrected = next_face_dir_corrected; - std::memcpy(lights, next_lights, ARRLEN(lights) * sizeof(u16)); + memcpy(lights, next_lights, sizeof(lights)); if (next_is_different) - tile = next_tile; - p = p_next; + tile = std::move(next_tile); // faster than copy } } From 8b45f6a5f3eac7030cdc12d729066ccef4794502 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 25 Apr 2020 14:00:11 +0200 Subject: [PATCH 136/424] Fix DPI scaling on Windows the manifest appears to be very sensitive to changes closes #9744 --- misc/minetest.exe.manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/misc/minetest.exe.manifest b/misc/minetest.exe.manifest index 18f8c85f4..3c32b0f8b 100644 --- a/misc/minetest.exe.manifest +++ b/misc/minetest.exe.manifest @@ -8,8 +8,8 @@ - - true + + true From bc60e44d80a02bd48163440da2fd3165c0910376 Mon Sep 17 00:00:00 2001 From: v-rob Date: Sat, 25 Apr 2020 07:55:21 -0700 Subject: [PATCH 137/424] Add `animated_image` to clickthrough elements (#9724) --- src/gui/guiFormSpecMenu.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index 0ed525f97..567f0ca7e 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -915,7 +915,9 @@ void GUIFormSpecMenu::parseAnimatedImage(parserData *data, const std::string &el auto style = getDefaultStyleForElement("animated_image", spec.fname, "image"); e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false)); - e->drop(); + + // Animated images should let events through + m_clickthrough_elements.push_back(e); m_fields.push_back(spec); } From e1fc72c6f3450c82e2dd3e0892838498a6a8a092 Mon Sep 17 00:00:00 2001 From: theviper121 Date: Sun, 26 Apr 2020 12:32:04 -0500 Subject: [PATCH 138/424] Fix UpdateBonePosition() breaking animations (#9577) --- src/client/content_cao.cpp | 48 +++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index e9e1cebd3..aadd33bb9 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -890,6 +890,11 @@ void GenericCAO::updateNodePos() void GenericCAO::step(float dtime, ClientEnvironment *env) { + if (m_animated_meshnode) { + m_animated_meshnode->animateJoints(); + updateBonePosition(); + } + // Handle model animations and update positions instantly to prevent lags if (m_is_local_player) { LocalPlayer *player = m_env->getLocalPlayer(); @@ -1360,16 +1365,41 @@ void GenericCAO::updateBonePosition() return; m_animated_meshnode->setJointMode(irr::scene::EJUOR_CONTROL); // To write positions to the mesh on render - for(std::unordered_map>::const_iterator - ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) { - std::string bone_name = (*ii).first; - v3f bone_pos = (*ii).second.X; - v3f bone_rot = (*ii).second.Y; + for (auto &it : m_bone_position) { + std::string bone_name = it.first; irr::scene::IBoneSceneNode* bone = m_animated_meshnode->getJointNode(bone_name.c_str()); - if(bone) - { - bone->setPosition(bone_pos); + if (bone) { + bone->setPosition(it.second.X); + bone->setRotation(it.second.Y); + } + } + + // search through bones to find mistakenly rotated bones due to bug in Irrlicht + for (u32 i = 0; i < m_animated_meshnode->getJointCount(); ++i) { + irr::scene::IBoneSceneNode *bone = m_animated_meshnode->getJointNode(i); + if (!bone) + continue; + + //If bone is manually positioned there is no need to perform the bug check + bool skip = false; + for (auto &it : m_bone_position) { + if (it.first == bone->getName()) { + skip = true; + break; + } + } + if (skip) + continue; + + // Workaround for Irrlicht bug + // We check each bone to see if it has been rotated ~180deg from its expected position due to a bug in Irricht + // when using EJUOR_CONTROL joint control. If the bug is detected we update the bone to the proper position + // and update the bones transformation. + v3f bone_rot = bone->getRelativeTransformation().getRotationDegrees(); + float offset = fabsf(bone_rot.X - bone->getRotation().X); + if (offset > 179.9f && offset < 180.1f) { bone->setRotation(bone_rot); + bone->updateAbsolutePosition(); } } } @@ -1583,7 +1613,7 @@ void GenericCAO::processMessage(const std::string &data) v3f rotation = readV3F32(is); m_bone_position[bone] = core::vector2d(position, rotation); - updateBonePosition(); + // updateBonePosition(); now called every step } else if (cmd == AO_CMD_ATTACH_TO) { u16 parent_id = readS16(is); std::string bone = deSerializeString(is); From eca6ee911a99f863abf79ab956d4c757e9e4bae3 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 26 Apr 2020 19:32:29 +0200 Subject: [PATCH 139/424] Fix mapgen settings in minetest.conf being ignored (#9737) broken since e8a8185d24897ccf964327017effae81aa1c9d40 --- src/map_settings_manager.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/map_settings_manager.cpp b/src/map_settings_manager.cpp index 7ef4bf12e..4f070e910 100644 --- a/src/map_settings_manager.cpp +++ b/src/map_settings_manager.cpp @@ -32,7 +32,6 @@ MapSettingsManager::MapSettingsManager(Settings *user_settings, m_user_settings(user_settings) { assert(m_user_settings != NULL); - Mapgen::setDefaultSettings(m_map_settings); } @@ -180,6 +179,16 @@ MapgenParams *MapSettingsManager::makeMapgenParams() params->mgtype = mgtype; + // Load the mapgen param defaults + /* FIXME: Why is it done like this? MapgenParams should just + * set the defaults in its constructor instead. */ + { + Settings default_settings; + Mapgen::setDefaultSettings(&default_settings); + params->MapgenParams::readParams(&default_settings); + params->readParams(&default_settings); + } + // Load the rest of the mapgen params from our active settings params->MapgenParams::readParams(m_user_settings); params->MapgenParams::readParams(m_map_settings); From 68f45fc130341e1b3e7d3207658947324db87d3c Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 26 Apr 2020 19:52:09 +0200 Subject: [PATCH 140/424] Remove unused lookup table from noise.cpp closes #9757 --- src/noise.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/noise.cpp b/src/noise.cpp index 9c91a6df4..5a1d989cb 100644 --- a/src/noise.cpp +++ b/src/noise.cpp @@ -46,11 +46,6 @@ typedef float (*Interp3dFxn)( float v001, float v101, float v011, float v111, float x, float y, float z); -float cos_lookup[16] = { - 1.0f, 0.9238f, 0.7071f, 0.3826f, .0f, -0.3826f, -0.7071f, -0.9238f, - 1.0f, -0.9238f, -0.7071f, -0.3826f, .0f, 0.3826f, 0.7071f, 0.9238f -}; - FlagDesc flagdesc_noiseparams[] = { {"defaults", NOISE_FLAG_DEFAULTS}, {"eased", NOISE_FLAG_EASED}, From 2fe4641c1e00d72c1f651b83898b093a9454d43c Mon Sep 17 00:00:00 2001 From: David Leal Date: Sun, 26 Apr 2020 14:15:05 -0500 Subject: [PATCH 141/424] Add new command /revokeme (#9584) --- builtin/game/chat.lua | 103 +++++++++++++++++++++++++----------------- 1 file changed, 61 insertions(+), 42 deletions(-) diff --git a/builtin/game/chat.lua b/builtin/game/chat.lua index fd1379162..b3edda0d2 100644 --- a/builtin/game/chat.lua +++ b/builtin/game/chat.lua @@ -239,57 +239,76 @@ core.register_chatcommand("grantme", { end, }) +local function handle_revoke_command(caller, revokename, revokeprivstr) + local caller_privs = core.get_player_privs(caller) + if not (caller_privs.privs or caller_privs.basic_privs) then + return false, "Your privileges are insufficient." + end + + if not core.get_auth_handler().get_auth(revokename) then + return false, "Player " .. revokename .. " does not exist." + end + + local revokeprivs = core.string_to_privs(revokeprivstr) + local privs = core.get_player_privs(revokename) + local basic_privs = + core.string_to_privs(core.settings:get("basic_privs") or "interact,shout") + for priv, _ in pairs(revokeprivs) do + if not basic_privs[priv] and not caller_privs.privs then + return false, "Your privileges are insufficient." + end + end + + if revokeprivstr == "all" then + revokeprivs = privs + privs = {} + else + for priv, _ in pairs(revokeprivs) do + privs[priv] = nil + end + end + + for priv, _ in pairs(revokeprivs) do + -- call the on_revoke callbacks + core.run_priv_callbacks(revokename, priv, caller, "revoke") + end + + core.set_player_privs(revokename, privs) + core.log("action", caller..' revoked (' + ..core.privs_to_string(revokeprivs, ', ') + ..') privileges from '..revokename) + if revokename ~= caller then + core.chat_send_player(revokename, caller + .. " revoked privileges from you: " + .. core.privs_to_string(revokeprivs, ' ')) + end + return true, "Privileges of " .. revokename .. ": " + .. core.privs_to_string( + core.get_player_privs(revokename), ' ') +end + core.register_chatcommand("revoke", { params = " ( | all)", description = "Remove privileges from player", privs = {}, func = function(name, param) - if not core.check_player_privs(name, {privs=true}) and - not core.check_player_privs(name, {basic_privs=true}) then - return false, "Your privileges are insufficient." - end - local revoke_name, revoke_priv_str = string.match(param, "([^ ]+) (.+)") - if not revoke_name or not revoke_priv_str then + local revokename, revokeprivstr = string.match(param, "([^ ]+) (.+)") + if not revokename or not revokeprivstr then return false, "Invalid parameters (see /help revoke)" - elseif not core.get_auth_handler().get_auth(revoke_name) then - return false, "Player " .. revoke_name .. " does not exist." - end - local revoke_privs = core.string_to_privs(revoke_priv_str) - local privs = core.get_player_privs(revoke_name) - local basic_privs = - core.string_to_privs(core.settings:get("basic_privs") or "interact,shout") - for priv, _ in pairs(revoke_privs) do - if not basic_privs[priv] and - not core.check_player_privs(name, {privs=true}) then - return false, "Your privileges are insufficient." - end - end - if revoke_priv_str == "all" then - revoke_privs = privs - privs = {} - else - for priv, _ in pairs(revoke_privs) do - privs[priv] = nil - end end + return handle_revoke_command(name, revokename, revokeprivstr) + end, +}) - for priv, _ in pairs(revoke_privs) do - -- call the on_revoke callbacks - core.run_priv_callbacks(revoke_name, priv, name, "revoke") +core.register_chatcommand("revokeme", { + params = " | all", + description = "Revoke privileges from yourself", + privs = {}, + func = function(name, param) + if param == "" then + return false, "Invalid parameters (see /help revokeme)" end - - core.set_player_privs(revoke_name, privs) - core.log("action", name..' revoked (' - ..core.privs_to_string(revoke_privs, ', ') - ..') privileges from '..revoke_name) - if revoke_name ~= name then - core.chat_send_player(revoke_name, name - .. " revoked privileges from you: " - .. core.privs_to_string(revoke_privs, ' ')) - end - return true, "Privileges of " .. revoke_name .. ": " - .. core.privs_to_string( - core.get_player_privs(revoke_name), ' ') + return handle_revoke_command(name, name, param) end, }) From e564bf8eadb5aee7a90b2184b03316917c580aed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Mon, 27 Apr 2020 06:54:48 +0200 Subject: [PATCH 142/424] Add PostgreSQL authentication backend (#9756) * Add PostgreSQL authentication backend --- src/database/database-postgresql.cpp | 175 +++++++++++++++++++++++++++ src/database/database-postgresql.h | 24 ++++ src/serverenvironment.cpp | 8 ++ 3 files changed, 207 insertions(+) diff --git a/src/database/database-postgresql.cpp b/src/database/database-postgresql.cpp index c1b81586d..ca750b466 100644 --- a/src/database/database-postgresql.cpp +++ b/src/database/database-postgresql.cpp @@ -166,6 +166,11 @@ void Database_PostgreSQL::endSave() checkResults(PQexec(m_conn, "COMMIT;")); } +void Database_PostgreSQL::rollback() +{ + checkResults(PQexec(m_conn, "ROLLBACK;")); +} + MapDatabasePostgreSQL::MapDatabasePostgreSQL(const std::string &connect_string): Database_PostgreSQL(connect_string), MapDatabase() @@ -637,4 +642,174 @@ void PlayerDatabasePostgreSQL::listPlayers(std::vector &res) PQclear(results); } +AuthDatabasePostgreSQL::AuthDatabasePostgreSQL(const std::string &connect_string) : + Database_PostgreSQL(connect_string), AuthDatabase() +{ + connectToDatabase(); +} + +void AuthDatabasePostgreSQL::createDatabase() +{ + createTableIfNotExists("auth", + "CREATE TABLE auth (" + "id SERIAL," + "name TEXT UNIQUE," + "password TEXT," + "last_login INT NOT NULL DEFAULT 0," + "PRIMARY KEY (id)" + ");"); + + createTableIfNotExists("user_privileges", + "CREATE TABLE user_privileges (" + "id INT," + "privilege TEXT," + "PRIMARY KEY (id, privilege)," + "CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES auth (id) ON DELETE CASCADE" + ");"); +} + +void AuthDatabasePostgreSQL::initStatements() +{ + prepareStatement("auth_read", "SELECT id, name, password, last_login FROM auth WHERE name = $1"); + prepareStatement("auth_write", "UPDATE auth SET name = $1, password = $2, last_login = $3 WHERE id = $4"); + prepareStatement("auth_create", "INSERT INTO auth (name, password, last_login) VALUES ($1, $2, $3) RETURNING id"); + prepareStatement("auth_delete", "DELETE FROM auth WHERE name = $1"); + + prepareStatement("auth_list_names", "SELECT name FROM auth ORDER BY name DESC"); + + prepareStatement("auth_read_privs", "SELECT privilege FROM user_privileges WHERE id = $1"); + prepareStatement("auth_write_privs", "INSERT INTO user_privileges (id, privilege) VALUES ($1, $2)"); + prepareStatement("auth_delete_privs", "DELETE FROM user_privileges WHERE id = $1"); +} + +bool AuthDatabasePostgreSQL::getAuth(const std::string &name, AuthEntry &res) +{ + pingDatabase(); + + const char *values[] = { name.c_str() }; + PGresult *result = execPrepared("auth_read", 1, values, false, false); + int numrows = PQntuples(result); + if (numrows == 0) { + PQclear(result); + return false; + } + + res.id = pg_to_uint(result, 0, 0); + res.name = std::string(PQgetvalue(result, 0, 1), PQgetlength(result, 0, 1)); + res.password = std::string(PQgetvalue(result, 0, 2), PQgetlength(result, 0, 2)); + res.last_login = pg_to_int(result, 0, 3); + + PQclear(result); + + std::string playerIdStr = itos(res.id); + const char *privsValues[] = { playerIdStr.c_str() }; + PGresult *results = execPrepared("auth_read_privs", 1, privsValues, false); + + numrows = PQntuples(results); + for (int row = 0; row < numrows; row++) + res.privileges.emplace_back(PQgetvalue(results, row, 0)); + + PQclear(results); + + return true; +} + +bool AuthDatabasePostgreSQL::saveAuth(const AuthEntry &authEntry) +{ + pingDatabase(); + + beginSave(); + + std::string lastLoginStr = itos(authEntry.last_login); + std::string idStr = itos(authEntry.id); + const char *values[] = { + authEntry.name.c_str() , + authEntry.password.c_str(), + lastLoginStr.c_str(), + idStr.c_str(), + }; + execPrepared("auth_write", 4, values); + + writePrivileges(authEntry); + + endSave(); + return true; +} + +bool AuthDatabasePostgreSQL::createAuth(AuthEntry &authEntry) +{ + pingDatabase(); + + std::string lastLoginStr = itos(authEntry.last_login); + const char *values[] = { + authEntry.name.c_str() , + authEntry.password.c_str(), + lastLoginStr.c_str() + }; + + beginSave(); + + PGresult *result = execPrepared("auth_create", 3, values, false, false); + + int numrows = PQntuples(result); + if (numrows == 0) { + errorstream << "Strange behaviour on auth creation, no ID returned." << std::endl; + PQclear(result); + rollback(); + return false; + } + + authEntry.id = pg_to_uint(result, 0, 0); + PQclear(result); + + writePrivileges(authEntry); + + endSave(); + return true; +} + +bool AuthDatabasePostgreSQL::deleteAuth(const std::string &name) +{ + pingDatabase(); + + const char *values[] = { name.c_str() }; + execPrepared("auth_delete", 1, values); + + // privileges deleted by foreign key on delete cascade + return true; +} + +void AuthDatabasePostgreSQL::listNames(std::vector &res) +{ + pingDatabase(); + + PGresult *results = execPrepared("auth_list_names", 0, + NULL, NULL, NULL, false, false); + + int numrows = PQntuples(results); + + for (int row = 0; row < numrows; ++row) + res.emplace_back(PQgetvalue(results, row, 0)); + + PQclear(results); +} + +void AuthDatabasePostgreSQL::reload() +{ + // noop for PgSQL +} + +void AuthDatabasePostgreSQL::writePrivileges(const AuthEntry &authEntry) +{ + std::string authIdStr = itos(authEntry.id); + const char *values[] = { authIdStr.c_str() }; + execPrepared("auth_delete_privs", 1, values); + + for (const std::string &privilege : authEntry.privileges) { + const char *values[] = { authIdStr.c_str(), privilege.c_str() }; + execPrepared("auth_write_privs", 2, values); + } +} + + #endif // USE_POSTGRESQL diff --git a/src/database/database-postgresql.h b/src/database/database-postgresql.h index 5a8b89a51..340f0a7b8 100644 --- a/src/database/database-postgresql.h +++ b/src/database/database-postgresql.h @@ -36,6 +36,7 @@ public: void beginSave(); void endSave(); + void rollback(); bool initialized() const; @@ -148,3 +149,26 @@ protected: private: bool playerDataExists(const std::string &playername); }; + +class AuthDatabasePostgreSQL : private Database_PostgreSQL, public AuthDatabase +{ +public: + AuthDatabasePostgreSQL(const std::string &connect_string); + virtual ~AuthDatabasePostgreSQL() = default; + + virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); } + + virtual bool getAuth(const std::string &name, AuthEntry &res); + virtual bool saveAuth(const AuthEntry &authEntry); + virtual bool createAuth(AuthEntry &authEntry); + virtual bool deleteAuth(const std::string &name); + virtual void listNames(std::vector &res); + virtual void reload(); + +protected: + virtual void createDatabase(); + virtual void initStatements(); + +private: + virtual void writePrivileges(const AuthEntry &authEntry); +}; diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 08d796118..27432e973 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -2187,6 +2187,14 @@ AuthDatabase *ServerEnvironment::openAuthDatabase( if (name == "sqlite3") return new AuthDatabaseSQLite3(savedir); +#if USE_POSTGRESQL + if (name == "postgresql") { + std::string connect_string; + conf.getNoEx("pgsql_auth_connection", connect_string); + return new AuthDatabasePostgreSQL(connect_string); + } +#endif + if (name == "files") return new AuthDatabaseFiles(savedir); From f6f6dd140f14a40a43a63a1ba3eccc66fd56d514 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 26 Apr 2020 20:29:16 +0200 Subject: [PATCH 143/424] script: Fix add_entity returning unusable ref if object deleted in on_activate --- src/script/lua_api/l_env.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index 3fb58b8c8..cabca124d 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -589,19 +589,19 @@ int ModApiEnvMod::l_add_entity(lua_State *L) { GET_ENV_PTR; - // pos v3f pos = checkFloatPos(L, 1); - // content const char *name = luaL_checkstring(L, 2); - // staticdata const char *staticdata = luaL_optstring(L, 3, ""); - // Do it + ServerActiveObject *obj = new LuaEntitySAO(env, pos, name, staticdata); int objectid = env->addActiveObject(obj); // If failed to add, return nothing (reads as nil) if(objectid == 0) return 0; - // Return ObjectRef + + // If already deleted (can happen in on_activate), return nil + if (obj->isGone()) + return 0; getScriptApiBase(L)->objectrefGetOrCreate(L, obj); return 1; } From d3f50f216f051186bcac34c7383829e1e7b929ff Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 26 Apr 2020 20:34:10 +0200 Subject: [PATCH 144/424] builtin: Correctly indicate failure in /spawnentity --- builtin/game/chat.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/builtin/game/chat.lua b/builtin/game/chat.lua index b3edda0d2..a71f4b329 100644 --- a/builtin/game/chat.lua +++ b/builtin/game/chat.lua @@ -736,8 +736,9 @@ core.register_chatcommand("spawnentity", { end end p.y = p.y + 1 - core.add_entity(p, entityname) - return true, ("%q spawned."):format(entityname) + local obj = core.add_entity(p, entityname) + local msg = obj and "%q spawned." or "%q failed to spawn." + return true, msg:format(entityname) end, }) From 8a03097450441cc7589507509bf755082a027cc7 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 26 Apr 2020 20:57:27 +0200 Subject: [PATCH 145/424] script: Put getGuiEngine() inside a client-only #ifdef --- src/script/cpp_api/s_base.h | 4 ++++ src/script/lua_api/l_base.cpp | 2 ++ src/script/lua_api/l_base.h | 5 +++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/script/cpp_api/s_base.h b/src/script/cpp_api/s_base.h index 697e5f556..86f7f7bac 100644 --- a/src/script/cpp_api/s_base.h +++ b/src/script/cpp_api/s_base.h @@ -136,8 +136,10 @@ protected: Environment* getEnv() { return m_environment; } void setEnv(Environment* env) { m_environment = env; } +#ifndef SERVER GUIEngine* getGuiEngine() { return m_guiengine; } void setGuiEngine(GUIEngine* guiengine) { m_guiengine = guiengine; } +#endif void objectrefGetOrCreate(lua_State *L, ServerActiveObject *cobj); @@ -158,6 +160,8 @@ private: IGameDef *m_gamedef = nullptr; Environment *m_environment = nullptr; +#ifndef SERVER GUIEngine *m_guiengine = nullptr; +#endif ScriptingType m_type; }; diff --git a/src/script/lua_api/l_base.cpp b/src/script/lua_api/l_base.cpp index c980bba39..b8658f62b 100644 --- a/src/script/lua_api/l_base.cpp +++ b/src/script/lua_api/l_base.cpp @@ -62,10 +62,12 @@ Environment *ModApiBase::getEnv(lua_State *L) return getScriptApiBase(L)->getEnv(); } +#ifndef SERVER GUIEngine *ModApiBase::getGuiEngine(lua_State *L) { return getScriptApiBase(L)->getGuiEngine(); } +#endif std::string ModApiBase::getCurrentModPath(lua_State *L) { diff --git a/src/script/lua_api/l_base.h b/src/script/lua_api/l_base.h index b46b5b567..e32647628 100644 --- a/src/script/lua_api/l_base.h +++ b/src/script/lua_api/l_base.h @@ -32,12 +32,12 @@ extern "C" { #ifndef SERVER class Client; +class GUIEngine; #endif class ScriptApiBase; class Server; class Environment; -class GUIEngine; class ModApiBase : protected LuaHelper { @@ -46,12 +46,13 @@ public: static Server* getServer(lua_State *L); #ifndef SERVER static Client* getClient(lua_State *L); + static GUIEngine* getGuiEngine(lua_State *L); #endif // !SERVER static IGameDef* getGameDef(lua_State *L); static Environment* getEnv(lua_State *L); - static GUIEngine* getGuiEngine(lua_State *L); + // When we are not loading the mod, this function returns "." static std::string getCurrentModPath(lua_State *L); From 515d38a702f0ebe1f419ce38c86484ecb845ed36 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 26 Apr 2020 20:59:55 +0200 Subject: [PATCH 146/424] Fix truncation warning for F1000_MIN, F1000_MAX --- src/util/serialize.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/serialize.h b/src/util/serialize.h index 8ef0ad1c2..a4b5a234a 100644 --- a/src/util/serialize.h +++ b/src/util/serialize.h @@ -52,8 +52,8 @@ with this program; if not, write to the Free Software Foundation, Inc., // not represent the full range, but rather the largest safe range, of values on // all supported architectures. Note: This definition makes assumptions on // platform float-to-int conversion behavior. -#define F1000_MIN ((float)(s32)((-0x7FFFFFFF - 1) / FIXEDPOINT_FACTOR)) -#define F1000_MAX ((float)(s32)((0x7FFFFFFF) / FIXEDPOINT_FACTOR)) +#define F1000_MIN ((float)(s32)((float)(-0x7FFFFFFF - 1) / FIXEDPOINT_FACTOR)) +#define F1000_MAX ((float)(s32)((float)(0x7FFFFFFF) / FIXEDPOINT_FACTOR)) #define STRING_MAX_LEN 0xFFFF #define WIDE_STRING_MAX_LEN 0xFFFF From be71e70a91a3c857652a8b037dac7adf9d0fcdd1 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Mon, 27 Apr 2020 07:02:39 +0200 Subject: [PATCH 147/424] Script: Enforce type checks if not nil (#9748) * Script: Enforce type checks if not nil --- src/script/common/c_content.cpp | 76 +++++++++++++++++------------- src/script/common/c_converter.cpp | 32 ++++++------- src/script/common/c_converter.h | 6 +-- src/script/lua_api/l_inventory.cpp | 14 ++++-- 4 files changed, 72 insertions(+), 56 deletions(-) diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index 25dada757..8335fccb5 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -102,7 +102,8 @@ void read_item_definition(lua_State* L, int index, lua_pop(L, 1); lua_getfield(L, index, "sounds"); - if(lua_istable(L, -1)){ + if (!lua_isnil(L, -1)) { + luaL_checktype(L, -1, LUA_TTABLE); lua_getfield(L, -1, "place"); read_soundspec(L, -1, def.sound_place); lua_pop(L, 1); @@ -182,9 +183,11 @@ void read_object_properties(lua_State *L, int index, { if(index < 0) index = lua_gettop(L) + 1 + index; - if(!lua_istable(L, index)) + if (lua_isnil(L, index)) return; + luaL_checktype(L, -1, LUA_TTABLE); + int hp_max = 0; if (getintfield(L, -1, "hp_max", hp_max)) { prop->hp_max = (u16)rangelim(hp_max, 0, U16_MAX); @@ -1027,13 +1030,15 @@ void read_soundspec(lua_State *L, int index, SimpleSoundSpec &spec) { if(index < 0) index = lua_gettop(L) + 1 + index; - if(lua_isnil(L, index)){ - } else if(lua_istable(L, index)){ + if (lua_isnil(L, index)) + return; + + if (lua_istable(L, index)) { getstringfield(L, index, "name", spec.name); getfloatfield(L, index, "gain", spec.gain); getfloatfield(L, index, "fade", spec.fade); getfloatfield(L, index, "pitch", spec.pitch); - } else if(lua_isstring(L, index)){ + } else if (lua_isstring(L, index)) { spec.name = lua_tostring(L, index); } } @@ -1055,9 +1060,13 @@ void push_soundspec(lua_State *L, const SimpleSoundSpec &spec) NodeBox read_nodebox(lua_State *L, int index) { NodeBox nodebox; - if(lua_istable(L, -1)){ - nodebox.type = (NodeBoxType)getenumfield(L, index, "type", - ScriptApiNode::es_NodeBoxType, NODEBOX_REGULAR); + if (lua_isnil(L, -1)) + return nodebox; + + luaL_checktype(L, -1, LUA_TTABLE); + + nodebox.type = (NodeBoxType)getenumfield(L, index, "type", + ScriptApiNode::es_NodeBoxType, NODEBOX_REGULAR); #define NODEBOXREAD(n, s){ \ lua_getfield(L, index, (s)); \ @@ -1067,30 +1076,30 @@ NodeBox read_nodebox(lua_State *L, int index) } #define NODEBOXREADVEC(n, s) \ - lua_getfield(L, index, (s)); \ - if (lua_istable(L, -1)) \ - (n) = read_aabb3f_vector(L, -1, BS); \ - lua_pop(L, 1); + lua_getfield(L, index, (s)); \ + if (lua_istable(L, -1)) \ + (n) = read_aabb3f_vector(L, -1, BS); \ + lua_pop(L, 1); + + NODEBOXREADVEC(nodebox.fixed, "fixed"); + NODEBOXREAD(nodebox.wall_top, "wall_top"); + NODEBOXREAD(nodebox.wall_bottom, "wall_bottom"); + NODEBOXREAD(nodebox.wall_side, "wall_side"); + NODEBOXREADVEC(nodebox.connect_top, "connect_top"); + NODEBOXREADVEC(nodebox.connect_bottom, "connect_bottom"); + NODEBOXREADVEC(nodebox.connect_front, "connect_front"); + NODEBOXREADVEC(nodebox.connect_left, "connect_left"); + NODEBOXREADVEC(nodebox.connect_back, "connect_back"); + NODEBOXREADVEC(nodebox.connect_right, "connect_right"); + NODEBOXREADVEC(nodebox.disconnected_top, "disconnected_top"); + NODEBOXREADVEC(nodebox.disconnected_bottom, "disconnected_bottom"); + NODEBOXREADVEC(nodebox.disconnected_front, "disconnected_front"); + NODEBOXREADVEC(nodebox.disconnected_left, "disconnected_left"); + NODEBOXREADVEC(nodebox.disconnected_back, "disconnected_back"); + NODEBOXREADVEC(nodebox.disconnected_right, "disconnected_right"); + NODEBOXREADVEC(nodebox.disconnected, "disconnected"); + NODEBOXREADVEC(nodebox.disconnected_sides, "disconnected_sides"); - NODEBOXREADVEC(nodebox.fixed, "fixed"); - NODEBOXREAD(nodebox.wall_top, "wall_top"); - NODEBOXREAD(nodebox.wall_bottom, "wall_bottom"); - NODEBOXREAD(nodebox.wall_side, "wall_side"); - NODEBOXREADVEC(nodebox.connect_top, "connect_top"); - NODEBOXREADVEC(nodebox.connect_bottom, "connect_bottom"); - NODEBOXREADVEC(nodebox.connect_front, "connect_front"); - NODEBOXREADVEC(nodebox.connect_left, "connect_left"); - NODEBOXREADVEC(nodebox.connect_back, "connect_back"); - NODEBOXREADVEC(nodebox.connect_right, "connect_right"); - NODEBOXREADVEC(nodebox.disconnected_top, "disconnected_top"); - NODEBOXREADVEC(nodebox.disconnected_bottom, "disconnected_bottom"); - NODEBOXREADVEC(nodebox.disconnected_front, "disconnected_front"); - NODEBOXREADVEC(nodebox.disconnected_left, "disconnected_left"); - NODEBOXREADVEC(nodebox.disconnected_back, "disconnected_back"); - NODEBOXREADVEC(nodebox.disconnected_right, "disconnected_right"); - NODEBOXREADVEC(nodebox.disconnected, "disconnected"); - NODEBOXREADVEC(nodebox.disconnected_sides, "disconnected_sides"); - } return nodebox; } @@ -1519,8 +1528,11 @@ void push_flags_string(lua_State *L, FlagDesc *flagdesc, u32 flags, u32 flagmask /******************************************************************************/ void read_groups(lua_State *L, int index, ItemGroupList &result) { - if (!lua_istable(L,index)) + if (lua_isnil(L, index)) return; + + luaL_checktype(L, index, LUA_TTABLE); + result.clear(); lua_pushnil(L); if (index < 0) diff --git a/src/script/common/c_converter.cpp b/src/script/common/c_converter.cpp index 334af61c3..279d8b1a5 100644 --- a/src/script/common/c_converter.cpp +++ b/src/script/common/c_converter.cpp @@ -33,10 +33,9 @@ extern "C" { #define CHECK_TYPE(index, name, type) { \ int t = lua_type(L, (index)); \ if (t != (type)) { \ - std::string traceback = script_get_backtrace(L); \ throw LuaError(std::string("Invalid ") + (name) + \ " (expected " + lua_typename(L, (type)) + \ - " got " + lua_typename(L, t) + ").\n" + traceback); \ + " got " + lua_typename(L, t) + ")."); \ } \ } #define CHECK_POS_COORD(name) CHECK_TYPE(-1, "position coordinate '" name "'", LUA_TNUMBER) @@ -457,12 +456,22 @@ size_t read_stringlist(lua_State *L, int index, std::vector *result Table field getters */ +bool check_field_or_nil(lua_State *L, int index, int type, const char *fieldname) +{ + if (lua_isnil(L, index)) + return false; + + CHECK_TYPE(index, std::string("field \"") + fieldname + '"', type); + return true; +} + bool getstringfield(lua_State *L, int table, const char *fieldname, std::string &result) { lua_getfield(L, table, fieldname); bool got = false; - if(lua_isstring(L, -1)){ + + if (check_field_or_nil(L, -1, LUA_TSTRING, fieldname)) { size_t len = 0; const char *ptr = lua_tolstring(L, -1, &len); if (ptr) { @@ -479,7 +488,8 @@ bool getfloatfield(lua_State *L, int table, { lua_getfield(L, table, fieldname); bool got = false; - if(lua_isnumber(L, -1)){ + + if (check_field_or_nil(L, -1, LUA_TNUMBER, fieldname)) { result = lua_tonumber(L, -1); got = true; } @@ -492,7 +502,8 @@ bool getboolfield(lua_State *L, int table, { lua_getfield(L, table, fieldname); bool got = false; - if(lua_isboolean(L, -1)){ + + if (check_field_or_nil(L, -1, LUA_TBOOLEAN, fieldname)){ result = lua_toboolean(L, -1); got = true; } @@ -511,17 +522,6 @@ size_t getstringlistfield(lua_State *L, int table, const char *fieldname, return num_strings_read; } -std::string checkstringfield(lua_State *L, int table, - const char *fieldname) -{ - lua_getfield(L, table, fieldname); - CHECK_TYPE(-1, std::string("field \"") + fieldname + '"', LUA_TSTRING); - size_t len; - const char *s = lua_tolstring(L, -1, &len); - lua_pop(L, 1); - return std::string(s, len); -} - std::string getstringfield_default(lua_State *L, int table, const char *fieldname, const std::string &default_) { diff --git a/src/script/common/c_converter.h b/src/script/common/c_converter.h index 9620bf75a..a4a7079fd 100644 --- a/src/script/common/c_converter.h +++ b/src/script/common/c_converter.h @@ -45,13 +45,15 @@ float getfloatfield_default(lua_State *L, int table, int getintfield_default(lua_State *L, int table, const char *fieldname, int default_); +bool check_field_or_nil(lua_State *L, int index, int type, const char *fieldname); + template bool getintfield(lua_State *L, int table, const char *fieldname, T &result) { lua_getfield(L, table, fieldname); bool got = false; - if (lua_isnumber(L, -1)){ + if (check_field_or_nil(L, -1, LUA_TNUMBER, fieldname)){ result = lua_tointeger(L, -1); got = true; } @@ -87,8 +89,6 @@ bool getboolfield(lua_State *L, int table, const char *fieldname, bool &result); bool getfloatfield(lua_State *L, int table, const char *fieldname, float &result); -std::string checkstringfield(lua_State *L, int table, - const char *fieldname); void setstringfield(lua_State *L, int table, const char *fieldname, const std::string &value); diff --git a/src/script/lua_api/l_inventory.cpp b/src/script/lua_api/l_inventory.cpp index 6e7afa4a4..4c8977898 100644 --- a/src/script/lua_api/l_inventory.cpp +++ b/src/script/lua_api/l_inventory.cpp @@ -487,7 +487,9 @@ int ModApiInventory::l_get_inventory(lua_State *L) { InventoryLocation loc; - std::string type = checkstringfield(L, 1, "type"); + lua_getfield(L, 1, "type"); + std::string type = luaL_checkstring(L, -1); + lua_pop(L, 1); if(type == "node"){ MAP_LOCK_REQUIRED; @@ -504,11 +506,13 @@ int ModApiInventory::l_get_inventory(lua_State *L) NO_MAP_LOCK_REQUIRED; if (type == "player") { - std::string name = checkstringfield(L, 1, "name"); - loc.setPlayer(name); + lua_getfield(L, 1, "name"); + loc.setPlayer(luaL_checkstring(L, -1)); + lua_pop(L, 1); } else if (type == "detached") { - std::string name = checkstringfield(L, 1, "name"); - loc.setDetached(name); + lua_getfield(L, 1, "name"); + loc.setDetached(luaL_checkstring(L, -1)); + lua_pop(L, 1); } if (getServer(L)->getInventory(loc) != NULL) From 91c4f7f0ea0b653d15bfabc05f5474f8fa1a8806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Mon, 27 Apr 2020 11:27:27 +0200 Subject: [PATCH 148/424] Forbid object:attach(obj, ...) (#9762) Fixes #9761 --- src/script/lua_api/l_object.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index d7afb84da..77e1e7dc2 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -674,8 +674,13 @@ int ObjectRef::l_set_attach(lua_State *L) ServerActiveObject *parent = getobject(parent_ref); if (co == NULL) return 0; + if (parent == NULL) return 0; + + if (co == parent) + throw LuaError("ObjectRef::set_attach: attaching object to itself is not allowed."); + // Do it int parent_id = 0; std::string bone; From 13a8ea2dac2217cc898c7fc62c448f4ff6998d46 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 25 Apr 2020 15:24:42 +0200 Subject: [PATCH 149/424] Add STATIC_LOCALEDIR to BUILD_INFO and move it to version.cpp --- src/config.h | 10 ---------- src/version.cpp | 14 +++++++++++++- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/config.h b/src/config.h index 9d58a8cc1..5e1164642 100644 --- a/src/config.h +++ b/src/config.h @@ -28,13 +28,3 @@ #define BUILD_TYPE "Debug" #endif #endif - -#define BUILD_INFO \ - "BUILD_TYPE=" BUILD_TYPE "\n" \ - "RUN_IN_PLACE=" STR(RUN_IN_PLACE) "\n" \ - "USE_GETTEXT=" STR(USE_GETTEXT) "\n" \ - "USE_SOUND=" STR(USE_SOUND) "\n" \ - "USE_CURL=" STR(USE_CURL) "\n" \ - "USE_FREETYPE=" STR(USE_FREETYPE) "\n" \ - "USE_LUAJIT=" STR(USE_LUAJIT) "\n" \ - "STATIC_SHAREDIR=" STR(STATIC_SHAREDIR); diff --git a/src/version.cpp b/src/version.cpp index ae5ca3412..241228a6a 100644 --- a/src/version.cpp +++ b/src/version.cpp @@ -30,4 +30,16 @@ with this program; if not, write to the Free Software Foundation, Inc., const char *g_version_string = VERSION_STRING; const char *g_version_hash = VERSION_GITHASH; -const char *g_build_info = BUILD_INFO; +const char *g_build_info = + "BUILD_TYPE=" BUILD_TYPE "\n" + "RUN_IN_PLACE=" STR(RUN_IN_PLACE) "\n" + "USE_GETTEXT=" STR(USE_GETTEXT) "\n" + "USE_SOUND=" STR(USE_SOUND) "\n" + "USE_CURL=" STR(USE_CURL) "\n" + "USE_FREETYPE=" STR(USE_FREETYPE) "\n" + "USE_LUAJIT=" STR(USE_LUAJIT) "\n" + "STATIC_SHAREDIR=" STR(STATIC_SHAREDIR) +#if USE_GETTEXT && defined(STATIC_LOCALEDIR) + "\n" "STATIC_LOCALEDIR=" STR(STATIC_LOCALEDIR) +#endif +; From ca8957f500980849fbd3e0c05b7cf3272b18ac97 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 25 Apr 2020 15:44:32 +0200 Subject: [PATCH 150/424] Fix detection of in-place path_locale when RUN_IN_PLACE=0 broken by 2349d31bae1bfc4d58fd88efbc88261e69b11dad (side effect) fixes #9745 --- src/gettext.cpp | 5 ++++- src/porting.cpp | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/gettext.cpp b/src/gettext.cpp index 81621ba89..6818004df 100644 --- a/src/gettext.cpp +++ b/src/gettext.cpp @@ -217,7 +217,10 @@ void init_gettext(const char *path, const std::string &configured_language, #endif #endif - static std::string name = lowercase(PROJECT_NAME); + std::string name = lowercase(PROJECT_NAME); + infostream << "Gettext: domainname=\"" << name + << "\" path=\"" << path << "\"" << std::endl; + bindtextdomain(name.c_str(), path); textdomain(name.c_str()); diff --git a/src/porting.cpp b/src/porting.cpp index 76fd592d6..c0381ad06 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -598,18 +598,18 @@ void initializePaths() #if USE_GETTEXT bool found_localedir = false; # ifdef STATIC_LOCALEDIR - if (STATIC_LOCALEDIR[0] && fs::PathExists(STATIC_LOCALEDIR)) { + /* STATIC_LOCALEDIR may be a generalized path such as /usr/share/locale that + * doesn't necessarily contain our locale files, so check data path first. */ + path_locale = getDataPath("locale"); + if (fs::PathExists(path_locale)) { + found_localedir = true; + infostream << "Using in-place locale directory " << path_locale + << " even though a static one was provided." << std::endl; + } else if (STATIC_LOCALEDIR[0] && fs::PathExists(STATIC_LOCALEDIR)) { found_localedir = true; path_locale = STATIC_LOCALEDIR; - infostream << "Using locale directory " << STATIC_LOCALEDIR << std::endl; - } else { - path_locale = getDataPath("locale"); - if (fs::PathExists(path_locale)) { - found_localedir = true; - infostream << "Using in-place locale directory " << path_locale - << " even though a static one was provided " - << "(RUN_IN_PLACE or CUSTOM_LOCALEDIR)." << std::endl; - } + infostream << "Using static locale directory " << STATIC_LOCALEDIR + << std::endl; } # else path_locale = getDataPath("locale"); From aef59f2ad9a5a5a217ddadc05c46fd4d23cef47f Mon Sep 17 00:00:00 2001 From: "k.h.lai" Date: Tue, 28 Apr 2020 02:44:52 +0800 Subject: [PATCH 151/424] Remove /LTCG from when compiling with clang-cl (#9765) Remove /LTCG from CMAKE_EXE_LINKER_FLAGS_RELEASE when compiling with clang on Windows --- src/CMakeLists.txt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dbd6b5922..b416faaf3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -676,9 +676,12 @@ if(MSVC) if(CMAKE_SIZEOF_VOID_P EQUAL 4) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /arch:SSE") endif() - #set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /NODEFAULTLIB:\"libcmtd.lib\" /NODEFAULTLIB:\"libcmt.lib\"") - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /INCREMENTAL:NO /DEBUG /OPT:REF /OPT:ICF") - + + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/INCREMENTAL:NO /DEBUG /OPT:REF /OPT:ICF") + else() + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /INCREMENTAL:NO /DEBUG /OPT:REF /OPT:ICF") + endif() set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup") From 3475759d1adbd4a64c6250fd87981f783e64f69c Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 14 Apr 2020 14:11:33 +0200 Subject: [PATCH 152/424] Expose collision information to LuaEntity on_step --- builtin/game/features.lua | 1 + doc/lua_api.txt | 25 ++++++++++++++- src/script/common/c_content.cpp | 54 +++++++++++++++++++++++++++++++++ src/script/common/c_content.h | 4 ++- src/script/cpp_api/s_entity.cpp | 12 +++++--- src/script/cpp_api/s_entity.h | 4 ++- src/server/luaentity_sao.cpp | 8 +++-- 7 files changed, 98 insertions(+), 10 deletions(-) diff --git a/builtin/game/features.lua b/builtin/game/features.lua index 623f8183b..a15475333 100644 --- a/builtin/game/features.lua +++ b/builtin/game/features.lua @@ -16,6 +16,7 @@ core.features = { formspec_version_element = true, area_store_persistent_ids = true, pathfinder_works = true, + object_step_has_moveresult = true, } function core.has_feature(arg) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 3ca32649a..5e4e18b62 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -4147,6 +4147,8 @@ Utilities area_store_persistent_ids = true, -- Whether minetest.find_path is functional (5.2.0) pathfinder_works = true, + -- Whether Collision info is available to an objects' on_step (5.3.0) + object_step_has_moveresult = true, } * `minetest.has_feature(arg)`: returns `boolean, missing_features` @@ -6579,7 +6581,10 @@ Used by `minetest.register_entity`. on_activate = function(self, staticdata, dtime_s), - on_step = function(self, dtime), + on_step = function(self, dtime, moveresult), + -- Called every server step + -- dtime: Elapsed time + -- moveresult: Table with collision info (only available if physical=true) on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir), @@ -6594,6 +6599,24 @@ Used by `minetest.register_entity`. -- for more info) by using a '_' prefix } +Collision info passed to `on_step`: + + { + touching_ground = boolean, + collides = boolean, + standing_on_object = boolean, + collisions = { + { + type = string, -- "node" or "object", + axis = string, -- "x", "y" or "z" + node_pos = vector, -- if type is "node" + old_speed = vector, + new_speed = vector, + }, + ... + } + } + ABM (ActiveBlockModifier) definition ------------------------------------ diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index 8335fccb5..6ff642738 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common/c_types.h" #include "nodedef.h" #include "object_properties.h" +#include "collision.h" #include "cpp_api/s_node.h" #include "lua_api/l_object.h" #include "lua_api/l_item.h" @@ -2002,3 +2003,56 @@ HudElementStat read_hud_change(lua_State *L, HudElement *elem, void **value) } return stat; } + +/******************************************************************************/ + +// Indices must match values in `enum CollisionType` exactly!! +static const char *collision_type_str[] = { + "node", + "object", +}; + +// Indices must match values in `enum CollisionAxis` exactly!! +static const char *collision_axis_str[] = { + "x", + "y", + "z", +}; + +void push_collision_move_result(lua_State *L, const collisionMoveResult &res) +{ + lua_createtable(L, 0, 4); + + setboolfield(L, -1, "touching_ground", res.touching_ground); + setboolfield(L, -1, "collides", res.collides); + setboolfield(L, -1, "standing_on_object", res.standing_on_object); + + /* collisions */ + lua_createtable(L, res.collisions.size(), 0); + int i = 1; + for (const auto &c : res.collisions) { + lua_createtable(L, 0, 5); + + lua_pushstring(L, collision_type_str[c.type]); + lua_setfield(L, -2, "type"); + + assert(c.axis != COLLISION_AXIS_NONE); + lua_pushstring(L, collision_axis_str[c.axis]); + lua_setfield(L, -2, "axis"); + + if (c.type == COLLISION_NODE) { + push_v3s16(L, c.node_p); + lua_setfield(L, -2, "node_pos"); + } + + push_v3f(L, c.old_speed / BS); + lua_setfield(L, -2, "old_speed"); + + push_v3f(L, c.new_speed / BS); + lua_setfield(L, -2, "new_speed"); + + lua_rawseti(L, -2, i++); + } + lua_setfield(L, -2, "collisions"); + /**/ +} diff --git a/src/script/common/c_content.h b/src/script/common/c_content.h index 9e755682f..8f32e58eb 100644 --- a/src/script/common/c_content.h +++ b/src/script/common/c_content.h @@ -63,7 +63,9 @@ struct EnumString; struct NoiseParams; class Schematic; class ServerActiveObject; +struct collisionMoveResult; +extern struct EnumString es_TileAnimationType[]; ContentFeatures read_content_features (lua_State *L, int index); void push_content_features (lua_State *L, @@ -196,4 +198,4 @@ void push_hud_element (lua_State *L, HudElement *elem); HudElementStat read_hud_change (lua_State *L, HudElement *elem, void **value); -extern struct EnumString es_TileAnimationType[]; +void push_collision_move_result(lua_State *L, const collisionMoveResult &res); diff --git a/src/script/cpp_api/s_entity.cpp b/src/script/cpp_api/s_entity.cpp index 26c7e8cd4..ea9320051 100644 --- a/src/script/cpp_api/s_entity.cpp +++ b/src/script/cpp_api/s_entity.cpp @@ -178,12 +178,11 @@ void ScriptApiEntity::luaentity_GetProperties(u16 id, lua_pop(L, 1); } -void ScriptApiEntity::luaentity_Step(u16 id, float dtime) +void ScriptApiEntity::luaentity_Step(u16 id, float dtime, + const collisionMoveResult *moveresult) { SCRIPTAPI_PRECHECKHEADER - //infostream<<"scriptapi_luaentity_step: id="<getScriptIface()->luaentity_Step(m_id, dtime); + if(m_registered) { + m_env->getScriptIface()->luaentity_Step(m_id, dtime, moveresult_p); } if (!send_recommended) From b9377f26a198d0383b82c76cf6904bc1797e8187 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 14 Apr 2020 16:55:16 +0200 Subject: [PATCH 153/424] Rewrite builtin item entity to use collision info fixes #8967 --- builtin/game/item_entity.lua | 104 +++++++++++++++++++---------------- 1 file changed, 56 insertions(+), 48 deletions(-) diff --git a/builtin/game/item_entity.lua b/builtin/game/item_entity.lua index 968daac97..a85eba977 100644 --- a/builtin/game/item_entity.lua +++ b/builtin/game/item_entity.lua @@ -34,7 +34,6 @@ core.register_entity(":__builtin:item", { itemstring = "", moving_state = true, - slippery_state = false, physical_state = true, -- Item expiry age = 0, @@ -157,7 +156,7 @@ core.register_entity(":__builtin:item", { end end, - on_step = function(self, dtime) + on_step = function(self, dtime, moveresult) self.age = self.age + dtime if time_to_live > 0 and self.age > time_to_live then self.itemstring = "" @@ -178,6 +177,36 @@ core.register_entity(":__builtin:item", { return end + if self.force_out then + -- This code runs after the entity got a push from the is_stuck code. + -- It makes sure the entity is entirely outside the solid node + local c = self.object:get_properties().collisionbox + local s = self.force_out_start + local f = self.force_out + local ok = (f.x > 0 and pos.x + c[1] > s.x + 0.5) or + (f.y > 0 and pos.y + c[2] > s.y + 0.5) or + (f.z > 0 and pos.z + c[3] > s.z + 0.5) or + (f.x < 0 and pos.x + c[4] < s.x - 0.5) or + (f.z < 0 and pos.z + c[6] < s.z - 0.5) + if ok then + -- Item was successfully forced out + self.force_out = nil + self:enable_physics() + return + end + end + + if not self.physical_state then + return -- Don't do anything + end + + assert(moveresult) + if not moveresult.collides then + -- future TODO: items should probably decelerate in air + return + end + + -- Push item out when stuck inside solid node local is_stuck = false local snode = core.get_node_or_nil(pos) if snode then @@ -187,7 +216,6 @@ core.register_entity(":__builtin:item", { and (sdef.node_box == nil or sdef.node_box.type == "regular") end - -- Push item out when stuck inside solid node if is_stuck then local shootdir local order = { @@ -223,69 +251,49 @@ core.register_entity(":__builtin:item", { self.force_out_start = vector.round(pos) return end - elseif self.force_out then - -- This code runs after the entity got a push from the above code. - -- It makes sure the entity is entirely outside the solid node - local c = self.object:get_properties().collisionbox - local s = self.force_out_start - local f = self.force_out - local ok = (f.x > 0 and pos.x + c[1] > s.x + 0.5) or - (f.y > 0 and pos.y + c[2] > s.y + 0.5) or - (f.z > 0 and pos.z + c[3] > s.z + 0.5) or - (f.x < 0 and pos.x + c[4] < s.x - 0.5) or - (f.z < 0 and pos.z + c[6] < s.z - 0.5) - if ok then - -- Item was successfully forced out - self.force_out = nil - self:enable_physics() - end end - if not self.physical_state then - return -- Don't do anything + node = nil -- ground node we're colliding with + if moveresult.touching_ground then + for _, info in ipairs(moveresult.collisions) do + if info.axis == "y" then + node = core.get_node(info.node_pos) + break + end + end end -- Slide on slippery nodes - local vel = self.object:get_velocity() local def = node and core.registered_nodes[node.name] - local is_moving = (def and not def.walkable) or - vel.x ~= 0 or vel.y ~= 0 or vel.z ~= 0 - local is_slippery = false + local keep_movement = false - if def and def.walkable then + if def then local slippery = core.get_item_group(node.name, "slippery") - is_slippery = slippery ~= 0 - if is_slippery and (math.abs(vel.x) > 0.2 or math.abs(vel.z) > 0.2) then + local vel = self.object:get_velocity() + if slippery ~= 0 and (math.abs(vel.x) > 0.1 or math.abs(vel.z) > 0.1) then -- Horizontal deceleration - local slip_factor = 4.0 / (slippery + 4) - self.object:set_acceleration({ - x = -vel.x * slip_factor, + local factor = math.min(4 / (slippery + 4) * dtime, 1) + self.object:set_velocity({ + x = vel.x * (1 - factor), y = 0, - z = -vel.z * slip_factor + z = vel.z * (1 - factor) }) - elseif vel.y == 0 then - is_moving = false + keep_movement = true end end - if self.moving_state == is_moving and - self.slippery_state == is_slippery then + if not keep_movement then + self.object:set_velocity({x=0, y=0, z=0}) + end + + if self.moving_state == keep_movement then -- Do not update anything until the moving state changes return end + self.moving_state = keep_movement - self.moving_state = is_moving - self.slippery_state = is_slippery - - if is_moving then - self.object:set_acceleration({x = 0, y = -gravity, z = 0}) - else - self.object:set_acceleration({x = 0, y = 0, z = 0}) - self.object:set_velocity({x = 0, y = 0, z = 0}) - end - - --Only collect items if not moving - if is_moving then + -- Only collect items if not moving + if self.moving_state then return end -- Collect the items around to merge with From a368e7e79303fa02ef97580a2c387dcee57bc3c4 Mon Sep 17 00:00:00 2001 From: orbea Date: Tue, 28 Apr 2020 14:34:18 +0000 Subject: [PATCH 154/424] cmake: Silence warnings. (#9750) Fixes https://github.com/minetest/minetest/issues/9734 --- cmake/Modules/FindGettextLib.cmake | 4 ++-- cmake/Modules/FindJson.cmake | 6 +++--- cmake/Modules/FindLuaJIT.cmake | 2 +- cmake/Modules/FindVorbis.cmake | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmake/Modules/FindGettextLib.cmake b/cmake/Modules/FindGettextLib.cmake index 11de12177..529452a4a 100644 --- a/cmake/Modules/FindGettextLib.cmake +++ b/cmake/Modules/FindGettextLib.cmake @@ -55,10 +55,10 @@ endif(WIN32) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(GetText DEFAULT_MSG ${GETTEXT_REQUIRED_VARS}) +find_package_handle_standard_args(GettextLib DEFAULT_MSG ${GETTEXT_REQUIRED_VARS}) -if(GETTEXT_FOUND) +if(GETTEXTLIB_FOUND) # BSD variants require special linkage as they don't use glibc if(${CMAKE_SYSTEM_NAME} MATCHES "BSD|DragonFly") set(GETTEXT_LIBRARY "intl") diff --git a/cmake/Modules/FindJson.cmake b/cmake/Modules/FindJson.cmake index 53ddf4599..a5e9098f8 100644 --- a/cmake/Modules/FindJson.cmake +++ b/cmake/Modules/FindJson.cmake @@ -11,14 +11,14 @@ if(ENABLE_SYSTEM_JSONCPP) find_path(JSON_INCLUDE_DIR json/allocator.h PATH_SUFFIXES jsoncpp) include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(JSONCPP DEFAULT_MSG JSON_LIBRARY JSON_INCLUDE_DIR) + find_package_handle_standard_args(Json DEFAULT_MSG JSON_LIBRARY JSON_INCLUDE_DIR) - if(JSONCPP_FOUND) + if(JSON_FOUND) message(STATUS "Using system JSONCPP library.") endif() endif() -if(NOT JSONCPP_FOUND) +if(NOT JSON_FOUND) message(STATUS "Using bundled JSONCPP library.") set(JSON_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/jsoncpp) set(JSON_LIBRARY jsoncpp) diff --git a/cmake/Modules/FindLuaJIT.cmake b/cmake/Modules/FindLuaJIT.cmake index 4bc88b6b1..97b0b7c64 100644 --- a/cmake/Modules/FindLuaJIT.cmake +++ b/cmake/Modules/FindLuaJIT.cmake @@ -55,7 +55,7 @@ ENDIF() INCLUDE(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set LUAJIT_FOUND to TRUE if # all listed variables are TRUE -FIND_PACKAGE_HANDLE_STANDARD_ARGS(LuaJit +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LuaJIT REQUIRED_VARS LUA_LIBRARY LUA_INCLUDE_DIR VERSION_VAR LUA_VERSION_STRING) diff --git a/cmake/Modules/FindVorbis.cmake b/cmake/Modules/FindVorbis.cmake index 8f3813694..e5fe7f25e 100644 --- a/cmake/Modules/FindVorbis.cmake +++ b/cmake/Modules/FindVorbis.cmake @@ -20,13 +20,13 @@ if(NOT GP2XWIZ) # Handle the QUIETLY and REQUIRED arguments and set VORBIS_FOUND # to TRUE if all listed variables are TRUE. include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(VORBIS DEFAULT_MSG + find_package_handle_standard_args(Vorbis DEFAULT_MSG OGG_INCLUDE_DIR VORBIS_INCLUDE_DIR OGG_LIBRARY VORBIS_LIBRARY VORBISFILE_LIBRARY) else(NOT GP2XWIZ) find_path(VORBIS_INCLUDE_DIR tremor/ivorbisfile.h) find_library(VORBIS_LIBRARY NAMES vorbis_dec) - find_package_handle_standard_args(VORBIS DEFAULT_MSG + find_package_handle_standard_args(Vorbis DEFAULT_MSG VORBIS_INCLUDE_DIR VORBIS_LIBRARY) endif(NOT GP2XWIZ) From a36c9c3e930608386b983ea76158793fe9d622f6 Mon Sep 17 00:00:00 2001 From: ANAND Date: Tue, 28 Apr 2020 23:00:57 +0530 Subject: [PATCH 155/424] Fix breath_bar scaling; delay breath_bar hiding by one second (#8271) PLAYER_MAX_BREATH_DEFAULT was earlier set to 11, so that 10 bubbles are shown before the breath bar disappears. Now, PLAYER_MAX_BREATH_DEFAULT is set to 10, and the breath_bar scaling code in builtin has been tweaked to show all 10 bubbles before hiding the breath_bar --- builtin/game/constants.lua | 2 +- builtin/game/statbars.lua | 36 +++++++++++++++++++++++------------- src/constants.h | 2 +- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/builtin/game/constants.lua b/builtin/game/constants.lua index 0ee2a7237..54eeea50f 100644 --- a/builtin/game/constants.lua +++ b/builtin/game/constants.lua @@ -24,7 +24,7 @@ core.MAP_BLOCKSIZE = 16 -- Default maximal HP of a player core.PLAYER_MAX_HP_DEFAULT = 20 -- Default maximal breath of a player -core.PLAYER_MAX_BREATH_DEFAULT = 11 +core.PLAYER_MAX_BREATH_DEFAULT = 10 -- light.h -- Maximum value for node 'light_source' parameter diff --git a/builtin/game/statbars.lua b/builtin/game/statbars.lua index 46c947b60..6b5b54428 100644 --- a/builtin/game/statbars.lua +++ b/builtin/game/statbars.lua @@ -3,22 +3,22 @@ local enable_damage = core.settings:get_bool("enable_damage") local health_bar_definition = { hud_elem_type = "statbar", - position = { x=0.5, y=1 }, + position = {x = 0.5, y = 1}, text = "heart.png", number = core.PLAYER_MAX_HP_DEFAULT, direction = 0, - size = { x=24, y=24 }, - offset = { x=(-10*24)-25, y=-(48+24+16)}, + size = {x = 24, y = 24}, + offset = {x = (-10 * 24) - 25, y = -(48 + 24 + 16)}, } local breath_bar_definition = { hud_elem_type = "statbar", - position = { x=0.5, y=1 }, + position = {x = 0.5, y = 1}, text = "bubble.png", number = core.PLAYER_MAX_BREATH_DEFAULT, direction = 0, - size = { x=24, y=24 }, - offset = {x=25,y=-(48+24+16)}, + size = {x = 24, y = 24}, + offset = {x = 25, y= -(48 + 24 + 16)}, } local hud_ids = {} @@ -26,7 +26,7 @@ local hud_ids = {} local function scaleToDefault(player, field) -- Scale "hp" or "breath" to the default dimensions local current = player["get_" .. field](player) - local nominal = core["PLAYER_MAX_".. field:upper() .. "_DEFAULT"] + local nominal = core["PLAYER_MAX_" .. field:upper() .. "_DEFAULT"] local max_display = math.max(nominal, math.max(player:get_properties()[field .. "_max"], current)) return current / max_display * nominal @@ -49,6 +49,7 @@ local function update_builtin_statbars(player) local hud = hud_ids[name] local immortal = player:get_armor_groups().immortal == 1 + if flags.healthbar and enable_damage and not immortal then local number = scaleToDefault(player, "hp") if hud.id_healthbar == nil then @@ -63,19 +64,28 @@ local function update_builtin_statbars(player) hud.id_healthbar = nil end + local show_breathbar = flags.breathbar and enable_damage and not immortal + + local breath = player:get_breath() local breath_max = player:get_properties().breath_max - if flags.breathbar and enable_damage and not immortal and - player:get_breath() < breath_max then + if show_breathbar and breath <= breath_max then local number = 2 * scaleToDefault(player, "breath") - if hud.id_breathbar == nil then + if not hud.id_breathbar and breath < breath_max then local hud_def = table.copy(breath_bar_definition) hud_def.number = number hud.id_breathbar = player:hud_add(hud_def) - else + elseif hud.id_breathbar then player:hud_change(hud.id_breathbar, "number", number) end - elseif hud.id_breathbar then - player:hud_remove(hud.id_breathbar) + end + + if hud.id_breathbar and (not show_breathbar or breath == breath_max) then + minetest.after(1, function(player_name, breath_bar) + local player = minetest.get_player_by_name(player_name) + if player then + player:hud_remove(breath_bar) + end + end, name, hud.id_breathbar) hud.id_breathbar = nil end end diff --git a/src/constants.h b/src/constants.h index 0a8b22e15..c17f3b6af 100644 --- a/src/constants.h +++ b/src/constants.h @@ -93,7 +93,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #define PLAYER_MAX_HP_DEFAULT 20 // Default maximal breath of a player -#define PLAYER_MAX_BREATH_DEFAULT 11 +#define PLAYER_MAX_BREATH_DEFAULT 10 // Number of different files to try to save a player to if the first fails // (because of a case-insensitive filesystem) From 56bababcdfce097a4e08cc3d1de8d798e7999ce7 Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Mon, 27 Apr 2020 08:31:37 +0200 Subject: [PATCH 156/424] Add MetricsBackend with prometheus counter support --- Dockerfile | 22 ++++- README.md | 1 + builtin/settingtypes.txt | 6 ++ src/CMakeLists.txt | 26 ++++++ src/cmake_config.h.in | 1 + src/defaultsettings.cpp | 3 + src/map.cpp | 11 ++- src/map.h | 6 +- src/server.cpp | 57 ++++++++++--- src/server.h | 21 +++-- src/server/mods.cpp | 1 + src/server/mods.h | 3 + src/util/CMakeLists.txt | 1 + src/util/metricsbackend.cpp | 140 ++++++++++++++++++++++++++++++++ src/util/metricsbackend.h | 140 ++++++++++++++++++++++++++++++++ util/ci/build_prometheus_cpp.sh | 13 +++ 16 files changed, 427 insertions(+), 25 deletions(-) create mode 100644 src/util/metricsbackend.cpp create mode 100644 src/util/metricsbackend.h create mode 100755 util/ci/build_prometheus_cpp.sh diff --git a/Dockerfile b/Dockerfile index 7c1107288..72343ab9c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,15 +21,29 @@ WORKDIR /usr/src/minetest RUN apk add --no-cache git build-base irrlicht-dev cmake bzip2-dev libpng-dev \ jpeg-dev libxxf86vm-dev mesa-dev sqlite-dev libogg-dev \ libvorbis-dev openal-soft-dev curl-dev freetype-dev zlib-dev \ - gmp-dev jsoncpp-dev postgresql-dev && \ + gmp-dev jsoncpp-dev postgresql-dev ca-certificates && \ git clone --depth=1 -b ${MINETEST_GAME_VERSION} https://github.com/minetest/minetest_game.git ./games/minetest_game && \ - rm -fr ./games/minetest_game/.git && \ - mkdir build && \ + rm -fr ./games/minetest_game/.git + +WORKDIR /usr/src/ +RUN git clone --recursive https://github.com/jupp0r/prometheus-cpp/ && \ + mkdir prometheus-cpp/build && \ + cd prometheus-cpp/build && \ + cmake .. \ + -DCMAKE_INSTALL_PREFIX=/usr/local \ + -DCMAKE_BUILD_TYPE=Release \ + -DENABLE_TESTING=0 && \ + make -j2 && \ + make install + +WORKDIR /usr/src/minetest +RUN mkdir build && \ cd build && \ cmake .. \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SERVER=TRUE \ + -DENABLE_PROMETHEUS=TRUE \ -DBUILD_UNITTESTS=FALSE \ -DBUILD_CLIENT=FALSE && \ make -j2 && \ @@ -49,6 +63,6 @@ COPY --from=0 /usr/local/share/doc/minetest/minetest.conf.example /etc/minetest/ USER minetest:minetest -EXPOSE 30000/udp +EXPOSE 30000/udp 30000/tcp CMD ["/usr/local/bin/minetestserver", "--config", "/etc/minetest/minetest.conf"] diff --git a/README.md b/README.md index b3b2b863e..024e7b691 100644 --- a/README.md +++ b/README.md @@ -236,6 +236,7 @@ General options and their default values: ENABLE_SPATIAL=ON - Build with LibSpatial; Speeds up AreaStores ENABLE_SOUND=ON - Build with OpenAL, libogg & libvorbis; in-game sounds ENABLE_LUAJIT=ON - Build with LuaJIT (much faster than non-JIT Lua) + ENABLE_PROMETHEUS=OFF - Build with Prometheus metrics exporter (listens on tcp/30000 by default) ENABLE_SYSTEM_GMP=ON - Use GMP from system (much faster than bundled mini-gmp) ENABLE_SYSTEM_JSONCPP=OFF - Use JsonCPP from system OPENGL_GL_PREFERENCE=LEGACY - Linux client build only; See CMake Policy CMP0072 for reference diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index b9228f384..165ed8c06 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -955,6 +955,12 @@ address (Server address) string # Note that the port field in the main menu overrides this setting. remote_port (Remote port) int 30000 1 65535 +# Prometheus listener address. +# If minetest is compiled with ENABLE_PROMETHEUS option enabled, +# enable metrics listener for Prometheus on that address. +# Metrics can be fetch on http://127.0.0.1:30000/metrics +prometheus_listener_address (Prometheus listener address) string 127.0.0.1:30000 + # Save the map received by the client on disk. enable_local_map_saving (Saving map received from server) bool false diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b416faaf3..710d9e13e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -217,6 +217,26 @@ endif(ENABLE_REDIS) find_package(SQLite3 REQUIRED) +OPTION(ENABLE_PROMETHEUS "Enable prometheus client support" FALSE) +set(USE_PROMETHEUS FALSE) + +if(ENABLE_PROMETHEUS) + find_path(PROMETHEUS_CPP_INCLUDE_DIR NAMES prometheus/counter.h) + find_library(PROMETHEUS_PULL_LIBRARY NAMES prometheus-cpp-pull) + find_library(PROMETHEUS_CORE_LIBRARY NAMES prometheus-cpp-core) + if(PROMETHEUS_CPP_INCLUDE_DIR AND PROMETHEUS_PULL_LIBRARY AND PROMETHEUS_CORE_LIBRARY) + set(PROMETHEUS_LIBRARIES ${PROMETHEUS_PULL_LIBRARY} ${PROMETHEUS_CORE_LIBRARY}) + set(USE_PROMETHEUS TRUE) + include_directories(${PROMETHEUS_CPP_INCLUDE_DIR}) + endif(PROMETHEUS_CPP_INCLUDE_DIR AND PROMETHEUS_PULL_LIBRARY AND PROMETHEUS_CORE_LIBRARY) +endif(ENABLE_PROMETHEUS) + +if(USE_PROMETHEUS) + message(STATUS "Prometheus client enabled.") +else(USE_PROMETHEUS) + message(STATUS "Prometheus client disabled.") +endif(USE_PROMETHEUS) + OPTION(ENABLE_SPATIAL "Enable SpatialIndex AreaStore backend" TRUE) set(USE_SPATIAL FALSE) @@ -597,6 +617,9 @@ if(BUILD_CLIENT) if (USE_REDIS) target_link_libraries(${PROJECT_NAME} ${REDIS_LIBRARY}) endif() + if (USE_PROMETHEUS) + target_link_libraries(${PROJECT_NAME} ${PROMETHEUS_LIBRARIES}) + endif() if (USE_SPATIAL) target_link_libraries(${PROJECT_NAME} ${SPATIAL_LIBRARY}) endif() @@ -632,6 +655,9 @@ if(BUILD_SERVER) if (USE_REDIS) target_link_libraries(${PROJECT_NAME}server ${REDIS_LIBRARY}) endif() + if (USE_PROMETHEUS) + target_link_libraries(${PROJECT_NAME}server ${PROMETHEUS_LIBRARIES}) + endif() if (USE_SPATIAL) target_link_libraries(${PROJECT_NAME}server ${SPATIAL_LIBRARY}) endif() diff --git a/src/cmake_config.h.in b/src/cmake_config.h.in index cac6335d4..cfcee4b58 100644 --- a/src/cmake_config.h.in +++ b/src/cmake_config.h.in @@ -23,6 +23,7 @@ #cmakedefine01 USE_LEVELDB #cmakedefine01 USE_LUAJIT #cmakedefine01 USE_POSTGRESQL +#cmakedefine01 USE_PROMETHEUS #cmakedefine01 USE_SPATIAL #cmakedefine01 USE_SYSTEM_GMP #cmakedefine01 USE_REDIS diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index b6b1ce1f2..06daa3b94 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -334,6 +334,9 @@ void set_default_settings(Settings *settings) // Server settings->setDefault("disable_escape_sequences", "false"); settings->setDefault("strip_color_codes", "false"); +#if USE_PROMETHEUS + settings->setDefault("prometheus_listener_address", "127.0.0.1:30000"); +#endif // Network settings->setDefault("enable_ipv6", "true"); diff --git a/src/map.cpp b/src/map.cpp index 12e122124..5f1b984a4 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -144,7 +144,7 @@ bool Map::isNodeUnderground(v3s16 p) { v3s16 blockpos = getNodeBlockPos(p); MapBlock *block = getBlockNoCreateNoEx(blockpos); - return block && block->getIsUnderground(); + return block && block->getIsUnderground(); } bool Map::isValidPosition(v3s16 p) @@ -1187,7 +1187,7 @@ bool Map::isBlockOccluded(MapBlock *block, v3s16 cam_pos_nodes) ServerMap */ ServerMap::ServerMap(const std::string &savedir, IGameDef *gamedef, - EmergeManager *emerge): + EmergeManager *emerge, MetricsBackend *mb): Map(dout_server, gamedef), settings_mgr(g_settings, savedir + DIR_DELIM + "map_meta.txt"), m_emerge(emerge) @@ -1221,6 +1221,8 @@ ServerMap::ServerMap(const std::string &savedir, IGameDef *gamedef, m_savedir = savedir; m_map_saving_enabled = false; + m_save_time_counter = mb->addCounter("minetest_core_map_save_time", "Map save time (in nanoseconds)"); + try { // If directory exists, check contents and load if possible if (fs::PathExists(m_savedir)) { @@ -1777,6 +1779,8 @@ void ServerMap::save(ModifiedState save_level) return; } + u64 start_time = porting::getTimeNs(); + if(save_level == MOD_STATE_CLEAN) infostream<<"ServerMap: Saving whole map, this can take time." <increment(end_time - start_time); } void ServerMap::listAllLoadableBlocks(std::vector &dst) diff --git a/src/map.h b/src/map.h index ff6b20c4f..77ee4da9e 100644 --- a/src/map.h +++ b/src/map.h @@ -31,6 +31,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "voxel.h" #include "modifiedstate.h" #include "util/container.h" +#include "util/metricsbackend.h" #include "nodetimer.h" #include "map_settings_manager.h" #include "debug.h" @@ -45,6 +46,7 @@ class NodeMetadata; class IGameDef; class IRollbackManager; class EmergeManager; +class MetricsBackend; class ServerEnvironment; struct BlockMakeData; @@ -324,7 +326,7 @@ public: /* savedir: directory to which map data should be saved */ - ServerMap(const std::string &savedir, IGameDef *gamedef, EmergeManager *emerge); + ServerMap(const std::string &savedir, IGameDef *gamedef, EmergeManager *emerge, MetricsBackend *mb); ~ServerMap(); s32 mapType() const @@ -449,6 +451,8 @@ private: bool m_map_metadata_changed = true; MapDatabase *dbase = nullptr; MapDatabase *dbase_ro = nullptr; + + MetricCounterPtr m_save_time_counter; }; diff --git a/src/server.cpp b/src/server.cpp index af6d3e40d..a7eb52837 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -229,18 +229,46 @@ Server::Server( m_nodedef(createNodeDefManager()), m_craftdef(createCraftDefManager()), m_thread(new ServerThread(this)), - m_uptime(0), m_clients(m_con), m_admin_chat(iface), m_modchannel_mgr(new ModChannelMgr()) { - m_lag = g_settings->getFloat("dedicated_server_step"); - if (m_path_world.empty()) throw ServerError("Supplied empty world path"); if (!gamespec.isValid()) throw ServerError("Supplied invalid gamespec"); + +#if USE_PROMETHEUS + m_metrics_backend = std::unique_ptr(createPrometheusMetricsBackend()); +#else + m_metrics_backend = std::unique_ptr(new MetricsBackend()); +#endif + + m_uptime_counter = m_metrics_backend->addCounter("minetest_core_server_uptime", "Server uptime (in seconds)"); + m_player_gauge = m_metrics_backend->addGauge("minetest_core_player_number", "Number of connected players"); + + m_timeofday_gauge = m_metrics_backend->addGauge( + "minetest_core_timeofday", + "Time of day value"); + + m_lag_gauge = m_metrics_backend->addGauge( + "minetest_core_latency", + "Latency value (in seconds)"); + + m_aom_buffer_counter = m_metrics_backend->addCounter( + "minetest_core_aom_generated_count", + "Number of active object messages generated"); + + m_packet_recv_counter = m_metrics_backend->addCounter( + "minetest_core_server_packet_recv", + "Processable packets received"); + + m_packet_recv_processed_counter = m_metrics_backend->addCounter( + "minetest_core_server_packet_recv_processed", + "Valid received packets processed"); + + m_lag_gauge->set(g_settings->getFloat("dedicated_server_step")); } Server::~Server() @@ -353,7 +381,7 @@ void Server::init() MutexAutoLock envlock(m_env_mutex); // Create the Map (loads map_meta.txt, overriding configured mapgen params) - ServerMap *servermap = new ServerMap(m_path_world, this, m_emerge); + ServerMap *servermap = new ServerMap(m_path_world, this, m_emerge, m_metrics_backend.get()); // Initialize scripting infostream << "Server: Initializing Lua" << std::endl; @@ -511,9 +539,7 @@ void Server::AsyncRunStep(bool initial_step) /* Update uptime */ - { - m_uptime.set(m_uptime.get() + dtime); - } + m_uptime_counter->increment(dtime); handlePeerChanges(); @@ -527,11 +553,13 @@ void Server::AsyncRunStep(bool initial_step) */ m_time_of_day_send_timer -= dtime; - if(m_time_of_day_send_timer < 0.0) { + if (m_time_of_day_send_timer < 0.0) { m_time_of_day_send_timer = g_settings->getFloat("time_send_interval"); u16 time = m_env->getTimeOfDay(); float time_speed = g_settings->getFloat("time_speed"); SendTimeOfDay(PEER_ID_INEXISTENT, time, time_speed); + + m_timeofday_gauge->set(time); } { @@ -603,7 +631,7 @@ void Server::AsyncRunStep(bool initial_step) } m_clients.step(dtime); - m_lag += (m_lag > dtime ? -1 : 1) * dtime/100; + m_lag_gauge->increment((m_lag_gauge->get() > dtime ? -1 : 1) * dtime/100); #if USE_CURL // send masterserver announce { @@ -614,9 +642,9 @@ void Server::AsyncRunStep(bool initial_step) ServerList::AA_START, m_bind_addr.getPort(), m_clients.getPlayerNames(), - m_uptime.get(), + m_uptime_counter->get(), m_env->getGameTime(), - m_lag, + m_lag_gauge->get(), m_gamespec.id, Mapgen::getMapgenName(m_emerge->mgparams->mgtype), m_modmgr->getMods(), @@ -638,6 +666,7 @@ void Server::AsyncRunStep(bool initial_step) const RemoteClientMap &clients = m_clients.getClientList(); ScopeProfiler sp(g_profiler, "Server: update objects within range"); + m_player_gauge->set(clients.size()); for (const auto &client_it : clients) { RemoteClient *client = client_it.second; @@ -703,6 +732,8 @@ void Server::AsyncRunStep(bool initial_step) message_list->push_back(aom); } + m_aom_buffer_counter->increment(buffered_messages.size()); + m_clients.lock(); const RemoteClientMap &clients = m_clients.getClientList(); // Route data to every client @@ -943,7 +974,9 @@ void Server::Receive() } peer_id = pkt.getPeerId(); + m_packet_recv_counter->increment(); ProcessData(&pkt); + m_packet_recv_processed_counter->increment(); } catch (const con::InvalidIncomingDataException &e) { infostream << "Server::Receive(): InvalidIncomingDataException: what()=" << e.what() << std::endl; @@ -3127,7 +3160,7 @@ std::wstring Server::getStatusString() // Version os << L"version=" << narrow_to_wide(g_version_string); // Uptime - os << L", uptime=" << m_uptime.get(); + os << L", uptime=" << m_uptime_counter->get(); // Max lag estimate os << L", max_lag=" << (m_env ? m_env->getMaxLagEstimate() : 0); diff --git a/src/server.h b/src/server.h index b995aba28..71059dd30 100644 --- a/src/server.h +++ b/src/server.h @@ -33,6 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/numeric.h" #include "util/thread.h" #include "util/basic_macros.h" +#include "util/metricsbackend.h" #include "serverenvironment.h" #include "clientiface.h" #include "chatmessage.h" @@ -203,7 +204,7 @@ public: // Connection must be locked when called std::wstring getStatusString(); - inline double getUptime() const { return m_uptime.m_value; } + inline double getUptime() const { return m_uptime_counter->get(); } // read shutdown state inline bool isShutdownRequested() const { return m_shutdown_state.is_requested; } @@ -591,9 +592,6 @@ private: float m_step_dtime = 0.0f; std::mutex m_step_dtime_mutex; - // current server step lag counter - float m_lag; - // The server mainly operates in this thread ServerThread *m_thread = nullptr; @@ -602,8 +600,6 @@ private: */ // Timer for sending time of day over network float m_time_of_day_send_timer = 0.0f; - // Uptime of server in seconds - MutexedVariable m_uptime; /* Client interface @@ -677,6 +673,19 @@ private: // ModChannel manager std::unique_ptr m_modchannel_mgr; + + // Global server metrics backend + std::unique_ptr m_metrics_backend; + + // Server metrics + MetricCounterPtr m_uptime_counter; + MetricGaugePtr m_player_gauge; + MetricGaugePtr m_timeofday_gauge; + // current server step lag + MetricGaugePtr m_lag_gauge; + MetricCounterPtr m_aom_buffer_counter; + MetricCounterPtr m_packet_recv_counter; + MetricCounterPtr m_packet_recv_processed_counter; }; /* diff --git a/src/server/mods.cpp b/src/server/mods.cpp index c8d8a28e2..6ac530739 100644 --- a/src/server/mods.cpp +++ b/src/server/mods.cpp @@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "scripting_server.h" #include "content/subgames.h" #include "porting.h" +#include "util/metricsbackend.h" /** * Manage server mods diff --git a/src/server/mods.h b/src/server/mods.h index 2bc1aa22f..54774bd86 100644 --- a/src/server/mods.h +++ b/src/server/mods.h @@ -20,7 +20,10 @@ with this program; if not, write to the Free Software Foundation, Inc., #pragma once #include "content/mods.h" +#include +class MetricsBackend; +class MetricCounter; class ServerScripting; /** diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index 199d3aeaa..cd2e468d1 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -5,6 +5,7 @@ set(UTIL_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/directiontables.cpp ${CMAKE_CURRENT_SOURCE_DIR}/enriched_string.cpp ${CMAKE_CURRENT_SOURCE_DIR}/ieee_float.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/metricsbackend.cpp ${CMAKE_CURRENT_SOURCE_DIR}/numeric.cpp ${CMAKE_CURRENT_SOURCE_DIR}/pointedthing.cpp ${CMAKE_CURRENT_SOURCE_DIR}/quicktune.cpp diff --git a/src/util/metricsbackend.cpp b/src/util/metricsbackend.cpp new file mode 100644 index 000000000..4454557a3 --- /dev/null +++ b/src/util/metricsbackend.cpp @@ -0,0 +1,140 @@ +/* +Minetest +Copyright (C) 2013-2020 Minetest core developers team + +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 "metricsbackend.h" +#if USE_PROMETHEUS +#include +#include +#include +#include +#include "log.h" +#include "settings.h" +#endif + +MetricCounterPtr MetricsBackend::addCounter( + const std::string &name, const std::string &help_str) +{ + return std::make_shared(name, help_str); +} + +MetricGaugePtr MetricsBackend::addGauge( + const std::string &name, const std::string &help_str) +{ + return std::make_shared(name, help_str); +} + +#if USE_PROMETHEUS + +class PrometheusMetricCounter : public MetricCounter +{ +public: + PrometheusMetricCounter() = delete; + + PrometheusMetricCounter(const std::string &name, const std::string &help_str, + std::shared_ptr registry) : + MetricCounter(), + m_family(prometheus::BuildCounter() + .Name(name) + .Help(help_str) + .Register(*registry)), + m_counter(m_family.Add({})) + { + } + + virtual ~PrometheusMetricCounter() {} + + virtual void increment(double number) { m_counter.Increment(number); } + virtual double get() const { return m_counter.Value(); } + +private: + prometheus::Family &m_family; + prometheus::Counter &m_counter; +}; + +class PrometheusMetricGauge : public MetricGauge +{ +public: + PrometheusMetricGauge() = delete; + + PrometheusMetricGauge(const std::string &name, const std::string &help_str, + std::shared_ptr registry) : + MetricGauge(), + m_family(prometheus::BuildGauge() + .Name(name) + .Help(help_str) + .Register(*registry)), + m_gauge(m_family.Add({})) + { + } + + virtual ~PrometheusMetricGauge() {} + + virtual void increment(double number) { m_gauge.Increment(number); } + virtual void decrement(double number) { m_gauge.Decrement(number); } + virtual void set(double number) { m_gauge.Set(number); } + virtual double get() const { return m_gauge.Value(); } + +private: + prometheus::Family &m_family; + prometheus::Gauge &m_gauge; +}; + +class PrometheusMetricsBackend : public MetricsBackend +{ +public: + PrometheusMetricsBackend(const std::string &addr) : + MetricsBackend(), m_exposer(std::unique_ptr( + new prometheus::Exposer(addr))), + m_registry(std::make_shared()) + { + m_exposer->RegisterCollectable(m_registry); + } + + virtual ~PrometheusMetricsBackend() {} + + virtual MetricCounterPtr addCounter( + const std::string &name, const std::string &help_str); + virtual MetricGaugePtr addGauge( + const std::string &name, const std::string &help_str); + +private: + std::unique_ptr m_exposer; + std::shared_ptr m_registry; +}; + +MetricCounterPtr PrometheusMetricsBackend::addCounter( + const std::string &name, const std::string &help_str) +{ + return std::make_shared(name, help_str, m_registry); +} + +MetricGaugePtr PrometheusMetricsBackend::addGauge( + const std::string &name, const std::string &help_str) +{ + return std::make_shared(name, help_str, m_registry); +} + +MetricsBackend *createPrometheusMetricsBackend() +{ + std::string addr; + g_settings->getNoEx("prometheus_listener_address", addr); + return new PrometheusMetricsBackend(addr); +} + +#endif diff --git a/src/util/metricsbackend.h b/src/util/metricsbackend.h new file mode 100644 index 000000000..c37306392 --- /dev/null +++ b/src/util/metricsbackend.h @@ -0,0 +1,140 @@ +/* +Minetest +Copyright (C) 2013-2020 Minetest core developers team + +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. +*/ + +#pragma once +#include +#include "config.h" +#include "util/thread.h" + +class MetricCounter +{ +public: + MetricCounter() = default; + + virtual ~MetricCounter() {} + + virtual void increment(double number = 1.0) = 0; + virtual double get() const = 0; +}; + +typedef std::shared_ptr MetricCounterPtr; + +class SimpleMetricCounter : public MetricCounter +{ +public: + SimpleMetricCounter() = delete; + + virtual ~SimpleMetricCounter() {} + + SimpleMetricCounter(const std::string &name, const std::string &help_str) : + MetricCounter(), m_name(name), m_help_str(help_str), + m_counter(0.0) + { + } + + virtual void increment(double number) + { + MutexAutoLock lock(m_mutex); + m_counter += number; + } + virtual double get() const + { + MutexAutoLock lock(m_mutex); + return m_counter; + } + +private: + std::string m_name; + std::string m_help_str; + + mutable std::mutex m_mutex; + double m_counter; +}; + +class MetricGauge +{ +public: + MetricGauge() = default; + virtual ~MetricGauge() {} + + virtual void increment(double number = 1.0) = 0; + virtual void decrement(double number = 1.0) = 0; + virtual void set(double number) = 0; + virtual double get() const = 0; +}; + +typedef std::shared_ptr MetricGaugePtr; + +class SimpleMetricGauge : public MetricGauge +{ +public: + SimpleMetricGauge() = delete; + + SimpleMetricGauge(const std::string &name, const std::string &help_str) : + MetricGauge(), m_name(name), m_help_str(help_str), m_gauge(0.0) + { + } + + virtual ~SimpleMetricGauge() {} + + virtual void increment(double number) + { + MutexAutoLock lock(m_mutex); + m_gauge += number; + } + virtual void decrement(double number) + { + MutexAutoLock lock(m_mutex); + m_gauge -= number; + } + virtual void set(double number) + { + MutexAutoLock lock(m_mutex); + m_gauge = number; + } + virtual double get() const + { + MutexAutoLock lock(m_mutex); + return m_gauge; + } + +private: + std::string m_name; + std::string m_help_str; + + mutable std::mutex m_mutex; + double m_gauge; +}; + +class MetricsBackend +{ +public: + MetricsBackend() = default; + + virtual ~MetricsBackend() {} + + virtual MetricCounterPtr addCounter( + const std::string &name, const std::string &help_str); + virtual MetricGaugePtr addGauge( + const std::string &name, const std::string &help_str); +}; + +#if USE_PROMETHEUS +MetricsBackend *createPrometheusMetricsBackend(); +#endif diff --git a/util/ci/build_prometheus_cpp.sh b/util/ci/build_prometheus_cpp.sh new file mode 100755 index 000000000..edfd574cd --- /dev/null +++ b/util/ci/build_prometheus_cpp.sh @@ -0,0 +1,13 @@ +#! /bin/bash -eu + +cd /tmp +git clone --recursive https://github.com/jupp0r/prometheus-cpp +mkdir prometheus-cpp/build +cd prometheus-cpp/build +cmake .. \ + -DCMAKE_INSTALL_PREFIX=/usr/local \ + -DCMAKE_BUILD_TYPE=Release \ + -DENABLE_TESTING=0 +make -j2 +sudo make install + From 00323e8fce28cb0620a20b7985c892101396c99e Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Mon, 27 Apr 2020 08:31:51 +0200 Subject: [PATCH 157/424] Add docker build stage on Github actions --- .github/workflows/build.yml | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0d559b197..2c4d3abd1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -116,7 +116,31 @@ jobs: run: | valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ./bin/minetest --run-unittests - + + clang_9_prometheus: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install compiler + run: | + sudo apt-get install clang-9 -qyy + source ./util/ci/common.sh + install_linux_deps + + - name: Build prometheus-cpp + run: | + ./util/ci/build_prometheus_cpp.sh + + - name: Build + run: | + ./util/ci/build.sh + env: + CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9 -DENABLE_PROMETHEUS=1" + + - name: Test + run: | + ./bin/minetest --run-unittests + # Some builds doesn't require freetype, ensure it compiled properly clang_9_no_freetype: runs-on: ubuntu-18.04 @@ -138,6 +162,14 @@ jobs: run: | ./bin/minetest --run-unittests + docker: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Build docker image + run: | + docker build . + win32: runs-on: ubuntu-18.04 steps: @@ -162,7 +194,7 @@ jobs: run: | wget http://minetest.kitsunemimi.pw/mingw-w64-x86_64_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz sudo tar -xaf mingw.tar.xz -C /usr - + - name: Build run: | EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh winbuild From 3f275d799cdcd61928854bb98ca5eb74af22f31e Mon Sep 17 00:00:00 2001 From: Juozas Date: Wed, 29 Apr 2020 13:49:55 +0300 Subject: [PATCH 158/424] Fix gettext detection and locale building (#9772) broken since a368e7e --- src/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 710d9e13e..dd68ceec9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -62,7 +62,7 @@ set(USE_GETTEXT FALSE) if(ENABLE_GETTEXT) find_package(GettextLib) - if(GETTEXT_FOUND) + if(GETTEXTLIB_FOUND) if(WIN32) message(STATUS "GetText library: ${GETTEXT_LIBRARY}") message(STATUS "GetText DLL: ${GETTEXT_DLL}") @@ -70,7 +70,7 @@ if(ENABLE_GETTEXT) endif() set(USE_GETTEXT TRUE) message(STATUS "GetText enabled; locales found: ${GETTEXT_AVAILABLE_LOCALES}") - endif(GETTEXT_FOUND) + endif(GETTEXTLIB_FOUND) else() mark_as_advanced(GETTEXT_ICONV_DLL GETTEXT_INCLUDE_DIR GETTEXT_LIBRARY GETTEXT_MSGFMT) message(STATUS "GetText disabled.") @@ -680,7 +680,7 @@ set(GETTEXT_BLACKLISTED_LOCALES option(APPLY_LOCALE_BLACKLIST "Use a blacklist to avoid broken locales" TRUE) -if (GETTEXT_FOUND AND APPLY_LOCALE_BLACKLIST) +if (GETTEXTLIB_FOUND AND APPLY_LOCALE_BLACKLIST) set(GETTEXT_USED_LOCALES "") foreach(LOCALE ${GETTEXT_AVAILABLE_LOCALES}) if (NOT ";${GETTEXT_BLACKLISTED_LOCALES};" MATCHES ";${LOCALE};") From 74d9b6010fd42573d20cdbe78f7aaa07badfbf1b Mon Sep 17 00:00:00 2001 From: Lejo Date: Fri, 1 May 2020 16:47:17 +0200 Subject: [PATCH 159/424] Give the online lua mainmenu also the client_list and mods (#8691) --- doc/menu_lua_api.txt | 25 +++++----- src/script/lua_api/l_mainmenu.cpp | 81 +++++++++++++++++++++---------- 2 files changed, 70 insertions(+), 36 deletions(-) diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt index df6424ad7..8f5460acb 100644 --- a/doc/menu_lua_api.txt +++ b/doc/menu_lua_api.txt @@ -156,18 +156,21 @@ core.get_favorites(location) -> list of favorites (possible in async calls) ^ location: "local" or "online" ^ returns { [1] = { - clients = , - clients_max = , - version = , - password = , - creative = , - damage = , - pvp = , - description = , - name = , - address =

, - port = + clients = , + clients_max = , + version = , + password = , + creative = , + damage = , + pvp = , + description = , + name = , + address =
, + port = + clients_list = + mods = }, + ... } core.delete_favorite(id, location) -> success diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp index 867e84e13..a76e9f079 100644 --- a/src/script/lua_api/l_mainmenu.cpp +++ b/src/script/lua_api/l_mainmenu.cpp @@ -280,8 +280,8 @@ int ModApiMainMenu::l_get_favorites(lua_State *L) { std::string listtype = "local"; - if (!lua_isnone(L,1)) { - listtype = luaL_checkstring(L,1); + if (!lua_isnone(L, 1)) { + listtype = luaL_checkstring(L, 1); } std::vector servers; @@ -298,7 +298,7 @@ int ModApiMainMenu::l_get_favorites(lua_State *L) for (const Json::Value &server : servers) { - lua_pushnumber(L,index); + lua_pushnumber(L, index); lua_newtable(L); int top_lvl2 = lua_gettop(L); @@ -306,11 +306,11 @@ int ModApiMainMenu::l_get_favorites(lua_State *L) if (!server["clients"].asString().empty()) { std::string clients_raw = server["clients"].asString(); char* endptr = 0; - int numbervalue = strtol(clients_raw.c_str(),&endptr,10); + int numbervalue = strtol(clients_raw.c_str(), &endptr,10); if ((!clients_raw.empty()) && (*endptr == 0)) { - lua_pushstring(L,"clients"); - lua_pushnumber(L,numbervalue); + lua_pushstring(L, "clients"); + lua_pushnumber(L, numbervalue); lua_settable(L, top_lvl2); } } @@ -319,83 +319,83 @@ int ModApiMainMenu::l_get_favorites(lua_State *L) std::string clients_max_raw = server["clients_max"].asString(); char* endptr = 0; - int numbervalue = strtol(clients_max_raw.c_str(),&endptr,10); + int numbervalue = strtol(clients_max_raw.c_str(), &endptr,10); if ((!clients_max_raw.empty()) && (*endptr == 0)) { - lua_pushstring(L,"clients_max"); - lua_pushnumber(L,numbervalue); + lua_pushstring(L, "clients_max"); + lua_pushnumber(L, numbervalue); lua_settable(L, top_lvl2); } } if (!server["version"].asString().empty()) { - lua_pushstring(L,"version"); + lua_pushstring(L, "version"); std::string topush = server["version"].asString(); - lua_pushstring(L,topush.c_str()); + lua_pushstring(L, topush.c_str()); lua_settable(L, top_lvl2); } if (!server["proto_min"].asString().empty()) { - lua_pushstring(L,"proto_min"); + lua_pushstring(L, "proto_min"); lua_pushinteger(L, server["proto_min"].asInt()); lua_settable(L, top_lvl2); } if (!server["proto_max"].asString().empty()) { - lua_pushstring(L,"proto_max"); + lua_pushstring(L, "proto_max"); lua_pushinteger(L, server["proto_max"].asInt()); lua_settable(L, top_lvl2); } if (!server["password"].asString().empty()) { - lua_pushstring(L,"password"); + lua_pushstring(L, "password"); lua_pushboolean(L, server["password"].asBool()); lua_settable(L, top_lvl2); } if (!server["creative"].asString().empty()) { - lua_pushstring(L,"creative"); + lua_pushstring(L, "creative"); lua_pushboolean(L, server["creative"].asBool()); lua_settable(L, top_lvl2); } if (!server["damage"].asString().empty()) { - lua_pushstring(L,"damage"); + lua_pushstring(L, "damage"); lua_pushboolean(L, server["damage"].asBool()); lua_settable(L, top_lvl2); } if (!server["pvp"].asString().empty()) { - lua_pushstring(L,"pvp"); + lua_pushstring(L, "pvp"); lua_pushboolean(L, server["pvp"].asBool()); lua_settable(L, top_lvl2); } if (!server["description"].asString().empty()) { - lua_pushstring(L,"description"); + lua_pushstring(L, "description"); std::string topush = server["description"].asString(); - lua_pushstring(L,topush.c_str()); + lua_pushstring(L, topush.c_str()); lua_settable(L, top_lvl2); } if (!server["name"].asString().empty()) { - lua_pushstring(L,"name"); + lua_pushstring(L, "name"); std::string topush = server["name"].asString(); - lua_pushstring(L,topush.c_str()); + lua_pushstring(L, topush.c_str()); lua_settable(L, top_lvl2); } if (!server["address"].asString().empty()) { - lua_pushstring(L,"address"); + lua_pushstring(L, "address"); std::string topush = server["address"].asString(); - lua_pushstring(L,topush.c_str()); + lua_pushstring(L, topush.c_str()); lua_settable(L, top_lvl2); } if (!server["port"].asString().empty()) { - lua_pushstring(L,"port"); + lua_pushstring(L, "port"); std::string topush = server["port"].asString(); - lua_pushstring(L,topush.c_str()); + lua_pushstring(L, topush.c_str()); lua_settable(L, top_lvl2); } @@ -406,6 +406,37 @@ int ModApiMainMenu::l_get_favorites(lua_State *L) lua_settable(L, top_lvl2); } + if (server["clients_list"].isArray()) { + unsigned int index_lvl2 = 1; + lua_pushstring(L, "clients_list"); + lua_newtable(L); + int top_lvl3 = lua_gettop(L); + for (const Json::Value &client : server["clients_list"]) { + lua_pushnumber(L, index_lvl2); + std::string topush = client.asString(); + lua_pushstring(L, topush.c_str()); + lua_settable(L, top_lvl3); + index_lvl2++; + } + lua_settable(L, top_lvl2); + } + + if (server["mods"].isArray()) { + unsigned int index_lvl2 = 1; + lua_pushstring(L, "mods"); + lua_newtable(L); + int top_lvl3 = lua_gettop(L); + for (const Json::Value &mod : server["mods"]) { + + lua_pushnumber(L, index_lvl2); + std::string topush = mod.asString(); + lua_pushstring(L, topush.c_str()); + lua_settable(L, top_lvl3); + index_lvl2++; + } + lua_settable(L, top_lvl2); + } + lua_settable(L, top); index++; } From ac368af4fe27f61f5a4209cdfe90956ff745993c Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 1 May 2020 21:44:28 +0200 Subject: [PATCH 160/424] Allow connection info to be missing from minetest.get_player_information() (#9739) fixes #9352 This reverts commit 23c907befea02005e2c0c87fca0131b60aace18a. --- doc/lua_api.txt | 11 ++-- src/network/connection.h | 6 +- src/script/lua_api/l_server.cpp | 100 ++++++++++++++++---------------- 3 files changed, 60 insertions(+), 57 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 5e4e18b62..f9107b623 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -4160,17 +4160,18 @@ Utilities { address = "127.0.0.1", -- IP address of client ip_version = 4, -- IPv4 / IPv6 + connection_uptime = 200, -- seconds since client connected + protocol_version = 32, -- protocol version used by client + formspec_version = 2, -- supported formspec version + lang_code = "fr" -- Language code used for translation + -- the following keys can be missing if no stats have been collected yet min_rtt = 0.01, -- minimum round trip time max_rtt = 0.2, -- maximum round trip time avg_rtt = 0.02, -- average round trip time min_jitter = 0.01, -- minimum packet time jitter max_jitter = 0.5, -- maximum packet time jitter avg_jitter = 0.03, -- average packet time jitter - connection_uptime = 200, -- seconds since client connected - protocol_version = 32, -- protocol version used by client - formspec_version = 2, -- supported formspec version - lang_code = "fr" -- Language code used for translation - -- following information is available on debug build only!!! + -- the following information is available in a debug build only!!! -- DO NOT USE IN MODS --ser_vers = 26, -- serialization version used by client --major = 0, -- major version number diff --git a/src/network/connection.h b/src/network/connection.h index 85f021c4c..47b0805ce 100644 --- a/src/network/connection.h +++ b/src/network/connection.h @@ -612,16 +612,16 @@ class Peer { struct rttstats { float jitter_min = FLT_MAX; float jitter_max = 0.0f; - float jitter_avg = -2.0f; + float jitter_avg = -1.0f; float min_rtt = FLT_MAX; float max_rtt = 0.0f; - float avg_rtt = -2.0f; + float avg_rtt = -1.0f; rttstats() = default; }; rttstats m_rtt; - float m_last_rtt = -2.0f; + float m_last_rtt = -1.0f; // current usage count unsigned int m_usage = 0; diff --git a/src/script/lua_api/l_server.cpp b/src/script/lua_api/l_server.cpp index 7137484e8..b6754938e 100644 --- a/src/script/lua_api/l_server.cpp +++ b/src/script/lua_api/l_server.cpp @@ -138,53 +138,54 @@ int ModApiServer::l_get_player_ip(lua_State *L) // get_player_information(name) int ModApiServer::l_get_player_information(lua_State *L) { - NO_MAP_LOCK_REQUIRED; - const char * name = luaL_checkstring(L, 1); - RemotePlayer *player = dynamic_cast(getEnv(L))->getPlayer(name); - if (player == NULL) { + + Server *server = getServer(L); + + const char *name = luaL_checkstring(L, 1); + RemotePlayer *player = server->getEnv().getPlayer(name); + if (!player) { lua_pushnil(L); // no such player return 1; } Address addr; - try - { - addr = getServer(L)->getPeerAddress(player->getPeerId()); - } catch(const con::PeerNotFoundException &) { + try { + addr = server->getPeerAddress(player->getPeerId()); + } catch (const con::PeerNotFoundException &) { dstream << FUNCTION_NAME << ": peer was not found" << std::endl; lua_pushnil(L); // error return 1; } - float min_rtt,max_rtt,avg_rtt,min_jitter,max_jitter,avg_jitter; + float min_rtt, max_rtt, avg_rtt, min_jitter, max_jitter, avg_jitter; ClientState state; u32 uptime; u16 prot_vers; - u8 ser_vers,major,minor,patch; - std::string vers_string; - std::string lang_code; + u8 ser_vers, major, minor, patch; + std::string vers_string, lang_code; -#define ERET(code) \ - if (!(code)) { \ - dstream << FUNCTION_NAME << ": peer was not found" << std::endl; \ - lua_pushnil(L); /* error */ \ - return 1; \ + auto getConInfo = [&] (con::rtt_stat_type type, float *value) -> bool { + return server->getClientConInfo(player->getPeerId(), type, value); + }; + + bool have_con_info = + getConInfo(con::MIN_RTT, &min_rtt) && + getConInfo(con::MAX_RTT, &max_rtt) && + getConInfo(con::AVG_RTT, &avg_rtt) && + getConInfo(con::MIN_JITTER, &min_jitter) && + getConInfo(con::MAX_JITTER, &max_jitter) && + getConInfo(con::AVG_JITTER, &avg_jitter); + + bool r = server->getClientInfo(player->getPeerId(), &state, &uptime, + &ser_vers, &prot_vers, &major, &minor, &patch, &vers_string, + &lang_code); + if (!r) { + dstream << FUNCTION_NAME << ": peer was not found" << std::endl; + lua_pushnil(L); // error + return 1; } - ERET(getServer(L)->getClientConInfo(player->getPeerId(), con::MIN_RTT, &min_rtt)) - ERET(getServer(L)->getClientConInfo(player->getPeerId(), con::MAX_RTT, &max_rtt)) - ERET(getServer(L)->getClientConInfo(player->getPeerId(), con::AVG_RTT, &avg_rtt)) - ERET(getServer(L)->getClientConInfo(player->getPeerId(), con::MIN_JITTER, - &min_jitter)) - ERET(getServer(L)->getClientConInfo(player->getPeerId(), con::MAX_JITTER, - &max_jitter)) - ERET(getServer(L)->getClientConInfo(player->getPeerId(), con::AVG_JITTER, - &avg_jitter)) - - ERET(getServer(L)->getClientInfo(player->getPeerId(), &state, &uptime, &ser_vers, - &prot_vers, &major, &minor, &patch, &vers_string, &lang_code)) - lua_newtable(L); int table = lua_gettop(L); @@ -202,29 +203,31 @@ int ModApiServer::l_get_player_information(lua_State *L) } lua_settable(L, table); - lua_pushstring(L,"min_rtt"); - lua_pushnumber(L, min_rtt); - lua_settable(L, table); + if (have_con_info) { // may be missing + lua_pushstring(L, "min_rtt"); + lua_pushnumber(L, min_rtt); + lua_settable(L, table); - lua_pushstring(L,"max_rtt"); - lua_pushnumber(L, max_rtt); - lua_settable(L, table); + lua_pushstring(L, "max_rtt"); + lua_pushnumber(L, max_rtt); + lua_settable(L, table); - lua_pushstring(L,"avg_rtt"); - lua_pushnumber(L, avg_rtt); - lua_settable(L, table); + lua_pushstring(L, "avg_rtt"); + lua_pushnumber(L, avg_rtt); + lua_settable(L, table); - lua_pushstring(L,"min_jitter"); - lua_pushnumber(L, min_jitter); - lua_settable(L, table); + lua_pushstring(L, "min_jitter"); + lua_pushnumber(L, min_jitter); + lua_settable(L, table); - lua_pushstring(L,"max_jitter"); - lua_pushnumber(L, max_jitter); - lua_settable(L, table); + lua_pushstring(L, "max_jitter"); + lua_pushnumber(L, max_jitter); + lua_settable(L, table); - lua_pushstring(L,"avg_jitter"); - lua_pushnumber(L, avg_jitter); - lua_settable(L, table); + lua_pushstring(L, "avg_jitter"); + lua_pushnumber(L, avg_jitter); + lua_settable(L, table); + } lua_pushstring(L,"connection_uptime"); lua_pushnumber(L, uptime); @@ -268,7 +271,6 @@ int ModApiServer::l_get_player_information(lua_State *L) lua_settable(L, table); #endif -#undef ERET return 1; } From e0ea87f1f32273dba2eb5421c2a8c890479ba078 Mon Sep 17 00:00:00 2001 From: ANAND Date: Sat, 2 May 2020 16:22:11 +0530 Subject: [PATCH 161/424] set_fov: Add support for time-based transitions (#9705) --- doc/lua_api.txt | 15 +++--- src/client/camera.cpp | 82 +++++++++++++++++++++++------ src/client/camera.h | 15 +++++- src/network/clientpackethandler.cpp | 15 +++++- src/network/networkprotocol.h | 3 +- src/player.h | 12 +++-- src/script/lua_api/l_object.cpp | 11 ++-- src/server.cpp | 4 +- 8 files changed, 123 insertions(+), 34 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index f9107b623..44f62f7a7 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -5998,15 +5998,18 @@ object you are working with still exists. * max: bubbles bar is not shown * See [Object properties] for more information * Is limited to range 0 ... 65535 (2^16 - 1) -* `set_fov(fov, is_multiplier)`: Sets player's FOV +* `set_fov(fov, is_multiplier, transition_time)`: Sets player's FOV * `fov`: FOV value. * `is_multiplier`: Set to `true` if the FOV value is a multiplier. Defaults to `false`. - * Set to 0 to clear FOV override. -* `get_fov()`: - * Returns player's FOV override in degrees, and a boolean depending on whether - the value is a multiplier. - * Returns 0 as first value if player's FOV hasn't been overridden. + * `transition_time`: If defined, enables smooth FOV transition. + Interpreted as the time (in seconds) to reach target FOV. + If set to 0, FOV change is instantaneous. Defaults to 0. + * Set `fov` to 0 to clear FOV override. +* `get_fov()`: Returns the following: + * Server-sent FOV value. Returns 0 if an FOV override doesn't exist. + * Boolean indicating whether the FOV value is a multiplier. + * Time (in seconds) taken for the FOV transition. Set by `set_fov`. * `set_attribute(attribute, value)`: DEPRECATED, use get_meta() instead * Sets an extra attribute with value on player. * `value` must be a string, or a number which will be converted to a diff --git a/src/client/camera.cpp b/src/client/camera.cpp index 69bd82a47..1a5253db4 100644 --- a/src/client/camera.cpp +++ b/src/client/camera.cpp @@ -86,6 +86,51 @@ Camera::~Camera() m_wieldmgr->drop(); } +void Camera::notifyFovChange() +{ + LocalPlayer *player = m_client->getEnv().getLocalPlayer(); + assert(player); + + PlayerFovSpec spec = player->getFov(); + + /* + * Update m_old_fov_degrees first - it serves as the starting point of the + * upcoming transition. + * + * If an FOV transition is already active, mark current FOV as the start of + * the new transition. If not, set it to the previous transition's target FOV. + */ + if (m_fov_transition_active) + m_old_fov_degrees = m_curr_fov_degrees; + else + m_old_fov_degrees = m_server_sent_fov ? m_target_fov_degrees : m_cache_fov; + + /* + * Update m_server_sent_fov next - it corresponds to the target FOV of the + * upcoming transition. + * + * Set it to m_cache_fov, if server-sent FOV is 0. Otherwise check if + * server-sent FOV is a multiplier, and multiply it with m_cache_fov instead + * of overriding. + */ + if (spec.fov == 0.0f) { + m_server_sent_fov = false; + m_target_fov_degrees = m_cache_fov; + } else { + m_server_sent_fov = true; + m_target_fov_degrees = spec.is_multiplier ? m_cache_fov * spec.fov : spec.fov; + } + + if (spec.transition_time > 0.0f) + m_fov_transition_active = true; + + // If FOV smooth transition is active, initialize required variables + if (m_fov_transition_active) { + m_transition_time = spec.transition_time; + m_fov_diff = m_target_fov_degrees - m_old_fov_degrees; + } +} + bool Camera::successfullyCreated(std::string &error_message) { if (!m_playernode) { @@ -462,33 +507,38 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r m_camera_position = my_cp; /* - * Apply server-sent FOV. If server doesn't enforce FOV, - * check for zoom and set to zoom FOV. - * Otherwise, default to m_cache_fov + * Apply server-sent FOV, instantaneous or smooth transition. + * If not, check for zoom and set to zoom FOV. + * Otherwise, default to m_cache_fov. */ + if (m_fov_transition_active) { + // Smooth FOV transition + // Dynamically calculate FOV delta based on frametimes + f32 delta = (frametime / m_transition_time) * m_fov_diff; + m_curr_fov_degrees += delta; - f32 fov_degrees; - PlayerFovSpec fov_spec = player->getFov(); - if (fov_spec.fov > 0.0f) { - // If server-sent FOV is a multiplier, multiply - // it with m_cache_fov instead of overriding - if (fov_spec.is_multiplier) - fov_degrees = m_cache_fov * fov_spec.fov; - else - fov_degrees = fov_spec.fov; + // Mark transition as complete if target FOV has been reached + if ((m_fov_diff > 0.0f && m_curr_fov_degrees >= m_target_fov_degrees) || + (m_fov_diff < 0.0f && m_curr_fov_degrees <= m_target_fov_degrees)) { + m_fov_transition_active = false; + m_curr_fov_degrees = m_target_fov_degrees; + } + } else if (m_server_sent_fov) { + // Instantaneous FOV change + m_curr_fov_degrees = m_target_fov_degrees; } else if (player->getPlayerControl().zoom && player->getZoomFOV() > 0.001f) { // Player requests zoom, apply zoom FOV - fov_degrees = player->getZoomFOV(); + m_curr_fov_degrees = player->getZoomFOV(); } else { // Set to client's selected FOV - fov_degrees = m_cache_fov; + m_curr_fov_degrees = m_cache_fov; } - fov_degrees = rangelim(fov_degrees, 1.0f, 160.0f); + m_curr_fov_degrees = rangelim(m_curr_fov_degrees, 1.0f, 160.0f); // FOV and aspect ratio const v2u32 &window_size = RenderingEngine::get_instance()->getWindowSize(); m_aspect = (f32) window_size.X / (f32) window_size.Y; - m_fov_y = fov_degrees * M_PI / 180.0; + m_fov_y = m_curr_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))); m_fov_x = 2 * atan(m_aspect * tan(0.5 * m_fov_y)); diff --git a/src/client/camera.h b/src/client/camera.h index 6ec37fe10..3a59637bc 100644 --- a/src/client/camera.h +++ b/src/client/camera.h @@ -112,6 +112,9 @@ public: return MYMAX(m_fov_x, m_fov_y); } + // Notify about new server-sent FOV and initialize smooth FOV transition + void notifyFovChange(); + // Checks if the constructor was able to create the scene nodes bool successfullyCreated(std::string &error_message); @@ -186,6 +189,9 @@ private: Client *m_client; + // Default Client FOV (as defined by the "fov" setting) + f32 m_cache_fov; + // Absolute camera position v3f m_camera_position; // Absolute camera direction @@ -193,6 +199,14 @@ private: // Camera offset v3s16 m_camera_offset; + // Server-sent FOV variables + bool m_server_sent_fov = false; + f32 m_curr_fov_degrees, m_old_fov_degrees, m_target_fov_degrees; + + // FOV transition variables + bool m_fov_transition_active = false; + f32 m_fov_diff, m_transition_time; + v2f m_wieldmesh_offset = v2f(55.0f, -35.0f); v2f m_arm_dir; v2f m_cam_vel; @@ -230,7 +244,6 @@ private: f32 m_cache_fall_bobbing_amount; f32 m_cache_view_bobbing_amount; - f32 m_cache_fov; bool m_arm_inertia; std::list m_nametags; diff --git a/src/network/clientpackethandler.cpp b/src/network/clientpackethandler.cpp index d19dc3818..6428ed752 100644 --- a/src/network/clientpackethandler.cpp +++ b/src/network/clientpackethandler.cpp @@ -20,6 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "client/client.h" #include "util/base64.h" +#include "client/camera.h" #include "chatmessage.h" #include "client/clientmedia.h" #include "log.h" @@ -530,11 +531,21 @@ void Client::handleCommand_Movement(NetworkPacket* pkt) void Client::handleCommand_Fov(NetworkPacket *pkt) { f32 fov; - bool is_multiplier; + bool is_multiplier = false; + f32 transition_time = 0.0f; + *pkt >> fov >> is_multiplier; + // Wrap transition_time extraction within a + // try-catch to preserve backwards compat + try { + *pkt >> transition_time; + } catch (PacketError &e) {}; + LocalPlayer *player = m_env.getLocalPlayer(); - player->setFov({ fov, is_multiplier }); + assert(player); + player->setFov({ fov, is_multiplier, transition_time }); + m_camera->notifyFovChange(); } void Client::handleCommand_HP(NetworkPacket *pkt) diff --git a/src/network/networkprotocol.h b/src/network/networkprotocol.h index 4b7345b15..73523ea42 100644 --- a/src/network/networkprotocol.h +++ b/src/network/networkprotocol.h @@ -384,8 +384,9 @@ enum ToClientCommand /* Sends an FOV override/multiplier to client. - float fov + f32 fov bool is_multiplier + f32 transition_time */ TOCLIENT_DEATHSCREEN = 0x37, diff --git a/src/player.h b/src/player.h index de7f427e9..3bc7762fa 100644 --- a/src/player.h +++ b/src/player.h @@ -35,7 +35,13 @@ with this program; if not, write to the Free Software Foundation, Inc., struct PlayerFovSpec { f32 fov; + + // Whether to multiply the client's FOV or to override it bool is_multiplier; + + // The time to be take to trasition to the new FOV value. + // Transition is instantaneous if omitted. Omitted by default. + f32 transition_time; }; struct PlayerControl @@ -186,12 +192,12 @@ public: void setFov(const PlayerFovSpec &spec) { - m_fov_spec = spec; + m_fov_override_spec = spec; } const PlayerFovSpec &getFov() const { - return m_fov_spec; + return m_fov_override_spec; } u32 keyPressed = 0; @@ -208,7 +214,7 @@ protected: char m_name[PLAYERNAME_SIZE]; v3f m_speed; u16 m_wield_index = 0; - PlayerFovSpec m_fov_spec = { 0.0f, false }; + PlayerFovSpec m_fov_override_spec = { 0.0f, false, 0.0f }; std::vector hud; private: diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index 77e1e7dc2..dcaee10b2 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -1249,7 +1249,7 @@ int ObjectRef::l_set_look_yaw(lua_State *L) return 1; } -// set_fov(self, degrees[, is_multiplier]) +// set_fov(self, degrees[, is_multiplier, transition_time]) int ObjectRef::l_set_fov(lua_State *L) { NO_MAP_LOCK_REQUIRED; @@ -1258,7 +1258,11 @@ int ObjectRef::l_set_fov(lua_State *L) if (!player) return 0; - player->setFov({ static_cast(luaL_checknumber(L, 2)), readParam(L, 3) }); + player->setFov({ + static_cast(luaL_checknumber(L, 2)), + readParam(L, 3, false), + lua_isnumber(L, 4) ? static_cast(luaL_checknumber(L, 4)) : 0.0f + }); getServer(L)->SendPlayerFov(player->getPeerId()); return 0; @@ -1276,8 +1280,9 @@ int ObjectRef::l_get_fov(lua_State *L) PlayerFovSpec fov_spec = player->getFov(); lua_pushnumber(L, fov_spec.fov); lua_pushboolean(L, fov_spec.is_multiplier); + lua_pushnumber(L, fov_spec.transition_time); - return 2; + return 3; } // set_breath(self, breath) diff --git a/src/server.cpp b/src/server.cpp index a7eb52837..0346d197d 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -1892,10 +1892,10 @@ void Server::SendMovePlayer(session_t peer_id) void Server::SendPlayerFov(session_t peer_id) { - NetworkPacket pkt(TOCLIENT_FOV, 4 + 1, peer_id); + NetworkPacket pkt(TOCLIENT_FOV, 4 + 1 + 4, peer_id); PlayerFovSpec fov_spec = m_env->getPlayer(peer_id)->getFov(); - pkt << fov_spec.fov << fov_spec.is_multiplier; + pkt << fov_spec.fov << fov_spec.is_multiplier << fov_spec.transition_time; Send(&pkt); } From 61d93988d8b44a9905451c4c288e02c04d41abb0 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 2 May 2020 12:52:51 +0200 Subject: [PATCH 162/424] ci: Update Github Actions workflows (#9774) --- .github/workflows/build.yml | 45 ++++++++++++++++++++++------------ .github/workflows/cpp_lint.yml | 9 ++++--- .github/workflows/lua_lint.yml | 2 +- util/ci/build.sh | 2 +- util/ci/clang-tidy.sh | 3 +-- util/ci/common.sh | 16 ------------ 6 files changed, 38 insertions(+), 39 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2c4d3abd1..91ed8fd43 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install compiler + - name: Install deps run: | sudo apt-get install g++-6 gcc-6 -qyy source ./util/ci/common.sh @@ -41,7 +41,8 @@ jobs: run: | ./util/ci/build.sh env: - CMAKE_FLAGS: "-DCMAKE_C_COMPILER=gcc-6 -DCMAKE_CXX_COMPILER=g++-6" + CC: gcc-6 + CXX: g++-6 - name: Test run: | @@ -52,7 +53,7 @@ jobs: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install compiler + - name: Install deps run: | sudo apt-get install g++-8 gcc-8 -qyy source ./util/ci/common.sh @@ -62,7 +63,8 @@ jobs: run: | ./util/ci/build.sh env: - CMAKE_FLAGS: "-DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8" + CC: gcc-8 + CXX: g++-8 - name: Test run: | @@ -73,7 +75,7 @@ jobs: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install compiler + - name: Install deps run: | sudo apt-get install clang-3.9 -qyy source ./util/ci/common.sh @@ -83,7 +85,8 @@ jobs: run: | ./util/ci/build.sh env: - CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-3.9 -DCMAKE_CXX_COMPILER=clang++-3.9" + CC: clang-3.9 + CXX: clang++-3.9 - name: Test run: | @@ -94,7 +97,7 @@ jobs: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install compiler + - name: Install deps run: | sudo apt-get install clang-9 valgrind -qyy source ./util/ci/common.sh @@ -106,7 +109,8 @@ jobs: run: | ./util/ci/build.sh env: - CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9" + CC: clang-9 + CXX: clang++-9 - name: Test run: | @@ -116,12 +120,13 @@ jobs: run: | valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ./bin/minetest --run-unittests - + # Build with prometheus-cpp (server-only) clang_9_prometheus: + name: "clang_9 (PROMETHEUS=1)" runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install compiler + - name: Install deps run: | sudo apt-get install clang-9 -qyy source ./util/ci/common.sh @@ -135,18 +140,21 @@ jobs: run: | ./util/ci/build.sh env: - CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9 -DENABLE_PROMETHEUS=1" + CC: clang-9 + CXX: clang++-9 + CMAKE_FLAGS: "-DENABLE_PROMETHEUS=1 -DBUILD_CLIENT=0" - name: Test run: | - ./bin/minetest --run-unittests + ./bin/minetestserver --run-unittests - # Some builds doesn't require freetype, ensure it compiled properly + # Build without freetype (client-only) clang_9_no_freetype: + name: "clang_9 (FREETYPE=0)" runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install compiler + - name: Install deps run: | sudo apt-get install clang-9 -qyy source ./util/ci/common.sh @@ -156,13 +164,16 @@ jobs: run: | ./util/ci/build.sh env: - CMAKE_FLAGS: "-DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_COMPILER=clang++-9 -DENABLE_FREETYPE=0" + CC: clang-9 + CXX: clang++-9 + CMAKE_FLAGS: "-DENABLE_FREETYPE=0 -DBUILD_SERVER=0" - name: Test run: | ./bin/minetest --run-unittests docker: + name: "Docker image" runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 @@ -171,11 +182,13 @@ jobs: docker build . win32: + name: "MinGW cross-compiler (32-bit)" runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - name: Install compiler run: | + sudo apt-get install gettext -qyy wget http://minetest.kitsunemimi.pw/mingw-w64-i686_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz sudo tar -xaf mingw.tar.xz -C /usr @@ -187,11 +200,13 @@ jobs: NO_PACKAGE: 1 win64: + name: "MinGW cross-compiler (64-bit)" runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - name: Install compiler run: | + sudo apt-get install gettext -qyy wget http://minetest.kitsunemimi.pw/mingw-w64-x86_64_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz sudo tar -xaf mingw.tar.xz -C /usr diff --git a/.github/workflows/cpp_lint.yml b/.github/workflows/cpp_lint.yml index 3044d5186..1f97d105a 100644 --- a/.github/workflows/cpp_lint.yml +++ b/.github/workflows/cpp_lint.yml @@ -30,19 +30,20 @@ jobs: - uses: actions/checkout@v2 - name: Install clang-format run: | - sudo apt-get install ${CLANG_FORMAT} -qyy - env: - CLANG_FORMAT: clang-format-9 + sudo apt-get install clang-format-9 -qyy + - name: Run clang-format run: | source ./util/ci/lint.sh perform_lint + env: + CLANG_FORMAT: clang-format-9 clang_tidy: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - - name: Install clang-tidy + - name: Install deps run: | sudo apt-get install clang-tidy-9 -qyy source ./util/ci/common.sh diff --git a/.github/workflows/lua_lint.yml b/.github/workflows/lua_lint.yml index 1b2c01192..738e5afff 100644 --- a/.github/workflows/lua_lint.yml +++ b/.github/workflows/lua_lint.yml @@ -13,12 +13,12 @@ on: jobs: luacheck: + name: "Builtin Luacheck and Unit Tests" runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - name: Install luarocks run: | - sudo apt-get update -qyy sudo apt-get install luarocks -qyy - name: Install luarocks tools diff --git a/util/ci/build.sh b/util/ci/build.sh index 59069b00a..ba77cd645 100755 --- a/util/ci/build.sh +++ b/util/ci/build.sh @@ -1,4 +1,4 @@ -#! /bin/bash -eu +#! /bin/bash -e mkdir cmakebuild cd cmakebuild diff --git a/util/ci/clang-tidy.sh b/util/ci/clang-tidy.sh index d048f54ee..bb4e99fef 100755 --- a/util/ci/clang-tidy.sh +++ b/util/ci/clang-tidy.sh @@ -5,8 +5,7 @@ cd cmakebuild cmake -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DRUN_IN_PLACE=TRUE \ - -DENABLE_GETTEXT=TRUE \ - -DENABLE_SOUND=FALSE \ + -DENABLE_{GETTEXT,SOUND}=FALSE \ -DBUILD_SERVER=TRUE .. make GenerateVersion diff --git a/util/ci/common.sh b/util/ci/common.sh index 5a4f78457..a2e4beac9 100644 --- a/util/ci/common.sh +++ b/util/ci/common.sh @@ -1,21 +1,5 @@ #!/bin/bash -e -set_linux_compiler_env() { - if [[ "${COMPILER}" == "gcc-6" ]]; then - export CC=gcc-6 - export CXX=g++-6 - elif [[ "${COMPILER}" == "gcc-8" ]]; then - export CC=gcc-8 - export CXX=g++-8 - elif [[ "${COMPILER}" == "clang-3.9" ]]; then - export CC=clang-3.9 - export CXX=clang++-3.9 - elif [[ "${COMPILER}" == "clang-9" ]]; then - export CC=clang-9 - export CXX=clang++-9 - fi -} - # Linux build only install_linux_deps() { local pkgs=(libirrlicht-dev cmake libbz2-dev libpng-dev \ From 808eb4c5714da5ac36f4a70653d6b3805060828c Mon Sep 17 00:00:00 2001 From: Lejo Date: Sat, 2 May 2020 12:57:04 +0200 Subject: [PATCH 163/424] Auto delete MetaData when = 0 (#8770) * Auto delete MetaData when = 0 --- src/script/lua_api/l_metadata.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/script/lua_api/l_metadata.cpp b/src/script/lua_api/l_metadata.cpp index 21002e6a7..61a25a761 100644 --- a/src/script/lua_api/l_metadata.cpp +++ b/src/script/lua_api/l_metadata.cpp @@ -153,7 +153,9 @@ int MetaDataRef::l_set_int(lua_State *L) MetaDataRef *ref = checkobject(L, 1); std::string name = luaL_checkstring(L, 2); int a = luaL_checkint(L, 3); - std::string str = itos(a); + std::string str; + if (a != 0) + str = itos(a); Metadata *meta = ref->getmeta(true); if (meta == NULL || str == meta->getString(name)) @@ -191,7 +193,9 @@ int MetaDataRef::l_set_float(lua_State *L) MetaDataRef *ref = checkobject(L, 1); std::string name = luaL_checkstring(L, 2); float a = readParam(L, 3); - std::string str = ftos(a); + std::string str; + if (a != 0) + str = ftos(a); Metadata *meta = ref->getmeta(true); if (meta == NULL || str == meta->getString(name)) From 5c96f57782d967010f711c3806fdd18caa6e3e32 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 2 May 2020 13:12:02 +0200 Subject: [PATCH 164/424] Add a convention about z_index (#9701) --- doc/lua_api.txt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 44f62f7a7..988acde89 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1310,7 +1310,21 @@ factor! The `z_index` field specifies the order of HUD elements from back to front. Lower z-index elements are displayed behind higher z-index elements. Elements with same z-index are displayed in an arbitrary order. Default 0. -Supports negative values. +Supports negative values. By convention, the following values are recommended: + +* -400: Graphical effects, such as vignette +* -300: Name tags, waypoints +* -200: Wieldhand +* -100: Things that block the player's view, e.g. masks +* 0: Default. For standard in-game HUD elements like crosshair, hotbar, + minimap, builtin statbars, etc. +* 100: Temporary text messages or notification icons +* 1000: Full-screen effects such as full-black screen or credits. + This includes effects that cover the entire screen +* Other: If your HUD element doesn't fit into any category, pick a number + between the suggested values + + Below are the specific uses for fields in each type; fields not listed for that type are ignored. From cb9a44ef8998ff66c00187efc508bf8bd6cc2d67 Mon Sep 17 00:00:00 2001 From: Hugues Ross Date: Sat, 2 May 2020 07:32:02 -0400 Subject: [PATCH 165/424] Add 'content_offset' and 'padding' style properties for buttons (#9661) * Add padding and content_offset style properties to buttons --- doc/lua_api.txt | 6 +++- games/minimal/mods/test/formspec.lua | 3 +- src/gui/StyleSpec.h | 54 ++++++++++++++++++++++++++++ src/gui/guiButton.cpp | 44 +++++++++++++---------- src/gui/guiButton.h | 2 ++ 5 files changed, 88 insertions(+), 21 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 988acde89..1ffb5c39b 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -2697,10 +2697,14 @@ Some types may inherit styles from parent types. * bgimg - standard background image. Defaults to none. * bgimg_hovered - background image when hovered. Defaults to bgimg when not provided. * bgimg_middle - Makes the bgimg textures render in 9-sliced mode and defines the middle rect. - See background9[] documentation for more details + See background9[] documentation for more details. This property also pads the + button's content when set. * bgimg_pressed - background image when pressed. Defaults to bgimg when not provided. * border - boolean, draw border. Set to false to hide the bevelled button pane. Default true. + * content_offset - 2d vector, shifts the position of the button's content without resizing it. * noclip - boolean, set to true to allow the element to exceed formspec bounds. + * padding - rect, adds space between the edges of the button and the content. This value is + relative to bgimg_middle. * textcolor - color, default white. * checkbox * noclip - boolean, set to true to allow the element to exceed formspec bounds. diff --git a/games/minimal/mods/test/formspec.lua b/games/minimal/mods/test/formspec.lua index 4ab4f2717..a5d3074cd 100644 --- a/games/minimal/mods/test/formspec.lua +++ b/games/minimal/mods/test/formspec.lua @@ -95,7 +95,7 @@ local style_fs = [[ style[one_btn13;border=false] item_image_button[1.25,8.35;1,1;default:sword_steel;one_btn13;NoBor] - style[one_btn14;border=false;bgimg=test_bg.png;fgimg=bubble.png] + style[one_btn14;border=false;bgimg=test_bg.png;fgimg=bubble.png;padding=8] style[one_btn14:hovered;bgimg=test_bg_hovered.png;fgimg=default_apple.png;textcolor=red] style[one_btn14:pressed;bgimg=test_bg_pressed.png;fgimg=heart.png;textcolor=green] style[one_btn14:hovered+pressed;textcolor=blue] @@ -105,6 +105,7 @@ local style_fs = [[ item_image_button[1.25,9.6;1,1;default:sword_steel;one_btn15;Bg] style[one_btn16;border=false;bgimg=test_bg_9slice.png;bgimg_hovered=test_bg_9slice_hovered.png;bgimg_pressed=test_bg_9slice_pressed.png;bgimg_middle=4,6] + style[one_btn16:pressed;content_offset=0,1] button[2.5,9.6;2,1;one_btn16;9-Slice Bg] diff --git a/src/gui/StyleSpec.h b/src/gui/StyleSpec.h index 799fbf46d..3e842e826 100644 --- a/src/gui/StyleSpec.h +++ b/src/gui/StyleSpec.h @@ -44,6 +44,8 @@ public: FGIMG_HOVERED, // Note: Deprecated property FGIMG_PRESSED, // Note: Deprecated property ALPHA, + CONTENT_OFFSET, + PADDING, NUM_PROPERTIES, NONE }; @@ -92,6 +94,10 @@ public: return FGIMG_PRESSED; } else if (name == "alpha") { return ALPHA; + } else if (name == "content_offset") { + return CONTENT_OFFSET; + } else if (name == "padding") { + return PADDING; } else { return NONE; } @@ -196,6 +202,29 @@ public: return rect; } + irr::core::vector2d getVector2i(Property prop, irr::core::vector2d def) const + { + const auto &val = properties[prop]; + if (val.empty()) + return def; + + irr::core::vector2d vec; + if (!parseVector2i(val, &vec)) + return def; + + return vec; + } + + irr::core::vector2d getVector2i(Property prop) const + { + const auto &val = properties[prop]; + FATAL_ERROR_IF(val.empty(), "Unexpected missing property"); + + irr::core::vector2d vec; + parseVector2i(val, &vec); + return vec; + } + video::ITexture *getTexture(Property prop, ISimpleTextureSource *tsrc, video::ITexture *def) const { @@ -286,4 +315,29 @@ private: return true; } + + bool parseVector2i(const std::string &value, irr::core::vector2d *parsed_vec) const + { + irr::core::vector2d vec; + std::vector v_vector = split(value, ','); + + if (v_vector.size() == 1) { + s32 x = stoi(v_vector[0]); + vec.X = x; + vec.Y = x; + } else if (v_vector.size() == 2) { + s32 x = stoi(v_vector[0]); + s32 y = stoi(v_vector[1]); + vec.X = x; + vec.Y = y; + } else { + warningstream << "Invalid vector2d string format: \"" << value + << "\"" << std::endl; + return false; + } + + *parsed_vec = vec; + + return true; + } }; diff --git a/src/gui/guiButton.cpp b/src/gui/guiButton.cpp index 9dfe36bc4..ff35958fd 100644 --- a/src/gui/guiButton.cpp +++ b/src/gui/guiButton.cpp @@ -592,25 +592,6 @@ void GUIButton::setPressed(bool pressed) { ClickTime = porting::getTimeMs(); Pressed = pressed; - - GUISkin* skin = dynamic_cast(Environment->getSkin()); - - for(IGUIElement *child : getChildren()) - { - core::rect originalRect = child->getRelativePosition(); - if (Pressed) { - child->setRelativePosition(originalRect + - core::dimension2d( - skin->getSize(irr::gui::EGDS_BUTTON_PRESSED_IMAGE_OFFSET_X), - skin->getSize(irr::gui::EGDS_BUTTON_PRESSED_IMAGE_OFFSET_Y))); - } else { - child->setRelativePosition(originalRect - - core::dimension2d( - skin->getSize(irr::gui::EGDS_BUTTON_PRESSED_IMAGE_OFFSET_X), - skin->getSize(irr::gui::EGDS_BUTTON_PRESSED_IMAGE_OFFSET_Y))); - } - } - setFromState(); } } @@ -819,7 +800,32 @@ void GUIButton::setFromStyle(const StyleSpec& style) } else { setImage(nullptr); } + BgMiddle = style.getRect(StyleSpec::BGIMG_MIDDLE, BgMiddle); + + // Child padding and offset + Padding = style.getRect(StyleSpec::PADDING, core::rect()); + Padding = core::rect( + Padding.UpperLeftCorner + BgMiddle.UpperLeftCorner, + Padding.LowerRightCorner + BgMiddle.LowerRightCorner); + + GUISkin* skin = dynamic_cast(Environment->getSkin()); + core::vector2d defaultPressOffset( + skin->getSize(irr::gui::EGDS_BUTTON_PRESSED_IMAGE_OFFSET_X), + skin->getSize(irr::gui::EGDS_BUTTON_PRESSED_IMAGE_OFFSET_Y)); + ContentOffset = style.getVector2i(StyleSpec::CONTENT_OFFSET, isPressed() + ? defaultPressOffset + : core::vector2d(0)); + + core::rect childBounds( + Padding.UpperLeftCorner.X + ContentOffset.X, + Padding.UpperLeftCorner.Y + ContentOffset.Y, + AbsoluteRect.getWidth() + Padding.LowerRightCorner.X + ContentOffset.X, + AbsoluteRect.getHeight() + Padding.LowerRightCorner.Y + ContentOffset.Y); + + for (IGUIElement *child : getChildren()) { + child->setRelativePosition(childBounds); + } } //! Set the styles used for each state diff --git a/src/gui/guiButton.h b/src/gui/guiButton.h index ef10f926e..95fa1a2a1 100644 --- a/src/gui/guiButton.h +++ b/src/gui/guiButton.h @@ -336,5 +336,7 @@ private: gui::IGUIStaticText *StaticText; core::rect BgMiddle; + core::rect Padding; + core::vector2d ContentOffset; // END PATCH }; From 66c182531cf7ef06c98a25b4e12db770314bdc91 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 4 May 2020 08:45:31 +0200 Subject: [PATCH 166/424] Change default keys for cam/minimap to C/V (#9779) --- README.md | 6 +++--- builtin/settingtypes.txt | 4 ++-- src/defaultsettings.cpp | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 024e7b691..202ba4fe2 100644 --- a/README.md +++ b/README.md @@ -69,15 +69,15 @@ Some can be changed in the key config dialog in the settings tab. | J | Enable/disable fast mode (needs fast privilege) | | H | Enable/disable noclip mode (needs noclip privilege) | | E | Move fast in fast mode | +| C | Cycle through camera modes | +| V | Cycle through minimap modes | +| Shift + V | Change minimap orientation | | F1 | Hide/show HUD | | F2 | Hide/show chat | | F3 | Disable/enable fog | | F4 | Disable/enable camera update (Mapblocks are not updated anymore when disabled, disabled in release builds) | | F5 | Cycle through debug information screens | | F6 | Cycle through profiler info screens | -| F7 | Cycle through camera modes | -| F9 | Cycle through minimap modes | -| Shift + F9 | Change minimap orientation | | F10 | Show/hide console | | F12 | Take screenshot | diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 165ed8c06..c983fb436 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -252,7 +252,7 @@ keymap_cinematic (Cinematic mode key) key # Key for toggling display of minimap. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 -keymap_minimap (Minimap key) key KEY_F9 +keymap_minimap (Minimap key) key KEY_KEY_V # Key for taking screenshots. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 @@ -424,7 +424,7 @@ keymap_toggle_profiler (Profiler toggle key) key KEY_F6 # Key for switching between first- and third-person camera. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 -keymap_camera_mode (Toggle camera mode key) key KEY_F7 +keymap_camera_mode (Toggle camera mode key) key KEY_KEY_C # Key for increasing the viewing range. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 06daa3b94..33654e213 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -80,7 +80,7 @@ void set_default_settings(Settings *settings) settings->setDefault("keymap_chat", "KEY_KEY_T"); settings->setDefault("keymap_cmd", "/"); settings->setDefault("keymap_cmd_local", "."); - settings->setDefault("keymap_minimap", "KEY_F9"); + settings->setDefault("keymap_minimap", "KEY_KEY_V"); settings->setDefault("keymap_console", "KEY_F10"); settings->setDefault("keymap_rangeselect", "KEY_KEY_R"); settings->setDefault("keymap_freemove", "KEY_KEY_K"); @@ -103,7 +103,7 @@ void set_default_settings(Settings *settings) #endif settings->setDefault("keymap_toggle_debug", "KEY_F5"); settings->setDefault("keymap_toggle_profiler", "KEY_F6"); - settings->setDefault("keymap_camera_mode", "KEY_F7"); + settings->setDefault("keymap_camera_mode", "KEY_KEY_C"); settings->setDefault("keymap_screenshot", "KEY_F12"); settings->setDefault("keymap_increase_viewing_range_min", "+"); settings->setDefault("keymap_decrease_viewing_range_min", "-"); From 373bad16c089cd23448e8ce20b474e8fcf5b0c8b Mon Sep 17 00:00:00 2001 From: Maksim Date: Mon, 4 May 2020 08:47:00 +0200 Subject: [PATCH 167/424] Android: some java-part improvements (#9760) Replace Log to Toast. Start Native only after successful unpacking. Light refactoring in CopyZipTask. Update NDK version. Co-authored-by: ubulem --- build/android/app/build.gradle | 5 ++--- build/android/app/src/main/AndroidManifest.xml | 7 +++++++ .../java/net/minetest/minetest/CopyZipTask.java | 15 ++++----------- .../java/net/minetest/minetest/MainActivity.java | 13 ++++++++++--- .../java/net/minetest/minetest/UnzipService.java | 15 ++++++++------- build/android/native/build.gradle | 2 +- 6 files changed, 32 insertions(+), 25 deletions(-) diff --git a/build/android/app/build.gradle b/build/android/app/build.gradle index 9d14cdab8..00b8806bf 100644 --- a/build/android/app/build.gradle +++ b/build/android/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' android { compileSdkVersion 29 buildToolsVersion '29.0.3' - ndkVersion '21.0.6113669' + ndkVersion '21.1.6352462' defaultConfig { applicationId 'net.minetest.minetest' minSdkVersion 16 - //noinspection OldTargetApi - targetSdkVersion 28 // Workaround for using `/sdcard` instead of the `data` patch for assets + targetSdkVersion 29 versionName "${versionMajor}.${versionMinor}.${versionPatch}" versionCode project.versionCode } diff --git a/build/android/app/src/main/AndroidManifest.xml b/build/android/app/src/main/AndroidManifest.xml index 3a5342751..aa5af110e 100644 --- a/build/android/app/src/main/AndroidManifest.xml +++ b/build/android/app/src/main/AndroidManifest.xml @@ -7,11 +7,18 @@ + + { } protected String doInBackground(String... params) { - copyAssets(params); + copyAsset(params[0]); return params[0]; } @@ -49,20 +49,13 @@ public class CopyZipTask extends AsyncTask { startUnzipService(result); } - private void copyAsset(String zipName) throws IOException { + private void copyAsset(String zipName) { String filename = zipName.substring(zipName.lastIndexOf("/") + 1); try (InputStream in = contextRef.get().getAssets().open(filename); OutputStream out = new FileOutputStream(zipName)) { copyFile(in, out); - } - } - - private void copyAssets(String[] zips) { - try { - for (String zipName : zips) - copyAsset(zipName); } catch (IOException e) { - Log.e("CopyZipTask", e.getLocalizedMessage()); + Toast.makeText(contextRef.get(), e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); cancel(true); } } diff --git a/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java b/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java index f37ae6d4b..1e60beb55 100644 --- a/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java +++ b/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java @@ -43,6 +43,11 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static net.minetest.minetest.UnzipService.ACTION_PROGRESS; +import static net.minetest.minetest.UnzipService.ACTION_UPDATE; +import static net.minetest.minetest.UnzipService.FAILURE; +import static net.minetest.minetest.UnzipService.SUCCESS; + public class MainActivity extends AppCompatActivity { private final static int versionCode = BuildConfig.VERSION_CODE; private final static int PERMISSIONS = 1; @@ -58,14 +63,16 @@ public class MainActivity extends AppCompatActivity { public void onReceive(Context context, Intent intent) { int progress = 0; if (intent != null) - progress = intent.getIntExtra(UnzipService.ACTION_PROGRESS, 0); + progress = intent.getIntExtra(ACTION_PROGRESS, 0); if (progress >= 0) { if (mProgressBar != null) { mProgressBar.setVisibility(View.VISIBLE); mProgressBar.setProgress(progress); } mTextView.setVisibility(View.VISIBLE); - } else + } else if (progress == FAILURE) { + finish(); + } else if (progress == SUCCESS) startNative(); } }; @@ -74,7 +81,7 @@ public class MainActivity extends AppCompatActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - IntentFilter filter = new IntentFilter(UnzipService.ACTION_UPDATE); + IntentFilter filter = new IntentFilter(ACTION_UPDATE); registerReceiver(myReceiver, filter); mProgressBar = findViewById(R.id.progressBar); mTextView = findViewById(R.id.textView); diff --git a/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java b/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java index ac9116994..6356dff19 100644 --- a/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java +++ b/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java @@ -28,11 +28,10 @@ import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.Environment; -import android.util.Log; +import android.widget.Toast; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -44,9 +43,12 @@ public class UnzipService extends IntentService { public static final String ACTION_UPDATE = "net.minetest.minetest.UPDATE"; public static final String ACTION_PROGRESS = "net.minetest.minetest.PROGRESS"; public static final String EXTRA_KEY_IN_FILE = "file"; + public static final int SUCCESS = -1; + public static final int FAILURE = -2; private static final String TAG = "UnzipService"; private final int id = 1; private NotificationManager mNotifyManager; + private boolean isSuccess = true; public UnzipService() { super("net.minetest.minetest.UnzipService"); @@ -120,10 +122,9 @@ public class UnzipService extends IntentService { } zipFile.delete(); } - } catch (FileNotFoundException e) { - Log.e(TAG, e.getLocalizedMessage()); } catch (IOException e) { - Log.e(TAG, e.getLocalizedMessage()); + isSuccess = false; + Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); } } @@ -139,7 +140,7 @@ public class UnzipService extends IntentService { ZipFile zipSize = new ZipFile(zip); size += zipSize.size(); } catch (IOException e) { - Log.e(TAG, e.getLocalizedMessage()); + Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); } return size; } @@ -148,6 +149,6 @@ public class UnzipService extends IntentService { public void onDestroy() { super.onDestroy(); mNotifyManager.cancel(id); - publishProgress(-1); + publishProgress(isSuccess ? SUCCESS : FAILURE); } } diff --git a/build/android/native/build.gradle b/build/android/native/build.gradle index f06e4e3f0..cbd50db6a 100644 --- a/build/android/native/build.gradle +++ b/build/android/native/build.gradle @@ -4,7 +4,7 @@ import org.ajoberstar.grgit.Grgit android { compileSdkVersion 29 buildToolsVersion '29.0.3' - ndkVersion '21.0.6113669' + ndkVersion '21.1.6352462' defaultConfig { minSdkVersion 16 targetSdkVersion 29 From 3ed5619d9a9e08031a749b8b4f5a3d1bc0e77608 Mon Sep 17 00:00:00 2001 From: oilboi <47129783+oilboi@users.noreply.github.com> Date: Tue, 5 May 2020 02:35:55 -0400 Subject: [PATCH 168/424] Fix small typo (#9813) --- doc/client_lua_api.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/client_lua_api.txt b/doc/client_lua_api.txt index 53ed680d0..53442d308 100644 --- a/doc/client_lua_api.txt +++ b/doc/client_lua_api.txt @@ -112,7 +112,7 @@ The main Lua script. Running this script should register everything it wants to register. Subsequent execution depends on minetest calling the registered callbacks. -**NOTE**: Client mods currently can't provide and textures, sounds or models by +**NOTE**: Client mods currently can't provide textures, sounds, or models by themselves. Any media referenced in function calls must already be loaded (provided by mods that exist on the server). From 1b6f40c35632ab5a2066822c8b5d4c09d469f49d Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Mon, 4 May 2020 20:02:33 +0200 Subject: [PATCH 169/424] Rename moveresult speed to velocity --- doc/lua_api.txt | 4 ++-- src/script/common/c_content.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 1ffb5c39b..b1099ec59 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -6632,8 +6632,8 @@ Collision info passed to `on_step`: type = string, -- "node" or "object", axis = string, -- "x", "y" or "z" node_pos = vector, -- if type is "node" - old_speed = vector, - new_speed = vector, + old_velocity = vector, + new_velocity = vector, }, ... } diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index 6ff642738..95364000c 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -2046,10 +2046,10 @@ void push_collision_move_result(lua_State *L, const collisionMoveResult &res) } push_v3f(L, c.old_speed / BS); - lua_setfield(L, -2, "old_speed"); + lua_setfield(L, -2, "old_velocity"); push_v3f(L, c.new_speed / BS); - lua_setfield(L, -2, "new_speed"); + lua_setfield(L, -2, "new_velocity"); lua_rawseti(L, -2, i++); } From cad5b987ad4720bd6a49d3604be9e81ea348f799 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Mon, 4 May 2020 20:19:12 +0200 Subject: [PATCH 170/424] Sky API: Rename *_tint to fog_*_tint for consistency --- src/client/game.cpp | 12 ++++++------ src/client/sky.cpp | 12 ++++++------ src/network/clientpackethandler.cpp | 8 ++++---- src/network/networkprotocol.h | 6 +++--- src/remoteplayer.cpp | 6 +++--- src/script/lua_api/l_object.cpp | 22 +++++++++++----------- src/server.cpp | 4 ++-- src/skyparams.h | 6 +++--- 8 files changed, 38 insertions(+), 38 deletions(-) diff --git a/src/client/game.cpp b/src/client/game.cpp index 3bdac786c..d1eb3bba2 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -2799,9 +2799,9 @@ void Game::handleClientEvent_SetSky(ClientEvent *event, CameraOrientation *cam) // Update mesh based skybox colours if applicable. sky->setSkyColors(*event->set_sky); sky->setHorizonTint( - event->set_sky->sun_tint, - event->set_sky->moon_tint, - event->set_sky->tint_type + event->set_sky->fog_sun_tint, + event->set_sky->fog_moon_tint, + event->set_sky->fog_tint_type ); } else if (event->set_sky->type == "skybox" && event->set_sky->textures.size() == 6) { @@ -2811,9 +2811,9 @@ void Game::handleClientEvent_SetSky(ClientEvent *event, CameraOrientation *cam) sky->setFallbackBgColor(event->set_sky->bgcolor); // Set sunrise and sunset fog tinting: sky->setHorizonTint( - event->set_sky->sun_tint, - event->set_sky->moon_tint, - event->set_sky->tint_type + event->set_sky->fog_sun_tint, + event->set_sky->fog_moon_tint, + event->set_sky->fog_tint_type ); // Add textures to skybox. for (int i = 0; i < 6; i++) diff --git a/src/client/sky.cpp b/src/client/sky.cpp index 7a7b188ce..ce33b96ae 100644 --- a/src/client/sky.cpp +++ b/src/client/sky.cpp @@ -529,7 +529,7 @@ void Sky::update(float time_of_day, float time_brightness, pointcolor_sun_f.g = pointcolor_light * (float)m_materials[3].EmissiveColor.getGreen() / 255; } else if (!m_default_tint) { - pointcolor_sun_f = m_sky_params.sun_tint; + pointcolor_sun_f = m_sky_params.fog_sun_tint; } else { pointcolor_sun_f.r = pointcolor_light * 1; pointcolor_sun_f.b = pointcolor_light * @@ -548,9 +548,9 @@ void Sky::update(float time_of_day, float time_brightness, ); } else { pointcolor_moon_f = video::SColorf( - (m_sky_params.moon_tint.getRed() / 255) * pointcolor_light, - (m_sky_params.moon_tint.getGreen() / 255) * pointcolor_light, - (m_sky_params.moon_tint.getBlue() / 255) * pointcolor_light, + (m_sky_params.fog_moon_tint.getRed() / 255) * pointcolor_light, + (m_sky_params.fog_moon_tint.getGreen() / 255) * pointcolor_light, + (m_sky_params.fog_moon_tint.getBlue() / 255) * pointcolor_light, 1 ); } @@ -941,8 +941,8 @@ void Sky::setHorizonTint(video::SColor sun_tint, video::SColor moon_tint, std::string use_sun_tint) { // Change sun and moon tinting: - m_sky_params.sun_tint = sun_tint; - m_sky_params.moon_tint = moon_tint; + m_sky_params.fog_sun_tint = sun_tint; + m_sky_params.fog_moon_tint = moon_tint; // Faster than comparing strings every rendering frame if (use_sun_tint == "default") m_default_tint = true; diff --git a/src/network/clientpackethandler.cpp b/src/network/clientpackethandler.cpp index 6428ed752..8d0225a3d 100644 --- a/src/network/clientpackethandler.cpp +++ b/src/network/clientpackethandler.cpp @@ -1276,9 +1276,9 @@ void Client::handleCommand_HudSetSky(NetworkPacket* pkt) // Fix for "regular" skies, as color isn't kept: if (skybox.type == "regular") { skybox.sky_color = sky_defaults.getSkyColorDefaults(); - skybox.tint_type = "default"; - skybox.moon_tint = video::SColor(255, 255, 255, 255); - skybox.sun_tint = video::SColor(255, 255, 255, 255); + skybox.fog_tint_type = "default"; + skybox.fog_moon_tint = video::SColor(255, 255, 255, 255); + skybox.fog_sun_tint = video::SColor(255, 255, 255, 255); } else { sun.visible = false; @@ -1313,7 +1313,7 @@ void Client::handleCommand_HudSetSky(NetworkPacket* pkt) std::string texture; *pkt >> skybox.bgcolor >> skybox.type >> skybox.clouds >> - skybox.sun_tint >> skybox.moon_tint >> skybox.tint_type; + skybox.fog_sun_tint >> skybox.fog_moon_tint >> skybox.fog_tint_type; if (skybox.type == "skybox") { *pkt >> texture_count; diff --git a/src/network/networkprotocol.h b/src/network/networkprotocol.h index 73523ea42..527ebba7c 100644 --- a/src/network/networkprotocol.h +++ b/src/network/networkprotocol.h @@ -634,9 +634,9 @@ enum ToClientCommand u8[4] night_sky (ARGB) u8[4] night_horizon (ARGB) u8[4] indoors (ARGB) - u8[4] sun_tint (ARGB) - u8[4] moon_tint (ARGB) - std::string tint_type + u8[4] fog_sun_tint (ARGB) + u8[4] fog_moon_tint (ARGB) + std::string fog_tint_type */ TOCLIENT_OVERRIDE_DAY_NIGHT_RATIO = 0x50, diff --git a/src/remoteplayer.cpp b/src/remoteplayer.cpp index 7a603d53e..bef60c792 100644 --- a/src/remoteplayer.cpp +++ b/src/remoteplayer.cpp @@ -74,9 +74,9 @@ RemotePlayer::RemotePlayer(const char *name, IItemDefManager *idef): m_skybox_params.sky_color = sky_defaults.getSkyColorDefaults(); m_skybox_params.type = "regular"; m_skybox_params.clouds = true; - m_skybox_params.sun_tint = video::SColor(255, 244, 125, 29); - m_skybox_params.moon_tint = video::SColorf(0.5, 0.6, 0.8, 1).toSColor(); - m_skybox_params.tint_type = "default"; + m_skybox_params.fog_sun_tint = video::SColor(255, 244, 125, 29); + m_skybox_params.fog_moon_tint = video::SColorf(0.5, 0.6, 0.8, 1).toSColor(); + m_skybox_params.fog_tint_type = "default"; m_sun_params = sky_defaults.getSunDefaults(); m_moon_params = sky_defaults.getMoonDefaults(); diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index dcaee10b2..f71130378 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -1782,19 +1782,19 @@ int ObjectRef::l_set_sky(lua_State *L) lua_pop(L, 1); // Prevent flickering clouds at dawn/dusk: - skybox_params.sun_tint = video::SColor(255, 255, 255, 255); + skybox_params.fog_sun_tint = video::SColor(255, 255, 255, 255); lua_getfield(L, -1, "fog_sun_tint"); - read_color(L, -1, &skybox_params.sun_tint); + read_color(L, -1, &skybox_params.fog_sun_tint); lua_pop(L, 1); - skybox_params.moon_tint = video::SColor(255, 255, 255, 255); + skybox_params.fog_moon_tint = video::SColor(255, 255, 255, 255); lua_getfield(L, -1, "fog_moon_tint"); - read_color(L, -1, &skybox_params.moon_tint); + read_color(L, -1, &skybox_params.fog_moon_tint); lua_pop(L, 1); lua_getfield(L, -1, "fog_tint_type"); if (!lua_isnil(L, -1)) - skybox_params.tint_type = luaL_checkstring(L, -1); + skybox_params.fog_tint_type = luaL_checkstring(L, -1); lua_pop(L, 1); // Because we need to leave the "sky_color" table. @@ -1912,12 +1912,12 @@ int ObjectRef::l_get_sky_color(lua_State *L) push_ARGB8(L, skybox_params.sky_color.indoors); lua_setfield(L, -2, "indoors"); } - push_ARGB8(L, skybox_params.sun_tint); - lua_setfield(L, -2, "sun_tint"); - push_ARGB8(L, skybox_params.moon_tint); - lua_setfield(L, -2, "moon_tint"); - lua_pushstring(L, skybox_params.tint_type.c_str()); - lua_setfield(L, -2, "tint_type"); + push_ARGB8(L, skybox_params.fog_sun_tint); + lua_setfield(L, -2, "fog_sun_tint"); + push_ARGB8(L, skybox_params.fog_moon_tint); + lua_setfield(L, -2, "fog_moon_tint"); + lua_pushstring(L, skybox_params.fog_tint_type.c_str()); + lua_setfield(L, -2, "fog_tint_type"); return 1; } diff --git a/src/server.cpp b/src/server.cpp index 0346d197d..05584be2d 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -1770,8 +1770,8 @@ void Server::SendSetSky(session_t peer_id, const SkyboxParams ¶ms) pkt << params.clouds; } else { // Handle current clients and future clients pkt << params.bgcolor << params.type - << params.clouds << params.sun_tint - << params.moon_tint << params.tint_type; + << params.clouds << params.fog_sun_tint + << params.fog_moon_tint << params.fog_tint_type; if (params.type == "skybox") { pkt << (u16) params.textures.size(); diff --git a/src/skyparams.h b/src/skyparams.h index 9fdfd89da..c362ef8f3 100644 --- a/src/skyparams.h +++ b/src/skyparams.h @@ -37,9 +37,9 @@ struct SkyboxParams std::vector textures; bool clouds; SkyColor sky_color; - video::SColor sun_tint; - video::SColor moon_tint; - std::string tint_type; + video::SColor fog_sun_tint; + video::SColor fog_moon_tint; + std::string fog_tint_type; }; struct SunParams From f1a05d0f71d69641fd954daf68d13acad91114f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Tue, 5 May 2020 08:38:18 +0200 Subject: [PATCH 171/424] Fix broken client if openal cannot be opened (#9804) --- src/client/clientlauncher.cpp | 2 +- src/client/game.cpp | 2 +- src/client/sound_openal.cpp | 33 +++++++++++++++++++++++++-------- src/gui/guiEngine.cpp | 4 ++-- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/client/clientlauncher.cpp b/src/client/clientlauncher.cpp index 2a9d6097f..f18915a55 100644 --- a/src/client/clientlauncher.cpp +++ b/src/client/clientlauncher.cpp @@ -105,7 +105,7 @@ bool ClientLauncher::run(GameParams &game_params, const Settings &cmd_args) } RenderingEngine::get_instance()->setupTopLevelWindow(PROJECT_NAME_C); - + /* This changes the minimum allowed number of vertices in a VBO. Default is 500. diff --git a/src/client/game.cpp b/src/client/game.cpp index d1eb3bba2..1577a37db 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -1249,7 +1249,7 @@ bool Game::init( bool Game::initSound() { #if USE_SOUND - if (g_settings->getBool("enable_sound")) { + if (g_settings->getBool("enable_sound") && g_sound_manager_singleton.get()) { infostream << "Attempting to use OpenAL audio" << std::endl; sound = createOpenALSoundManager(g_sound_manager_singleton.get(), &soundfetcher); if (!sound) diff --git a/src/client/sound_openal.cpp b/src/client/sound_openal.cpp index d0f935a7a..20a651c1d 100644 --- a/src/client/sound_openal.cpp +++ b/src/client/sound_openal.cpp @@ -275,25 +275,38 @@ public: m_device(nullptr, delete_alcdevice), m_context(nullptr, delete_alccontext) { - if (!(m_device = unique_ptr_alcdevice(alcOpenDevice(nullptr), delete_alcdevice))) - throw std::runtime_error("Audio: Global Initialization: Device Open"); + } + + bool init() + { + if (!(m_device = unique_ptr_alcdevice(alcOpenDevice(nullptr), delete_alcdevice))) { + errorstream << "Audio: Global Initialization: Failed to open device" << std::endl; + return false; + } if (!(m_context = unique_ptr_alccontext( alcCreateContext(m_device.get(), nullptr), delete_alccontext))) { - throw std::runtime_error("Audio: Global Initialization: Context Create"); + errorstream << "Audio: Global Initialization: Failed to create context" << std::endl; + return false; } - if (!alcMakeContextCurrent(m_context.get())) - throw std::runtime_error("Audio: Global Initialization: Context Current"); + if (!alcMakeContextCurrent(m_context.get())) { + errorstream << "Audio: Global Initialization: Failed to make current context" << std::endl; + return false; + } alDistanceModel(AL_INVERSE_DISTANCE_CLAMPED); - if (alGetError() != AL_NO_ERROR) - throw std::runtime_error("Audio: Global Initialization: OpenAL Error"); + if (alGetError() != AL_NO_ERROR) { + errorstream << "Audio: Global Initialization: OpenAL Error " << alGetError() << std::endl; + return false; + } infostream << "Audio: Global Initialized: OpenAL " << alGetString(AL_VERSION) << ", using " << alcGetString(m_device.get(), ALC_DEVICE_SPECIFIER) << std::endl; + + return true; } ~SoundManagerSingleton() @@ -682,7 +695,11 @@ public: std::shared_ptr createSoundManagerSingleton() { - return std::shared_ptr(new SoundManagerSingleton()); + auto smg = std::make_shared(); + if (!smg->init()) { + smg.reset(); + } + return smg; } ISoundManager *createOpenALSoundManager(SoundManagerSingleton *smg, OnDemandSoundFetcher *fetcher) diff --git a/src/gui/guiEngine.cpp b/src/gui/guiEngine.cpp index 3107d64cd..b40707d01 100644 --- a/src/gui/guiEngine.cpp +++ b/src/gui/guiEngine.cpp @@ -144,10 +144,10 @@ GUIEngine::GUIEngine(JoystickController *joystick, //create soundmanager MenuMusicFetcher soundfetcher; #if USE_SOUND - if (g_settings->getBool("enable_sound")) + if (g_settings->getBool("enable_sound") && g_sound_manager_singleton.get()) m_sound_manager = createOpenALSoundManager(g_sound_manager_singleton.get(), &soundfetcher); #endif - if(!m_sound_manager) + if (!m_sound_manager) m_sound_manager = &dummySoundManager; //create topleft header From f34c62c47f525c54c8496d96140c8631d8fa5d47 Mon Sep 17 00:00:00 2001 From: adrido Date: Tue, 5 May 2020 08:42:55 +0200 Subject: [PATCH 172/424] Add MSVC build (#9740) * Add MSVC build --- .github/workflows/build.yml | 70 +++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 91ed8fd43..4def50925 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -216,3 +216,73 @@ jobs: env: NO_MINETEST_GAME: 1 NO_PACKAGE: 1 + + msvc: + name: VS 2019 ${{ matrix.config.arch }}-${{ matrix.type }} + runs-on: windows-2019 + env: + VCPKG_VERSION: c7ab9d3110813979a873b2dbac630a9ab79850dc +# 2020.04 + vcpkg_packages: irrlicht zlib curl[winssl] openal-soft libvorbis libogg sqlite3 freetype luajit + strategy: + fail-fast: false + matrix: + config: + - { + arch: x86, + generator: "-G'Visual Studio 16 2019' -A Win32", + vcpkg_triplet: x86-windows + } + - { + arch: x64, + generator: "-G'Visual Studio 16 2019' -A x64", + vcpkg_triplet: x64-windows + } + type: [portable] +# type: [portable, installer] +# The installer type is working, but disabled, to save runner jobs. +# Enable it, when working on the installer. + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Restore from cache and run vcpkg + uses: lukka/run-vcpkg@v2 + with: + vcpkgArguments: ${{env.vcpkg_packages}} + vcpkgDirectory: '${{ github.workspace }}\vcpkg' + appendedCacheKey: ${{ matrix.config.vcpkg_triplet }} + vcpkgGitCommitId: ${{ env.VCPKG_VERSION }} + vcpkgTriplet: ${{ matrix.config.vcpkg_triplet }} + + - name: CMake + run: | + cmake ${{matrix.config.generator}} ` + -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}\vcpkg\scripts\buildsystems\vcpkg.cmake" ` + -DCMAKE_BUILD_TYPE=Release ` + -DRUN_IN_PLACE=${{ contains(matrix.type, 'portable') }} . + + - name: Build + run: cmake --build . --config Release + + - name: CPack + run: | + If ($env:TYPE -eq "installer") + { + cpack -G WIX -B "$env:GITHUB_WORKSPACE\Package" + } + ElseIf($env:TYPE -eq "portable") + { + cpack -G ZIP -B "$env:GITHUB_WORKSPACE\Package" + } + env: + TYPE: ${{matrix.type}} + + - name: Package Clean + run: rm -r $env:GITHUB_WORKSPACE\Package\_CPack_Packages + + - uses: actions/upload-artifact@v1 + with: + name: msvc-${{ matrix.config.arch }}-${{ matrix.type }} + path: .\Package\ From d1c6cc72cce7e02dcaca7797b463d071d67d27db Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 5 May 2020 17:05:11 +0200 Subject: [PATCH 173/424] Server: Improve some log messages (#9820) --- src/network/serverpackethandler.cpp | 16 +++++++--------- src/server/player_sao.cpp | 6 +++--- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index 5136eb0ec..adaa9a965 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -111,8 +111,6 @@ void Server::handleCommand_Init(NetworkPacket* pkt) if (depl_serial_v == SER_FMT_VER_INVALID) { actionstream << "Server: A mismatched client tried to connect from " << - addr_s << std::endl; - infostream << "Server: Cannot negotiate serialization version with " << addr_s << " client_max=" << (int)client_max << std::endl; DenyAccess(peer_id, SERVER_ACCESSDENIED_WRONG_VERSION); return; @@ -902,8 +900,8 @@ bool Server::checkInteractDistance(RemotePlayer *player, const f32 d, const std: actionstream << "Player " << player->getName() << " tried to access " << what << " from too far: " - << "d=" << d <<", max_d=" << max_d - << ". ignoring." << std::endl; + << "d=" << d << ", max_d=" << max_d + << "; ignoring." << std::endl; // Call callbacks m_script->on_cheat(player->getPlayerSAO(), "interacted_too_far"); return false; @@ -956,7 +954,7 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) } if (playersao->isDead()) { - actionstream << "Server: NoCheat: " << player->getName() + actionstream << "Server: " << player->getName() << " tried to interact while dead; ignoring." << std::endl; if (pointed.type == POINTEDTHING_NODE) { // Re-send block to revert change on client-side @@ -1145,7 +1143,7 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) playersao->noCheatDigEnd(); // If player didn't start digging this, ignore dig if (nocheat_p != p_under) { - infostream << "Server: NoCheat: " << player->getName() + infostream << "Server: " << player->getName() << " started digging " << PP(nocheat_p) << " and completed digging " << PP(p_under) << "; not digging." << std::endl; @@ -1169,9 +1167,9 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) } // If can't dig, ignore dig if (!params.diggable) { - infostream << "Server: NoCheat: " << player->getName() + infostream << "Server: " << player->getName() << " completed digging " << PP(p_under) - << ", which is not diggable with tool. not digging." + << ", which is not diggable with tool; not digging." << std::endl; is_valid_dig = false; // Call callbacks @@ -1195,7 +1193,7 @@ void Server::handleCommand_Interact(NetworkPacket *pkt) } // Dig not possible else { - infostream << "Server: NoCheat: " << player->getName() + infostream << "Server: " << player->getName() << " completed digging " << PP(p_under) << "too fast; not digging." << std::endl; is_valid_dig = false; diff --git a/src/server/player_sao.cpp b/src/server/player_sao.cpp index 58fcea5fe..a4d0f4ce7 100644 --- a/src/server/player_sao.cpp +++ b/src/server/player_sao.cpp @@ -656,9 +656,9 @@ bool PlayerSAO::checkMovementCheat() float lag_pool_max = m_env->getMaxLagEstimate() * 2.0; lag_pool_max = MYMAX(lag_pool_max, LAG_POOL_MIN); if (m_time_from_last_teleport > lag_pool_max) { - actionstream << "Player " << m_player->getName() - << " moved too fast; resetting position" - << std::endl; + actionstream << "Server: " << m_player->getName() + << " moved too fast: V=" << d_vert << ", H=" << d_horiz + << "; resetting position." << std::endl; cheated = true; } setBasePosition(m_last_good_position); From 2062c80e21b657fed8e68aa48523fa12ad5ef095 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 9 Apr 2020 23:40:12 +0200 Subject: [PATCH 174/424] Allow ObjDefManager instances to be cloned --- src/mapgen/mg_biome.cpp | 45 +++++++++++++++++ src/mapgen/mg_biome.h | 6 +++ src/mapgen/mg_decoration.cpp | 55 ++++++++++++++++++++ src/mapgen/mg_decoration.h | 12 +++++ src/mapgen/mg_ore.cpp | 97 ++++++++++++++++++++++++++++++++++++ src/mapgen/mg_ore.h | 20 ++++++++ src/mapgen/mg_schematic.cpp | 8 ++- src/mapgen/mg_schematic.h | 4 ++ src/nodedef.cpp | 12 +++++ src/nodedef.h | 3 ++ src/objdef.cpp | 19 +++++++ src/objdef.h | 18 +++++++ src/unittest/test_objdef.cpp | 76 ++++++++++++++++++++++++++-- 13 files changed, 370 insertions(+), 5 deletions(-) diff --git a/src/mapgen/mg_biome.cpp b/src/mapgen/mg_biome.cpp index 345bc8c6a..3a72c43bf 100644 --- a/src/mapgen/mg_biome.cpp +++ b/src/mapgen/mg_biome.cpp @@ -92,6 +92,16 @@ void BiomeManager::clear() } +BiomeManager *BiomeManager::clone() const +{ + auto mgr = new BiomeManager(); + assert(mgr); + ObjDefManager::cloneTo(mgr); + mgr->m_server = m_server; + return mgr; +} + + // For BiomeGen type 'BiomeGenOriginal' float BiomeManager::getHeatAtPosOriginal(v3s16 pos, NoiseParams &np_heat, NoiseParams &np_heat_blend, u64 seed) @@ -321,6 +331,41 @@ Biome *BiomeGenOriginal::calcBiomeFromNoise(float heat, float humidity, v3s16 po //////////////////////////////////////////////////////////////////////////////// +ObjDef *Biome::clone() const +{ + auto obj = new Biome(); + ObjDef::cloneTo(obj); + NodeResolver::cloneTo(obj); + + obj->flags = flags; + + obj->c_top = c_top; + obj->c_filler = c_filler; + obj->c_stone = c_stone; + obj->c_water_top = c_water_top; + obj->c_water = c_water; + obj->c_river_water = c_river_water; + obj->c_riverbed = c_riverbed; + obj->c_dust = c_dust; + obj->c_cave_liquid = c_cave_liquid; + obj->c_dungeon = c_dungeon; + obj->c_dungeon_alt = c_dungeon_alt; + obj->c_dungeon_stair = c_dungeon_stair; + + obj->depth_top = depth_top; + obj->depth_filler = depth_filler; + obj->depth_water_top = depth_water_top; + obj->depth_riverbed = depth_riverbed; + + obj->min_pos = min_pos; + obj->max_pos = max_pos; + obj->heat_point = heat_point; + obj->humidity_point = humidity_point; + obj->vertical_blend = vertical_blend; + + return obj; +} + void Biome::resolveNodeNames() { getIdFromNrBacklog(&c_top, "mapgen_stone", CONTENT_AIR, false); diff --git a/src/mapgen/mg_biome.h b/src/mapgen/mg_biome.h index ee148adbc..6aadc32fa 100644 --- a/src/mapgen/mg_biome.h +++ b/src/mapgen/mg_biome.h @@ -42,6 +42,8 @@ enum BiomeType { class Biome : public ObjDef, public NodeResolver { public: + ObjDef *clone() const; + u32 flags; content_t c_top; @@ -191,6 +193,8 @@ public: BiomeManager(Server *server); virtual ~BiomeManager() = default; + BiomeManager *clone() const; + const char *getObjectTitle() const { return "biome"; @@ -232,6 +236,8 @@ public: Biome *getBiomeFromNoiseOriginal(float heat, float humidity, v3s16 pos); private: + BiomeManager() {}; + Server *m_server; }; diff --git a/src/mapgen/mg_decoration.cpp b/src/mapgen/mg_decoration.cpp index 28dde0209..db9c696ed 100644 --- a/src/mapgen/mg_decoration.cpp +++ b/src/mapgen/mg_decoration.cpp @@ -67,6 +67,13 @@ size_t DecorationManager::placeAllDecos(Mapgen *mg, u32 blockseed, return nplaced; } +DecorationManager *DecorationManager::clone() const +{ + auto mgr = new DecorationManager(); + ObjDefManager::cloneTo(mgr); + return mgr; +} + /////////////////////////////////////////////////////////////////////////////// @@ -269,9 +276,42 @@ size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) } +void Decoration::cloneTo(Decoration *def) const +{ + ObjDef::cloneTo(def); + def->flags = flags; + def->mapseed = mapseed; + def->c_place_on = c_place_on; + def->sidelen = sidelen; + def->y_min = y_min; + def->y_max = y_max; + def->fill_ratio = fill_ratio; + def->np = np; + def->c_spawnby = c_spawnby; + def->nspawnby = nspawnby; + def->place_offset_y = place_offset_y; + def->biomes = biomes; +} + + /////////////////////////////////////////////////////////////////////////////// +ObjDef *DecoSimple::clone() const +{ + auto def = new DecoSimple(); + Decoration::cloneTo(def); + + def->c_decos = c_decos; + def->deco_height = deco_height; + def->deco_height_max = deco_height_max; + def->deco_param2 = deco_param2; + def->deco_param2_max = deco_param2_max; + + return def; +} + + void DecoSimple::resolveNodeNames() { Decoration::resolveNodeNames(); @@ -351,6 +391,21 @@ size_t DecoSimple::generate(MMVManip *vm, PcgRandom *pr, v3s16 p, bool ceiling) /////////////////////////////////////////////////////////////////////////////// +ObjDef *DecoSchematic::clone() const +{ + auto def = new DecoSchematic(); + Decoration::cloneTo(def); + NodeResolver::cloneTo(def); + + def->rotation = rotation; + /* FIXME: This is not ideal, we only have a pointer to the schematic despite + * not owning it. Optimally this would be a handle. */ + def->schematic = schematic; // not cloned + + return def; +} + + size_t DecoSchematic::generate(MMVManip *vm, PcgRandom *pr, v3s16 p, bool ceiling) { // Schematic could have been unloaded but not the decoration diff --git a/src/mapgen/mg_decoration.h b/src/mapgen/mg_decoration.h index 03fec04fd..af8fcd7bf 100644 --- a/src/mapgen/mg_decoration.h +++ b/src/mapgen/mg_decoration.h @@ -73,11 +73,16 @@ public: s16 place_offset_y = 0; std::unordered_set biomes; + +protected: + void cloneTo(Decoration *def) const; }; class DecoSimple : public Decoration { public: + ObjDef *clone() const; + virtual void resolveNodeNames(); virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p, bool ceiling); @@ -91,6 +96,8 @@ public: class DecoSchematic : public Decoration { public: + ObjDef *clone() const; + DecoSchematic() = default; virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p, bool ceiling); @@ -113,6 +120,8 @@ public: DecorationManager(IGameDef *gamedef); virtual ~DecorationManager() = default; + DecorationManager *clone() const; + const char *getObjectTitle() const { return "decoration"; @@ -133,4 +142,7 @@ public: } size_t placeAllDecos(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); + +private: + DecorationManager() {}; }; diff --git a/src/mapgen/mg_ore.cpp b/src/mapgen/mg_ore.cpp index c36249cb9..db647f82b 100644 --- a/src/mapgen/mg_ore.cpp +++ b/src/mapgen/mg_ore.cpp @@ -72,6 +72,14 @@ void OreManager::clear() } +OreManager *OreManager::clone() const +{ + auto mgr = new OreManager(); + ObjDefManager::cloneTo(mgr); + return mgr; +} + + /////////////////////////////////////////////////////////////////////////////// @@ -106,9 +114,37 @@ size_t Ore::placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) } +void Ore::cloneTo(Ore *def) const +{ + ObjDef::cloneTo(def); + NodeResolver::cloneTo(def); + def->c_ore = c_ore; + def->c_wherein = c_wherein; + def->clust_scarcity = clust_scarcity; + def->clust_num_ores = clust_num_ores; + def->clust_size = clust_size; + def->y_min = y_min; + def->y_max = y_max; + def->ore_param2 = ore_param2; + def->flags = flags; + def->nthresh = nthresh; + def->np = np; + def->noise = nullptr; // cannot be shared! so created on demand + def->biomes = biomes; +} + + /////////////////////////////////////////////////////////////////////////////// +ObjDef *OreScatter::clone() const +{ + auto def = new OreScatter(); + Ore::cloneTo(def); + return def; +} + + void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) { @@ -158,6 +194,19 @@ void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed, /////////////////////////////////////////////////////////////////////////////// +ObjDef *OreSheet::clone() const +{ + auto def = new OreSheet(); + Ore::cloneTo(def); + + def->column_height_max = column_height_max; + def->column_height_min = column_height_min; + def->column_midpoint_factor = column_midpoint_factor; + + return def; +} + + void OreSheet::generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) { @@ -221,6 +270,20 @@ OrePuff::~OrePuff() } +ObjDef *OrePuff::clone() const +{ + auto def = new OrePuff(); + Ore::cloneTo(def); + + def->np_puff_top = np_puff_top; + def->np_puff_bottom = np_puff_bottom; + def->noise_puff_top = nullptr; // cannot be shared, on-demand + def->noise_puff_bottom = nullptr; + + return def; +} + + void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) { @@ -294,6 +357,14 @@ void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed, /////////////////////////////////////////////////////////////////////////////// +ObjDef *OreBlob::clone() const +{ + auto def = new OreBlob(); + Ore::cloneTo(def); + return def; +} + + void OreBlob::generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) { @@ -366,6 +437,19 @@ OreVein::~OreVein() } +ObjDef *OreVein::clone() const +{ + auto def = new OreVein(); + Ore::cloneTo(def); + + def->random_factor = random_factor; + def->noise2 = nullptr; // cannot be shared, on-demand + def->sizey_prev = sizey_prev; + + return def; +} + + void OreVein::generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) { @@ -434,6 +518,19 @@ OreStratum::~OreStratum() } +ObjDef *OreStratum::clone() const +{ + auto def = new OreStratum(); + Ore::cloneTo(def); + + def->np_stratum_thickness = np_stratum_thickness; + def->noise_stratum_thickness = nullptr; // cannot be shared, on-demand + def->stratum_thickness = stratum_thickness; + + return def; +} + + void OreStratum::generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) { diff --git a/src/mapgen/mg_ore.h b/src/mapgen/mg_ore.h index d89360c3c..213bdc964 100644 --- a/src/mapgen/mg_ore.h +++ b/src/mapgen/mg_ore.h @@ -74,12 +74,17 @@ public: size_t placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap) = 0; + +protected: + void cloneTo(Ore *def) const; }; class OreScatter : public Ore { public: static const bool NEEDS_NOISE = false; + ObjDef *clone() const; + virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap); }; @@ -88,6 +93,8 @@ class OreSheet : public Ore { public: static const bool NEEDS_NOISE = true; + ObjDef *clone() const; + u16 column_height_min; u16 column_height_max; float column_midpoint_factor; @@ -100,6 +107,8 @@ class OrePuff : public Ore { public: static const bool NEEDS_NOISE = true; + ObjDef *clone() const; + NoiseParams np_puff_top; NoiseParams np_puff_bottom; Noise *noise_puff_top = nullptr; @@ -116,6 +125,8 @@ class OreBlob : public Ore { public: static const bool NEEDS_NOISE = true; + ObjDef *clone() const; + virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, v3s16 nmin, v3s16 nmax, u8 *biomemap); }; @@ -124,6 +135,8 @@ class OreVein : public Ore { public: static const bool NEEDS_NOISE = true; + ObjDef *clone() const; + float random_factor; Noise *noise2 = nullptr; int sizey_prev = 0; @@ -139,6 +152,8 @@ class OreStratum : public Ore { public: static const bool NEEDS_NOISE = false; + ObjDef *clone() const; + NoiseParams np_stratum_thickness; Noise *noise_stratum_thickness = nullptr; u16 stratum_thickness; @@ -155,6 +170,8 @@ public: OreManager(IGameDef *gamedef); virtual ~OreManager() = default; + OreManager *clone() const; + const char *getObjectTitle() const { return "ore"; @@ -183,4 +200,7 @@ public: void clear(); size_t placeAllOres(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); + +private: + OreManager() {}; }; diff --git a/src/mapgen/mg_schematic.cpp b/src/mapgen/mg_schematic.cpp index c1acbfd9d..2e04d30e6 100644 --- a/src/mapgen/mg_schematic.cpp +++ b/src/mapgen/mg_schematic.cpp @@ -77,6 +77,11 @@ Schematic::~Schematic() delete []slice_probs; } +ObjDef *Schematic::clone() const +{ + FATAL_ERROR("not cloneable"); +} + void Schematic::resolveNodeNames() { @@ -93,6 +98,7 @@ void Schematic::resolveNodeNames() void Schematic::blitToVManip(MMVManip *vm, v3s16 p, Rotation rot, bool force_place) { + assert(schemdata && slice_probs); sanity_check(m_ndef != NULL); int xstride = 1; @@ -177,7 +183,7 @@ bool Schematic::placeOnVManip(MMVManip *vm, v3s16 p, u32 flags, Rotation rot, bool force_place) { assert(vm != NULL); - assert(schemdata != NULL); + assert(schemdata && slice_probs); sanity_check(m_ndef != NULL); //// Determine effective rotation and effective schematic dimensions diff --git a/src/mapgen/mg_schematic.h b/src/mapgen/mg_schematic.h index 371b37557..770f74053 100644 --- a/src/mapgen/mg_schematic.h +++ b/src/mapgen/mg_schematic.h @@ -95,6 +95,8 @@ public: Schematic(); virtual ~Schematic(); + ObjDef *clone() const; + virtual void resolveNodeNames(); bool loadSchematicFromFile(const std::string &filename, @@ -128,6 +130,8 @@ public: SchematicManager(Server *server); virtual ~SchematicManager() = default; + // not cloneable + virtual void clear(); const char *getObjectTitle() const diff --git a/src/nodedef.cpp b/src/nodedef.cpp index 37332c3c6..65199830f 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -1572,6 +1572,18 @@ NodeResolver::~NodeResolver() } +void NodeResolver::cloneTo(NodeResolver *res) const +{ + FATAL_ERROR_IF(!m_resolve_done, "NodeResolver can only be cloned" + " after resolving has completed"); + /* We don't actually do anything significant. Since the node resolving has + * already completed, the class that called us will already have the + * resolved IDs in its data structures (which it copies on its own) */ + res->m_ndef = m_ndef; + res->m_resolve_done = true; +} + + void NodeResolver::nodeResolveInternal() { m_nodenames_idx = 0; diff --git a/src/nodedef.h b/src/nodedef.h index c77d53324..0fce6eab1 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -739,6 +739,9 @@ public: virtual ~NodeResolver(); virtual void resolveNodeNames() = 0; + // required because this class is used as mixin for ObjDef + void cloneTo(NodeResolver *res) const; + bool getIdFromNrBacklog(content_t *result_out, const std::string &node_alt, content_t c_fallback, bool error_on_fallback = true); diff --git a/src/objdef.cpp b/src/objdef.cpp index 08d6844fc..482544d37 100644 --- a/src/objdef.cpp +++ b/src/objdef.cpp @@ -182,3 +182,22 @@ bool ObjDefManager::decodeHandle(ObjDefHandle handle, u32 *index, *uid = get_bits(handle, 24, 7); return true; } + +// Cloning + +void ObjDef::cloneTo(ObjDef *def) const +{ + def->index = index; + def->uid = uid; + def->handle = handle; + def->name = name; +} + +void ObjDefManager::cloneTo(ObjDefManager *mgr) const +{ + mgr->m_ndef = m_ndef; + mgr->m_objects.reserve(m_objects.size()); + for (const auto &obj : m_objects) + mgr->m_objects.push_back(obj->clone()); + mgr->m_objtype = m_objtype; +} diff --git a/src/objdef.h b/src/objdef.h index 9ab3df977..20565029c 100644 --- a/src/objdef.h +++ b/src/objdef.h @@ -45,10 +45,22 @@ class ObjDef { public: virtual ~ObjDef() = default; + // Only implemented by child classes (leafs in class hierarchy) + // Should create new object of its own type, call cloneTo() of parent class + // and copy its own instance variables over + virtual ObjDef *clone() const = 0; + u32 index; u32 uid; ObjDefHandle handle; std::string name; + +protected: + // Only implemented by classes that have children themselves + // by copying the defintion and changing that argument type (!!!) + // Should defer to parent class cloneTo() if applicable and then copy + // over its own properties + void cloneTo(ObjDef *def) const; }; // WARNING: Ownership of ObjDefs is transferred to the ObjDefManager it is @@ -60,6 +72,8 @@ public: virtual ~ObjDefManager(); DISABLE_CLASS_COPY(ObjDefManager); + // T *clone() const; // implemented in child class with correct type + virtual const char *getObjectTitle() const { return "ObjDef"; } virtual void clear(); @@ -88,6 +102,10 @@ public: ObjDefType *type, u32 *uid); protected: + ObjDefManager() {}; + // Helper for child classes to implement clone() + void cloneTo(ObjDefManager *mgr) const; + const NodeDefManager *m_ndef; std::vector m_objects; ObjDefType m_objtype; diff --git a/src/unittest/test_objdef.cpp b/src/unittest/test_objdef.cpp index c2acdcfe7..40f7faa9d 100644 --- a/src/unittest/test_objdef.cpp +++ b/src/unittest/test_objdef.cpp @@ -32,6 +32,7 @@ public: void testHandles(); void testAddGetSetClear(); + void testClone(); }; static TestObjDef g_test_instance; @@ -40,10 +41,42 @@ void TestObjDef::runTests(IGameDef *gamedef) { TEST(testHandles); TEST(testAddGetSetClear); + TEST(testClone); } //////////////////////////////////////////////////////////////////////////////// +/* Minimal implementation of ObjDef and ObjDefManager subclass */ + +class MyObjDef : public ObjDef +{ +public: + ObjDef *clone() const + { + auto def = new MyObjDef(); + ObjDef::cloneTo(def); + def->testvalue = testvalue; + return def; + }; + + u32 testvalue; +}; + +class MyObjDefManager : public ObjDefManager +{ +public: + MyObjDefManager(ObjDefType type) : ObjDefManager(NULL, type){}; + MyObjDefManager *clone() const + { + auto mgr = new MyObjDefManager(); + ObjDefManager::cloneTo(mgr); + return mgr; + }; + +protected: + MyObjDefManager(){}; +}; + void TestObjDef::testHandles() { u32 uid = 0; @@ -69,25 +102,25 @@ void TestObjDef::testAddGetSetClear() UASSERTEQ(ObjDefType, testmgr.getType(), OBJDEF_GENERIC); - obj0 = new ObjDef; + obj0 = new MyObjDef; obj0->name = "foobar"; hObj0 = testmgr.add(obj0); UASSERT(hObj0 != OBJDEF_INVALID_HANDLE); UASSERTEQ(u32, obj0->index, 0); - obj1 = new ObjDef; + obj1 = new MyObjDef; obj1->name = "FooBaz"; hObj1 = testmgr.add(obj1); UASSERT(hObj1 != OBJDEF_INVALID_HANDLE); UASSERTEQ(u32, obj1->index, 1); - obj2 = new ObjDef; + obj2 = new MyObjDef; obj2->name = "asdf"; hObj2 = testmgr.add(obj2); UASSERT(hObj2 != OBJDEF_INVALID_HANDLE); UASSERTEQ(u32, obj2->index, 2); - obj3 = new ObjDef; + obj3 = new MyObjDef; obj3->name = "foobaz"; hObj3 = testmgr.add(obj3); UASSERT(hObj3 == OBJDEF_INVALID_HANDLE); @@ -104,3 +137,38 @@ void TestObjDef::testAddGetSetClear() testmgr.clear(); UASSERTEQ(size_t, testmgr.getNumObjects(), 0); } + +void TestObjDef::testClone() +{ + MyObjDefManager testmgr(OBJDEF_GENERIC); + ObjDefManager *mgrcopy; + MyObjDef *obj, *temp2; + ObjDef *temp1; + ObjDefHandle hObj; + + obj = new MyObjDef; + obj->testvalue = 0xee00ff11; + hObj = testmgr.add(obj); + UASSERT(hObj != OBJDEF_INVALID_HANDLE); + + mgrcopy = testmgr.clone(); + UASSERT(mgrcopy); + UASSERTEQ(ObjDefType, mgrcopy->getType(), testmgr.getType()); + UASSERTEQ(size_t, mgrcopy->getNumObjects(), testmgr.getNumObjects()); + + // 1) check that the same handle is still valid on the copy + temp1 = mgrcopy->get(hObj); + UASSERT(temp1); + UASSERT(temp1 == mgrcopy->getRaw(0)); + // 2) check that the copy has the correct C++ class + temp2 = dynamic_cast(temp1); + UASSERT(temp2); + // 3) check that it was correctly copied + UASSERTEQ(u32, obj->testvalue, temp2->testvalue); + // 4) check that it was copied AT ALL (not the same) + UASSERT(obj != temp2); + + testmgr.clear(); + mgrcopy->clear(); + delete mgrcopy; +} From 3c65d1acec27366d88fc3686d3f820175673e203 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 10 Apr 2020 02:05:20 +0200 Subject: [PATCH 175/424] Give the Mapgen on each EmergeThread its own Biome/Ore/Deco/SchemManager copy --- src/emerge.cpp | 60 +++++++++++++++++++++++++++++- src/emerge.h | 48 +++++++++++++++++++++--- src/mapgen/mapgen.cpp | 17 +++++---- src/mapgen/mapgen.h | 15 ++++---- src/mapgen/mapgen_carpathian.cpp | 2 +- src/mapgen/mapgen_carpathian.h | 2 +- src/mapgen/mapgen_flat.cpp | 2 +- src/mapgen/mapgen_flat.h | 2 +- src/mapgen/mapgen_fractal.cpp | 2 +- src/mapgen/mapgen_fractal.h | 2 +- src/mapgen/mapgen_singlenode.cpp | 2 +- src/mapgen/mapgen_singlenode.h | 2 +- src/mapgen/mapgen_v5.cpp | 2 +- src/mapgen/mapgen_v5.h | 2 +- src/mapgen/mapgen_v6.cpp | 4 +- src/mapgen/mapgen_v6.h | 4 +- src/mapgen/mapgen_v7.cpp | 2 +- src/mapgen/mapgen_v7.h | 2 +- src/mapgen/mapgen_valleys.cpp | 2 +- src/mapgen/mapgen_valleys.h | 2 +- src/mapgen/mg_biome.cpp | 8 ++-- src/mapgen/mg_biome.h | 6 +-- src/mapgen/mg_decoration.cpp | 16 ++++++-- src/mapgen/mg_decoration.h | 2 + src/mapgen/mg_schematic.cpp | 27 +++++++++++++- src/mapgen/mg_schematic.h | 4 +- src/script/lua_api/l_mapgen.cpp | 63 +++++++++++++++++++------------- 27 files changed, 225 insertions(+), 77 deletions(-) diff --git a/src/emerge.cpp b/src/emerge.cpp index fe885447c..6e05a45c9 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -109,6 +109,28 @@ private: VoxelArea *m_ignorevariable; }; +EmergeParams::~EmergeParams() +{ + infostream << "EmergeParams: destroying " << this << std::endl; + // Delete everything that was cloned on creation of EmergeParams + delete biomemgr; + delete oremgr; + delete decomgr; + delete schemmgr; +} + +EmergeParams::EmergeParams(EmergeManager *parent, const BiomeManager *biomemgr, + const OreManager *oremgr, const DecorationManager *decomgr, + const SchematicManager *schemmgr) : + ndef(parent->ndef), + enable_mapgen_debug_info(parent->enable_mapgen_debug_info), + gen_notify_on(parent->gen_notify_on), + gen_notify_on_deco_ids(&parent->gen_notify_on_deco_ids), + biomemgr(biomemgr->clone()), oremgr(oremgr->clone()), + decomgr(decomgr->clone()), schemmgr(schemmgr->clone()) +{ +} + //// //// EmergeManager //// @@ -182,14 +204,48 @@ EmergeManager::~EmergeManager() } +BiomeManager *EmergeManager::getWritableBiomeManager() +{ + FATAL_ERROR_IF(!m_mapgens.empty(), + "Writable managers can only be returned before mapgen init"); + return biomemgr; +} + +OreManager *EmergeManager::getWritableOreManager() +{ + FATAL_ERROR_IF(!m_mapgens.empty(), + "Writable managers can only be returned before mapgen init"); + return oremgr; +} + +DecorationManager *EmergeManager::getWritableDecorationManager() +{ + FATAL_ERROR_IF(!m_mapgens.empty(), + "Writable managers can only be returned before mapgen init"); + return decomgr; +} + +SchematicManager *EmergeManager::getWritableSchematicManager() +{ + FATAL_ERROR_IF(!m_mapgens.empty(), + "Writable managers can only be returned before mapgen init"); + return schemmgr; +} + + void EmergeManager::initMapgens(MapgenParams *params) { FATAL_ERROR_IF(!m_mapgens.empty(), "Mapgen already initialised."); mgparams = params; - for (u32 i = 0; i != m_threads.size(); i++) - m_mapgens.push_back(Mapgen::createMapgen(params->mgtype, params, this)); + for (u32 i = 0; i != m_threads.size(); i++) { + EmergeParams *p = new EmergeParams( + this, biomemgr, oremgr, decomgr, schemmgr); + infostream << "EmergeManager: Created params " << p + << " for thread " << i << std::endl; + m_mapgens.push_back(Mapgen::createMapgen(params->mgtype, params, p)); + } } diff --git a/src/emerge.h b/src/emerge.h index df849e542..ab9fca2ba 100644 --- a/src/emerge.h +++ b/src/emerge.h @@ -86,6 +86,30 @@ struct BlockEmergeData { EmergeCallbackList callbacks; }; +class EmergeParams { + friend class EmergeManager; +public: + EmergeParams() = delete; + ~EmergeParams(); + DISABLE_CLASS_COPY(EmergeParams); + + const NodeDefManager *ndef; // shared + bool enable_mapgen_debug_info; + + u32 gen_notify_on; + const std::set *gen_notify_on_deco_ids; // shared + + BiomeManager *biomemgr; + OreManager *oremgr; + DecorationManager *decomgr; + SchematicManager *schemmgr; + +private: + EmergeParams(EmergeManager *parent, const BiomeManager *biomemgr, + const OreManager *oremgr, const DecorationManager *decomgr, + const SchematicManager *schemmgr); +}; + class EmergeManager { public: const NodeDefManager *ndef; @@ -106,17 +130,22 @@ public: // Environment is not created until after script initialization. MapSettingsManager *map_settings_mgr; - // Managers of various map generation-related components - BiomeManager *biomemgr; - OreManager *oremgr; - DecorationManager *decomgr; - SchematicManager *schemmgr; - // Methods EmergeManager(Server *server); ~EmergeManager(); DISABLE_CLASS_COPY(EmergeManager); + // no usage restrictions + const BiomeManager *getBiomeManager() const { return biomemgr; } + const OreManager *getOreManager() const { return oremgr; } + const DecorationManager *getDecorationManager() const { return decomgr; } + const SchematicManager *getSchematicManager() const { return schemmgr; } + // only usable before mapgen init + BiomeManager *getWritableBiomeManager(); + OreManager *getWritableOreManager(); + DecorationManager *getWritableDecorationManager(); + SchematicManager *getWritableSchematicManager(); + void initMapgens(MapgenParams *mgparams); void startThreads(); @@ -160,6 +189,13 @@ private: u16 m_qlimit_diskonly; u16 m_qlimit_generate; + // Managers of various map generation-related components + // Note that each Mapgen gets a copy(!) of these to work with + BiomeManager *biomemgr; + OreManager *oremgr; + DecorationManager *decomgr; + SchematicManager *schemmgr; + // Requires m_queue_mutex held EmergeThread *getOptimalThread(); diff --git a/src/mapgen/mapgen.cpp b/src/mapgen/mapgen.cpp index 0094608ec..f57529082 100644 --- a/src/mapgen/mapgen.cpp +++ b/src/mapgen/mapgen.cpp @@ -106,8 +106,8 @@ STATIC_ASSERT( //// Mapgen //// -Mapgen::Mapgen(int mapgenid, MapgenParams *params, EmergeManager *emerge) : - gennotify(emerge->gen_notify_on, &emerge->gen_notify_on_deco_ids) +Mapgen::Mapgen(int mapgenid, MapgenParams *params, EmergeParams *emerge) : + gennotify(emerge->gen_notify_on, emerge->gen_notify_on_deco_ids) { id = mapgenid; water_level = params->water_level; @@ -156,7 +156,7 @@ const char *Mapgen::getMapgenName(MapgenType mgtype) Mapgen *Mapgen::createMapgen(MapgenType mgtype, MapgenParams *params, - EmergeManager *emerge) + EmergeParams *emerge) { switch (mgtype) { case MAPGEN_CARPATHIAN: @@ -585,7 +585,7 @@ void Mapgen::spreadLight(const v3s16 &nmin, const v3s16 &nmax) //// MapgenBasic //// -MapgenBasic::MapgenBasic(int mapgenid, MapgenParams *params, EmergeManager *emerge) +MapgenBasic::MapgenBasic(int mapgenid, MapgenParams *params, EmergeParams *emerge) : Mapgen(mapgenid, params, emerge) { this->m_emerge = emerge; @@ -642,6 +642,8 @@ MapgenBasic::~MapgenBasic() { delete biomegen; delete []heightmap; + + delete m_emerge; // destroying EmergeParams is our responsibility } @@ -974,7 +976,7 @@ void MapgenBasic::generateDungeons(s16 max_stone_y) //// GenerateNotifier::GenerateNotifier(u32 notify_on, - std::set *notify_on_deco_ids) + const std::set *notify_on_deco_ids) { m_notify_on = notify_on; m_notify_on_deco_ids = notify_on_deco_ids; @@ -987,7 +989,8 @@ void GenerateNotifier::setNotifyOn(u32 notify_on) } -void GenerateNotifier::setNotifyOnDecoIds(std::set *notify_on_deco_ids) +void GenerateNotifier::setNotifyOnDecoIds( + const std::set *notify_on_deco_ids) { m_notify_on_deco_ids = notify_on_deco_ids; } @@ -999,7 +1002,7 @@ bool GenerateNotifier::addEvent(GenNotifyType type, v3s16 pos, u32 id) return false; if (type == GENNOTIFY_DECORATION && - m_notify_on_deco_ids->find(id) == m_notify_on_deco_ids->end()) + m_notify_on_deco_ids->find(id) == m_notify_on_deco_ids->cend()) return false; GenNotifyEvent gne; diff --git a/src/mapgen/mapgen.h b/src/mapgen/mapgen.h index dc325c791..7845c5349 100644 --- a/src/mapgen/mapgen.h +++ b/src/mapgen/mapgen.h @@ -51,6 +51,7 @@ class Biome; class BiomeGen; struct BiomeParams; class BiomeManager; +class EmergeParams; class EmergeManager; class MapBlock; class VoxelManipulator; @@ -87,10 +88,10 @@ struct GenNotifyEvent { class GenerateNotifier { public: GenerateNotifier() = default; - GenerateNotifier(u32 notify_on, std::set *notify_on_deco_ids); + GenerateNotifier(u32 notify_on, const std::set *notify_on_deco_ids); void setNotifyOn(u32 notify_on); - void setNotifyOnDecoIds(std::set *notify_on_deco_ids); + void setNotifyOnDecoIds(const std::set *notify_on_deco_ids); bool addEvent(GenNotifyType type, v3s16 pos, u32 id=0); void getEvents(std::map > &event_map); @@ -98,7 +99,7 @@ public: private: u32 m_notify_on = 0; - std::set *m_notify_on_deco_ids; + const std::set *m_notify_on_deco_ids; std::list m_notify_events; }; @@ -176,7 +177,7 @@ public: GenerateNotifier gennotify; Mapgen() = default; - Mapgen(int mapgenid, MapgenParams *params, EmergeManager *emerge); + Mapgen(int mapgenid, MapgenParams *params, EmergeParams *emerge); virtual ~Mapgen() = default; DISABLE_CLASS_COPY(Mapgen); @@ -215,7 +216,7 @@ public: static MapgenType getMapgenType(const std::string &mgname); static const char *getMapgenName(MapgenType mgtype); static Mapgen *createMapgen(MapgenType mgtype, MapgenParams *params, - EmergeManager *emerge); + EmergeParams *emerge); static MapgenParams *createMapgenParams(MapgenType mgtype); static void getMapgenNames(std::vector *mgnames, bool include_hidden); static void setDefaultSettings(Settings *settings); @@ -243,7 +244,7 @@ private: */ class MapgenBasic : public Mapgen { public: - MapgenBasic(int mapgenid, MapgenParams *params, EmergeManager *emerge); + MapgenBasic(int mapgenid, MapgenParams *params, EmergeParams *emerge); virtual ~MapgenBasic(); virtual void generateBiomes(); @@ -254,7 +255,7 @@ public: virtual void generateDungeons(s16 max_stone_y); protected: - EmergeManager *m_emerge; + EmergeParams *m_emerge; BiomeManager *m_bmgr; Noise *noise_filler_depth; diff --git a/src/mapgen/mapgen_carpathian.cpp b/src/mapgen/mapgen_carpathian.cpp index bd7ae5e7c..feb9b428c 100644 --- a/src/mapgen/mapgen_carpathian.cpp +++ b/src/mapgen/mapgen_carpathian.cpp @@ -49,7 +49,7 @@ FlagDesc flagdesc_mapgen_carpathian[] = { /////////////////////////////////////////////////////////////////////////////// -MapgenCarpathian::MapgenCarpathian(MapgenCarpathianParams *params, EmergeManager *emerge) +MapgenCarpathian::MapgenCarpathian(MapgenCarpathianParams *params, EmergeParams *emerge) : MapgenBasic(MAPGEN_CARPATHIAN, params, emerge) { base_level = params->base_level; diff --git a/src/mapgen/mapgen_carpathian.h b/src/mapgen/mapgen_carpathian.h index acd379958..31b2b91d8 100644 --- a/src/mapgen/mapgen_carpathian.h +++ b/src/mapgen/mapgen_carpathian.h @@ -79,7 +79,7 @@ struct MapgenCarpathianParams : public MapgenParams class MapgenCarpathian : public MapgenBasic { public: - MapgenCarpathian(MapgenCarpathianParams *params, EmergeManager *emerge); + MapgenCarpathian(MapgenCarpathianParams *params, EmergeParams *emerge); ~MapgenCarpathian(); virtual MapgenType getType() const { return MAPGEN_CARPATHIAN; } diff --git a/src/mapgen/mapgen_flat.cpp b/src/mapgen/mapgen_flat.cpp index 272964b51..369777ad2 100644 --- a/src/mapgen/mapgen_flat.cpp +++ b/src/mapgen/mapgen_flat.cpp @@ -47,7 +47,7 @@ FlagDesc flagdesc_mapgen_flat[] = { /////////////////////////////////////////////////////////////////////////////////////// -MapgenFlat::MapgenFlat(MapgenFlatParams *params, EmergeManager *emerge) +MapgenFlat::MapgenFlat(MapgenFlatParams *params, EmergeParams *emerge) : MapgenBasic(MAPGEN_FLAT, params, emerge) { spflags = params->spflags; diff --git a/src/mapgen/mapgen_flat.h b/src/mapgen/mapgen_flat.h index c314c7605..4902a802c 100644 --- a/src/mapgen/mapgen_flat.h +++ b/src/mapgen/mapgen_flat.h @@ -64,7 +64,7 @@ struct MapgenFlatParams : public MapgenParams class MapgenFlat : public MapgenBasic { public: - MapgenFlat(MapgenFlatParams *params, EmergeManager *emerge); + MapgenFlat(MapgenFlatParams *params, EmergeParams *emerge); ~MapgenFlat(); virtual MapgenType getType() const { return MAPGEN_FLAT; } diff --git a/src/mapgen/mapgen_fractal.cpp b/src/mapgen/mapgen_fractal.cpp index 97f77d947..cb55bc288 100644 --- a/src/mapgen/mapgen_fractal.cpp +++ b/src/mapgen/mapgen_fractal.cpp @@ -47,7 +47,7 @@ FlagDesc flagdesc_mapgen_fractal[] = { /////////////////////////////////////////////////////////////////////////////////////// -MapgenFractal::MapgenFractal(MapgenFractalParams *params, EmergeManager *emerge) +MapgenFractal::MapgenFractal(MapgenFractalParams *params, EmergeParams *emerge) : MapgenBasic(MAPGEN_FRACTAL, params, emerge) { spflags = params->spflags; diff --git a/src/mapgen/mapgen_fractal.h b/src/mapgen/mapgen_fractal.h index 971dfd822..23af925bc 100644 --- a/src/mapgen/mapgen_fractal.h +++ b/src/mapgen/mapgen_fractal.h @@ -72,7 +72,7 @@ struct MapgenFractalParams : public MapgenParams class MapgenFractal : public MapgenBasic { public: - MapgenFractal(MapgenFractalParams *params, EmergeManager *emerge); + MapgenFractal(MapgenFractalParams *params, EmergeParams *emerge); ~MapgenFractal(); virtual MapgenType getType() const { return MAPGEN_FRACTAL; } diff --git a/src/mapgen/mapgen_singlenode.cpp b/src/mapgen/mapgen_singlenode.cpp index b64524e1c..cade9e7a8 100644 --- a/src/mapgen/mapgen_singlenode.cpp +++ b/src/mapgen/mapgen_singlenode.cpp @@ -29,7 +29,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "emerge.h" -MapgenSinglenode::MapgenSinglenode(MapgenParams *params, EmergeManager *emerge) +MapgenSinglenode::MapgenSinglenode(MapgenParams *params, EmergeParams *emerge) : Mapgen(MAPGEN_SINGLENODE, params, emerge) { const NodeDefManager *ndef = emerge->ndef; diff --git a/src/mapgen/mapgen_singlenode.h b/src/mapgen/mapgen_singlenode.h index c21089eda..e056d9ab1 100644 --- a/src/mapgen/mapgen_singlenode.h +++ b/src/mapgen/mapgen_singlenode.h @@ -38,7 +38,7 @@ public: content_t c_node; u8 set_light; - MapgenSinglenode(MapgenParams *params, EmergeManager *emerge); + MapgenSinglenode(MapgenParams *params, EmergeParams *emerge); ~MapgenSinglenode() = default; virtual MapgenType getType() const { return MAPGEN_SINGLENODE; } diff --git a/src/mapgen/mapgen_v5.cpp b/src/mapgen/mapgen_v5.cpp index 3bd7615c4..124667e5d 100644 --- a/src/mapgen/mapgen_v5.cpp +++ b/src/mapgen/mapgen_v5.cpp @@ -44,7 +44,7 @@ FlagDesc flagdesc_mapgen_v5[] = { }; -MapgenV5::MapgenV5(MapgenV5Params *params, EmergeManager *emerge) +MapgenV5::MapgenV5(MapgenV5Params *params, EmergeParams *emerge) : MapgenBasic(MAPGEN_V5, params, emerge) { spflags = params->spflags; diff --git a/src/mapgen/mapgen_v5.h b/src/mapgen/mapgen_v5.h index 17bc466f0..cf4ee4899 100644 --- a/src/mapgen/mapgen_v5.h +++ b/src/mapgen/mapgen_v5.h @@ -64,7 +64,7 @@ struct MapgenV5Params : public MapgenParams class MapgenV5 : public MapgenBasic { public: - MapgenV5(MapgenV5Params *params, EmergeManager *emerge); + MapgenV5(MapgenV5Params *params, EmergeParams *emerge); ~MapgenV5(); virtual MapgenType getType() const { return MAPGEN_V5; } diff --git a/src/mapgen/mapgen_v6.cpp b/src/mapgen/mapgen_v6.cpp index da9ae1428..e9692246c 100644 --- a/src/mapgen/mapgen_v6.cpp +++ b/src/mapgen/mapgen_v6.cpp @@ -54,7 +54,7 @@ FlagDesc flagdesc_mapgen_v6[] = { ///////////////////////////////////////////////////////////////////////////// -MapgenV6::MapgenV6(MapgenV6Params *params, EmergeManager *emerge) +MapgenV6::MapgenV6(MapgenV6Params *params, EmergeParams *emerge) : Mapgen(MAPGEN_V6, params, emerge) { m_emerge = emerge; @@ -160,6 +160,8 @@ MapgenV6::~MapgenV6() delete noise_humidity; delete[] heightmap; + + delete m_emerge; // our responsibility } diff --git a/src/mapgen/mapgen_v6.h b/src/mapgen/mapgen_v6.h index d8cdcb26f..ff565edec 100644 --- a/src/mapgen/mapgen_v6.h +++ b/src/mapgen/mapgen_v6.h @@ -83,7 +83,7 @@ struct MapgenV6Params : public MapgenParams { class MapgenV6 : public Mapgen { public: - EmergeManager *m_emerge; + EmergeParams *m_emerge; int ystride; u32 spflags; @@ -133,7 +133,7 @@ public: content_t c_stair_cobble; content_t c_stair_desert_stone; - MapgenV6(MapgenV6Params *params, EmergeManager *emerge); + MapgenV6(MapgenV6Params *params, EmergeParams *emerge); ~MapgenV6(); virtual MapgenType getType() const { return MAPGEN_V6; } diff --git a/src/mapgen/mapgen_v7.cpp b/src/mapgen/mapgen_v7.cpp index 82556cc4f..43d5d822f 100644 --- a/src/mapgen/mapgen_v7.cpp +++ b/src/mapgen/mapgen_v7.cpp @@ -51,7 +51,7 @@ FlagDesc flagdesc_mapgen_v7[] = { //////////////////////////////////////////////////////////////////////////////// -MapgenV7::MapgenV7(MapgenV7Params *params, EmergeManager *emerge) +MapgenV7::MapgenV7(MapgenV7Params *params, EmergeParams *emerge) : MapgenBasic(MAPGEN_V7, params, emerge) { spflags = params->spflags; diff --git a/src/mapgen/mapgen_v7.h b/src/mapgen/mapgen_v7.h index 0605c5c97..eeae3a956 100644 --- a/src/mapgen/mapgen_v7.h +++ b/src/mapgen/mapgen_v7.h @@ -75,7 +75,7 @@ struct MapgenV7Params : public MapgenParams { class MapgenV7 : public MapgenBasic { public: - MapgenV7(MapgenV7Params *params, EmergeManager *emerge); + MapgenV7(MapgenV7Params *params, EmergeParams *emerge); ~MapgenV7(); virtual MapgenType getType() const { return MAPGEN_V7; } diff --git a/src/mapgen/mapgen_valleys.cpp b/src/mapgen/mapgen_valleys.cpp index ff908b7bb..efcc8ee85 100644 --- a/src/mapgen/mapgen_valleys.cpp +++ b/src/mapgen/mapgen_valleys.cpp @@ -54,7 +54,7 @@ FlagDesc flagdesc_mapgen_valleys[] = { }; -MapgenValleys::MapgenValleys(MapgenValleysParams *params, EmergeManager *emerge) +MapgenValleys::MapgenValleys(MapgenValleysParams *params, EmergeParams *emerge) : MapgenBasic(MAPGEN_VALLEYS, params, emerge) { // NOTE: MapgenValleys has a hard dependency on BiomeGenOriginal diff --git a/src/mapgen/mapgen_valleys.h b/src/mapgen/mapgen_valleys.h index 1aec68842..34a923dfa 100644 --- a/src/mapgen/mapgen_valleys.h +++ b/src/mapgen/mapgen_valleys.h @@ -84,7 +84,7 @@ class MapgenValleys : public MapgenBasic { public: MapgenValleys(MapgenValleysParams *params, - EmergeManager *emerge); + EmergeParams *emerge); ~MapgenValleys(); virtual MapgenType getType() const { return MAPGEN_VALLEYS; } diff --git a/src/mapgen/mg_biome.cpp b/src/mapgen/mg_biome.cpp index 3a72c43bf..f3bc4e829 100644 --- a/src/mapgen/mg_biome.cpp +++ b/src/mapgen/mg_biome.cpp @@ -78,7 +78,7 @@ void BiomeManager::clear() EmergeManager *emerge = m_server->getEmergeManager(); // Remove all dangling references in Decorations - DecorationManager *decomgr = emerge->decomgr; + DecorationManager *decomgr = emerge->getWritableDecorationManager(); for (size_t i = 0; i != decomgr->getNumObjects(); i++) { Decoration *deco = (Decoration *)decomgr->getRaw(i); deco->biomes.clear(); @@ -104,7 +104,7 @@ BiomeManager *BiomeManager::clone() const // For BiomeGen type 'BiomeGenOriginal' float BiomeManager::getHeatAtPosOriginal(v3s16 pos, NoiseParams &np_heat, - NoiseParams &np_heat_blend, u64 seed) + NoiseParams &np_heat_blend, u64 seed) const { return NoisePerlin2D(&np_heat, pos.X, pos.Z, seed) + @@ -114,7 +114,7 @@ float BiomeManager::getHeatAtPosOriginal(v3s16 pos, NoiseParams &np_heat, // For BiomeGen type 'BiomeGenOriginal' float BiomeManager::getHumidityAtPosOriginal(v3s16 pos, NoiseParams &np_humidity, - NoiseParams &np_humidity_blend, u64 seed) + NoiseParams &np_humidity_blend, u64 seed) const { return NoisePerlin2D(&np_humidity, pos.X, pos.Z, seed) + @@ -123,7 +123,7 @@ float BiomeManager::getHumidityAtPosOriginal(v3s16 pos, NoiseParams &np_humidity // For BiomeGen type 'BiomeGenOriginal' -Biome *BiomeManager::getBiomeFromNoiseOriginal(float heat, float humidity, v3s16 pos) +Biome *BiomeManager::getBiomeFromNoiseOriginal(float heat, float humidity, v3s16 pos) const { Biome *biome_closest = nullptr; Biome *biome_closest_blend = nullptr; diff --git a/src/mapgen/mg_biome.h b/src/mapgen/mg_biome.h index 6aadc32fa..0a4471cc3 100644 --- a/src/mapgen/mg_biome.h +++ b/src/mapgen/mg_biome.h @@ -230,10 +230,10 @@ public: // For BiomeGen type 'BiomeGenOriginal' float getHeatAtPosOriginal(v3s16 pos, NoiseParams &np_heat, - NoiseParams &np_heat_blend, u64 seed); + NoiseParams &np_heat_blend, u64 seed) const; float getHumidityAtPosOriginal(v3s16 pos, NoiseParams &np_humidity, - NoiseParams &np_humidity_blend, u64 seed); - Biome *getBiomeFromNoiseOriginal(float heat, float humidity, v3s16 pos); + NoiseParams &np_humidity_blend, u64 seed) const; + Biome *getBiomeFromNoiseOriginal(float heat, float humidity, v3s16 pos) const; private: BiomeManager() {}; diff --git a/src/mapgen/mg_decoration.cpp b/src/mapgen/mg_decoration.cpp index db9c696ed..a9b67d239 100644 --- a/src/mapgen/mg_decoration.cpp +++ b/src/mapgen/mg_decoration.cpp @@ -391,6 +391,13 @@ size_t DecoSimple::generate(MMVManip *vm, PcgRandom *pr, v3s16 p, bool ceiling) /////////////////////////////////////////////////////////////////////////////// +DecoSchematic::~DecoSchematic() +{ + if (was_cloned) + delete schematic; +} + + ObjDef *DecoSchematic::clone() const { auto def = new DecoSchematic(); @@ -398,9 +405,12 @@ ObjDef *DecoSchematic::clone() const NodeResolver::cloneTo(def); def->rotation = rotation; - /* FIXME: This is not ideal, we only have a pointer to the schematic despite - * not owning it. Optimally this would be a handle. */ - def->schematic = schematic; // not cloned + /* FIXME: We do not own this schematic, yet we only have a pointer to it + * and not a handle. We are left with no option but to clone it ourselves. + * This is a waste of memory and should be replaced with an alternative + * approach sometime. */ + def->schematic = dynamic_cast(schematic->clone()); + def->was_cloned = true; return def; } diff --git a/src/mapgen/mg_decoration.h b/src/mapgen/mg_decoration.h index af8fcd7bf..1f9eb4510 100644 --- a/src/mapgen/mg_decoration.h +++ b/src/mapgen/mg_decoration.h @@ -99,11 +99,13 @@ public: ObjDef *clone() const; DecoSchematic() = default; + virtual ~DecoSchematic(); virtual size_t generate(MMVManip *vm, PcgRandom *pr, v3s16 p, bool ceiling); Rotation rotation; Schematic *schematic = nullptr; + bool was_cloned = false; // see FIXME inside DecoSchemtic::clone() }; diff --git a/src/mapgen/mg_schematic.cpp b/src/mapgen/mg_schematic.cpp index 2e04d30e6..c3bd89f3a 100644 --- a/src/mapgen/mg_schematic.cpp +++ b/src/mapgen/mg_schematic.cpp @@ -43,12 +43,21 @@ SchematicManager::SchematicManager(Server *server) : } +SchematicManager *SchematicManager::clone() const +{ + auto mgr = new SchematicManager(); + assert(mgr); + ObjDefManager::cloneTo(mgr); + return mgr; +} + + void SchematicManager::clear() { EmergeManager *emerge = m_server->getEmergeManager(); // Remove all dangling references in Decorations - DecorationManager *decomgr = emerge->decomgr; + DecorationManager *decomgr = emerge->getWritableDecorationManager(); for (size_t i = 0; i != decomgr->getNumObjects(); i++) { Decoration *deco = (Decoration *)decomgr->getRaw(i); @@ -79,7 +88,21 @@ Schematic::~Schematic() ObjDef *Schematic::clone() const { - FATAL_ERROR("not cloneable"); + auto def = new Schematic(); + ObjDef::cloneTo(def); + NodeResolver::cloneTo(def); + + def->c_nodes = c_nodes; + def->flags = flags; + def->size = size; + FATAL_ERROR_IF(!schemdata, "Schematic can only be cloned after loading"); + u32 nodecount = size.X * size.Y * size.Z; + def->schemdata = new MapNode[nodecount]; + memcpy(def->schemdata, schemdata, sizeof(MapNode) * nodecount); + def->slice_probs = new u8[size.Y]; + memcpy(def->slice_probs, slice_probs, sizeof(u8) * size.Y); + + return def; } diff --git a/src/mapgen/mg_schematic.h b/src/mapgen/mg_schematic.h index 770f74053..3222085e6 100644 --- a/src/mapgen/mg_schematic.h +++ b/src/mapgen/mg_schematic.h @@ -130,7 +130,7 @@ public: SchematicManager(Server *server); virtual ~SchematicManager() = default; - // not cloneable + SchematicManager *clone() const; virtual void clear(); @@ -145,6 +145,8 @@ public: } private: + SchematicManager() {}; + Server *m_server; }; diff --git a/src/script/lua_api/l_mapgen.cpp b/src/script/lua_api/l_mapgen.cpp index afe77826a..ba0304be3 100644 --- a/src/script/lua_api/l_mapgen.cpp +++ b/src/script/lua_api/l_mapgen.cpp @@ -91,7 +91,7 @@ struct EnumString ModApiMapgen::es_SchematicFormatType[] = {0, NULL}, }; -ObjDef *get_objdef(lua_State *L, int index, ObjDefManager *objmgr); +ObjDef *get_objdef(lua_State *L, int index, const ObjDefManager *objmgr); Biome *get_or_load_biome(lua_State *L, int index, BiomeManager *biomemgr); @@ -114,7 +114,7 @@ bool read_deco_schematic(lua_State *L, SchematicManager *schemmgr, DecoSchematic /////////////////////////////////////////////////////////////////////////////// -ObjDef *get_objdef(lua_State *L, int index, ObjDefManager *objmgr) +ObjDef *get_objdef(lua_State *L, int index, const ObjDefManager *objmgr) { if (index < 0) index = lua_gettop(L) + 1 + index; @@ -486,7 +486,7 @@ int ModApiMapgen::l_get_biome_id(lua_State *L) if (!biome_str) return 0; - BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr; + const BiomeManager *bmgr = getServer(L)->getEmergeManager()->getBiomeManager(); if (!bmgr) return 0; @@ -508,7 +508,7 @@ int ModApiMapgen::l_get_biome_name(lua_State *L) int biome_id = luaL_checkinteger(L, 1); - BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr; + const BiomeManager *bmgr = getServer(L)->getEmergeManager()->getBiomeManager(); if (!bmgr) return 0; @@ -546,7 +546,7 @@ int ModApiMapgen::l_get_heat(lua_State *L) u64 seed; ss >> seed; - BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr; + const BiomeManager *bmgr = getServer(L)->getEmergeManager()->getBiomeManager(); if (!bmgr) return 0; @@ -587,7 +587,7 @@ int ModApiMapgen::l_get_humidity(lua_State *L) u64 seed; ss >> seed; - BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr; + const BiomeManager *bmgr = getServer(L)->getEmergeManager()->getBiomeManager(); if (!bmgr) return 0; @@ -635,7 +635,7 @@ int ModApiMapgen::l_get_biome_data(lua_State *L) u64 seed; ss >> seed; - BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr; + const BiomeManager *bmgr = getServer(L)->getEmergeManager()->getBiomeManager(); if (!bmgr) return 0; @@ -1066,7 +1066,8 @@ int ModApiMapgen::l_get_decoration_id(lua_State *L) if (!deco_str) return 0; - DecorationManager *dmgr = getServer(L)->getEmergeManager()->decomgr; + const DecorationManager *dmgr = + getServer(L)->getEmergeManager()->getDecorationManager(); if (!dmgr) return 0; @@ -1091,7 +1092,7 @@ int ModApiMapgen::l_register_biome(lua_State *L) luaL_checktype(L, index, LUA_TTABLE); const NodeDefManager *ndef = getServer(L)->getNodeDefManager(); - BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr; + BiomeManager *bmgr = getServer(L)->getEmergeManager()->getWritableBiomeManager(); Biome *biome = read_biome_def(L, index, ndef); if (!biome) @@ -1117,9 +1118,10 @@ int ModApiMapgen::l_register_decoration(lua_State *L) luaL_checktype(L, index, LUA_TTABLE); const NodeDefManager *ndef = getServer(L)->getNodeDefManager(); - DecorationManager *decomgr = getServer(L)->getEmergeManager()->decomgr; - BiomeManager *biomemgr = getServer(L)->getEmergeManager()->biomemgr; - SchematicManager *schemmgr = getServer(L)->getEmergeManager()->schemmgr; + EmergeManager *emerge = getServer(L)->getEmergeManager(); + DecorationManager *decomgr = emerge->getWritableDecorationManager(); + BiomeManager *biomemgr = emerge->getWritableBiomeManager(); + SchematicManager *schemmgr = emerge->getWritableSchematicManager(); enum DecorationType decotype = (DecorationType)getenumfield(L, index, "deco_type", es_DecorationType, -1); @@ -1274,8 +1276,9 @@ int ModApiMapgen::l_register_ore(lua_State *L) luaL_checktype(L, index, LUA_TTABLE); const NodeDefManager *ndef = getServer(L)->getNodeDefManager(); - BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr; - OreManager *oremgr = getServer(L)->getEmergeManager()->oremgr; + EmergeManager *emerge = getServer(L)->getEmergeManager(); + BiomeManager *bmgr = emerge->getWritableBiomeManager(); + OreManager *oremgr = emerge->getWritableOreManager(); enum OreType oretype = (OreType)getenumfield(L, index, "ore_type", es_OreType, ORE_SCATTER); @@ -1422,7 +1425,8 @@ int ModApiMapgen::l_register_schematic(lua_State *L) { NO_MAP_LOCK_REQUIRED; - SchematicManager *schemmgr = getServer(L)->getEmergeManager()->schemmgr; + SchematicManager *schemmgr = + getServer(L)->getEmergeManager()->getWritableSchematicManager(); StringMap replace_names; if (lua_istable(L, 2)) @@ -1449,7 +1453,8 @@ int ModApiMapgen::l_clear_registered_biomes(lua_State *L) { NO_MAP_LOCK_REQUIRED; - BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr; + BiomeManager *bmgr = + getServer(L)->getEmergeManager()->getWritableBiomeManager(); bmgr->clear(); return 0; } @@ -1460,7 +1465,8 @@ int ModApiMapgen::l_clear_registered_decorations(lua_State *L) { NO_MAP_LOCK_REQUIRED; - DecorationManager *dmgr = getServer(L)->getEmergeManager()->decomgr; + DecorationManager *dmgr = + getServer(L)->getEmergeManager()->getWritableDecorationManager(); dmgr->clear(); return 0; } @@ -1471,7 +1477,8 @@ int ModApiMapgen::l_clear_registered_ores(lua_State *L) { NO_MAP_LOCK_REQUIRED; - OreManager *omgr = getServer(L)->getEmergeManager()->oremgr; + OreManager *omgr = + getServer(L)->getEmergeManager()->getWritableOreManager(); omgr->clear(); return 0; } @@ -1482,7 +1489,8 @@ int ModApiMapgen::l_clear_registered_schematics(lua_State *L) { NO_MAP_LOCK_REQUIRED; - SchematicManager *smgr = getServer(L)->getEmergeManager()->schemmgr; + SchematicManager *smgr = + getServer(L)->getEmergeManager()->getWritableSchematicManager(); smgr->clear(); return 0; } @@ -1508,7 +1516,8 @@ int ModApiMapgen::l_generate_ores(lua_State *L) u32 blockseed = Mapgen::getBlockSeed(pmin, mg.seed); - emerge->oremgr->placeAllOres(&mg, blockseed, pmin, pmax); + OreManager *oremgr = (OreManager*) emerge->getOreManager(); // FIXME FIXME + oremgr->placeAllOres(&mg, blockseed, pmin, pmax); return 0; } @@ -1534,7 +1543,8 @@ int ModApiMapgen::l_generate_decorations(lua_State *L) u32 blockseed = Mapgen::getBlockSeed(pmin, mg.seed); - emerge->decomgr->placeAllDecos(&mg, blockseed, pmin, pmax); + DecorationManager *decomgr = (DecorationManager*) emerge->getDecorationManager(); // FIXME FIXME + decomgr->placeAllDecos(&mg, blockseed, pmin, pmax); return 0; } @@ -1614,7 +1624,8 @@ int ModApiMapgen::l_place_schematic(lua_State *L) GET_ENV_PTR; ServerMap *map = &(env->getServerMap()); - SchematicManager *schemmgr = getServer(L)->getEmergeManager()->schemmgr; + SchematicManager *schemmgr = (SchematicManager*) + getServer(L)->getEmergeManager()->getSchematicManager(); // FIXME FIXME //// Read position v3s16 p = check_v3s16(L, 1); @@ -1659,7 +1670,8 @@ int ModApiMapgen::l_place_schematic_on_vmanip(lua_State *L) { NO_MAP_LOCK_REQUIRED; - SchematicManager *schemmgr = getServer(L)->getEmergeManager()->schemmgr; + SchematicManager *schemmgr = (SchematicManager*) + getServer(L)->getEmergeManager()->getSchematicManager(); // FIXME FIXME //// Read VoxelManip object MMVManip *vm = LuaVoxelManip::checkobject(L, 1)->vm; @@ -1707,7 +1719,7 @@ int ModApiMapgen::l_serialize_schematic(lua_State *L) { NO_MAP_LOCK_REQUIRED; - SchematicManager *schemmgr = getServer(L)->getEmergeManager()->schemmgr; + const SchematicManager *schemmgr = getServer(L)->getEmergeManager()->getSchematicManager(); //// Read options bool use_comments = getboolfield_default(L, 3, "lua_use_comments", false); @@ -1758,7 +1770,8 @@ int ModApiMapgen::l_read_schematic(lua_State *L) { NO_MAP_LOCK_REQUIRED; - SchematicManager *schemmgr = getServer(L)->getEmergeManager()->schemmgr; + const SchematicManager *schemmgr = + getServer(L)->getEmergeManager()->getSchematicManager(); //// Read options std::string write_yslice = getstringfield_default(L, 2, "write_yslice_prob", "all"); From c28fbd06a8bfafc9691a92c90f0cf10ec94cd314 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 10 Apr 2020 02:43:49 +0200 Subject: [PATCH 176/424] Fix remaining issues with mapgen scriptapi --- src/emerge.h | 6 ++++++ src/mapgen/mg_biome.cpp | 3 ++- src/mapgen/mg_biome.h | 4 +++- src/mapgen/mg_schematic.cpp | 5 +++-- src/mapgen/mg_schematic.h | 5 +++-- src/objdef.h | 1 + src/script/lua_api/l_mapgen.cpp | 24 ++++++++---------------- 7 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/emerge.h b/src/emerge.h index ab9fca2ba..6f204666d 100644 --- a/src/emerge.h +++ b/src/emerge.h @@ -44,6 +44,7 @@ class OreManager; class DecorationManager; class SchematicManager; class Server; +class ModApiMapgen; // Structure containing inputs/outputs for chunk generation struct BlockMakeData { @@ -111,6 +112,11 @@ private: }; class EmergeManager { + /* The mod API needs unchecked access to allow: + * - using decomgr or oremgr to place decos/ores + * - using schemmgr to load and place schematics + */ + friend class ModApiMapgen; public: const NodeDefManager *ndef; bool enable_mapgen_debug_info; diff --git a/src/mapgen/mg_biome.cpp b/src/mapgen/mg_biome.cpp index f3bc4e829..8c59ac9e6 100644 --- a/src/mapgen/mg_biome.cpp +++ b/src/mapgen/mg_biome.cpp @@ -123,7 +123,8 @@ float BiomeManager::getHumidityAtPosOriginal(v3s16 pos, NoiseParams &np_humidity // For BiomeGen type 'BiomeGenOriginal' -Biome *BiomeManager::getBiomeFromNoiseOriginal(float heat, float humidity, v3s16 pos) const +const Biome *BiomeManager::getBiomeFromNoiseOriginal(float heat, + float humidity, v3s16 pos) const { Biome *biome_closest = nullptr; Biome *biome_closest_blend = nullptr; diff --git a/src/mapgen/mg_biome.h b/src/mapgen/mg_biome.h index 0a4471cc3..57f4aa20d 100644 --- a/src/mapgen/mg_biome.h +++ b/src/mapgen/mg_biome.h @@ -90,6 +90,7 @@ struct BiomeParams { s32 seed; }; +// WARNING: this class is not thread-safe class BiomeGen { public: virtual ~BiomeGen() = default; @@ -233,7 +234,8 @@ public: NoiseParams &np_heat_blend, u64 seed) const; float getHumidityAtPosOriginal(v3s16 pos, NoiseParams &np_humidity, NoiseParams &np_humidity_blend, u64 seed) const; - Biome *getBiomeFromNoiseOriginal(float heat, float humidity, v3s16 pos) const; + const Biome *getBiomeFromNoiseOriginal(float heat, float humidity, + v3s16 pos) const; private: BiomeManager() {}; diff --git a/src/mapgen/mg_schematic.cpp b/src/mapgen/mg_schematic.cpp index c3bd89f3a..ba102d997 100644 --- a/src/mapgen/mg_schematic.cpp +++ b/src/mapgen/mg_schematic.cpp @@ -359,7 +359,7 @@ bool Schematic::deserializeFromMts(std::istream *is, bool Schematic::serializeToMts(std::ostream *os, - const std::vector &names) + const std::vector &names) const { std::ostream &ss = *os; @@ -383,7 +383,8 @@ bool Schematic::serializeToMts(std::ostream *os, bool Schematic::serializeToLua(std::ostream *os, - const std::vector &names, bool use_comments, u32 indent_spaces) + const std::vector &names, bool use_comments, + u32 indent_spaces) const { std::ostream &ss = *os; diff --git a/src/mapgen/mg_schematic.h b/src/mapgen/mg_schematic.h index 3222085e6..6b31251b6 100644 --- a/src/mapgen/mg_schematic.h +++ b/src/mapgen/mg_schematic.h @@ -106,9 +106,10 @@ public: bool getSchematicFromMap(Map *map, v3s16 p1, v3s16 p2); bool deserializeFromMts(std::istream *is, std::vector *names); - bool serializeToMts(std::ostream *os, const std::vector &names); + bool serializeToMts(std::ostream *os, + const std::vector &names) const; bool serializeToLua(std::ostream *os, const std::vector &names, - bool use_comments, u32 indent_spaces); + bool use_comments, u32 indent_spaces) const; void blitToVManip(MMVManip *vm, v3s16 p, Rotation rot, bool force_place); bool placeOnVManip(MMVManip *vm, v3s16 p, u32 flags, Rotation rot, bool force_place); diff --git a/src/objdef.h b/src/objdef.h index 20565029c..e40324a88 100644 --- a/src/objdef.h +++ b/src/objdef.h @@ -66,6 +66,7 @@ protected: // WARNING: Ownership of ObjDefs is transferred to the ObjDefManager it is // added/set to. Note that ObjDefs managed by ObjDefManager are NOT refcounted, // so the same ObjDef instance must not be referenced multiple +// TODO: const correctness for getter methods class ObjDefManager { public: ObjDefManager(IGameDef *gamedef, ObjDefType type); diff --git a/src/script/lua_api/l_mapgen.cpp b/src/script/lua_api/l_mapgen.cpp index ba0304be3..584085428 100644 --- a/src/script/lua_api/l_mapgen.cpp +++ b/src/script/lua_api/l_mapgen.cpp @@ -490,7 +490,7 @@ int ModApiMapgen::l_get_biome_id(lua_State *L) if (!bmgr) return 0; - Biome *biome = (Biome *)bmgr->getByName(biome_str); + const Biome *biome = (Biome *)bmgr->getByName(biome_str); if (!biome || biome->index == OBJDEF_INVALID_INDEX) return 0; @@ -512,7 +512,7 @@ int ModApiMapgen::l_get_biome_name(lua_State *L) if (!bmgr) return 0; - Biome *b = (Biome *)bmgr->getRaw(biome_id); + const Biome *b = (Biome *)bmgr->getRaw(biome_id); lua_pushstring(L, b->name.c_str()); return 1; @@ -551,8 +551,6 @@ int ModApiMapgen::l_get_heat(lua_State *L) return 0; float heat = bmgr->getHeatAtPosOriginal(pos, np_heat, np_heat_blend, seed); - if (!heat) - return 0; lua_pushnumber(L, heat); @@ -593,8 +591,6 @@ int ModApiMapgen::l_get_humidity(lua_State *L) float humidity = bmgr->getHumidityAtPosOriginal(pos, np_humidity, np_humidity_blend, seed); - if (!humidity) - return 0; lua_pushnumber(L, humidity); @@ -648,7 +644,7 @@ int ModApiMapgen::l_get_biome_data(lua_State *L) if (!humidity) return 0; - Biome *biome = (Biome *)bmgr->getBiomeFromNoiseOriginal(heat, humidity, pos); + const Biome *biome = bmgr->getBiomeFromNoiseOriginal(heat, humidity, pos); if (!biome || biome->index == OBJDEF_INVALID_INDEX) return 0; @@ -1516,8 +1512,7 @@ int ModApiMapgen::l_generate_ores(lua_State *L) u32 blockseed = Mapgen::getBlockSeed(pmin, mg.seed); - OreManager *oremgr = (OreManager*) emerge->getOreManager(); // FIXME FIXME - oremgr->placeAllOres(&mg, blockseed, pmin, pmax); + emerge->oremgr->placeAllOres(&mg, blockseed, pmin, pmax); return 0; } @@ -1543,8 +1538,7 @@ int ModApiMapgen::l_generate_decorations(lua_State *L) u32 blockseed = Mapgen::getBlockSeed(pmin, mg.seed); - DecorationManager *decomgr = (DecorationManager*) emerge->getDecorationManager(); // FIXME FIXME - decomgr->placeAllDecos(&mg, blockseed, pmin, pmax); + emerge->decomgr->placeAllDecos(&mg, blockseed, pmin, pmax); return 0; } @@ -1624,8 +1618,7 @@ int ModApiMapgen::l_place_schematic(lua_State *L) GET_ENV_PTR; ServerMap *map = &(env->getServerMap()); - SchematicManager *schemmgr = (SchematicManager*) - getServer(L)->getEmergeManager()->getSchematicManager(); // FIXME FIXME + SchematicManager *schemmgr = getServer(L)->getEmergeManager()->schemmgr; //// Read position v3s16 p = check_v3s16(L, 1); @@ -1670,8 +1663,7 @@ int ModApiMapgen::l_place_schematic_on_vmanip(lua_State *L) { NO_MAP_LOCK_REQUIRED; - SchematicManager *schemmgr = (SchematicManager*) - getServer(L)->getEmergeManager()->getSchematicManager(); // FIXME FIXME + SchematicManager *schemmgr = getServer(L)->getEmergeManager()->schemmgr; //// Read VoxelManip object MMVManip *vm = LuaVoxelManip::checkobject(L, 1)->vm; @@ -1727,7 +1719,7 @@ int ModApiMapgen::l_serialize_schematic(lua_State *L) //// Get schematic bool was_loaded = false; - Schematic *schem = (Schematic *)get_objdef(L, 1, schemmgr); + const Schematic *schem = (Schematic *)get_objdef(L, 1, schemmgr); if (!schem) { schem = load_schematic(L, 1, NULL, NULL); was_loaded = true; From ab06880525eea98011341fbcaec31a0bd7517df5 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 11 Apr 2020 23:38:54 +0200 Subject: [PATCH 177/424] Update num_emerge_threads description --- builtin/settingtypes.txt | 3 --- minetest.conf.example | 3 --- 2 files changed, 6 deletions(-) diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index c983fb436..9e4473655 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -2120,9 +2120,6 @@ emergequeue_limit_diskonly (Limit of emerge queues on disk) int 64 emergequeue_limit_generate (Limit of emerge queues to generate) int 64 # Number of emerge threads to use. -# WARNING: Currently there are multiple bugs that may cause crashes when -# 'num_emerge_threads' is larger than 1. Until this warning is removed it is -# strongly recommended this value is set to the default '1'. # Value 0: # - Automatic selection. The number of emerge threads will be # - 'number of processors - 2', with a lower limit of 1. diff --git a/minetest.conf.example b/minetest.conf.example index 1c1796a14..f04822c47 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -3261,9 +3261,6 @@ # emergequeue_limit_generate = 64 # Number of emerge threads to use. -# WARNING: Currently there are multiple bugs that may cause crashes when -# 'num_emerge_threads' is larger than 1. Until this warning is removed it is -# strongly recommended this value is set to the default '1'. # Value 0: # - Automatic selection. The number of emerge threads will be # - 'number of processors - 2', with a lower limit of 1. From f3e87c53a5afc264e657acd99d3a39fbec3b63c9 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 26 Apr 2020 18:33:50 +0200 Subject: [PATCH 178/424] Fix thread safety of PcgRandom use in BiomeGen --- src/mapgen/mg_biome.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/mapgen/mg_biome.cpp b/src/mapgen/mg_biome.cpp index 8c59ac9e6..610c38594 100644 --- a/src/mapgen/mg_biome.cpp +++ b/src/mapgen/mg_biome.cpp @@ -154,9 +154,11 @@ const Biome *BiomeManager::getBiomeFromNoiseOriginal(float heat, } } - mysrand(pos.Y + (heat + humidity) * 0.9f); + const u64 seed = pos.Y + (heat + humidity) * 0.9f; + PcgRandom rng(seed); + if (biome_closest_blend && dist_min_blend <= dist_min && - myrand_range(0, biome_closest_blend->vertical_blend) >= + rng.range(0, biome_closest_blend->vertical_blend) >= pos.Y - biome_closest_blend->max_pos.Y) return biome_closest_blend; @@ -319,10 +321,11 @@ Biome *BiomeGenOriginal::calcBiomeFromNoise(float heat, float humidity, v3s16 po // Carefully tune pseudorandom seed variation to avoid single node dither // and create larger scale blending patterns similar to horizontal biome // blend. - mysrand(pos.Y + (heat + humidity) * 0.9f); + const u64 seed = pos.Y + (heat + humidity) * 0.9f; + PcgRandom rng(seed); if (biome_closest_blend && dist_min_blend <= dist_min && - myrand_range(0, biome_closest_blend->vertical_blend) >= + rng.range(0, biome_closest_blend->vertical_blend) >= pos.Y - biome_closest_blend->max_pos.Y) return biome_closest_blend; From cb159f8d8af4556391db8a6875657625733eeb11 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 5 May 2020 20:19:47 +0200 Subject: [PATCH 179/424] Fix crash when exiting server during running mapgen easily reproducible with a high num_emerge_threads and /emergeblocks --- src/emerge.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/emerge.cpp b/src/emerge.cpp index 6e05a45c9..a9fc0a4de 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -255,8 +255,9 @@ Mapgen *EmergeManager::getCurrentMapgen() return nullptr; for (u32 i = 0; i != m_threads.size(); i++) { - if (m_threads[i]->isCurrentThread()) - return m_threads[i]->m_mapgen; + EmergeThread *t = m_threads[i]; + if (t->isRunning() && t->isCurrentThread()) + return t->m_mapgen; } return nullptr; @@ -642,8 +643,7 @@ MapBlock *EmergeThread::finishGen(v3s16 pos, BlockMakeData *bmdata, /* Clear generate notifier events */ - Mapgen *mg = m_emerge->getCurrentMapgen(); - mg->gennotify.clearEvents(); + m_mapgen->gennotify.clearEvents(); EMERGE_DBG_OUT("ended up with: " << analyze_block(block)); From b6b80f55c8a2bf4eae440108b3274f2f921e3a94 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 26 Apr 2020 22:52:00 +0200 Subject: [PATCH 180/424] Expose collided objects in moveresult closes #9787 --- doc/lua_api.txt | 1 + src/collision.cpp | 40 +++++++++++++++++++++------------ src/collision.h | 1 + src/script/common/c_content.cpp | 3 +++ 4 files changed, 31 insertions(+), 14 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index b1099ec59..948e0f89e 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -6632,6 +6632,7 @@ Collision info passed to `on_step`: type = string, -- "node" or "object", axis = string, -- "x", "y" or "z" node_pos = vector, -- if type is "node" + object = ObjectRef, -- if type is "object" old_velocity = vector, new_velocity = vector, }, diff --git a/src/collision.cpp b/src/collision.cpp index a089f3377..3b5e79a66 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -37,18 +37,30 @@ with this program; if not, write to the Free Software Foundation, Inc., #endif struct NearbyCollisionInfo { - NearbyCollisionInfo(bool is_ul, bool is_obj, int bouncy, - const v3s16 &pos, const aabb3f &box) : + // node + NearbyCollisionInfo(bool is_ul, int bouncy, const v3s16 &pos, + const aabb3f &box) : is_unloaded(is_ul), - is_object(is_obj), + obj(nullptr), bouncy(bouncy), position(pos), box(box) {} + // object + NearbyCollisionInfo(ActiveObject *obj, int bouncy, + const aabb3f &box) : + is_unloaded(false), + obj(obj), + bouncy(bouncy), + box(box) + {} + + inline bool isObject() const { return obj != nullptr; } + bool is_unloaded; bool is_step_up = false; - bool is_object; + ActiveObject *obj; int bouncy; v3s16 position; aabb3f box; @@ -312,13 +324,13 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, for (auto box : nodeboxes) { box.MinEdge += posf; box.MaxEdge += posf; - cinfo.emplace_back(false, false, n_bouncy_value, p, box); + cinfo.emplace_back(false, n_bouncy_value, p, box); } } else { // Collide with unloaded nodes (position invalid) and loaded // CONTENT_IGNORE nodes (position valid) aabb3f box = getNodeBox(p, BS); - cinfo.emplace_back(true, false, 0, p, box); + cinfo.emplace_back(true, 0, p, box); } } @@ -383,12 +395,10 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, iter != objects.end(); ++iter) { ActiveObject *object = *iter; - if (object) { + if (object && object->collideWithObjects()) { aabb3f object_collisionbox; - if (object->getCollisionBox(&object_collisionbox) && - object->collideWithObjects()) { - cinfo.emplace_back(false, true, 0, v3s16(), object_collisionbox); - } + if (object->getCollisionBox(&object_collisionbox)) + cinfo.emplace_back(object, 0, object_collisionbox); } } #ifndef SERVER @@ -399,7 +409,8 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, v3f lplayer_pos = lplayer->getPosition(); lplayer_collisionbox.MinEdge += lplayer_pos; lplayer_collisionbox.MaxEdge += lplayer_pos; - cinfo.emplace_back(false, true, 0, v3s16(), lplayer_collisionbox); + ActiveObject *obj = (ActiveObject*) lplayer->getCAO(); + cinfo.emplace_back(obj, 0, lplayer_collisionbox); } } #endif @@ -498,12 +509,13 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, is_collision = false; CollisionInfo info; - if (nearest_info.is_object) + if (nearest_info.isObject()) info.type = COLLISION_OBJECT; else info.type = COLLISION_NODE; info.node_p = nearest_info.position; + info.object = nearest_info.obj; info.old_speed = *speed_f; info.plane = nearest_collided; @@ -572,7 +584,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, if (std::fabs(cbox.MaxEdge.Y - box.MinEdge.Y) < 0.05f) { result.touching_ground = true; - if (box_info.is_object) + if (box_info.isObject()) result.standing_on_object = true; } } diff --git a/src/collision.h b/src/collision.h index fa47cccc1..87a502828 100644 --- a/src/collision.h +++ b/src/collision.h @@ -48,6 +48,7 @@ struct CollisionInfo CollisionType type = COLLISION_NODE; CollisionAxis axis = COLLISION_AXIS_NONE; v3s16 node_p = v3s16(-32768,-32768,-32768); // COLLISION_NODE + ActiveObject *object = nullptr; // COLLISION_OBJECT v3f old_speed; v3f new_speed; int plane = -1; diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index 95364000c..dac828316 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -2043,6 +2043,9 @@ void push_collision_move_result(lua_State *L, const collisionMoveResult &res) if (c.type == COLLISION_NODE) { push_v3s16(L, c.node_p); lua_setfield(L, -2, "node_pos"); + } else if (c.type == COLLISION_OBJECT) { + push_objectRef(L, c.object->getId()); + lua_setfield(L, -2, "object"); } push_v3f(L, c.old_speed / BS); From 723926a995f8ee0428e4aaa95de37a46354f5249 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 27 Apr 2020 17:53:20 +0200 Subject: [PATCH 181/424] Rewrite falling entity to make use of collision info fixes #4781, fixes #9293 --- builtin/game/falling.lua | 194 ++++++++++++++++++++++++++------------- 1 file changed, 128 insertions(+), 66 deletions(-) diff --git a/builtin/game/falling.lua b/builtin/game/falling.lua index ea02e3694..c340e769d 100644 --- a/builtin/game/falling.lua +++ b/builtin/game/falling.lua @@ -30,6 +30,8 @@ local facedir_to_euler = { {y = math.pi/2, x = math.pi, z = 0} } +local gravity = tonumber(core.settings:get("movement_gravity")) or 9.81 + -- -- Falling stuff -- @@ -47,6 +49,7 @@ core.register_entity(":__builtin:falling_node", { node = {}, meta = {}, + floats = false, set_node = function(self, node, meta) self.node = node @@ -71,6 +74,11 @@ core.register_entity(":__builtin:falling_node", { return end self.meta = meta + + -- Cache whether we're supposed to float on water + self.floats = core.get_item_group(node.name, "float") ~= 0 + + -- Set entity visuals if def.drawtype == "torchlike" or def.drawtype == "signlike" then local textures if def.tiles and def.tiles[1] then @@ -113,6 +121,7 @@ core.register_entity(":__builtin:falling_node", { glow = def.light_source, }) end + -- Rotate entity if def.drawtype == "torchlike" then self.object:set_yaw(math.pi*0.25) @@ -172,6 +181,7 @@ core.register_entity(":__builtin:falling_node", { on_activate = function(self, staticdata) self.object:set_armor_groups({immortal = 1}) + self.object:set_acceleration({x = 0, y = -gravity, z = 0}) local ds = core.deserialize(staticdata) if ds and ds.node then @@ -183,85 +193,137 @@ core.register_entity(":__builtin:falling_node", { end end, - on_step = function(self, dtime) - -- Set gravity - local acceleration = self.object:get_acceleration() - if not vector.equals(acceleration, {x = 0, y = -10, z = 0}) then - self.object:set_acceleration({x = 0, y = -10, z = 0}) + try_place = function(self, bcp, bcn) + local bcd = core.registered_nodes[bcn.name] + -- Add levels if dropped on same leveled node + if bcd and bcd.leveled and + bcn.name == self.node.name then + local addlevel = self.node.level + if not addlevel or addlevel <= 0 then + addlevel = bcd.leveled + end + if core.add_node_level(bcp, addlevel) == 0 then + return true + end end - -- Turn to actual node when colliding with ground, or continue to move - local pos = self.object:get_pos() - -- Position of bottom center point - local bcp = {x = pos.x, y = pos.y - 0.7, z = pos.z} - -- 'bcn' is nil for unloaded nodes - local bcn = core.get_node_or_nil(bcp) - -- Delete on contact with ignore at world edges - if bcn and bcn.name == "ignore" then - self.object:remove() - return + + -- Decide if we're replacing the node or placing on top + local np = vector.new(bcp) + if bcd and bcd.buildable_to and + (not self.floats or bcd.liquidtype == "none") then + core.remove_node(bcp) + else + np.y = np.y + 1 end - local bcd = bcn and core.registered_nodes[bcn.name] - if bcn and - (not bcd or bcd.walkable or - (core.get_item_group(self.node.name, "float") ~= 0 and - bcd.liquidtype ~= "none")) then - if bcd and bcd.leveled and - bcn.name == self.node.name then - local addlevel = self.node.level - if not addlevel or addlevel <= 0 then - addlevel = bcd.leveled + + -- Check what's here + local n2 = core.get_node(np) + local nd = core.registered_nodes[n2.name] + -- If it's not air or liquid, remove node and replace it with + -- it's drops + if n2.name ~= "air" and (not nd or nd.liquidtype == "none") then + if nd and nd.buildable_to == false then + nd.on_dig(np, n2, nil) + -- If it's still there, it might be protected + if core.get_node(np).name == n2.name then + return false end - if core.add_node_level(bcp, addlevel) == 0 then + else + core.remove_node(np) + end + end + + -- Create node + local def = core.registered_nodes[self.node.name] + if def then + core.add_node(np, self.node) + if self.meta then + core.get_meta(np):from_table(self.meta) + end + if def.sounds and def.sounds.place then + core.sound_play(def.sounds.place, {pos = np}, true) + end + end + core.check_for_falling(np) + return true + end, + + on_step = function(self, dtime, moveresult) + -- Fallback code since collision detection can't tell us + -- about liquids (which do not collide) + if self.floats then + local pos = self.object:get_pos() + + local bcp = vector.round({x = pos.x, y = pos.y - 0.7, z = pos.z}) + local bcn = core.get_node(bcp) + + local bcd = core.registered_nodes[bcn.name] + if bcd and bcd.liquidtype ~= "none" then + if self:try_place(bcp, bcn) then self.object:remove() return end - elseif bcd and bcd.buildable_to and - (core.get_item_group(self.node.name, "float") == 0 or - bcd.liquidtype == "none") then - core.remove_node(bcp) - return end - local np = {x = bcp.x, y = bcp.y + 1, z = bcp.z} - -- Check what's here - local n2 = core.get_node(np) - local nd = core.registered_nodes[n2.name] - -- If it's not air or liquid, remove node and replace it with - -- it's drops - if n2.name ~= "air" and (not nd or nd.liquidtype == "none") then - core.remove_node(np) - if nd and nd.buildable_to == false then - -- Add dropped items - local drops = core.get_node_drops(n2, "") - for _, dropped_item in pairs(drops) do - core.add_item(np, dropped_item) - end - end - -- Run script hook - for _, callback in pairs(core.registered_on_dignodes) do - callback(np, n2) - end - end - -- Create node and remove entity - local def = core.registered_nodes[self.node.name] - if def then - core.add_node(np, self.node) - if self.meta then - local meta = core.get_meta(np) - meta:from_table(self.meta) - end - if def.sounds and def.sounds.place then - core.sound_play(def.sounds.place, {pos = np}, true) + end + + assert(moveresult) + if not moveresult.collides then + return -- Nothing to do :) + end + + local bcp, bcn + if moveresult.touching_ground then + for _, info in ipairs(moveresult.collisions) do + if info.axis == "y" then + bcp = info.node_pos + bcn = core.get_node(bcp) + break end end + end + + if not bcp then + -- We're colliding with something, but not the ground. Irrelevant to us. + return + elseif bcn.name == "ignore" then + -- Delete on contact with ignore at world edges self.object:remove() - core.check_for_falling(np) return end - local vel = self.object:get_velocity() - if vector.equals(vel, {x = 0, y = 0, z = 0}) then - local npos = self.object:get_pos() - self.object:set_pos(vector.round(npos)) + + local failure = false + + local pos = self.object:get_pos() + local distance = vector.apply(vector.subtract(pos, bcp), math.abs) + if distance.x >= 1 or distance.z >= 1 then + -- We're colliding with some part of a node that's sticking out + -- Since we don't want to visually teleport, drop as item + failure = true + elseif distance.y >= 2 then + -- Doors consist of a hidden top node and a bottom node that is + -- the actual door. Despite the top node being solid, the moveresult + -- almost always indicates collision with the bottom node. + -- Compensate for this by checking the top node + bcp.y = bcp.y + 1 + bcn = core.get_node(bcp) + local def = core.registered_nodes[bcn.name] + if not (def and def.walkable) then + failure = true -- This is unexpected, fail + end end + + -- Try to actually place ourselves + if not failure then + failure = not self:try_place(bcp, bcn) + end + + if failure then + local drops = core.get_node_drops(self.node, "") + for _, item in pairs(drops) do + core.add_item(pos, item) + end + end + self.object:remove() end }) From e8e5d282da81a0c6bf37ece93dfa5f274aaaf041 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 1 May 2020 14:56:56 +0200 Subject: [PATCH 182/424] Enable collide_with_objects for falling entities falling nodes intentionally still fall through players fixes #5313 --- builtin/game/falling.lua | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/builtin/game/falling.lua b/builtin/game/falling.lua index c340e769d..7037ae885 100644 --- a/builtin/game/falling.lua +++ b/builtin/game/falling.lua @@ -43,7 +43,7 @@ core.register_entity(":__builtin:falling_node", { textures = {}, physical = true, is_visible = false, - collide_with_objects = false, + collide_with_objects = true, collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, }, @@ -272,9 +272,14 @@ core.register_entity(":__builtin:falling_node", { end local bcp, bcn + local player_collision if moveresult.touching_ground then for _, info in ipairs(moveresult.collisions) do - if info.axis == "y" then + if info.type == "object" then + if info.axis == "y" and info.object:is_player() then + player_collision = info + end + elseif info.axis == "y" then bcp = info.node_pos bcn = core.get_node(bcp) break @@ -284,6 +289,20 @@ core.register_entity(":__builtin:falling_node", { if not bcp then -- We're colliding with something, but not the ground. Irrelevant to us. + if player_collision then + -- Continue falling through players by moving a little into + -- their collision box + -- TODO: this hack could be avoided in the future if objects + -- could choose who to collide with + local vel = self.object:get_velocity() + self.object:set_velocity({ + x = vel.x, + y = player_collision.old_velocity.y, + z = vel.z + }) + self.object:set_pos(vector.add(self.object:get_pos(), + {x = 0, y = -0.2, z = 0})) + end return elseif bcn.name == "ignore" then -- Delete on contact with ignore at world edges From 4f9a5f67ee745d78fdc3e173972a3df110f989cf Mon Sep 17 00:00:00 2001 From: Maksim Date: Wed, 6 May 2020 14:25:57 +0200 Subject: [PATCH 183/424] Android: porting_android.cpp refactoring (#9687) * Android: porting_android.cpp refactoring * Replace assert to FATAL_ERROR_IF --- src/porting_android.cpp | 135 +++++++++++++++++----------------------- src/porting_android.h | 14 ++--- 2 files changed, 62 insertions(+), 87 deletions(-) diff --git a/src/porting_android.cpp b/src/porting_android.cpp index 4130bdb6d..2c91df235 100644 --- a/src/porting_android.cpp +++ b/src/porting_android.cpp @@ -47,8 +47,7 @@ void android_main(android_app *app) Thread::setName("Main"); try { - app_dummy(); - char *argv[] = {strdup(PROJECT_NAME), NULL}; + char *argv[] = {strdup(PROJECT_NAME), nullptr}; main(ARRLEN(argv) - 1, argv); free(argv[0]); } catch (std::exception &e) { @@ -64,85 +63,73 @@ void android_main(android_app *app) exit(retval); } -/* handler for finished message box input */ -/* Intentionally NOT in namespace porting */ -/* TODO this doesn't work as expected, no idea why but there's a workaround */ -/* for it right now */ +/** + * Handler for finished message box input + * Intentionally NOT in namespace porting + * ToDo: this doesn't work as expected, there's a workaround for it right now + */ extern "C" { JNIEXPORT void JNICALL Java_net_minetest_minetest_GameActivity_putMessageBoxResult( - JNIEnv * env, jclass thiz, jstring text) + JNIEnv *env, jclass thiz, jstring text) { - errorstream << "Java_net_minetest_minetest_GameActivity_putMessageBoxResult got: " - << std::string((const char*)env->GetStringChars(text,0)) - << std::endl; + errorstream << + "Java_net_minetest_minetest_GameActivity_putMessageBoxResult got: " << + std::string((const char*) env->GetStringChars(text, nullptr)) << std::endl; } } namespace porting { - -std::string path_storage = DIR_DELIM "sdcard" DIR_DELIM; - -android_app* app_global; -JNIEnv* jnienv; +android_app *app_global; +JNIEnv *jnienv; jclass nativeActivity; -jclass findClass(std::string classname) +jclass findClass(const std::string &classname) { - if (jnienv == 0) { - return 0; - } + if (jnienv == nullptr) + return nullptr; jclass nativeactivity = jnienv->FindClass("android/app/NativeActivity"); - jmethodID getClassLoader = - jnienv->GetMethodID(nativeactivity,"getClassLoader", - "()Ljava/lang/ClassLoader;"); - jobject cls = - jnienv->CallObjectMethod(app_global->activity->clazz, getClassLoader); + jmethodID getClassLoader = jnienv->GetMethodID( + nativeactivity, "getClassLoader", "()Ljava/lang/ClassLoader;"); + jobject cls = jnienv->CallObjectMethod( + app_global->activity->clazz, getClassLoader); jclass classLoader = jnienv->FindClass("java/lang/ClassLoader"); - jmethodID findClass = - jnienv->GetMethodID(classLoader, "loadClass", + jmethodID findClass = jnienv->GetMethodID(classLoader, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;"); - jstring strClassName = - jnienv->NewStringUTF(classname.c_str()); + jstring strClassName = jnienv->NewStringUTF(classname.c_str()); return (jclass) jnienv->CallObjectMethod(cls, findClass, strClassName); } void initAndroid() { - porting::jnienv = NULL; + porting::jnienv = nullptr; JavaVM *jvm = app_global->activity->vm; JavaVMAttachArgs lJavaVMAttachArgs; lJavaVMAttachArgs.version = JNI_VERSION_1_6; lJavaVMAttachArgs.name = PROJECT_NAME_C "NativeThread"; - lJavaVMAttachArgs.group = NULL; -#ifdef NDEBUG - // This is a ugly hack as arm v7a non debuggable builds crash without this - // printf ... if someone finds out why please fix it! - infostream << "Attaching native thread. " << std::endl; -#endif - if ( jvm->AttachCurrentThread(&porting::jnienv, &lJavaVMAttachArgs) == JNI_ERR) { + lJavaVMAttachArgs.group = nullptr; + + if (jvm->AttachCurrentThread(&porting::jnienv, &lJavaVMAttachArgs) == JNI_ERR) { errorstream << "Failed to attach native thread to jvm" << std::endl; exit(-1); } nativeActivity = findClass("net/minetest/minetest/GameActivity"); - if (nativeActivity == 0) { + if (nativeActivity == nullptr) errorstream << "porting::initAndroid unable to find java native activity class" << std::endl; - } #ifdef GPROF - /* in the start-up code */ + // in the start-up code __android_log_print(ANDROID_LOG_ERROR, PROJECT_NAME_C, "Initializing GPROF profiler"); - monstartup("libminetest.so"); + monstartup("libMinetest.so"); #endif } void cleanupAndroid() { - #ifdef GPROF errorstream << "Shutting down GPROF profiler" << std::endl; setenv("CPUPROFILE", (path_user + DIR_DELIM + "gmon.out").c_str(), 1); @@ -157,7 +144,7 @@ static std::string javaStringToUTF8(jstring js) { std::string str; // Get string as a UTF-8 c-string - const char *c_str = jnienv->GetStringUTFChars(js, NULL); + const char *c_str = jnienv->GetStringUTFChars(js, nullptr); // Save it str = c_str; // And free the c-string @@ -166,17 +153,15 @@ static std::string javaStringToUTF8(jstring js) } // Calls static method if obj is NULL -static std::string getAndroidPath(jclass cls, jobject obj, jclass cls_File, - jmethodID mt_getAbsPath, const char *getter) +static std::string getAndroidPath( + jclass cls, jobject obj, jmethodID mt_getAbsPath, const char *getter) { // Get getter method jmethodID mt_getter; if (obj) - mt_getter = jnienv->GetMethodID(cls, getter, - "()Ljava/io/File;"); + mt_getter = jnienv->GetMethodID(cls, getter, "()Ljava/io/File;"); else - mt_getter = jnienv->GetStaticMethodID(cls, getter, - "()Ljava/io/File;"); + mt_getter = jnienv->GetStaticMethodID(cls, getter, "()Ljava/io/File;"); // Call getter jobject ob_file; @@ -186,8 +171,7 @@ static std::string getAndroidPath(jclass cls, jobject obj, jclass cls_File, ob_file = jnienv->CallStaticObjectMethod(cls, mt_getter); // Call getAbsolutePath - jstring js_path = (jstring) jnienv->CallObjectMethod(ob_file, - mt_getAbsPath); + auto js_path = (jstring) jnienv->CallObjectMethod(ob_file, mt_getAbsPath); return javaStringToUTF8(js_path); } @@ -201,26 +185,24 @@ void initializePathsAndroid() // Get getAbsolutePath method jmethodID mt_getAbsPath = jnienv->GetMethodID(cls_File, "getAbsolutePath", "()Ljava/lang/String;"); + std::string path_storage = getAndroidPath(cls_Env, nullptr, + mt_getAbsPath, "getExternalStorageDirectory"); - path_cache = getAndroidPath(nativeActivity, app_global->activity->clazz, - cls_File, mt_getAbsPath, "getCacheDir"); - path_storage = getAndroidPath(cls_Env, NULL, cls_File, mt_getAbsPath, - "getExternalStorageDirectory"); path_user = path_storage + DIR_DELIM + PROJECT_NAME_C; path_share = path_storage + DIR_DELIM + PROJECT_NAME_C; - + path_cache = getAndroidPath(nativeActivity, + app_global->activity->clazz, mt_getAbsPath, "getCacheDir"); migrateCachePath(); } -void showInputDialog(const std::string& acceptButton, const std::string& hint, - const std::string& current, int editType) +void showInputDialog(const std::string &acceptButton, const std::string &hint, + const std::string ¤t, int editType) { - jmethodID showdialog = jnienv->GetMethodID(nativeActivity,"showDialog", + jmethodID showdialog = jnienv->GetMethodID(nativeActivity, "showDialog", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V"); - if (showdialog == 0) { - assert("porting::showInputDialog unable to find java show dialog method" == 0); - } + FATAL_ERROR_IF(showdialog == nullptr, + "porting::showInputDialog unable to find java show dialog method"); jstring jacceptButton = jnienv->NewStringUTF(acceptButton.c_str()); jstring jhint = jnienv->NewStringUTF(hint.c_str()); @@ -236,9 +218,8 @@ int getInputDialogState() jmethodID dialogstate = jnienv->GetMethodID(nativeActivity, "getDialogState", "()I"); - if (dialogstate == 0) { - assert("porting::getInputDialogState unable to find java dialog state method" == 0); - } + FATAL_ERROR_IF(dialogstate == nullptr, + "porting::getInputDialogState unable to find java dialog state method"); return jnienv->CallIntMethod(app_global->activity->clazz, dialogstate); } @@ -248,14 +229,13 @@ std::string getInputDialogValue() jmethodID dialogvalue = jnienv->GetMethodID(nativeActivity, "getDialogValue", "()Ljava/lang/String;"); - if (dialogvalue == 0) { - assert("porting::getInputDialogValue unable to find java dialog value method" == 0); - } + FATAL_ERROR_IF(dialogvalue == nullptr, + "porting::getInputDialogValue unable to find java dialog value method"); jobject result = jnienv->CallObjectMethod(app_global->activity->clazz, dialogvalue); - const char* javachars = jnienv->GetStringUTFChars((jstring) result,0); + const char *javachars = jnienv->GetStringUTFChars((jstring) result, nullptr); std::string text(javachars); jnienv->ReleaseStringUTFChars((jstring) result, javachars); @@ -269,12 +249,11 @@ float getDisplayDensity() static float value = 0; if (firstrun) { - jmethodID getDensity = jnienv->GetMethodID(nativeActivity, "getDensity", - "()F"); + jmethodID getDensity = jnienv->GetMethodID(nativeActivity, + "getDensity", "()F"); - if (getDensity == 0) { - assert("porting::getDisplayDensity unable to find java getDensity method" == 0); - } + FATAL_ERROR_IF(getDensity == nullptr, + "porting::getDisplayDensity unable to find java getDensity method"); value = jnienv->CallFloatMethod(app_global->activity->clazz, getDensity); firstrun = false; @@ -291,9 +270,8 @@ v2u32 getDisplaySize() jmethodID getDisplayWidth = jnienv->GetMethodID(nativeActivity, "getDisplayWidth", "()I"); - if (getDisplayWidth == 0) { - assert("porting::getDisplayWidth unable to find java getDisplayWidth method" == 0); - } + FATAL_ERROR_IF(getDisplayWidth == nullptr, + "porting::getDisplayWidth unable to find java getDisplayWidth method"); retval.X = jnienv->CallIntMethod(app_global->activity->clazz, getDisplayWidth); @@ -301,9 +279,8 @@ v2u32 getDisplaySize() jmethodID getDisplayHeight = jnienv->GetMethodID(nativeActivity, "getDisplayHeight", "()I"); - if (getDisplayHeight == 0) { - assert("porting::getDisplayHeight unable to find java getDisplayHeight method" == 0); - } + FATAL_ERROR_IF(getDisplayHeight == nullptr, + "porting::getDisplayHeight unable to find java getDisplayHeight method"); retval.Y = jnienv->CallIntMethod(app_global->activity->clazz, getDisplayHeight); diff --git a/src/porting_android.h b/src/porting_android.h index 60eb2a9c0..42f90b60b 100644 --- a/src/porting_android.h +++ b/src/porting_android.h @@ -30,16 +30,15 @@ with this program; if not, write to the Free Software Foundation, Inc., #include namespace porting { -/** java app **/ +// java app extern android_app *app_global; -/** java <-> c++ interaction interface **/ +// java <-> c++ interaction interface extern JNIEnv *jnienv; -/** - * do initialization required on android only - */ +// do initialization required on android only void initAndroid(); + void cleanupAndroid(); /** @@ -56,8 +55,8 @@ void initializePathsAndroid(); * @param editType type of texfield * (1==multiline text input; 2==single line text input; 3=password field) */ -void showInputDialog(const std::string& acceptButton, - const std::string& hint, const std::string& current, int editType); +void showInputDialog(const std::string &acceptButton, + const std::string &hint, const std::string ¤t, int editType); /** * WORKAROUND for not working callbacks from java -> c++ @@ -75,5 +74,4 @@ std::string getInputDialogValue(); float getDisplayDensity(); v2u32 getDisplaySize(); #endif - } From 664800b2adda44039a85c3566b4ed958abff8b95 Mon Sep 17 00:00:00 2001 From: v-rob Date: Wed, 6 May 2020 10:36:02 -0700 Subject: [PATCH 184/424] FormSpec: Add universal style selector `*` (#9718) --- doc/lua_api.txt | 6 ++++-- src/gui/guiFormSpecMenu.cpp | 20 ++++++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 948e0f89e..961e1ff37 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -2567,7 +2567,7 @@ Elements * Set the style for the element(s) matching `selector` by name. * `selector` can be one of: - * `` - An element name. + * `` - An element name. Includes `*`, which represents every element. * `:` - An element name, a colon, and one or more states. * `state` is a list of states separated by the `+` character. * If a state is provided, the style will only take effect when the element is in that state. @@ -2580,7 +2580,7 @@ Elements * Set the style for the element(s) matching `selector` by type. * `selector` can be one of: - * `` - An element type. + * `` - An element type. Includes `*`, which represents every element. * `:` - An element type, a colon, and one or more states. * `state` is a list of states separated by the `+` character. * If a state is provided, the style will only take effect when the element is in that state. @@ -2647,6 +2647,8 @@ A name/type can optionally be a comma separated list of names/types, like so: world_delete,world_create,world_configure button,image_button +A `*` type can be used to select every element in the formspec. + Any name/type in the list can also be accompanied by a `+`-separated list of states, like so: world_delete:hovered+pressed diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index 567f0ca7e..72095a86e 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -4609,20 +4609,32 @@ StyleSpec GUIFormSpecMenu::getDefaultStyleForElement(const std::string &type, return getStyleForElement(type, name, parent_type)[StyleSpec::STATE_DEFAULT]; } -std::array GUIFormSpecMenu::getStyleForElement(const std::string &type, - const std::string &name, const std::string &parent_type) +std::array GUIFormSpecMenu::getStyleForElement( + const std::string &type, const std::string &name, const std::string &parent_type) { std::array ret; + auto it = theme_by_type.find("*"); + if (it != theme_by_type.end()) { + for (const StyleSpec &spec : it->second) + ret[(u32)spec.getState()] |= spec; + } + + it = theme_by_name.find("*"); + if (it != theme_by_name.end()) { + for (const StyleSpec &spec : it->second) + ret[(u32)spec.getState()] |= spec; + } + if (!parent_type.empty()) { - auto it = theme_by_type.find(parent_type); + it = theme_by_type.find(parent_type); if (it != theme_by_type.end()) { for (const StyleSpec &spec : it->second) ret[(u32)spec.getState()] |= spec; } } - auto it = theme_by_type.find(type); + it = theme_by_type.find(type); if (it != theme_by_type.end()) { for (const StyleSpec &spec : it->second) ret[(u32)spec.getState()] |= spec; From 4f9ccd89b347dad3db5ce63d3405a8d60c163af5 Mon Sep 17 00:00:00 2001 From: Jozef Behran Date: Wed, 6 May 2020 21:35:18 +0200 Subject: [PATCH 185/424] Get rid of non-ascii characters in the debug display code (#8821) --- src/client/gameui.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/client/gameui.cpp b/src/client/gameui.cpp index 138dfb4da..bbe7caeb1 100644 --- a/src/client/gameui.cpp +++ b/src/client/gameui.cpp @@ -128,9 +128,9 @@ void GameUI::update(const RunStats &stats, Client *client, MapDrawControl *draw_ << "pos: (" << (player_position.X / BS) << ", " << (player_position.Y / BS) << ", " << (player_position.Z / BS) - << ") | yaw: " << (wrapDegrees_0_360(cam.camera_yaw)) << "° " + << ") | yaw: " << (wrapDegrees_0_360(cam.camera_yaw)) << "\xC2\xB0 " << yawToDirectionString(cam.camera_yaw) - << " | pitch: " << (-wrapDegrees_180(cam.camera_pitch)) << "°" + << " | pitch: " << (-wrapDegrees_180(cam.camera_pitch)) << "\xC2\xB0" << " | seed: " << ((u64)client->getMapSeed()); if (pointed_old.type == POINTEDTHING_NODE) { From 650168cadac2a45277a9527ae79efb288ba7a4a4 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 7 May 2020 21:39:04 +0200 Subject: [PATCH 186/424] Fix Server triggering wrong errors if environment init fails --- src/serverenvironment.cpp | 6 ++++++ src/serverenvironment.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 27432e973..6bf7399cf 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -624,6 +624,9 @@ PlayerSAO *ServerEnvironment::loadPlayer(RemotePlayer *player, bool *new_player, void ServerEnvironment::saveMeta() { + if (!m_meta_loaded) + return; + std::string path = m_path_world + DIR_DELIM "env_meta.txt"; // Open file and serialize @@ -650,6 +653,9 @@ void ServerEnvironment::saveMeta() void ServerEnvironment::loadMeta() { + SANITY_CHECK(!m_meta_loaded); + m_meta_loaded = true; + // If file doesn't exist, load default environment metadata if (!fs::PathExists(m_path_world + DIR_DELIM "env_meta.txt")) { infostream << "ServerEnvironment: Loading default environment metadata" diff --git a/src/serverenvironment.h b/src/serverenvironment.h index f814b95c0..e2f1a3784 100644 --- a/src/serverenvironment.h +++ b/src/serverenvironment.h @@ -440,6 +440,8 @@ private: IntervalLimiter m_active_blocks_management_interval; IntervalLimiter m_active_block_modifier_interval; IntervalLimiter m_active_blocks_nodemetadata_interval; + // Whether the variables below have been read from file yet + bool m_meta_loaded = false; // Time from the beginning of the game in seconds. // Incremented in step(). u32 m_game_time = 0; From 454dbf83a9bf292910c1495a2aa49fd8b960c28f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot?= Date: Thu, 7 May 2020 22:38:41 +0200 Subject: [PATCH 187/424] Server class code cleanups (#9769) * Server::overrideDayNightRatio doesn't require to return bool There is no sense to sending null player, the caller should send a valid object * Server::init: make private & cleanup This function is always called before start() and loads some variables which can be loaded in constructor directly. Make it private and call it directly in start * Split Server inventory responsibility to a dedicated object This splits permit to found various historical issues: * duplicate lookups on player connection * sending inventory to non related player when a player connects * non friendly lookups on detached inventories ownership This reduce the detached inventory complexity and also increased the lookup performance in a quite interesting way for servers with thousands of inventories. --- src/client/game.cpp | 1 - src/main.cpp | 2 - src/network/serverpackethandler.cpp | 11 +- src/script/lua_api/l_base.cpp | 5 + src/script/lua_api/l_base.h | 2 + src/script/lua_api/l_inventory.cpp | 13 +- src/script/lua_api/l_object.cpp | 7 +- src/server.cpp | 192 ++++------------------------ src/server.h | 33 ++--- src/server/CMakeLists.txt | 1 + src/server/serverinventorymgr.cpp | 192 ++++++++++++++++++++++++++++ src/server/serverinventorymgr.h | 60 +++++++++ 12 files changed, 312 insertions(+), 207 deletions(-) create mode 100644 src/server/serverinventorymgr.cpp create mode 100644 src/server/serverinventorymgr.h diff --git a/src/client/game.cpp b/src/client/game.cpp index 1577a37db..4d7a85526 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -1302,7 +1302,6 @@ bool Game::createSingleplayerServer(const std::string &map_dir, } server = new Server(map_dir, gamespec, simple_singleplayer_mode, bind_addr, false); - server->init(); server->start(); return true; diff --git a/src/main.cpp b/src/main.cpp index 147f686ed..b3b17c2d1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -887,7 +887,6 @@ static bool run_dedicated_server(const GameParams &game_params, const Settings & // Create server Server server(game_params.world_path, game_params.game_spec, false, bind_addr, true, &iface); - server.init(); g_term_console.setup(&iface, &kill, admin_nick); @@ -922,7 +921,6 @@ static bool run_dedicated_server(const GameParams &game_params, const Settings & // Create server Server server(game_params.world_path, game_params.game_spec, false, bind_addr, true); - server.init(); server.start(); // Run server diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index adaa9a965..39a912827 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -34,6 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "network/networkprotocol.h" #include "network/serveropcodes.h" #include "server/player_sao.h" +#include "server/serverinventorymgr.h" #include "util/auth.h" #include "util/base64.h" #include "util/pointedthing.h" @@ -620,9 +621,9 @@ void Server::handleCommand_InventoryAction(NetworkPacket* pkt) ma->from_inv.applyCurrentPlayer(player->getName()); ma->to_inv.applyCurrentPlayer(player->getName()); - setInventoryModified(ma->from_inv); + m_inventory_mgr->setInventoryModified(ma->from_inv); if (ma->from_inv != ma->to_inv) - setInventoryModified(ma->to_inv); + m_inventory_mgr->setInventoryModified(ma->to_inv); bool from_inv_is_current_player = (ma->from_inv.type == InventoryLocation::PLAYER) && @@ -687,7 +688,7 @@ void Server::handleCommand_InventoryAction(NetworkPacket* pkt) da->from_inv.applyCurrentPlayer(player->getName()); - setInventoryModified(da->from_inv); + m_inventory_mgr->setInventoryModified(da->from_inv); /* Disable dropping items out of craftpreview @@ -723,7 +724,7 @@ void Server::handleCommand_InventoryAction(NetworkPacket* pkt) ca->craft_inv.applyCurrentPlayer(player->getName()); - setInventoryModified(ca->craft_inv); + m_inventory_mgr->setInventoryModified(ca->craft_inv); //bool craft_inv_is_current_player = // (ca->craft_inv.type == InventoryLocation::PLAYER) && @@ -739,7 +740,7 @@ void Server::handleCommand_InventoryAction(NetworkPacket* pkt) } // Do the action - a->apply(this, playersao, this); + a->apply(m_inventory_mgr.get(), playersao, this); // Eat the action delete a; } diff --git a/src/script/lua_api/l_base.cpp b/src/script/lua_api/l_base.cpp index b8658f62b..2bee09436 100644 --- a/src/script/lua_api/l_base.cpp +++ b/src/script/lua_api/l_base.cpp @@ -45,6 +45,11 @@ Server *ModApiBase::getServer(lua_State *L) return getScriptApiBase(L)->getServer(); } +ServerInventoryManager *ModApiBase::getServerInventoryMgr(lua_State *L) +{ + return getScriptApiBase(L)->getServer()->getInventoryMgr(); +} + #ifndef SERVER Client *ModApiBase::getClient(lua_State *L) { diff --git a/src/script/lua_api/l_base.h b/src/script/lua_api/l_base.h index e32647628..65fce8481 100644 --- a/src/script/lua_api/l_base.h +++ b/src/script/lua_api/l_base.h @@ -38,12 +38,14 @@ class GUIEngine; class ScriptApiBase; class Server; class Environment; +class ServerInventoryManager; class ModApiBase : protected LuaHelper { public: static ScriptApiBase* getScriptApiBase(lua_State *L); static Server* getServer(lua_State *L); + static ServerInventoryManager *getServerInventoryMgr(lua_State *L); #ifndef SERVER static Client* getClient(lua_State *L); static GUIEngine* getGuiEngine(lua_State *L); diff --git a/src/script/lua_api/l_inventory.cpp b/src/script/lua_api/l_inventory.cpp index 4c8977898..e41b5cb41 100644 --- a/src/script/lua_api/l_inventory.cpp +++ b/src/script/lua_api/l_inventory.cpp @@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common/c_converter.h" #include "common/c_content.h" #include "server.h" +#include "server/serverinventorymgr.h" #include "remoteplayer.h" /* @@ -38,7 +39,7 @@ InvRef* InvRef::checkobject(lua_State *L, int narg) Inventory* InvRef::getinv(lua_State *L, InvRef *ref) { - return getServer(L)->getInventory(ref->m_loc); + return getServerInventoryMgr(L)->getInventory(ref->m_loc); } InventoryList* InvRef::getlist(lua_State *L, InvRef *ref, @@ -54,7 +55,7 @@ InventoryList* InvRef::getlist(lua_State *L, InvRef *ref, void InvRef::reportInventoryChange(lua_State *L, InvRef *ref) { // Inform other things that the inventory has changed - getServer(L)->setInventoryModified(ref->m_loc); + getServerInventoryMgr(L)->setInventoryModified(ref->m_loc); } // Exported functions @@ -497,7 +498,7 @@ int ModApiInventory::l_get_inventory(lua_State *L) v3s16 pos = check_v3s16(L, -1); loc.setNodeMeta(pos); - if (getServer(L)->getInventory(loc) != NULL) + if (getServerInventoryMgr(L)->getInventory(loc) != NULL) InvRef::create(L, loc); else lua_pushnil(L); @@ -515,7 +516,7 @@ int ModApiInventory::l_get_inventory(lua_State *L) lua_pop(L, 1); } - if (getServer(L)->getInventory(loc) != NULL) + if (getServerInventoryMgr(L)->getInventory(loc) != NULL) InvRef::create(L, loc); else lua_pushnil(L); @@ -530,7 +531,7 @@ int ModApiInventory::l_create_detached_inventory_raw(lua_State *L) NO_MAP_LOCK_REQUIRED; const char *name = luaL_checkstring(L, 1); std::string player = readParam(L, 2, ""); - if (getServer(L)->createDetachedInventory(name, player) != NULL) { + if (getServerInventoryMgr(L)->createDetachedInventory(name, getServer(L)->idef(), player) != NULL) { InventoryLocation loc; loc.setDetached(name); InvRef::create(L, loc); @@ -545,7 +546,7 @@ int ModApiInventory::l_remove_detached_inventory_raw(lua_State *L) { NO_MAP_LOCK_REQUIRED; const std::string &name = luaL_checkstring(L, 1); - lua_pushboolean(L, getServer(L)->removeDetachedInventory(name)); + lua_pushboolean(L, getServerInventoryMgr(L)->removeDetachedInventory(name)); return 1; } diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index f71130378..0a9f3117b 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -33,6 +33,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "scripting_server.h" #include "server/luaentity_sao.h" #include "server/player_sao.h" +#include "server/serverinventorymgr.h" /* ObjectRef @@ -289,7 +290,7 @@ int ObjectRef::l_get_inventory(lua_State *L) if (co == NULL) return 0; // Do it InventoryLocation loc = co->getInventoryLocation(); - if (getServer(L)->getInventory(loc) != NULL) + if (getServerInventoryMgr(L)->getInventory(loc) != NULL) InvRef::create(L, loc); else lua_pushnil(L); // An object may have no inventory (nil) @@ -2172,9 +2173,7 @@ int ObjectRef::l_override_day_night_ratio(lua_State *L) ratio = readParam(L, 2); } - if (!getServer(L)->overrideDayNightRatio(player, do_override, ratio)) - return 0; - + getServer(L)->overrideDayNightRatio(player, do_override, ratio); lua_pushboolean(L, true); return 1; } diff --git a/src/server.cpp b/src/server.cpp index 05584be2d..16e026ce2 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -64,6 +64,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "chat_interface.h" #include "remoteplayer.h" #include "server/player_sao.h" +#include "server/serverinventorymgr.h" #include "translation.h" class ClientNotFoundException : public BaseException @@ -338,11 +339,6 @@ Server::~Server() infostream << "Server: Deinitializing scripting" << std::endl; delete m_script; - // Delete detached inventories - for (auto &detached_inventory : m_detached_inventories) { - delete detached_inventory.second; - } - while (!m_unsent_map_edit_queue.empty()) { delete m_unsent_map_edit_queue.front(); m_unsent_map_edit_queue.pop(); @@ -388,6 +384,9 @@ void Server::init() m_script = new ServerScripting(this); + // Must be created before mod loading because we have some inventory creation + m_inventory_mgr = std::unique_ptr(new ServerInventoryManager()); + m_script->loadMod(getBuiltinLuaPath() + DIR_DELIM "init.lua", BUILTIN_MOD_NAME); m_modmgr->loadMods(m_script); @@ -422,6 +421,7 @@ void Server::init() // Initialize Environment m_env = new ServerEnvironment(servermap, m_script, this, m_path_world); + m_inventory_mgr->setEnv(m_env); m_clients.setEnv(m_env); if (!servermap->settings_mgr.makeMapgenParams()) @@ -443,6 +443,8 @@ void Server::init() m_env->loadMeta(); + // Those settings can be overwritten in world.mt, they are + // intended to be cached after environment loading. m_liquid_transform_every = g_settings->getFloat("liquid_update"); m_max_chatmessage_length = g_settings->getU16("chat_message_max_size"); m_csm_restriction_flags = g_settings->getU64("csm_restriction_flags"); @@ -451,6 +453,8 @@ void Server::init() void Server::start() { + init(); + infostream << "Starting server on " << m_bind_addr.serializeString() << "..." << std::endl; @@ -1180,82 +1184,6 @@ void Server::onMapEditEvent(const MapEditEvent &event) m_unsent_map_edit_queue.push(new MapEditEvent(event)); } -Inventory* Server::getInventory(const InventoryLocation &loc) -{ - switch (loc.type) { - case InventoryLocation::UNDEFINED: - case InventoryLocation::CURRENT_PLAYER: - break; - case InventoryLocation::PLAYER: - { - RemotePlayer *player = m_env->getPlayer(loc.name.c_str()); - if(!player) - return NULL; - PlayerSAO *playersao = player->getPlayerSAO(); - if(!playersao) - return NULL; - return playersao->getInventory(); - } - break; - case InventoryLocation::NODEMETA: - { - NodeMetadata *meta = m_env->getMap().getNodeMetadata(loc.p); - if(!meta) - return NULL; - return meta->getInventory(); - } - break; - case InventoryLocation::DETACHED: - { - if(m_detached_inventories.count(loc.name) == 0) - return NULL; - return m_detached_inventories[loc.name]; - } - break; - default: - sanity_check(false); // abort - break; - } - return NULL; -} - -void Server::setInventoryModified(const InventoryLocation &loc) -{ - switch(loc.type){ - case InventoryLocation::UNDEFINED: - break; - case InventoryLocation::PLAYER: - { - - RemotePlayer *player = m_env->getPlayer(loc.name.c_str()); - - if (!player) - return; - - player->setModified(true); - player->inventory.setModified(true); - // Updates are sent in ServerEnvironment::step() - } - break; - case InventoryLocation::NODEMETA: - { - MapEditEvent event; - event.type = MEET_BLOCK_NODE_METADATA_CHANGED; - event.p = loc.p; - m_env->getMap().dispatchEvent(event); - } - break; - case InventoryLocation::DETACHED: - { - // Updates are sent in ServerEnvironment::step() - } - break; - default: - sanity_check(false); // abort - break; - } -} - void Server::SetBlocksNotSent(std::map& block) { std::vector clients = m_clients.getClientIDs(); @@ -2712,40 +2640,20 @@ void Server::sendRequestedMedia(session_t peer_id, } } -void Server::sendDetachedInventory(const std::string &name, session_t peer_id) +void Server::sendDetachedInventory(Inventory *inventory, const std::string &name, session_t peer_id) { - const auto &inv_it = m_detached_inventories.find(name); - const auto &player_it = m_detached_inventories_player.find(name); - - if (player_it == m_detached_inventories_player.end() || - player_it->second.empty()) { - // OK. Send to everyone - } else { - if (!m_env) - return; // Mods are not done loading - - RemotePlayer *p = m_env->getPlayer(player_it->second.c_str()); - if (!p) - return; // Player is offline - - if (peer_id != PEER_ID_INEXISTENT && peer_id != p->getPeerId()) - return; // Caller requested send to a different player, so don't send. - - peer_id = p->getPeerId(); - } - NetworkPacket pkt(TOCLIENT_DETACHED_INVENTORY, 0, peer_id); pkt << name; - if (inv_it == m_detached_inventories.end()) { + if (!inventory) { pkt << false; // Remove inventory } else { pkt << true; // Update inventory // Serialization & NetworkPacket isn't a love story std::ostringstream os(std::ios_base::binary); - inv_it->second->serialize(os); - inv_it->second->setModified(false); + inventory->serialize(os); + inventory->setModified(false); const std::string &os_str = os.str(); pkt << static_cast(os_str.size()); // HACK: to keep compatibility with 5.0.0 clients @@ -2760,16 +2668,17 @@ void Server::sendDetachedInventory(const std::string &name, session_t peer_id) void Server::sendDetachedInventories(session_t peer_id, bool incremental) { - for (const auto &detached_inventory : m_detached_inventories) { - const std::string &name = detached_inventory.first; - if (incremental) { - Inventory *inv = detached_inventory.second; - if (!inv || !inv->checkModified()) - continue; - } - - sendDetachedInventory(name, peer_id); + // Lookup player name, to filter detached inventories just after + std::string peer_name; + if (peer_id != PEER_ID_INEXISTENT) { + peer_name = getClient(peer_id, CS_Created)->getName(); } + + auto send_cb = [this, peer_id](const std::string &name, Inventory *inv) { + sendDetachedInventory(inv, name, peer_id); + }; + + m_inventory_mgr->sendDetachedInventories(peer_name, incremental, send_cb); } /* @@ -3442,15 +3351,12 @@ void Server::setClouds(RemotePlayer *player, const CloudParams ¶ms) SendCloudParams(player->getPeerId(), params); } -bool Server::overrideDayNightRatio(RemotePlayer *player, bool do_override, +void Server::overrideDayNightRatio(RemotePlayer *player, bool do_override, float ratio) { - if (!player) - return false; - + sanity_check(player); player->overrideDayNightRatio(do_override, ratio); SendOverrideDayNightRatio(player->getPeerId(), do_override, ratio); - return true; } void Server::notifyPlayers(const std::wstring &msg) @@ -3541,52 +3447,6 @@ void Server::deleteParticleSpawner(const std::string &playername, u32 id) SendDeleteParticleSpawner(peer_id, id); } -Inventory* Server::createDetachedInventory(const std::string &name, const std::string &player) -{ - if(m_detached_inventories.count(name) > 0){ - infostream<<"Server clearing detached inventory \""<second; - m_detached_inventories.erase(inv_it); - - if (!m_env) // Mods are not done loading - return true; - - const auto &player_it = m_detached_inventories_player.find(name); - if (player_it != m_detached_inventories_player.end()) { - RemotePlayer *player = m_env->getPlayer(player_it->second.c_str()); - - if (player && player->getPeerId() != PEER_ID_INEXISTENT) - sendDetachedInventory(name, player->getPeerId()); - - m_detached_inventories_player.erase(player_it); - } else { - // Notify all players about the change - sendDetachedInventory(name, PEER_ID_INEXISTENT); - } - return true; -} - // actions: time-reversed list // Return value: success/failure bool Server::rollbackRevertActions(const std::list &actions, @@ -3607,7 +3467,7 @@ bool Server::rollbackRevertActions(const std::list &actions, for (const RollbackAction &action : actions) { num_tried++; - bool success = action.applyRevert(map, this, this); + bool success = action.applyRevert(map, m_inventory_mgr.get(), this); if(!success){ num_failed++; std::ostringstream os; diff --git a/src/server.h b/src/server.h index 71059dd30..7a1de9370 100644 --- a/src/server.h +++ b/src/server.h @@ -68,6 +68,7 @@ struct MoonParams; struct StarParams; class ServerThread; class ServerModManager; +class ServerInventoryManager; enum ClientDeletionReason { CDR_LEAVE, @@ -116,7 +117,7 @@ struct ServerPlayingSound }; class Server : public con::PeerHandler, public MapEventReceiver, - public InventoryManager, public IGameDef + public IGameDef { public: /* @@ -134,7 +135,6 @@ public: ~Server(); DISABLE_CLASS_COPY(Server); - void init(); void start(); void stop(); // This is mainly a way to pass the time to the server. @@ -196,12 +196,6 @@ public: */ void onMapEditEvent(const MapEditEvent &event); - /* - Shall be called with the environment and the connection locked. - */ - Inventory* getInventory(const InventoryLocation &loc); - void setInventoryModified(const InventoryLocation &loc); - // Connection must be locked when called std::wstring getStatusString(); inline double getUptime() const { return m_uptime_counter->get(); } @@ -253,10 +247,8 @@ public: void deleteParticleSpawner(const std::string &playername, u32 id); - // Creates or resets inventory - Inventory *createDetachedInventory(const std::string &name, - const std::string &player = ""); - bool removeDetachedInventory(const std::string &name); + ServerInventoryManager *getInventoryMgr() const { return m_inventory_mgr.get(); } + void sendDetachedInventory(Inventory *inventory, const std::string &name, session_t peer_id); // Envlock and conlock should be locked when using scriptapi ServerScripting *getScriptIface(){ return m_script; } @@ -318,7 +310,7 @@ public: void setClouds(RemotePlayer *player, const CloudParams ¶ms); - bool overrideDayNightRatio(RemotePlayer *player, bool do_override, float brightness); + void overrideDayNightRatio(RemotePlayer *player, bool do_override, float brightness); /* con::PeerHandler implementation. */ void peerAdded(con::Peer *peer); @@ -389,6 +381,8 @@ private: float m_timer = 0.0f; }; + void init(); + void SendMovement(session_t peer_id); void SendHP(session_t peer_id, u16 hp); void SendBreath(session_t peer_id, u16 breath); @@ -457,8 +451,6 @@ private: void sendRequestedMedia(session_t peer_id, const std::vector &tosend); - void sendDetachedInventory(const std::string &name, session_t peer_id); - // Adds a ParticleSpawner on peer with peer_id (PEER_ID_INEXISTENT == all) void SendAddParticleSpawner(session_t peer_id, u16 protocol_version, u16 amount, float spawntime, @@ -656,14 +648,6 @@ private: s32 m_next_sound_id = 0; // positive values only s32 nextSoundId(); - /* - Detached inventories (behind m_env_mutex) - */ - // key = name - std::map m_detached_inventories; - // value = "" (visible to all players) or player name - std::map m_detached_inventories_player; - std::unordered_map m_mod_storages; float m_mod_storage_save_timer = 10.0f; @@ -674,6 +658,9 @@ private: // ModChannel manager std::unique_ptr m_modchannel_mgr; + // Inventory manager + std::unique_ptr m_inventory_mgr; + // Global server metrics backend std::unique_ptr m_metrics_backend; diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt index 4d94504f6..0a5a8f3a7 100644 --- a/src/server/CMakeLists.txt +++ b/src/server/CMakeLists.txt @@ -4,5 +4,6 @@ set(server_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/mods.cpp ${CMAKE_CURRENT_SOURCE_DIR}/player_sao.cpp ${CMAKE_CURRENT_SOURCE_DIR}/serveractiveobject.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/serverinventorymgr.cpp ${CMAKE_CURRENT_SOURCE_DIR}/unit_sao.cpp PARENT_SCOPE) diff --git a/src/server/serverinventorymgr.cpp b/src/server/serverinventorymgr.cpp new file mode 100644 index 000000000..555e01ec6 --- /dev/null +++ b/src/server/serverinventorymgr.cpp @@ -0,0 +1,192 @@ +/* +Minetest +Copyright (C) 2010-2020 Minetest core development team + +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 "serverinventorymgr.h" +#include "map.h" +#include "nodemetadata.h" +#include "player_sao.h" +#include "remoteplayer.h" +#include "server.h" +#include "serverenvironment.h" + +ServerInventoryManager::ServerInventoryManager() : InventoryManager() +{ +} + +ServerInventoryManager::~ServerInventoryManager() +{ + // Delete detached inventories + for (auto &detached_inventory : m_detached_inventories) { + delete detached_inventory.second.inventory; + } +} + +Inventory *ServerInventoryManager::getInventory(const InventoryLocation &loc) +{ + switch (loc.type) { + case InventoryLocation::UNDEFINED: + case InventoryLocation::CURRENT_PLAYER: + break; + case InventoryLocation::PLAYER: { + RemotePlayer *player = m_env->getPlayer(loc.name.c_str()); + if (!player) + return NULL; + PlayerSAO *playersao = player->getPlayerSAO(); + if (!playersao) + return NULL; + return playersao->getInventory(); + } break; + case InventoryLocation::NODEMETA: { + NodeMetadata *meta = m_env->getMap().getNodeMetadata(loc.p); + if (!meta) + return NULL; + return meta->getInventory(); + } break; + case InventoryLocation::DETACHED: { + auto it = m_detached_inventories.find(loc.name); + if (it == m_detached_inventories.end()) + return nullptr; + return it->second.inventory; + } break; + default: + sanity_check(false); // abort + break; + } + return NULL; +} + +void ServerInventoryManager::setInventoryModified(const InventoryLocation &loc) +{ + switch (loc.type) { + case InventoryLocation::UNDEFINED: + break; + case InventoryLocation::PLAYER: { + + RemotePlayer *player = m_env->getPlayer(loc.name.c_str()); + + if (!player) + return; + + player->setModified(true); + player->inventory.setModified(true); + // Updates are sent in ServerEnvironment::step() + } break; + case InventoryLocation::NODEMETA: { + MapEditEvent event; + event.type = MEET_BLOCK_NODE_METADATA_CHANGED; + event.p = loc.p; + m_env->getMap().dispatchEvent(event); + } break; + case InventoryLocation::DETACHED: { + // Updates are sent in ServerEnvironment::step() + } break; + default: + sanity_check(false); // abort + break; + } +} + +Inventory *ServerInventoryManager::createDetachedInventory( + const std::string &name, IItemDefManager *idef, const std::string &player) +{ + if (m_detached_inventories.count(name) > 0) { + infostream << "Server clearing detached inventory \"" << name << "\"" + << std::endl; + delete m_detached_inventories[name].inventory; + } else { + infostream << "Server creating detached inventory \"" << name << "\"" + << std::endl; + } + + Inventory *inv = new Inventory(idef); + sanity_check(inv); + m_detached_inventories[name].inventory = inv; + if (!player.empty()) { + m_detached_inventories[name].owner = player; + + if (!m_env) + return inv; // Mods are not loaded yet, ignore + + RemotePlayer *p = m_env->getPlayer(name.c_str()); + + // if player is connected, send him the inventory + if (p && p->getPeerId() != PEER_ID_INEXISTENT) { + m_env->getGameDef()->sendDetachedInventory( + inv, name, p->getPeerId()); + } + } else { + if (!m_env) + return inv; // Mods are not loaded yet, don't send + + // Inventory is for everybody, broadcast + m_env->getGameDef()->sendDetachedInventory(inv, name, PEER_ID_INEXISTENT); + } + + return inv; +} + +bool ServerInventoryManager::removeDetachedInventory(const std::string &name) +{ + const auto &inv_it = m_detached_inventories.find(name); + if (inv_it == m_detached_inventories.end()) + return false; + + delete inv_it->second.inventory; + const std::string &owner = inv_it->second.owner; + + if (!owner.empty()) { + RemotePlayer *player = m_env->getPlayer(owner.c_str()); + + if (player && player->getPeerId() != PEER_ID_INEXISTENT) + m_env->getGameDef()->sendDetachedInventory( + nullptr, name, player->getPeerId()); + + } else { + // Notify all players about the change + m_env->getGameDef()->sendDetachedInventory( + nullptr, name, PEER_ID_INEXISTENT); + } + + m_detached_inventories.erase(inv_it); + + return true; +} + +void ServerInventoryManager::sendDetachedInventories(const std::string &peer_name, + bool incremental, + std::function apply_cb) +{ + for (const auto &detached_inventory : m_detached_inventories) { + const DetachedInventory &dinv = detached_inventory.second; + if (incremental) { + if (!dinv.inventory || !dinv.inventory->checkModified()) + continue; + } + + // if we are pushing inventories to a specific player + // we should filter to send only the right inventories + if (!peer_name.empty()) { + const std::string &attached_player = dinv.owner; + if (!attached_player.empty() && peer_name != attached_player) + continue; + } + + apply_cb(detached_inventory.first, detached_inventory.second.inventory); + } +} diff --git a/src/server/serverinventorymgr.h b/src/server/serverinventorymgr.h new file mode 100644 index 000000000..d0aac4dae --- /dev/null +++ b/src/server/serverinventorymgr.h @@ -0,0 +1,60 @@ +/* +Minetest +Copyright (C) 2010-2020 Minetest core development team + +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. +*/ + +#pragma once + +#include "inventorymanager.h" +#include + +class ServerEnvironment; + +class ServerInventoryManager : public InventoryManager +{ +public: + ServerInventoryManager(); + virtual ~ServerInventoryManager(); + + void setEnv(ServerEnvironment *env) + { + assert(!m_env); + m_env = env; + } + + Inventory *getInventory(const InventoryLocation &loc); + void setInventoryModified(const InventoryLocation &loc); + + // Creates or resets inventory + Inventory *createDetachedInventory(const std::string &name, IItemDefManager *idef, + const std::string &player = ""); + bool removeDetachedInventory(const std::string &name); + + void sendDetachedInventories(const std::string &peer_name, bool incremental, + std::function apply_cb); + +private: + struct DetachedInventory + { + Inventory *inventory; + std::string owner; + }; + + ServerEnvironment *m_env = nullptr; + + std::unordered_map m_detached_inventories; +}; \ No newline at end of file From b6242498aad793e579960f871f01ba5bd5456658 Mon Sep 17 00:00:00 2001 From: Paul Ouellette Date: Sat, 9 May 2020 11:14:29 -0400 Subject: [PATCH 188/424] Always use same default tabheader height (#9319) Previously the default tabheader height was different when using real coordinates. This resulted in the height of tabs changing when switching tabs in sfinv if some tabs used real coordinates. --- src/gui/guiFormSpecMenu.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index 72095a86e..49133f1cb 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -2027,7 +2027,7 @@ void GUIFormSpecMenu::parseTabHeader(parserData* data, const std::string &elemen // Width is not here because tabs are the width of the text, and // there's no reason to change that. unsigned int i = 0; - std::vector v_geom = {"1", "0.75"}; // Dummy width and default height + std::vector v_geom = {"1", "1"}; // Dummy width and height bool auto_width = true; if (parts.size() == 7) { i++; @@ -2071,6 +2071,9 @@ void GUIFormSpecMenu::parseTabHeader(parserData* data, const std::string &elemen pos = getRealCoordinateBasePos(v_pos); geom = getRealCoordinateGeometry(v_geom); + // Set default height + if (parts.size() <= 6) + geom.Y = m_btn_height * 2; pos.Y -= geom.Y; // TabHeader base pos is the bottom, not the top. if (auto_width) geom.X = DesiredRect.getWidth(); // Set automatic width From 7cb53791c3a6547164a9f8eae10ae8a2e2ddecdb Mon Sep 17 00:00:00 2001 From: TheTermos <55103816+TheTermos@users.noreply.github.com> Date: Sat, 9 May 2020 17:14:56 +0200 Subject: [PATCH 189/424] Color gradient for default and 'regular' type sky (#9502) * add regular sky gradient * add regular sky gradient * Update sky.cpp * change default day sky colors --- src/client/sky.cpp | 33 ++++----------------------------- src/skyparams.h | 4 ++-- 2 files changed, 6 insertions(+), 31 deletions(-) diff --git a/src/client/sky.cpp b/src/client/sky.cpp index ce33b96ae..d21b56fcc 100644 --- a/src/client/sky.cpp +++ b/src/client/sky.cpp @@ -252,35 +252,10 @@ void Sky::render() if (m_visible) { driver->setMaterial(m_materials[1]); for (u32 j = 0; j < 4; j++) { - video::SColor c = cloudyfogcolor.getInterpolated(m_skycolor, 0.45); - vertices[0] = video::S3DVertex(-1, 0.08, -1, 0, 0, 1, c, t, t); - vertices[1] = video::S3DVertex( 1, 0.08, -1, 0, 0, 1, c, o, t); - vertices[2] = video::S3DVertex( 1, 0.12, -1, 0, 0, 1, c, o, o); - vertices[3] = video::S3DVertex(-1, 0.12, -1, 0, 0, 1, c, t, o); - for (video::S3DVertex &vertex : vertices) { - if (j == 0) - // Don't switch - {} - else if (j == 1) - // Switch from -Z (south) to +X (east) - vertex.Pos.rotateXZBy(90); - else if (j == 2) - // Switch from -Z (south) to -X (west) - vertex.Pos.rotateXZBy(-90); - else - // Switch from -Z (south) to +Z (north) - vertex.Pos.rotateXZBy(-180); - } - driver->drawIndexedTriangleFan(&vertices[0], 4, indices, 2); - } - - // Draw far cloudy fog thing at and below all horizons - for (u32 j = 0; j < 4; j++) { - video::SColor c = cloudyfogcolor; - vertices[0] = video::S3DVertex(-1, -1.0, -1, 0, 0, 1, c, t, t); - vertices[1] = video::S3DVertex( 1, -1.0, -1, 0, 0, 1, c, o, t); - vertices[2] = video::S3DVertex( 1, 0.08, -1, 0, 0, 1, c, o, o); - vertices[3] = video::S3DVertex(-1, 0.08, -1, 0, 0, 1, c, t, o); + vertices[0] = video::S3DVertex(-1, -0.02, -1, 0, 0, 1, m_bgcolor, t, t); + vertices[1] = video::S3DVertex( 1, -0.02, -1, 0, 0, 1, m_bgcolor, o, t); + vertices[2] = video::S3DVertex( 1, 0.45, -1, 0, 0, 1, m_skycolor, o, o); + vertices[3] = video::S3DVertex(-1, 0.45, -1, 0, 0, 1, m_skycolor, t, o); for (video::S3DVertex &vertex : vertices) { if (j == 0) // Don't switch diff --git a/src/skyparams.h b/src/skyparams.h index c362ef8f3..1de494d69 100644 --- a/src/skyparams.h +++ b/src/skyparams.h @@ -76,12 +76,12 @@ public: { SkyColor sky; // Horizon colors - sky.day_horizon = video::SColor(255, 155, 193, 240); + sky.day_horizon = video::SColor(255, 144, 211, 246); sky.indoors = video::SColor(255, 100, 100, 100); sky.dawn_horizon = video::SColor(255, 186, 193, 240); sky.night_horizon = video::SColor(255, 64, 144, 255); // Sky colors - sky.day_sky = video::SColor(255, 140, 186, 250); + sky.day_sky = video::SColor(255, 97, 181, 245); sky.dawn_sky = video::SColor(255, 180, 186, 250); sky.night_sky = video::SColor(255, 0, 107, 255); return sky; From 88bb8e57e6780130df1877e7a89bb56c9561ea6a Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sun, 10 May 2020 13:37:30 +0200 Subject: [PATCH 190/424] Request the dedicated GPU when starting Minetest from the `.desktop` file (#9827) See for more information about this newly added `.desktop` entry property. --- misc/net.minetest.minetest.desktop | 1 + 1 file changed, 1 insertion(+) diff --git a/misc/net.minetest.minetest.desktop b/misc/net.minetest.minetest.desktop index ca493c44e..a94dbab1b 100644 --- a/misc/net.minetest.minetest.desktop +++ b/misc/net.minetest.minetest.desktop @@ -11,6 +11,7 @@ Comment[tr]=Tek-Çok oyuncuyla küplerden sonsuz dünyalar inşa et Exec=minetest Icon=minetest Terminal=false +PrefersNonDefaultGPU=true Type=Application Categories=Game;Simulation; StartupNotify=false From 6e1372bd894d955300c40d69e5c882e9cc7d7523 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 11 May 2020 21:40:45 +0200 Subject: [PATCH 191/424] =?UTF-8?q?Add=20support=20for=20statbar=20?= =?UTF-8?q?=E2=80=9Coff=20state=E2=80=9D=20icons=20(#9462)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds support for optional “off state” icons for statbars. “off state icons” can be used to denote the lack of something, like missing hearts or bubbles. Add "off state" textures to the builtin statbars. Co-authored-by: SmallJoker --- builtin/game/statbars.lua | 4 ++ doc/lua_api.txt | 16 +++-- doc/texture_packs.txt | 4 ++ src/client/clientevent.h | 1 + src/client/game.cpp | 7 ++ src/client/hud.cpp | 96 +++++++++++++++++++++++----- src/client/hud.h | 5 +- src/hud.cpp | 1 + src/hud.h | 2 + src/network/clientpackethandler.cpp | 15 ++--- src/network/networkprotocol.h | 6 +- src/script/common/c_content.cpp | 8 +++ src/server.cpp | 3 +- textures/base/pack/bubble_gone.png | Bin 0 -> 68 bytes textures/base/pack/heart_gone.png | Bin 0 -> 68 bytes 15 files changed, 132 insertions(+), 36 deletions(-) create mode 100644 textures/base/pack/bubble_gone.png create mode 100644 textures/base/pack/heart_gone.png diff --git a/builtin/game/statbars.lua b/builtin/game/statbars.lua index 6b5b54428..d192029c5 100644 --- a/builtin/game/statbars.lua +++ b/builtin/game/statbars.lua @@ -5,7 +5,9 @@ local health_bar_definition = { hud_elem_type = "statbar", position = {x = 0.5, y = 1}, text = "heart.png", + text2 = "heart_gone.png", number = core.PLAYER_MAX_HP_DEFAULT, + item = core.PLAYER_MAX_HP_DEFAULT, direction = 0, size = {x = 24, y = 24}, offset = {x = (-10 * 24) - 25, y = -(48 + 24 + 16)}, @@ -15,7 +17,9 @@ local breath_bar_definition = { hud_elem_type = "statbar", position = {x = 0.5, y = 1}, text = "bubble.png", + text2 = "bubble_gone.png", number = core.PLAYER_MAX_BREATH_DEFAULT, + item = core.PLAYER_MAX_BREATH_DEFAULT * 2, direction = 0, size = {x = 24, y = 24}, offset = {x = 25, y= -(48 + 24 + 16)}, diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 961e1ff37..4078e21a1 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1289,9 +1289,9 @@ To account for differing resolutions, the position coordinates are the percentage of the screen, ranging in value from `0` to `1`. The name field is not yet used, but should contain a description of what the -HUD element represents. The direction field is the direction in which something -is drawn. +HUD element represents. +The `direction` field is the direction in which something is drawn. `0` draws from left to right, `1` draws from right to left, `2` draws from top to bottom, and `3` draws from bottom to top. @@ -1355,12 +1355,16 @@ Displays text on the HUD. ### `statbar` -Displays a horizontal bar made up of half-images. +Displays a horizontal bar made up of half-images with an optional background. -* `text`: The name of the texture that is used. +* `text`: The name of the texture to use. +* `text2`: Optional texture name to enable a background / "off state" + texture (useful to visualize the maximal value). Both textures + must have the same size. * `number`: The number of half-textures that are displayed. If odd, will end with a vertically center-split texture. -* `direction` +* `item`: Same as `number` but for the "off state" texture +* `direction`: To which direction the images will extend to * `offset`: offset in pixels from position. * `size`: If used, will force full-image size to this value (override texture pack image size) @@ -7772,6 +7776,8 @@ Used by `Player:hud_add`. Returned by `Player:hud_get`. text = "", + text2 = "", + number = 2, item = 3, diff --git a/doc/texture_packs.txt b/doc/texture_packs.txt index 4e7bc93c4..94151f1a4 100644 --- a/doc/texture_packs.txt +++ b/doc/texture_packs.txt @@ -64,6 +64,8 @@ by texture packs. All existing fallback textures can be found in the directory * `bubble.png`: the bubble texture when the player is drowning (default size: 12×12) +* `bubble_gone.png`: like `bubble.png`, but denotes lack of breath + (transparent by default, same size as bubble.png) * `crack_anylength.png`: node overlay texture when digging @@ -76,6 +78,8 @@ by texture packs. All existing fallback textures can be found in the directory * `heart.png`: used to display the health points of the player (default size: 12×12) +* `heart_gone.png`: like `heart.png`, but denotes lack of health points + (transparent by default, same size as heart.png) * `minimap_mask_round.png`: round minimap mask, white gets replaced by the map * `minimap_mask_square.png`: mask used for the square minimap diff --git a/src/client/clientevent.h b/src/client/clientevent.h index f5689c25b..7f3984b03 100644 --- a/src/client/clientevent.h +++ b/src/client/clientevent.h @@ -136,6 +136,7 @@ struct ClientEvent v3f *world_pos; v2s32 *size; s16 z_index; + std::string *text2; } hudadd; struct { diff --git a/src/client/game.cpp b/src/client/game.cpp index 4d7a85526..422e17d4f 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -2672,6 +2672,7 @@ void Game::handleClientEvent_HudAdd(ClientEvent *event, CameraOrientation *cam) delete event->hudadd.offset; delete event->hudadd.world_pos; delete event->hudadd.size; + delete event->hudadd.text2; return; } @@ -2689,6 +2690,7 @@ void Game::handleClientEvent_HudAdd(ClientEvent *event, CameraOrientation *cam) e->world_pos = *event->hudadd.world_pos; e->size = *event->hudadd.size; e->z_index = event->hudadd.z_index; + e->text2 = *event->hudadd.text2; hud_server_to_client[server_id] = player->addHud(e); delete event->hudadd.pos; @@ -2699,6 +2701,7 @@ void Game::handleClientEvent_HudAdd(ClientEvent *event, CameraOrientation *cam) delete event->hudadd.offset; delete event->hudadd.world_pos; delete event->hudadd.size; + delete event->hudadd.text2; } void Game::handleClientEvent_HudRemove(ClientEvent *event, CameraOrientation *cam) @@ -2771,6 +2774,10 @@ void Game::handleClientEvent_HudChange(ClientEvent *event, CameraOrientation *ca case HUD_STAT_Z_INDEX: e->z_index = event->hudchange.data; break; + + case HUD_STAT_TEXT2: + e->text2 = *event->hudchange.sdata; + break; } delete event->hudchange.v3fdata; diff --git a/src/client/hud.cpp b/src/client/hud.cpp index 56763e7e4..f8f712762 100644 --- a/src/client/hud.cpp +++ b/src/client/hud.cpp @@ -332,7 +332,8 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) break; } case HUD_ELEM_STATBAR: { v2s32 offs(e->offset.X, e->offset.Y); - drawStatbar(pos, HUD_CORNER_UPPER, e->dir, e->text, e->number, offs, e->size); + drawStatbar(pos, HUD_CORNER_UPPER, e->dir, e->text, e->text2, + e->number, e->item, offs, e->size); break; } case HUD_ELEM_INVENTORY: { InventoryList *inv = inventory->getList(e->text); @@ -401,8 +402,9 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) } -void Hud::drawStatbar(v2s32 pos, u16 corner, u16 drawdir, const std::string &texture, - s32 count, v2s32 offset, v2s32 size) +void Hud::drawStatbar(v2s32 pos, u16 corner, u16 drawdir, + const std::string &texture, const std::string &bgtexture, + s32 count, s32 maxcount, v2s32 offset, v2s32 size) { const video::SColor color(255, 255, 255, 255); const video::SColor colors[] = {color, color, color, color}; @@ -411,6 +413,11 @@ void Hud::drawStatbar(v2s32 pos, u16 corner, u16 drawdir, const std::string &tex if (!stat_texture) return; + video::ITexture *stat_texture_bg = nullptr; + if (!bgtexture.empty()) { + stat_texture_bg = tsrc->getTexture(bgtexture); + } + core::dimension2di srcd(stat_texture->getOriginalSize()); core::dimension2di dstd; if (size == v2s32()) { @@ -430,43 +437,100 @@ void Hud::drawStatbar(v2s32 pos, u16 corner, u16 drawdir, const std::string &tex p += offset; v2s32 steppos; - core::rect srchalfrect, dsthalfrect; switch (drawdir) { case HUD_DIR_RIGHT_LEFT: steppos = v2s32(-1, 0); - srchalfrect = core::rect(srcd.Width / 2, 0, srcd.Width, srcd.Height); - dsthalfrect = core::rect(dstd.Width / 2, 0, dstd.Width, dstd.Height); break; case HUD_DIR_TOP_BOTTOM: steppos = v2s32(0, 1); - srchalfrect = core::rect(0, 0, srcd.Width, srcd.Height / 2); - dsthalfrect = core::rect(0, 0, dstd.Width, dstd.Height / 2); break; case HUD_DIR_BOTTOM_TOP: steppos = v2s32(0, -1); - srchalfrect = core::rect(0, srcd.Height / 2, srcd.Width, srcd.Height); - dsthalfrect = core::rect(0, dstd.Height / 2, dstd.Width, dstd.Height); break; default: + // From left to right steppos = v2s32(1, 0); - srchalfrect = core::rect(0, 0, srcd.Width / 2, srcd.Height); - dsthalfrect = core::rect(0, 0, dstd.Width / 2, dstd.Height); + break; } + + auto calculate_clipping_rect = [] (core::dimension2di src, + v2s32 steppos) -> core::rect { + + // Create basic rectangle + core::rect rect(0, 0, + src.Width - std::abs(steppos.X) * src.Width / 2, + src.Height - std::abs(steppos.Y) * src.Height / 2 + ); + // Move rectangle left or down + if (steppos.X == -1) + rect += v2s32(src.Width / 2, 0); + if (steppos.Y == -1) + rect += v2s32(0, src.Height / 2); + return rect; + }; + // Rectangles for 1/2 the actual value to display + core::rect srchalfrect, dsthalfrect; + // Rectangles for 1/2 the "off state" texture + core::rect srchalfrect2, dsthalfrect2; + + if (count % 2 == 1) { + // Need to draw halves: Calculate rectangles + srchalfrect = calculate_clipping_rect(srcd, steppos); + dsthalfrect = calculate_clipping_rect(dstd, steppos); + srchalfrect2 = calculate_clipping_rect(srcd, steppos * -1); + dsthalfrect2 = calculate_clipping_rect(dstd, steppos * -1); + } + steppos.X *= dstd.Width; steppos.Y *= dstd.Height; + // Draw full textures for (s32 i = 0; i < count / 2; i++) { core::rect srcrect(0, 0, srcd.Width, srcd.Height); - core::rect dstrect(0,0, dstd.Width, dstd.Height); + core::rect dstrect(0, 0, dstd.Width, dstd.Height); dstrect += p; - draw2DImageFilterScaled(driver, stat_texture, dstrect, srcrect, NULL, colors, true); + draw2DImageFilterScaled(driver, stat_texture, + dstrect, srcrect, NULL, colors, true); p += steppos; } if (count % 2 == 1) { - dsthalfrect += p; - draw2DImageFilterScaled(driver, stat_texture, dsthalfrect, srchalfrect, NULL, colors, true); + // Draw half a texture + draw2DImageFilterScaled(driver, stat_texture, + dsthalfrect + p, srchalfrect, NULL, colors, true); + + if (stat_texture_bg && maxcount > count) { + draw2DImageFilterScaled(driver, stat_texture_bg, + dsthalfrect2 + p, srchalfrect2, + NULL, colors, true); + p += steppos; + } + } + + if (stat_texture_bg && maxcount > count / 2) { + // Draw "off state" textures + s32 start_offset; + if (count % 2 == 1) + start_offset = count / 2 + 1; + else + start_offset = count / 2; + for (s32 i = start_offset; i < maxcount / 2; i++) { + core::rect srcrect(0, 0, srcd.Width, srcd.Height); + core::rect dstrect(0, 0, dstd.Width, dstd.Height); + + dstrect += p; + draw2DImageFilterScaled(driver, stat_texture_bg, + dstrect, srcrect, + NULL, colors, true); + p += steppos; + } + + if (maxcount % 2 == 1) { + draw2DImageFilterScaled(driver, stat_texture_bg, + dsthalfrect + p, srchalfrect, + NULL, colors, true); + } } } diff --git a/src/client/hud.h b/src/client/hud.h index cab115990..6274b1a83 100644 --- a/src/client/hud.h +++ b/src/client/hud.h @@ -82,8 +82,9 @@ public: private: bool calculateScreenPos(const v3s16 &camera_offset, HudElement *e, v2s32 *pos); - void drawStatbar(v2s32 pos, u16 corner, u16 drawdir, const std::string &texture, - s32 count, v2s32 offset, v2s32 size = v2s32()); + void drawStatbar(v2s32 pos, u16 corner, u16 drawdir, + const std::string &texture, const std::string& bgtexture, + s32 count, s32 maxcount, v2s32 offset, v2s32 size = v2s32()); void drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount, s32 inv_offset, InventoryList *mainlist, u16 selectitem, diff --git a/src/hud.cpp b/src/hud.cpp index 39625b5fd..3079b5cd8 100644 --- a/src/hud.cpp +++ b/src/hud.cpp @@ -46,6 +46,7 @@ const struct EnumString es_HudElementStat[] = {HUD_STAT_WORLD_POS, "world_pos"}, {HUD_STAT_SIZE, "size"}, {HUD_STAT_Z_INDEX, "z_index"}, + {HUD_STAT_TEXT2, "text2"}, {0, NULL}, }; diff --git a/src/hud.h b/src/hud.h index b0977c6a4..bab420ed2 100644 --- a/src/hud.h +++ b/src/hud.h @@ -77,6 +77,7 @@ enum HudElementStat { HUD_STAT_WORLD_POS, HUD_STAT_SIZE, HUD_STAT_Z_INDEX, + HUD_STAT_TEXT2, }; struct HudElement { @@ -93,6 +94,7 @@ struct HudElement { v3f world_pos; v2s32 size; s16 z_index = 0; + std::string text2; }; extern const EnumString es_HudElementType[]; diff --git a/src/network/clientpackethandler.cpp b/src/network/clientpackethandler.cpp index 8d0225a3d..7b1b1368c 100644 --- a/src/network/clientpackethandler.cpp +++ b/src/network/clientpackethandler.cpp @@ -1102,22 +1102,16 @@ void Client::handleCommand_HudAdd(NetworkPacket* pkt) v3f world_pos; v2s32 size; s16 z_index = 0; + std::string text2; *pkt >> server_id >> type >> pos >> name >> scale >> text >> number >> item >> dir >> align >> offset; try { *pkt >> world_pos; - } - catch(SerializationError &e) {}; - - try { *pkt >> size; - } catch(SerializationError &e) {}; - - try { *pkt >> z_index; - } - catch(PacketError &e) {} + *pkt >> text2; + } catch(PacketError &e) {}; ClientEvent *event = new ClientEvent(); event->type = CE_HUDADD; @@ -1135,6 +1129,7 @@ void Client::handleCommand_HudAdd(NetworkPacket* pkt) event->hudadd.world_pos = new v3f(world_pos); event->hudadd.size = new v2s32(size); event->hudadd.z_index = z_index; + event->hudadd.text2 = new std::string(text2); m_client_event_queue.push(event); } @@ -1171,7 +1166,7 @@ void Client::handleCommand_HudChange(NetworkPacket* pkt) if (stat == HUD_STAT_POS || stat == HUD_STAT_SCALE || stat == HUD_STAT_ALIGN || stat == HUD_STAT_OFFSET) *pkt >> v2fdata; - else if (stat == HUD_STAT_NAME || stat == HUD_STAT_TEXT) + else if (stat == HUD_STAT_NAME || stat == HUD_STAT_TEXT || stat == HUD_STAT_TEXT2) *pkt >> sdata; else if (stat == HUD_STAT_WORLD_POS) *pkt >> v3fdata; diff --git a/src/network/networkprotocol.h b/src/network/networkprotocol.h index 527ebba7c..ab924f1db 100644 --- a/src/network/networkprotocol.h +++ b/src/network/networkprotocol.h @@ -560,10 +560,10 @@ enum ToClientCommand u32 id u8 type v2f1000 pos - u32 len + u16 len u8[len] name v2f1000 scale - u32 len2 + u16 len2 u8[len2] text u32 number u32 item @@ -573,6 +573,8 @@ enum ToClientCommand v3f1000 world_pos v2s32 size s16 z_index + u16 len3 + u8[len3] text2 */ TOCLIENT_HUDRM = 0x4a, diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index dac828316..540b7222f 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -1871,6 +1871,7 @@ void read_hud_element(lua_State *L, HudElement *elem) elem->dir = getintfield_default(L, 2, "direction", 0); elem->z_index = MYMAX(S16_MIN, MYMIN(S16_MAX, getintfield_default(L, 2, "z_index", 0))); + elem->text2 = getstringfield_default(L, 2, "text2", ""); // Deprecated, only for compatibility's sake if (elem->dir == 0) @@ -1939,6 +1940,9 @@ void push_hud_element(lua_State *L, HudElement *elem) lua_pushnumber(L, elem->z_index); lua_setfield(L, -2, "z_index"); + + lua_pushstring(L, elem->text2.c_str()); + lua_setfield(L, -2, "text2"); } HudElementStat read_hud_change(lua_State *L, HudElement *elem, void **value) @@ -2000,6 +2004,10 @@ HudElementStat read_hud_change(lua_State *L, HudElement *elem, void **value) elem->z_index = MYMAX(S16_MIN, MYMIN(S16_MAX, luaL_checknumber(L, 4))); *value = &elem->z_index; break; + case HUD_STAT_TEXT2: + elem->text2 = luaL_checkstring(L, 4); + *value = &elem->text2; + break; } return stat; } diff --git a/src/server.cpp b/src/server.cpp index 16e026ce2..b28c30e1e 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -1621,7 +1621,7 @@ void Server::SendHUDAdd(session_t peer_id, u32 id, HudElement *form) pkt << id << (u8) form->type << form->pos << form->name << form->scale << form->text << form->number << form->item << form->dir << form->align << form->offset << form->world_pos << form->size - << form->z_index; + << form->z_index << form->text2; Send(&pkt); } @@ -1647,6 +1647,7 @@ void Server::SendHUDChange(session_t peer_id, u32 id, HudElementStat stat, void break; case HUD_STAT_NAME: case HUD_STAT_TEXT: + case HUD_STAT_TEXT2: pkt << *(std::string *) value; break; case HUD_STAT_WORLD_POS: diff --git a/textures/base/pack/bubble_gone.png b/textures/base/pack/bubble_gone.png new file mode 100644 index 0000000000000000000000000000000000000000..240ca4f8d4edca6d5905acf71bdd9f88d4bd3127 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kP61+gajamnSrtAhou#e O#o+1c=d#Wzp$Py;d<%g9 literal 0 HcmV?d00001 diff --git a/textures/base/pack/heart_gone.png b/textures/base/pack/heart_gone.png new file mode 100644 index 0000000000000000000000000000000000000000..240ca4f8d4edca6d5905acf71bdd9f88d4bd3127 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kP61+gajamnSrtAhou#e O#o+1c=d#Wzp$Py;d<%g9 literal 0 HcmV?d00001 From 9ba24f89f5846de6a8f0d7e01c89acfee1254704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20M=C3=BCller?= <34514239+appgurueu@users.noreply.github.com> Date: Mon, 11 May 2020 21:41:36 +0200 Subject: [PATCH 192/424] Damage texture modifier (#9833) Adds a new object property "damage_texture_modifier" --- doc/lua_api.txt | 3 +++ src/client/content_cao.cpp | 14 +++++--------- src/object_properties.cpp | 5 +++++ src/object_properties.h | 1 + src/script/common/c_content.cpp | 4 ++++ 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 4078e21a1..db13f4224 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -6589,6 +6589,9 @@ Player properties need to be saved manually. -- deleted when the block gets unloaded. -- The get_staticdata() callback is never called then. -- Defaults to 'true'. + + damage_texture_modifier = "^[brighten", + -- Texture modifier to be applied for a short duration when object is hit } Entity definition diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index aadd33bb9..eb1dad22b 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -1532,7 +1532,7 @@ void GenericCAO::processMessage(const std::string &data) } else if (cmd == AO_CMD_SET_TEXTURE_MOD) { std::string mod = deSerializeString(is); - // immediatly reset a engine issued texture modifier if a mod sends a different one + // immediately reset a engine issued texture modifier if a mod sends a different one if (m_reset_textures_timer > 0) { m_reset_textures_timer = -1; updateTextures(m_previous_texture_modifier); @@ -1646,13 +1646,11 @@ void GenericCAO::processMessage(const std::string &data) m_smgr, m_env, m_position, v2f(m_prop.visual_size.X, m_prop.visual_size.Y) * BS); m_env->addSimpleObject(simple); - } else if (m_reset_textures_timer < 0) { - // TODO: Execute defined fast response - // Flashing shall suffice as there is no definition + } else if (m_reset_textures_timer < 0 && !m_prop.damage_texture_modifier.empty()) { m_reset_textures_timer = 0.05; if(damage >= 2) m_reset_textures_timer += 0.05 * damage; - updateTextures(m_current_texture_modifier + "^[brighten"); + updateTextures(m_current_texture_modifier + m_prop.damage_texture_modifier); } } @@ -1723,13 +1721,11 @@ bool GenericCAO::directReportPunch(v3f dir, const ItemStack *punchitem, v2f(m_prop.visual_size.X, m_prop.visual_size.Y) * BS); m_env->addSimpleObject(simple); } - // TODO: Execute defined fast response - // Flashing shall suffice as there is no definition - if (m_reset_textures_timer < 0) { + if (m_reset_textures_timer < 0 && !m_prop.damage_texture_modifier.empty()) { m_reset_textures_timer = 0.05; if (result.damage >= 2) m_reset_textures_timer += 0.05 * result.damage; - updateTextures(m_current_texture_modifier + "^[brighten"); + updateTextures(m_current_texture_modifier + m_prop.damage_texture_modifier); } } diff --git a/src/object_properties.cpp b/src/object_properties.cpp index 4cf180b18..6ff344dce 100644 --- a/src/object_properties.cpp +++ b/src/object_properties.cpp @@ -68,6 +68,7 @@ std::string ObjectProperties::dump() os << ", eye_height=" << eye_height; os << ", zoom_fov=" << zoom_fov; os << ", use_texture_alpha=" << use_texture_alpha; + os << ", damage_texture_modifier=" << damage_texture_modifier; return os.str(); } @@ -114,6 +115,7 @@ void ObjectProperties::serialize(std::ostream &os) const writeF32(os, eye_height); writeF32(os, zoom_fov); writeU8(os, use_texture_alpha); + os << serializeString(damage_texture_modifier); // Add stuff only at the bottom. // Never remove anything, because we don't want new versions of this @@ -166,4 +168,7 @@ void ObjectProperties::deSerialize(std::istream &is) eye_height = readF32(is); zoom_fov = readF32(is); use_texture_alpha = readU8(is); + try { + damage_texture_modifier = deSerializeString(is); + } catch (SerializationError &e) {} } diff --git a/src/object_properties.h b/src/object_properties.h index 3895f3379..f7848f5a2 100644 --- a/src/object_properties.h +++ b/src/object_properties.h @@ -39,6 +39,7 @@ struct ObjectProperties std::string mesh = ""; v3f visual_size = v3f(1, 1, 1); std::vector textures; + std::string damage_texture_modifier = "^[brighten"; std::vector colors; v2s16 spritediv = v2s16(1, 1); v2s16 initial_sprite_basepos; diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index 540b7222f..de9634c42 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -327,6 +327,8 @@ void read_object_properties(lua_State *L, int index, getfloatfield(L, -1, "zoom_fov", prop->zoom_fov); getboolfield(L, -1, "use_texture_alpha", prop->use_texture_alpha); + + getstringfield(L, -1, "damage_texture_modifier", prop->damage_texture_modifier); } /******************************************************************************/ @@ -409,6 +411,8 @@ void push_object_properties(lua_State *L, ObjectProperties *prop) lua_setfield(L, -2, "zoom_fov"); lua_pushboolean(L, prop->use_texture_alpha); lua_setfield(L, -2, "use_texture_alpha"); + lua_pushlstring(L, prop->damage_texture_modifier.c_str(), prop->damage_texture_modifier.size()); + lua_setfield(L, -2, "damage_texture_modifier"); } /******************************************************************************/ From 7ec76e530db9c3ed093e6edeca156e9311a6378a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 12 May 2020 03:52:52 +0200 Subject: [PATCH 193/424] Add mapgen settings to world creation dialog (#9254) --- builtin/mainmenu/dlg_create_world.lua | 332 ++++++++++++++++++++++++-- doc/lua_api.txt | 4 + 2 files changed, 312 insertions(+), 24 deletions(-) diff --git a/builtin/mainmenu/dlg_create_world.lua b/builtin/mainmenu/dlg_create_world.lua index f28ae6960..0d977a17c 100644 --- a/builtin/mainmenu/dlg_create_world.lua +++ b/builtin/mainmenu/dlg_create_world.lua @@ -17,13 +17,110 @@ local worldname = "" +local function table_to_flags(ftable) + -- Convert e.g. { jungles = true, caves = false } to "jungles,nocaves" + local str = {} + for flag, is_set in pairs(ftable) do + str[#str + 1] = is_set and flag or ("no" .. flag) + end + return table.concat(str, ",") +end + +-- Same as check_flag but returns a string +local function strflag(flags, flag) + return (flags[flag] == true) and "true" or "false" +end + +local cb_caverns = { "caverns", fgettext("Caverns"), "caverns", + fgettext("Very large caverns deep in the underground") } +local tt_sea_rivers = fgettext("Sea level rivers") + +local flag_checkboxes = { + v5 = { + cb_caverns, + }, + v7 = { + cb_caverns, + { "ridges", fgettext("Rivers"), "ridges", tt_sea_rivers }, + { "mountains", fgettext("Mountains"), "mountains" }, + { "floatlands", fgettext("Floatlands (experimental)"), "floatlands", + fgettext("Floating landmasses in the sky") }, + }, + carpathian = { + cb_caverns, + { "rivers", fgettext("Rivers"), "rivers", tt_sea_rivers }, + }, + valleys = { + { "altitude-chill", fgettext("Altitude chill"), "altitude_chill", + fgettext("Reduces heat with altitude") }, + { "altitude-dry", fgettext("Altitude dry"), "altitude_dry", + fgettext("Reduces humidity with altitude") }, + { "humid-rivers", fgettext("Humid rivers"), "humid_rivers", + fgettext("Increases humidity around rivers") }, + { "vary-river-depth", fgettext("Vary river depth"), "vary_river_depth", + fgettext("Low humidity and high heat causes shallow or dry rivers") }, + }, + flat = { + { "hills", fgettext("Hills"), "hills" }, + { "lakes", fgettext("Lakes"), "lakes" }, + }, + fractal = { + { "terrain", fgettext("Additional terrain"), "terrain", + fgettext("Generate non-fractal terrain: Oceans and underground") }, + }, + v6 = { + { "trees", fgettext("Trees and jungle grass"), "trees" }, + { "flat", fgettext("Flat terrain"), "flat" }, + { "mudflow", fgettext("Mud flow"), "mudflow", + fgettext("Terrain surface erosion") }, + -- Biome settings are in mgv6_biomes below + }, +} + +local mgv6_biomes = { + { + fgettext("Temperate, Desert, Jungle, Tundra, Taiga"), + {jungles = true, snowbiomes = true} + }, + { + fgettext("Temperate, Desert, Jungle"), + {jungles = true, snowbiomes = false} + }, + { + fgettext("Temperate, Desert"), + {jungles = false, snowbiomes = false} + }, +} + local function create_world_formspec(dialogdata) + + -- Error out when no games found + if #pkgmgr.games == 0 then + return "size[12.25,3,true]" .. + "box[0,0;12,2;#ff8800]" .. + "textarea[0.3,0;11.7,2;;;".. + fgettext("You have no games installed.") .. "\n" .. + fgettext("Download one from minetest.net") .. "]" .. + "button[4.75,2.5;3,0.5;world_create_cancel;" .. fgettext("Cancel") .. "]" + end + local mapgens = core.get_mapgen_names() local current_seed = core.settings:get("fixed_map_seed") or "" local current_mg = core.settings:get("mg_name") local gameid = core.settings:get("menu_last_game") + local flags = { + main = core.settings:get_flags("mg_flags"), + v5 = core.settings:get_flags("mgv5_spflags"), + v6 = core.settings:get_flags("mgv6_spflags"), + v7 = core.settings:get_flags("mgv7_spflags"), + fractal = core.settings:get_flags("mgfractal_spflags"), + carpathian = core.settings:get_flags("mgcarpathian_spflags"), + valleys = core.settings:get_flags("mgvalleys_spflags"), + flat = core.settings:get_flags("mgflat_spflags"), + } + local gameidx = 0 if gameid ~= nil then local _ @@ -35,6 +132,7 @@ local function create_world_formspec(dialogdata) end local game_by_gameidx = core.get_game(gameidx) + local disallowed_mapgen_settings = {} if game_by_gameidx ~= nil then local gamepath = game_by_gameidx.path local gameconfig = Settings(gamepath.."/game.conf") @@ -64,49 +162,193 @@ local function create_world_formspec(dialogdata) end end end + + local ds = (gameconfig:get("disallowed_mapgen_settings") or ""):split() + for _, value in pairs(ds) do + disallowed_mapgen_settings[value:trim()] = true + end end local mglist = "" - local selindex = 1 + local selindex local i = 1 + local first_mg for k,v in pairs(mapgens) do + if not first_mg then + first_mg = v + end if current_mg == v then selindex = i end i = i + 1 mglist = mglist .. v .. "," end + if not selindex then + selindex = 1 + current_mg = first_mg + end mglist = mglist:sub(1, -2) - current_seed = core.formspec_escape(current_seed) - local retval = - "size[11.5,6.5,true]" .. - "label[2,0;" .. fgettext("World name") .. "]".. - "field[4.5,0.4;6,0.5;te_world_name;;" .. minetest.formspec_escape(worldname) .. "]" .. + local mg_main_flags = function(mapgen, y) + if mapgen == "singlenode" then + return "", y + end + if disallowed_mapgen_settings["mg_flags"] then + return "", y + end - "label[2,1;" .. fgettext("Seed") .. "]".. - "field[4.5,1.4;6,0.5;te_seed;;".. current_seed .. "]" .. + local form = "checkbox[0," .. y .. ";flag_mg_caves;" .. + fgettext("Caves") .. ";"..strflag(flags.main, "caves").."]" + y = y + 0.5 - "label[2,2;" .. fgettext("Mapgen") .. "]".. - "dropdown[4.2,2;6.3;dd_mapgen;" .. mglist .. ";" .. selindex .. "]" .. + form = form .. "checkbox[0,"..y..";flag_mg_dungeons;" .. + fgettext("Dungeons") .. ";"..strflag(flags.main, "dungeons").."]" + y = y + 0.5 - "label[2,3;" .. fgettext("Game") .. "]".. - "textlist[4.2,3;5.8,2.3;games;" .. pkgmgr.gamelist() .. - ";" .. gameidx .. ";true]" .. + local d_name = fgettext("Decorations") + local d_tt + if mapgen == "v6" then + d_tt = fgettext("Structures appearing on the terrain (no effect on trees and jungle grass created by v6)") + else + d_tt = fgettext("Structures appearing on the terrain, typically trees and plants") + end + form = form .. "checkbox[0,"..y..";flag_mg_decorations;" .. + d_name .. ";" .. + strflag(flags.main, "decorations").."]" .. + "tooltip[flag_mg_decorations;" .. + d_tt .. + "]" + y = y + 0.5 - "button[3.25,6;2.5,0.5;world_create_confirm;" .. fgettext("Create") .. "]" .. - "button[5.75,6;2.5,0.5;world_create_cancel;" .. fgettext("Cancel") .. "]" - - if #pkgmgr.games == 0 then - retval = retval .. "box[2,4;8,1;#ff8800]label[2.25,4;" .. - fgettext("You have no games installed.") .. "]label[2.25,4.4;" .. - fgettext("Download one from minetest.net") .. "]" - elseif #pkgmgr.games == 1 and pkgmgr.games[1].id == "minimal" then - retval = retval .. "box[1.75,4;8.7,1;#ff8800]label[2,4;" .. - fgettext("Warning: The minimal development test is meant for developers.") .. "]label[2,4.4;" .. - fgettext("Download a game, such as Minetest Game, from minetest.net") .. "]" + form = form .. "tooltip[flag_mg_caves;" .. + fgettext("Network of tunnels and caves") + .. "]" + return form, y end + local mg_specific_flags = function(mapgen, y) + if not flag_checkboxes[mapgen] then + return "", y + end + if disallowed_mapgen_settings["mg"..mapgen.."_spflags"] then + return "", y + end + local form = "" + for _,tab in pairs(flag_checkboxes[mapgen]) do + local id = "flag_mg"..mapgen.."_"..tab[1] + form = form .. ("checkbox[0,%f;%s;%s;%s]"): + format(y, id, tab[2], strflag(flags[mapgen], tab[3])) + + if tab[4] then + form = form .. "tooltip["..id..";"..tab[4].."]" + end + y = y + 0.5 + end + + if mapgen ~= "v6" then + -- No special treatment + return form, y + end + -- Special treatment for v6 (add biome widgets) + + -- Biome type (jungles, snowbiomes) + local biometype + if flags.v6.snowbiomes == true then + biometype = 1 + elseif flags.v6.jungles == true then + biometype = 2 + else + biometype = 3 + end + y = y + 0.3 + + form = form .. "label[0,"..(y+0.1)..";" .. fgettext("Biomes") .. "]" + y = y + 0.6 + + form = form .. "dropdown[0,"..y..";6.3;mgv6_biomes;" + for b=1, #mgv6_biomes do + form = form .. mgv6_biomes[b][1] + if b < #mgv6_biomes then + form = form .. "," + end + end + form = form .. ";" .. biometype.. "]" + + -- biomeblend + y = y + 0.55 + form = form .. "checkbox[0,"..y..";flag_mgv6_biomeblend;" .. + fgettext("Biome blending") .. ";"..strflag(flags.v6, "biomeblend").."]" .. + "tooltip[flag_mgv6_biomeblend;" .. + fgettext("Smooth transition between biomes") .. "]" + + return form, y + end + + current_seed = core.formspec_escape(current_seed) + + local y_start = 0.0 + local y = y_start + local str_flags, str_spflags + local label_flags, label_spflags = "", "" + y = y + 0.3 + str_flags, y = mg_main_flags(current_mg, y) + if str_flags ~= "" then + label_flags = "label[0,"..y_start..";" .. fgettext("Mapgen flags") .. "]" + y_start = y + 0.4 + else + y_start = 0.0 + end + y = y_start + 0.3 + str_spflags = mg_specific_flags(current_mg, y) + if str_spflags ~= "" then + label_spflags = "label[0,"..y_start..";" .. fgettext("Mapgen-specific flags") .. "]" + end + + -- Warning if only minimal is installed + local minimal_only = "" + local gamelist_height = 2.3 + if #pkgmgr.games == 1 and pkgmgr.games[1].id == "minimal" then + minimal_only = "box[0,0;5.8,1.7;#ff8800]" .. + "textarea[0.3,0;6,1.8;;;".. + fgettext("Warning: The minimal development test is meant for developers.") .. "\n" .. + fgettext("Download a game, such as Minetest Game, from minetest.net") .. "]" + gamelist_height = 0.5 + end + + local retval = + "size[12.25,7,true]" .. + + -- Left side + "container[0,0]".. + "field[0.3,0.6;6,0.5;te_world_name;" .. + fgettext("World name") .. + ";" .. core.formspec_escape(worldname) .. "]" .. + + "field[0.3,1.7;6,0.5;te_seed;" .. + fgettext("Seed") .. + ";".. current_seed .. "]" .. + + "label[0,2;" .. fgettext("Mapgen") .. "]".. + "dropdown[0,2.5;6.3;dd_mapgen;" .. mglist .. ";" .. selindex .. "]" .. + + "label[0,3.35;" .. fgettext("Game") .. "]".. + "textlist[0,3.85;5.8,"..gamelist_height..";games;" .. + pkgmgr.gamelist() .. ";" .. gameidx .. ";false]" .. + "container[0,4.5]" .. + minimal_only .. + "container_end[]" .. + "container_end[]" .. + + -- Right side + "container[6.2,0]".. + label_flags .. str_flags .. + label_spflags .. str_spflags .. + "container_end[]".. + + -- Menu buttons + "button[3.25,6.5;3,0.5;world_create_confirm;" .. fgettext("Create") .. "]" .. + "button[6.25,6.5;3,0.5;world_create_cancel;" .. fgettext("Cancel") .. "]" + return retval end @@ -163,11 +405,53 @@ local function create_world_buttonhandler(this, fields) return true end + for k,v in pairs(fields) do + local split = string.split(k, "_", nil, 3) + if split and split[1] == "flag" then + local setting + if split[2] == "mg" then + setting = "mg_flags" + else + setting = split[2].."_spflags" + end + -- We replaced the underscore of flag names with a dash. + local flag = string.gsub(split[3], "-", "_") + local ftable = core.settings:get_flags(setting) + if v == "true" then + ftable[flag] = true + else + ftable[flag] = false + end + local flags = table_to_flags(ftable) + core.settings:set(setting, flags) + return true + end + end + if fields["world_create_cancel"] then this:delete() return true end + if fields["mgv6_biomes"] then + local entry = minetest.formspec_escape(fields["mgv6_biomes"]) + for b=1, #mgv6_biomes do + if entry == mgv6_biomes[b][1] then + local ftable = core.settings:get_flags("mgv6_spflags") + ftable.jungles = mgv6_biomes[b][2].jungles + ftable.snowbiomes = mgv6_biomes[b][2].snowbiomes + local flags = table_to_flags(ftable) + core.settings:set("mgv6_spflags", flags) + return true + end + end + end + + if fields["dd_mapgen"] then + core.settings:set("mg_name", fields["dd_mapgen"]) + return true + end + return false end diff --git a/doc/lua_api.txt b/doc/lua_api.txt index db13f4224..9685e8307 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -75,6 +75,10 @@ The game directory can contain the following files: When both `allowed_mapgens` and `disallowed_mapgens` are specified, `allowed_mapgens` is applied before `disallowed_mapgens`. + * `disallowed_mapgen_settings= ` + e.g. `disallowed_mapgen_settings = mgv5_spflags` + These settings are hidden for this game in the world creation + dialog and game start menu. * `minetest.conf`: Used to set default settings when running this game. * `settingtypes.txt`: From 4e997e9d047068bfccd30fb700e2b3b9f48fda4c Mon Sep 17 00:00:00 2001 From: Zughy <63455151+Zughy@users.noreply.github.com> Date: Wed, 13 May 2020 11:56:26 +0000 Subject: [PATCH 194/424] Document inf value in rollback commands (#9789) --- builtin/game/chat.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/builtin/game/chat.lua b/builtin/game/chat.lua index a71f4b329..c8fa4175d 100644 --- a/builtin/game/chat.lua +++ b/builtin/game/chat.lua @@ -777,7 +777,7 @@ core.register_chatcommand("rollback_check", { params = "[] [] []", description = "Check who last touched a node or a node near it" .. " within the time specified by . Default: range = 0," - .. " seconds = 86400 = 24h, limit = 5", + .. " seconds = 86400 = 24h, limit = 5. Set to inf for no time limit", privs = {rollback=true}, func = function(name, param) if not core.settings:get_bool("enable_rollback_recording") then @@ -828,7 +828,7 @@ core.register_chatcommand("rollback_check", { core.register_chatcommand("rollback", { params = "( []) | (: [])", - description = "Revert actions of a player. Default for is 60", + description = "Revert actions of a player. Default for is 60. Set to inf for no time limit", privs = {rollback=true}, func = function(name, param) if not core.settings:get_bool("enable_rollback_recording") then From 6c607e20828f97f950038dfb86891a74afb6f755 Mon Sep 17 00:00:00 2001 From: Yaman Qalieh Date: Wed, 13 May 2020 07:57:05 -0400 Subject: [PATCH 195/424] Allow placing auto-rotating nodes on other nodes in on_rightclick (#9859) --- builtin/common/misc_helpers.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua index 715f89bc4..1a0c71efd 100644 --- a/builtin/common/misc_helpers.lua +++ b/builtin/common/misc_helpers.lua @@ -290,7 +290,8 @@ if INIT == "game" then return end local undef = core.registered_nodes[unode.name] - if undef and undef.on_rightclick then + local sneaking = placer and placer:get_player_control().sneak + if undef and undef.on_rightclick and not sneaking then return undef.on_rightclick(pointed_thing.under, unode, placer, itemstack, pointed_thing) end From 2d7e000cfe578340a126d7101ac98c0de29b66b6 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Thu, 14 May 2020 16:54:17 +0100 Subject: [PATCH 196/424] Item Entity: Add message to moveresult assertion (#9797) --- builtin/game/item_entity.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/builtin/game/item_entity.lua b/builtin/game/item_entity.lua index a85eba977..5d2cd7c76 100644 --- a/builtin/game/item_entity.lua +++ b/builtin/game/item_entity.lua @@ -200,7 +200,9 @@ core.register_entity(":__builtin:item", { return -- Don't do anything end - assert(moveresult) + assert(moveresult, + "Collision info missing, this is caused by an out-of-date/buggy mod or game") + if not moveresult.collides then -- future TODO: items should probably decelerate in air return From 836dd4a1e4f97411519578cd9e59b6dbe3b2c00d Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Thu, 14 May 2020 19:26:15 +0200 Subject: [PATCH 197/424] Add chat_log_level setting (#9223) Log all higher levels in LogOutputBuffer Move StreamLogOutput::logRaw to source file like LogOutputBuffer::logRaw for compiling speed --- builtin/settingtypes.txt | 3 ++ src/client/game.cpp | 16 +++------ src/defaultsettings.cpp | 1 + src/log.cpp | 74 ++++++++++++++++++++++++++++++++++++++++ src/log.h | 52 +++++++--------------------- 5 files changed, 95 insertions(+), 51 deletions(-) diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 9e4473655..b75bf2de5 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -1401,6 +1401,9 @@ debug_log_level (Debug log level) enum action ,none,error,warning,action,info,ve # debug.txt is only moved if this setting is positive. debug_log_size_max (Debug log file size threshold) int 50 +# Minimal level of logging to be written to chat. +chat_log_level (Chat log level) enum error ,none,error,warning,action,info,verbose + # Enable IPv6 support (for both client and server). # Required for IPv6 connections to work at all. enable_ipv6 (IPv6) bool true diff --git a/src/client/game.cpp b/src/client/game.cpp index 422e17d4f..e7663a113 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -855,6 +855,7 @@ private: SoundMaker *soundmaker = nullptr; ChatBackend *chat_backend = nullptr; + LogOutputBuffer m_chat_log_buf; EventManager *eventmgr = nullptr; QuicktuneShortcutter *quicktune = nullptr; @@ -926,6 +927,7 @@ private: }; Game::Game() : + m_chat_log_buf(g_logger), m_game_ui(new GameUI()) { g_settings->registerChangedCallback("doubletap_jump", @@ -1192,6 +1194,7 @@ void Game::shutdown() chat_backend->addMessage(L"", L"# Disconnected."); chat_backend->addMessage(L"", L""); + m_chat_log_buf.clear(); if (client) { client->Stop(); @@ -2903,18 +2906,9 @@ void Game::processClientEvents(CameraOrientation *cam) void Game::updateChat(f32 dtime, const v2u32 &screensize) { - // Add chat log output for errors to be shown in chat - static LogOutputBuffer chat_log_error_buf(g_logger, LL_ERROR); - // Get new messages from error log buffer - while (!chat_log_error_buf.empty()) { - std::wstring error_message = utf8_to_wide(chat_log_error_buf.get()); - if (!g_settings->getBool("disable_escape_sequences")) { - error_message.insert(0, L"\x1b(c@red)"); - error_message.append(L"\x1b(c@white)"); - } - chat_backend->addMessage(L"", error_message); - } + while (!m_chat_log_buf.empty()) + chat_backend->addMessage(L"", utf8_to_wide(m_chat_log_buf.get())); // Get new messages from client std::wstring message; diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 33654e213..1d0610c0f 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -400,6 +400,7 @@ void set_default_settings(Settings *settings) settings->setDefault("remote_media", ""); settings->setDefault("debug_log_level", "action"); settings->setDefault("debug_log_size_max", "50"); + settings->setDefault("chat_log_level", "error"); settings->setDefault("emergequeue_limit_total", "512"); settings->setDefault("emergequeue_limit_diskonly", "64"); settings->setDefault("emergequeue_limit_generate", "64"); diff --git a/src/log.cpp b/src/log.cpp index 30344b4df..54442c39b 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "debug.h" #include "gettime.h" #include "porting.h" +#include "settings.h" #include "config.h" #include "exceptions.h" #include "util/numeric.h" @@ -338,7 +339,80 @@ void FileLogOutput::setFile(const std::string &filename, s64 file_size_max) "-------------\n" << std::endl; } +void StreamLogOutput::logRaw(LogLevel lev, const std::string &line) +{ + bool colored_message = (Logger::color_mode == LOG_COLOR_ALWAYS) || + (Logger::color_mode == LOG_COLOR_AUTO && is_tty); + if (colored_message) { + switch (lev) { + case LL_ERROR: + // error is red + m_stream << "\033[91m"; + break; + case LL_WARNING: + // warning is yellow + m_stream << "\033[93m"; + break; + case LL_INFO: + // info is a bit dark + m_stream << "\033[37m"; + break; + case LL_VERBOSE: + // verbose is darker than info + m_stream << "\033[2m"; + break; + default: + // action is white + colored_message = false; + } + } + m_stream << line << std::endl; + + if (colored_message) { + // reset to white color + m_stream << "\033[0m"; + } +} + +void LogOutputBuffer::updateLogLevel() +{ + const std::string &conf_loglev = g_settings->get("chat_log_level"); + LogLevel log_level = Logger::stringToLevel(conf_loglev); + if (log_level == LL_MAX) { + warningstream << "Supplied unrecognized chat_log_level; " + "showing none." << std::endl; + log_level = LL_NONE; + } + + m_logger.removeOutput(this); + m_logger.addOutputMaxLevel(this, log_level); +} + +void LogOutputBuffer::logRaw(LogLevel lev, const std::string &line) +{ + std::string color; + + if (!g_settings->getBool("disable_escape_sequences")) { + switch (lev) { + case LL_ERROR: // red + color = "\x1b(c@#F00)"; + break; + case LL_WARNING: // yellow + color = "\x1b(c@#EE0)"; + break; + case LL_INFO: // grey + color = "\x1b(c@#BBB)"; + break; + case LL_VERBOSE: // dark grey + color = "\x1b(c@#888)"; + break; + default: break; + } + } + + m_buffer.push(color.append(line)); +} //// //// *Buffer methods diff --git a/src/log.h b/src/log.h index 6350d8a86..856d3479b 100644 --- a/src/log.h +++ b/src/log.h @@ -124,39 +124,7 @@ public: #endif } - void logRaw(LogLevel lev, const std::string &line) - { - bool colored_message = (Logger::color_mode == LOG_COLOR_ALWAYS) || - (Logger::color_mode == LOG_COLOR_AUTO && is_tty); - if (colored_message) - switch (lev) { - case LL_ERROR: - // error is red - m_stream << "\033[91m"; - break; - case LL_WARNING: - // warning is yellow - m_stream << "\033[93m"; - break; - case LL_INFO: - // info is a bit dark - m_stream << "\033[37m"; - break; - case LL_VERBOSE: - // verbose is darker than info - m_stream << "\033[2m"; - break; - default: - // action is white - colored_message = false; - } - - m_stream << line << std::endl; - - if (colored_message) - // reset to white color - m_stream << "\033[0m"; - } + void logRaw(LogLevel lev, const std::string &line); private: std::ostream &m_stream; @@ -178,23 +146,27 @@ private: class LogOutputBuffer : public ICombinedLogOutput { public: - LogOutputBuffer(Logger &logger, LogLevel lev) : + LogOutputBuffer(Logger &logger) : m_logger(logger) { - m_logger.addOutput(this, lev); - } + updateLogLevel(); + }; - ~LogOutputBuffer() + virtual ~LogOutputBuffer() { m_logger.removeOutput(this); } - void logRaw(LogLevel lev, const std::string &line) + void updateLogLevel(); + + void logRaw(LogLevel lev, const std::string &line); + + void clear() { - m_buffer.push(line); + m_buffer = std::queue(); } - bool empty() + bool empty() const { return m_buffer.empty(); } From 6ef7ad09bbed9176d0d15f53b5cb14ef6e18a3b2 Mon Sep 17 00:00:00 2001 From: TheTermos <55103816+TheTermos@users.noreply.github.com> Date: Thu, 14 May 2020 19:28:27 +0200 Subject: [PATCH 198/424] Collision detection - #9343 follow-up (#9764) * truncate speed to prevent inf result * code styling * change truncate() input parameters --- src/collision.cpp | 121 ++++++++++++++++++++++++++-------------------- 1 file changed, 69 insertions(+), 52 deletions(-) diff --git a/src/collision.cpp b/src/collision.cpp index 3b5e79a66..06ef820c5 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -66,6 +66,22 @@ struct NearbyCollisionInfo { aabb3f box; }; +// Helper functions: +// Truncate floating point numbers to specified number of decimal places +// in order to move all the floating point error to one side of the correct value +static inline f32 truncate(const f32 val, const f32 factor) +{ + return truncf(val * factor) / factor; +} + +static inline v3f truncate(const v3f& vec, const f32 factor) +{ + return v3f( + truncate(vec.X, factor), + truncate(vec.Y, factor), + truncate(vec.Z, factor) + ); +} // Helper function: // Checks for collision of a moving aabbox with a static aabbox @@ -78,70 +94,70 @@ CollisionAxis axisAlignedCollision( //TimeTaker tt("axisAlignedCollision"); aabb3f relbox( - movingbox.MaxEdge.X - movingbox.MinEdge.X + staticbox.MaxEdge.X - staticbox.MinEdge.X, // sum of the widths - movingbox.MaxEdge.Y - movingbox.MinEdge.Y + staticbox.MaxEdge.Y - staticbox.MinEdge.Y, - movingbox.MaxEdge.Z - movingbox.MinEdge.Z + staticbox.MaxEdge.Z - staticbox.MinEdge.Z, + (movingbox.MaxEdge.X - movingbox.MinEdge.X) + (staticbox.MaxEdge.X - staticbox.MinEdge.X), // sum of the widths + (movingbox.MaxEdge.Y - movingbox.MinEdge.Y) + (staticbox.MaxEdge.Y - staticbox.MinEdge.Y), + (movingbox.MaxEdge.Z - movingbox.MinEdge.Z) + (staticbox.MaxEdge.Z - staticbox.MinEdge.Z), std::max(movingbox.MaxEdge.X, staticbox.MaxEdge.X) - std::min(movingbox.MinEdge.X, staticbox.MinEdge.X), //outer bounding 'box' dimensions std::max(movingbox.MaxEdge.Y, staticbox.MaxEdge.Y) - std::min(movingbox.MinEdge.Y, staticbox.MinEdge.Y), std::max(movingbox.MaxEdge.Z, staticbox.MaxEdge.Z) - std::min(movingbox.MinEdge.Z, staticbox.MinEdge.Z) ); const f32 dtime_max = *dtime; - const f32 inner_margin = -1.5f; + f32 inner_margin; // the distance of clipping recovery f32 distance; f32 time; - if (speed.X) { - distance = relbox.MaxEdge.X - relbox.MinEdge.X; - *dtime = distance >= 0 ? std::abs(distance / speed.X) : -std::abs(distance / speed.X); + if (speed.Y) { + distance = relbox.MaxEdge.Y - relbox.MinEdge.Y; + *dtime = distance / std::abs(speed.Y); time = std::max(*dtime, 0.0f); - if (distance > inner_margin) { - if (*dtime <= dtime_max) { - if ((speed.X > 0 && staticbox.MaxEdge.X > movingbox.MaxEdge.X) || - (speed.X < 0 && staticbox.MinEdge.X < movingbox.MinEdge.X)) { - if ( - (std::max(movingbox.MaxEdge.Y + speed.Y * time, staticbox.MaxEdge.Y) - - std::min(movingbox.MinEdge.Y + speed.Y * time, staticbox.MinEdge.Y) - - relbox.MinEdge.Y < 0) && + if (*dtime <= dtime_max) { + inner_margin = std::max(-0.5f * (staticbox.MaxEdge.Y - staticbox.MinEdge.Y), -2.0f); + + if ((speed.Y > 0 && staticbox.MinEdge.Y - movingbox.MaxEdge.Y > inner_margin) || + (speed.Y < 0 && movingbox.MinEdge.Y - staticbox.MaxEdge.Y > inner_margin)) { + if ( + (std::max(movingbox.MaxEdge.X + speed.X * time, staticbox.MaxEdge.X) + - std::min(movingbox.MinEdge.X + speed.X * time, staticbox.MinEdge.X) + - relbox.MinEdge.X < 0) && (std::max(movingbox.MaxEdge.Z + speed.Z * time, staticbox.MaxEdge.Z) - std::min(movingbox.MinEdge.Z + speed.Z * time, staticbox.MinEdge.Z) - relbox.MinEdge.Z < 0) - ) - return COLLISION_AXIS_X; - } - } else { - return COLLISION_AXIS_NONE; + ) + return COLLISION_AXIS_Y; } } + else { + return COLLISION_AXIS_NONE; + } } // NO else if here - if (speed.Y) { - distance = relbox.MaxEdge.Y - relbox.MinEdge.Y; - - *dtime = distance >= 0 ? std::abs(distance / speed.Y) : -std::abs(distance / speed.Y); + if (speed.X) { + distance = relbox.MaxEdge.X - relbox.MinEdge.X; + *dtime = distance / std::abs(speed.X); time = std::max(*dtime, 0.0f); - if (distance > inner_margin) { - if (*dtime <= dtime_max) { - if ((speed.Y > 0 && staticbox.MaxEdge.Y > movingbox.MaxEdge.Y) || - (speed.Y < 0 && staticbox.MinEdge.Y < movingbox.MinEdge.Y)) { - if ( - (std::max(movingbox.MaxEdge.X + speed.X * time, staticbox.MaxEdge.X) - - std::min(movingbox.MinEdge.X + speed.X * time, staticbox.MinEdge.X) - - relbox.MinEdge.X < 0) && + if (*dtime <= dtime_max) { + inner_margin = std::max(-0.5f * (staticbox.MaxEdge.X - staticbox.MinEdge.X), -2.0f); + + if ((speed.X > 0 && staticbox.MinEdge.X - movingbox.MaxEdge.X > inner_margin) || + (speed.X < 0 && movingbox.MinEdge.X - staticbox.MaxEdge.X > inner_margin)) { + if ( + (std::max(movingbox.MaxEdge.Y + speed.Y * time, staticbox.MaxEdge.Y) + - std::min(movingbox.MinEdge.Y + speed.Y * time, staticbox.MinEdge.Y) + - relbox.MinEdge.Y < 0) && (std::max(movingbox.MaxEdge.Z + speed.Z * time, staticbox.MaxEdge.Z) - std::min(movingbox.MinEdge.Z + speed.Z * time, staticbox.MinEdge.Z) - relbox.MinEdge.Z < 0) - ) - return COLLISION_AXIS_Y; - } - } else { - return COLLISION_AXIS_NONE; + ) + return COLLISION_AXIS_X; } + } else { + return COLLISION_AXIS_NONE; } } @@ -149,24 +165,23 @@ CollisionAxis axisAlignedCollision( if (speed.Z) { distance = relbox.MaxEdge.Z - relbox.MinEdge.Z; - - *dtime = distance >= 0 ? std::abs(distance / speed.Z) : -std::abs(distance / speed.Z); + *dtime = distance / std::abs(speed.Z); time = std::max(*dtime, 0.0f); - if (distance > inner_margin) { - if (*dtime <= dtime_max) { - if ((speed.Z > 0 && staticbox.MaxEdge.Z > movingbox.MaxEdge.Z) || - (speed.Z < 0 && staticbox.MinEdge.Z < movingbox.MinEdge.Z)) { - if ( - (std::max(movingbox.MaxEdge.X + speed.X * time, staticbox.MaxEdge.X) - - std::min(movingbox.MinEdge.X + speed.X * time, staticbox.MinEdge.X) - - relbox.MinEdge.X < 0) && + if (*dtime <= dtime_max) { + inner_margin = std::max(-0.5f * (staticbox.MaxEdge.Z - staticbox.MinEdge.Z), -2.0f); + + if ((speed.Z > 0 && staticbox.MinEdge.Z - movingbox.MaxEdge.Z > inner_margin) || + (speed.Z < 0 && movingbox.MinEdge.Z - staticbox.MaxEdge.Z > inner_margin)) { + if ( + (std::max(movingbox.MaxEdge.X + speed.X * time, staticbox.MaxEdge.X) + - std::min(movingbox.MinEdge.X + speed.X * time, staticbox.MinEdge.X) + - relbox.MinEdge.X < 0) && (std::max(movingbox.MaxEdge.Y + speed.Y * time, staticbox.MaxEdge.Y) - std::min(movingbox.MinEdge.Y + speed.Y * time, staticbox.MinEdge.Y) - relbox.MinEdge.Y < 0) - ) - return COLLISION_AXIS_Z; - } + ) + return COLLISION_AXIS_Z; } } } @@ -245,6 +260,8 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, speed_f->X = rangelim(speed_f->X, -5000, 5000); speed_f->Z = rangelim(speed_f->Z, -5000, 5000); + *speed_f = truncate(*speed_f, 10000.0f); + /* Collect node boxes in movement range */ @@ -464,7 +481,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, if (nearest_collided == COLLISION_AXIS_NONE) { // No collision with any collision box. - *pos_f += *speed_f * dtime; + *pos_f += truncate(*speed_f * dtime, 100.0f); dtime = 0; // Set to 0 to avoid "infinite" loop due to small FP numbers } else { // Otherwise, a collision occurred. @@ -500,7 +517,7 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, pos_f->Z += speed_f->Z * nearest_dtime; } } else { - *pos_f += *speed_f * nearest_dtime; + *pos_f += truncate(*speed_f * nearest_dtime, 100.0f); dtime -= nearest_dtime; } From 36d35f2fe31a429c1510df680801940472416d45 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 14 May 2020 21:16:45 +0200 Subject: [PATCH 199/424] CSM: Bugfixes to camera:get_pos() and camera:get_fov() closes #9857 --- clientmods/preview/init.lua | 2 +- doc/client_lua_api.txt | 2 +- src/client/camera.cpp | 2 +- src/script/lua_api/l_camera.cpp | 57 ++++++++++++++++++++------------- src/script/lua_api/l_env.cpp | 16 ++++----- 5 files changed, 46 insertions(+), 33 deletions(-) diff --git a/clientmods/preview/init.lua b/clientmods/preview/init.lua index d2440369a..089955d2f 100644 --- a/clientmods/preview/init.lua +++ b/clientmods/preview/init.lua @@ -79,7 +79,7 @@ core.register_on_item_use(function(itemstack, pointed_thing) return false end - local pos = vector.add(core.localplayer:get_pos(), core.camera:get_offset()) + local pos = core.camera:get_pos() local pos2 = vector.add(pos, vector.multiply(core.camera:get_look_dir(), 100)) local rc = core.raycast(pos, pos2) diff --git a/doc/client_lua_api.txt b/doc/client_lua_api.txt index 53442d308..c9cd8ac93 100644 --- a/doc/client_lua_api.txt +++ b/doc/client_lua_api.txt @@ -967,7 +967,7 @@ Please do not try to access the reference until the camera is initialized, other * `get_camera_mode()` * Returns 0, 1, or 2 as described above * `get_fov()` - * Returns: + * Returns a table with X, Y, maximum and actual FOV in degrees: ```lua { diff --git a/src/client/camera.cpp b/src/client/camera.cpp index 1a5253db4..9b311171a 100644 --- a/src/client/camera.cpp +++ b/src/client/camera.cpp @@ -540,7 +540,7 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r m_aspect = (f32) window_size.X / (f32) window_size.Y; m_fov_y = m_curr_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))); + m_fov_y *= core::clamp(sqrt(16./10. / m_aspect), 1.0, 1.4); m_fov_x = 2 * atan(m_aspect * tan(0.5 * m_fov_y)); m_cameranode->setAspectRatio(m_aspect); m_cameranode->setFOV(m_fov_y); diff --git a/src/script/lua_api/l_camera.cpp b/src/script/lua_api/l_camera.cpp index 9c1470284..bfa60be67 100644 --- a/src/script/lua_api/l_camera.cpp +++ b/src/script/lua_api/l_camera.cpp @@ -51,6 +51,7 @@ void LuaCamera::create(lua_State *L, Camera *m) lua_setfield(L, objectstable, "camera"); } +// set_camera_mode(self, mode) int LuaCamera::l_set_camera_mode(lua_State *L) { Camera *camera = getobject(L, 1); @@ -67,17 +68,19 @@ int LuaCamera::l_set_camera_mode(lua_State *L) return 0; } +// get_camera_mode(self) int LuaCamera::l_get_camera_mode(lua_State *L) { Camera *camera = getobject(L, 1); if (!camera) return 0; - lua_pushnumber(L, (int)camera->getCameraMode()); + lua_pushinteger(L, (int)camera->getCameraMode()); return 1; } +// get_fov(self) int LuaCamera::l_get_fov(lua_State *L) { Camera *camera = getobject(L, 1); @@ -85,9 +88,9 @@ int LuaCamera::l_get_fov(lua_State *L) return 0; lua_newtable(L); - lua_pushnumber(L, camera->getFovX() * core::DEGTORAD); + lua_pushnumber(L, camera->getFovX() * core::RADTODEG); lua_setfield(L, -2, "x"); - lua_pushnumber(L, camera->getFovY() * core::DEGTORAD); + lua_pushnumber(L, camera->getFovY() * core::RADTODEG); lua_setfield(L, -2, "y"); lua_pushnumber(L, camera->getCameraNode()->getFOV() * core::RADTODEG); lua_setfield(L, -2, "actual"); @@ -96,16 +99,18 @@ int LuaCamera::l_get_fov(lua_State *L) return 1; } +// get_pos(self) int LuaCamera::l_get_pos(lua_State *L) { Camera *camera = getobject(L, 1); if (!camera) return 0; - push_v3f(L, camera->getPosition()); + push_v3f(L, camera->getPosition() / BS); return 1; } +// get_offset(self) int LuaCamera::l_get_offset(lua_State *L) { LocalPlayer *player = getClient(L)->getEnv().getLocalPlayer(); @@ -115,38 +120,40 @@ int LuaCamera::l_get_offset(lua_State *L) return 1; } +// get_look_dir(self) int LuaCamera::l_get_look_dir(lua_State *L) { - LocalPlayer *player = getClient(L)->getEnv().getLocalPlayer(); - sanity_check(player); + Camera *camera = getobject(L, 1); + if (!camera) + return 0; - float pitch = -1.0 * player->getPitch() * core::DEGTORAD; - float yaw = (player->getYaw() + 90.) * core::DEGTORAD; - v3f v(std::cos(pitch) * std::cos(yaw), std::sin(pitch), - std::cos(pitch) * std::sin(yaw)); - - push_v3f(L, v); + push_v3f(L, camera->getDirection()); return 1; } +// get_look_horizontal(self) +// FIXME: wouldn't localplayer be a better place for this? int LuaCamera::l_get_look_horizontal(lua_State *L) { LocalPlayer *player = getClient(L)->getEnv().getLocalPlayer(); sanity_check(player); - lua_pushnumber(L, (player->getYaw() + 90.) * core::DEGTORAD); + lua_pushnumber(L, (player->getYaw() + 90.f) * core::DEGTORAD); return 1; } +// get_look_vertical(self) +// FIXME: wouldn't localplayer be a better place for this? int LuaCamera::l_get_look_vertical(lua_State *L) { LocalPlayer *player = getClient(L)->getEnv().getLocalPlayer(); sanity_check(player); - lua_pushnumber(L, -1.0 * player->getPitch() * core::DEGTORAD); + lua_pushnumber(L, -1.0f * player->getPitch() * core::DEGTORAD); return 1; } +// get_aspect_ratio(self) int LuaCamera::l_get_aspect_ratio(lua_State *L) { Camera *camera = getobject(L, 1); @@ -215,13 +222,19 @@ void LuaCamera::Register(lua_State *L) lua_pop(L, 1); } +// clang-format off const char LuaCamera::className[] = "Camera"; -const luaL_Reg LuaCamera::methods[] = {luamethod(LuaCamera, set_camera_mode), - luamethod(LuaCamera, get_camera_mode), luamethod(LuaCamera, get_fov), - luamethod(LuaCamera, get_pos), luamethod(LuaCamera, get_offset), - luamethod(LuaCamera, get_look_dir), - luamethod(LuaCamera, get_look_vertical), - luamethod(LuaCamera, get_look_horizontal), - luamethod(LuaCamera, get_aspect_ratio), +const luaL_Reg LuaCamera::methods[] = { + luamethod(LuaCamera, set_camera_mode), + luamethod(LuaCamera, get_camera_mode), + luamethod(LuaCamera, get_fov), + luamethod(LuaCamera, get_pos), + luamethod(LuaCamera, get_offset), + luamethod(LuaCamera, get_look_dir), + luamethod(LuaCamera, get_look_vertical), + luamethod(LuaCamera, get_look_horizontal), + luamethod(LuaCamera, get_aspect_ratio), - {0, 0}}; + {0, 0} +}; +// clang-format on diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index cabca124d..b8a8a5ce1 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -780,8 +780,8 @@ int ModApiEnvMod::l_find_node_near(lua_State *L) #ifndef SERVER // Client API limitations - if (getClient(L)) - radius = getClient(L)->CSMClampRadius(pos, radius); + if (Client *client = getClient(L)) + radius = client->CSMClampRadius(pos, radius); #endif for (int d = start_radius; d <= radius; d++) { @@ -811,9 +811,9 @@ int ModApiEnvMod::l_find_nodes_in_area(lua_State *L) const NodeDefManager *ndef = env->getGameDef()->ndef(); #ifndef SERVER - if (getClient(L)) { - minp = getClient(L)->CSMClampPos(minp); - maxp = getClient(L)->CSMClampPos(maxp); + if (Client *client = getClient(L)) { + minp = client->CSMClampPos(minp); + maxp = client->CSMClampPos(maxp); } #endif @@ -887,9 +887,9 @@ int ModApiEnvMod::l_find_nodes_in_area_under_air(lua_State *L) const NodeDefManager *ndef = env->getGameDef()->ndef(); #ifndef SERVER - if (getClient(L)) { - minp = getClient(L)->CSMClampPos(minp); - maxp = getClient(L)->CSMClampPos(maxp); + if (Client *client = getClient(L)) { + minp = client->CSMClampPos(minp); + maxp = client->CSMClampPos(maxp); } #endif From d76785b4c70d834783d2e578086680941257cfa1 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 14 May 2020 21:18:26 +0200 Subject: [PATCH 200/424] network: Replace a fatal_error with just error logging --- src/network/connectionthreads.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/network/connectionthreads.cpp b/src/network/connectionthreads.cpp index 1f33d2ded..9a6617a1c 100644 --- a/src/network/connectionthreads.cpp +++ b/src/network/connectionthreads.cpp @@ -336,11 +336,9 @@ bool ConnectionSendThread::rawSendAsPacket(session_t peer_id, u8 channelnum, { PeerHelper peer = m_connection->getPeerNoEx(peer_id); if (!peer) { - LOG(dout_con << m_connection->getDesc() - << " INFO: dropped packet for non existent peer_id: " - << peer_id << std::endl); - FATAL_ERROR_IF(!reliable, - "Trying to send raw packet reliable but no peer found!"); + LOG(errorstream << m_connection->getDesc() + << " dropped " << (reliable ? "reliable " : "") + << "packet for non existent peer_id: " << peer_id << std::endl); return false; } Channel *channel = &(dynamic_cast(&peer)->channels[channelnum]); From af0f7ac4a2032780eb731918c8fe9dc9e1262b5f Mon Sep 17 00:00:00 2001 From: Paramat Date: Thu, 14 May 2020 22:27:54 +0100 Subject: [PATCH 201/424] Add new Mapgen V7 floatland implementation (#9296) Floatland structure is vertically-compressed 3D noise. Uses a lacunarity of 1.618 (the golden ratio) for high quality noise. Floatlands appear between user-settable Y limits, with smooth tapering at each limit. Simple user-settable density adjustment. Shadow propagation is disabled in and just below floatlands, no shadows are cast on the world surface. Can be reconfigured to create a solid upper world layer between the Y limits, lakes/seas can be optionally added to this. --- builtin/settingtypes.txt | 49 ++++++++++++++++++- src/mapgen/mapgen_v7.cpp | 102 +++++++++++++++++++++++++++++++++++---- src/mapgen/mapgen_v7.h | 21 +++++++- 3 files changed, 160 insertions(+), 12 deletions(-) diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index b75bf2de5..d3f2c60b5 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -1607,12 +1607,53 @@ mgv6_np_apple_trees (Apple trees noise) noise_params_2d 0, 1, (100, 100, 100), 3 [*Mapgen V7] # Map generation attributes specific to Mapgen v7. -# 'ridges' enables the rivers. +# 'ridges': Rivers. +# 'floatlands': Floating land masses in the atmosphere. +# 'caverns': Giant caves deep underground. mgv7_spflags (Mapgen V7 specific flags) flags mountains,ridges,nofloatlands,caverns mountains,ridges,floatlands,caverns,nomountains,noridges,nofloatlands,nocaverns # Y of mountain density gradient zero level. Used to shift mountains vertically. mgv7_mount_zero_level (Mountain zero level) int 0 +# Lower Y limit of floatlands. +mgv7_floatland_ymin (Floatland minimum Y) int 1024 + +# Upper Y limit of floatlands. +mgv7_floatland_ymax (Floatland maximum Y) int 4096 + +# Y-distance over which floatlands taper from full density to nothing. +# Tapering starts at this distance from the Y limit. +# For a solid floatland layer, this controls the height of hills/mountains. +# Must be less than or equal to half the distance between the Y limits. +mgv7_floatland_taper (Floatland tapering distance) int 256 + +# Exponent of the floatland tapering. Alters the tapering behaviour. +# Value = 1.0 creates a uniform, linear tapering. +# Values > 1.0 create a smooth tapering suitable for the default separated +# floatlands. +# Values < 1.0 (for example 0.25) create a more defined surface level with +# flatter lowlands, suitable for a solid floatland layer. +mgv7_float_taper_exp (Floatland taper exponent) float 2.0 + +# Adjusts the density of the floatland layer. +# Increase value to increase density. Can be positive or negative. +# Value = 0.0: 50% of volume is floatland. +# Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test +# to be sure) creates a solid floatland layer. +mgv7_floatland_density (Floatland density) float -0.9 + +# Surface level of optional water placed on a solid floatland layer. +# Water is disabled by default and will only be placed if this value is set +# to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the +# upper tapering). +# ***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***: +# When enabling water placement the floatlands must be configured and tested +# to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other +# required value depending on 'mgv7_np_floatland'), to avoid +# server-intensive extreme water flow and to avoid vast flooding of the +# world surface below. +mgv7_floatland_ywater (Floatland water level) int -31000 + # Controls width of tunnels, a smaller value creates wider tunnels. # Value >= 10.0 completely disables generation of tunnels and avoids the # intensive noise calculations. @@ -1682,6 +1723,12 @@ mgv7_np_mountain (Mountain noise) noise_params_3d -0.6, 1, (250, 350, 250), 5333 # 3D noise defining structure of river canyon walls. mgv7_np_ridge (Ridge noise) noise_params_3d 0, 1, (100, 100, 100), 6467, 4, 0.75, 2.0 +# 3D noise defining structure of floatlands. +# If altered from the default, the noise 'scale' (0.7 by default) may need +# to be adjusted, as floatland tapering functions best when this noise has +# a value range of approximately -2.0 to 2.0. +mgv7_np_floatland (Floatland noise) noise_params_3d 0, 0.7, (384, 96, 384), 1009, 4, 0.75, 1.618 + # 3D noise defining giant caverns. mgv7_np_cavern (Cavern noise) noise_params_3d 0, 1, (384, 128, 384), 723, 5, 0.63, 2.0 diff --git a/src/mapgen/mapgen_v7.cpp b/src/mapgen/mapgen_v7.cpp index 43d5d822f..e93dc9140 100644 --- a/src/mapgen/mapgen_v7.cpp +++ b/src/mapgen/mapgen_v7.cpp @@ -1,7 +1,7 @@ /* Minetest -Copyright (C) 2013-2019 kwolekr, Ryan Kwolek -Copyright (C) 2014-2019 paramat +Copyright (C) 2014-2020 paramat +Copyright (C) 2013-2016 kwolekr, Ryan Kwolek 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 @@ -56,6 +56,12 @@ MapgenV7::MapgenV7(MapgenV7Params *params, EmergeParams *emerge) { spflags = params->spflags; mount_zero_level = params->mount_zero_level; + floatland_ymin = params->floatland_ymin; + floatland_ymax = params->floatland_ymax; + floatland_taper = params->floatland_taper; + float_taper_exp = params->float_taper_exp; + floatland_density = params->floatland_density; + floatland_ywater = params->floatland_ywater; cave_width = params->cave_width; large_cave_depth = params->large_cave_depth; @@ -70,6 +76,9 @@ MapgenV7::MapgenV7(MapgenV7Params *params, EmergeParams *emerge) dungeon_ymin = params->dungeon_ymin; dungeon_ymax = params->dungeon_ymax; + // Allocate floatland noise offset cache + this->float_offset_cache = new float[csize.Y + 2]; + // 2D noise noise_terrain_base = new Noise(¶ms->np_terrain_base, seed, csize.X, csize.Z); @@ -100,6 +109,12 @@ MapgenV7::MapgenV7(MapgenV7Params *params, EmergeParams *emerge) new Noise(¶ms->np_ridge, seed, csize.X, csize.Y + 2, csize.Z); } + if (spflags & MGV7_FLOATLANDS) { + // 3D noise, 1 up, 1 down overgeneration + noise_floatland = + new Noise(¶ms->np_floatland, seed, csize.X, csize.Y + 2, csize.Z); + } + // 3D noise, 1 down overgeneration MapgenBasic::np_cave1 = params->np_cave1; MapgenBasic::np_cave2 = params->np_cave2; @@ -126,6 +141,12 @@ MapgenV7::~MapgenV7() delete noise_ridge_uwater; delete noise_ridge; } + + if (spflags & MGV7_FLOATLANDS) { + delete noise_floatland; + } + + delete []float_offset_cache; } @@ -139,6 +160,7 @@ MapgenV7Params::MapgenV7Params(): np_ridge_uwater (0.0, 1.0, v3f(1000, 1000, 1000), 85039, 5, 0.6, 2.0), np_mountain (-0.6, 1.0, v3f(250, 350, 250), 5333, 5, 0.63, 2.0), np_ridge (0.0, 1.0, v3f(100, 100, 100), 6467, 4, 0.75, 2.0), + np_floatland (0.0, 0.7, v3f(384, 96, 384), 1009, 4, 0.75, 1.618), np_cavern (0.0, 1.0, v3f(384, 128, 384), 723, 5, 0.63, 2.0), np_cave1 (0.0, 12.0, v3f(61, 61, 61), 52534, 3, 0.5, 2.0), np_cave2 (0.0, 12.0, v3f(67, 67, 67), 10325, 3, 0.5, 2.0), @@ -151,6 +173,13 @@ void MapgenV7Params::readParams(const Settings *settings) { settings->getFlagStrNoEx("mgv7_spflags", spflags, flagdesc_mapgen_v7); settings->getS16NoEx("mgv7_mount_zero_level", mount_zero_level); + settings->getS16NoEx("mgv7_floatland_ymin", floatland_ymin); + settings->getS16NoEx("mgv7_floatland_ymax", floatland_ymax); + settings->getS16NoEx("mgv7_floatland_taper", floatland_taper); + settings->getFloatNoEx("mgv7_float_taper_exp", float_taper_exp); + settings->getFloatNoEx("mgv7_floatland_density", floatland_density); + settings->getS16NoEx("mgv7_floatland_ywater", floatland_ywater); + settings->getFloatNoEx("mgv7_cave_width", cave_width); settings->getS16NoEx("mgv7_large_cave_depth", large_cave_depth); settings->getU16NoEx("mgv7_small_cave_num_min", small_cave_num_min); @@ -173,6 +202,7 @@ void MapgenV7Params::readParams(const Settings *settings) settings->getNoiseParams("mgv7_np_ridge_uwater", np_ridge_uwater); settings->getNoiseParams("mgv7_np_mountain", np_mountain); settings->getNoiseParams("mgv7_np_ridge", np_ridge); + settings->getNoiseParams("mgv7_np_floatland", np_floatland); settings->getNoiseParams("mgv7_np_cavern", np_cavern); settings->getNoiseParams("mgv7_np_cave1", np_cave1); settings->getNoiseParams("mgv7_np_cave2", np_cave2); @@ -184,6 +214,13 @@ void MapgenV7Params::writeParams(Settings *settings) const { settings->setFlagStr("mgv7_spflags", spflags, flagdesc_mapgen_v7); settings->setS16("mgv7_mount_zero_level", mount_zero_level); + settings->setS16("mgv7_floatland_ymin", floatland_ymin); + settings->setS16("mgv7_floatland_ymax", floatland_ymax); + settings->setS16("mgv7_floatland_taper", floatland_taper); + settings->setFloat("mgv7_float_taper_exp", float_taper_exp); + settings->setFloat("mgv7_floatland_density", floatland_density); + settings->setS16("mgv7_floatland_ywater", floatland_ywater); + settings->setFloat("mgv7_cave_width", cave_width); settings->setS16("mgv7_large_cave_depth", large_cave_depth); settings->setU16("mgv7_small_cave_num_min", small_cave_num_min); @@ -206,6 +243,7 @@ void MapgenV7Params::writeParams(Settings *settings) const settings->setNoiseParams("mgv7_np_ridge_uwater", np_ridge_uwater); settings->setNoiseParams("mgv7_np_mountain", np_mountain); settings->setNoiseParams("mgv7_np_ridge", np_ridge); + settings->setNoiseParams("mgv7_np_floatland", np_floatland); settings->setNoiseParams("mgv7_np_cavern", np_cavern); settings->setNoiseParams("mgv7_np_cave1", np_cave1); settings->setNoiseParams("mgv7_np_cave2", np_cave2); @@ -357,8 +395,9 @@ void MapgenV7::makeChunk(BlockMakeData *data) updateLiquid(&data->transforming_liquid, full_node_min, full_node_max); // Calculate lighting - // TODO disable in and just below floatlands - bool propagate_shadow = true; + // Limit floatland shadows + bool propagate_shadow = !((spflags & MGV7_FLOATLANDS) && + node_max.Y >= floatland_ymin - csize.Y * 2 && node_min.Y <= floatland_ymax); if (flags & MG_LIGHT) calcLighting(node_min - v3s16(0, 1, 0), node_max + v3s16(0, 1, 0), @@ -427,6 +466,12 @@ bool MapgenV7::getMountainTerrainFromMap(int idx_xyz, int idx_xz, s16 y) } +bool MapgenV7::getFloatlandTerrainFromMap(int idx_xyz, float float_offset) +{ + return noise_floatland->result[idx_xyz] + floatland_density - float_offset >= 0.0f; +} + + int MapgenV7::generateTerrain() { MapNode n_air(CONTENT_AIR); @@ -446,6 +491,35 @@ int MapgenV7::generateTerrain() noise_mountain->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); } + //// Floatlands + // 'Generate floatlands in this mapchunk' bool for + // simplification of condition checks in y-loop. + bool gen_floatlands = false; + u8 cache_index = 0; + // Y values where floatland tapering starts + s16 float_taper_ymax = floatland_ymax - floatland_taper; + s16 float_taper_ymin = floatland_ymin + floatland_taper; + + if ((spflags & MGV7_FLOATLANDS) && + node_max.Y >= floatland_ymin && node_min.Y <= floatland_ymax) { + gen_floatlands = true; + // Calculate noise for floatland generation + noise_floatland->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); + + // Cache floatland noise offset values, for floatland tapering + for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++, cache_index++) { + float float_offset = 0.0f; + if (y > float_taper_ymax) { + float_offset = std::pow((y - float_taper_ymax) / (float)floatland_taper, + float_taper_exp) * 4.0f; + } else if (y < float_taper_ymin) { + float_offset = std::pow((float_taper_ymin - y) / (float)floatland_taper, + float_taper_exp) * 4.0f; + } + float_offset_cache[cache_index] = float_offset; + } + } + //// Place nodes const v3s16 &em = vm->m_area.getExtent(); s16 stone_surface_max_y = -MAX_MAP_GENERATION_LIMIT; @@ -457,13 +531,15 @@ int MapgenV7::generateTerrain() if (surface_y > stone_surface_max_y) stone_surface_max_y = surface_y; + cache_index = 0; u32 vi = vm->m_area.index(x, node_min.Y - 1, z); u32 index3d = (z - node_min.Z) * zstride_1u1d + (x - node_min.X); for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++, index3d += ystride, - VoxelArea::add_y(em, vi, 1)) { + VoxelArea::add_y(em, vi, 1), + cache_index++) { if (vm->m_data[vi].getContent() != CONTENT_IGNORE) continue; @@ -474,10 +550,18 @@ int MapgenV7::generateTerrain() vm->m_data[vi] = n_stone; // Mountain terrain if (y > stone_surface_max_y) stone_surface_max_y = y; - } else if (y <= water_level) { + } else if (gen_floatlands && + getFloatlandTerrainFromMap(index3d, + float_offset_cache[cache_index])) { + vm->m_data[vi] = n_stone; // Floatland terrain + if (y > stone_surface_max_y) + stone_surface_max_y = y; + } else if (y <= water_level) { // Surface water vm->m_data[vi] = n_water; + } else if (gen_floatlands && y >= float_taper_ymax && y <= floatland_ywater) { + vm->m_data[vi] = n_water; // Water for solid floatland layer only } else { - vm->m_data[vi] = n_air; + vm->m_data[vi] = n_air; // Air } } } @@ -488,8 +572,8 @@ int MapgenV7::generateTerrain() void MapgenV7::generateRidgeTerrain() { - // TODO disable river canyons in floatlands - if (node_max.Y < water_level - 16) + if (node_max.Y < water_level - 16 || + (node_max.Y >= floatland_ymin && node_min.Y <= floatland_ymax)) return; noise_ridge->perlinMap3D(node_min.X, node_min.Y - 1, node_min.Z); diff --git a/src/mapgen/mapgen_v7.h b/src/mapgen/mapgen_v7.h index eeae3a956..4020cd935 100644 --- a/src/mapgen/mapgen_v7.h +++ b/src/mapgen/mapgen_v7.h @@ -1,7 +1,7 @@ /* Minetest -Copyright (C) 2013-2018 kwolekr, Ryan Kwolek -Copyright (C) 2014-2018 paramat +Copyright (C) 2014-2020 paramat +Copyright (C) 2013-2016 kwolekr, Ryan Kwolek 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,6 +36,12 @@ extern FlagDesc flagdesc_mapgen_v7[]; struct MapgenV7Params : public MapgenParams { s16 mount_zero_level = 0; + s16 floatland_ymin = 1024; + s16 floatland_ymax = 4096; + s16 floatland_taper = 256; + float float_taper_exp = 2.0f; + float floatland_density = -0.6f; + s16 floatland_ywater = -31000; float cave_width = 0.09f; s16 large_cave_depth = -33; @@ -59,6 +65,7 @@ struct MapgenV7Params : public MapgenParams { NoiseParams np_ridge_uwater; NoiseParams np_mountain; NoiseParams np_ridge; + NoiseParams np_floatland; NoiseParams np_cavern; NoiseParams np_cave1; NoiseParams np_cave2; @@ -87,12 +94,21 @@ public: float baseTerrainLevelFromMap(int index); bool getMountainTerrainAtPoint(s16 x, s16 y, s16 z); bool getMountainTerrainFromMap(int idx_xyz, int idx_xz, s16 y); + bool getFloatlandTerrainFromMap(int idx_xyz, float float_offset); int generateTerrain(); void generateRidgeTerrain(); private: s16 mount_zero_level; + s16 floatland_ymin; + s16 floatland_ymax; + s16 floatland_taper; + float float_taper_exp; + float floatland_density; + s16 floatland_ywater; + + float *float_offset_cache = nullptr; Noise *noise_terrain_base; Noise *noise_terrain_alt; @@ -102,4 +118,5 @@ private: Noise *noise_ridge_uwater; Noise *noise_mountain; Noise *noise_ridge; + Noise *noise_floatland; }; From a08251a61e5c6f407621d04b2de4da6812410c66 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 16 May 2020 12:03:36 +0200 Subject: [PATCH 202/424] Log protocol ver on mismatched client connect too --- src/network/serverpackethandler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index 39a912827..2fa9d4196 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -112,7 +112,7 @@ void Server::handleCommand_Init(NetworkPacket* pkt) if (depl_serial_v == SER_FMT_VER_INVALID) { actionstream << "Server: A mismatched client tried to connect from " << - addr_s << " client_max=" << (int)client_max << std::endl; + addr_s << " ser_fmt_max=" << (int)client_max << std::endl; DenyAccess(peer_id, SERVER_ACCESSDENIED_WRONG_VERSION); return; } @@ -147,7 +147,7 @@ void Server::handleCommand_Init(NetworkPacket* pkt) net_proto_version < SERVER_PROTOCOL_VERSION_MIN || net_proto_version > SERVER_PROTOCOL_VERSION_MAX) { actionstream << "Server: A mismatched client tried to connect from " << - addr_s << std::endl; + addr_s << " proto_max=" << (int)max_net_proto_version << std::endl; DenyAccess(peer_id, SERVER_ACCESSDENIED_WRONG_VERSION); return; } From ab745685c79cd7b0fa8f74b96e190c528d620608 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 16 May 2020 21:41:41 +0200 Subject: [PATCH 203/424] Error msg if trying to teleport attached player (#9824) --- builtin/game/chat.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/builtin/game/chat.lua b/builtin/game/chat.lua index c8fa4175d..b9f84e522 100644 --- a/builtin/game/chat.lua +++ b/builtin/game/chat.lua @@ -443,6 +443,9 @@ core.register_chatcommand("teleport", { end local teleportee = core.get_player_by_name(name) if teleportee then + if teleportee:get_attach() then + return false, "Can't teleport, you're attached to an object!" + end teleportee:set_pos(p) return true, "Teleporting to "..core.pos_to_string(p) end @@ -460,6 +463,9 @@ core.register_chatcommand("teleport", { end if teleportee and p then + if teleportee:get_attach() then + return false, "Can't teleport, you're attached to an object!" + end p = find_free_position_near(p) teleportee:set_pos(p) return true, "Teleporting to " .. target_name @@ -480,6 +486,9 @@ core.register_chatcommand("teleport", { teleportee = core.get_player_by_name(teleportee_name) end if teleportee and p.x and p.y and p.z then + if teleportee:get_attach() then + return false, "Can't teleport, player is attached to an object!" + end teleportee:set_pos(p) return true, "Teleporting " .. teleportee_name .. " to " .. core.pos_to_string(p) @@ -498,6 +507,9 @@ core.register_chatcommand("teleport", { end end if teleportee and p then + if teleportee:get_attach() then + return false, "Can't teleport, player is attached to an object!" + end p = find_free_position_near(p) teleportee:set_pos(p) return true, "Teleporting " .. teleportee_name From c1ce4be756e2554051a27f244303377c0a7d69a6 Mon Sep 17 00:00:00 2001 From: ANAND Date: Sun, 17 May 2020 01:12:31 +0530 Subject: [PATCH 204/424] Make automatic_rotate relative, allow setting rotation (#8468) automatic_rotate does not make sense if it is absolute. Make it relative. To avoid bouncing, set_rotation did not update the client when automatic_rotate was set. That's no longer necessary because the new spinning method applies the rotation on top of the current one, and the updates are necessary for set_rotation to actually transform the object. Co-authored-by: ANAND Co-authored-by: Pedro Gimeno --- doc/lua_api.txt | 1 + src/client/content_cao.cpp | 15 +++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 9685e8307..07758c237 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -6555,6 +6555,7 @@ Player properties need to be saved manually. automatic_rotate = 0, -- Set constant rotation in radians per second, positive or negative. + -- Object rotates along the local Y-axis, and works with set_rotation. -- Set to 0 to disable constant rotation. stepheight = 0, diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index eb1dad22b..867bbf2c8 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -1077,10 +1077,13 @@ void GenericCAO::step(float dtime, ClientEnvironment *env) updateTextures(m_previous_texture_modifier); } } + if (!getParent() && std::fabs(m_prop.automatic_rotate) > 0.001) { - m_rotation.Y += dtime * m_prop.automatic_rotate * 180 / M_PI; - rot_translator.val_current = m_rotation; - updateNodePos(); + // This is the child node's rotation. It is only used for automatic_rotate. + v3f local_rot = node->getRotation(); + local_rot.Y = modulo360f(local_rot.Y - dtime * core::RADTODEG * + m_prop.automatic_rotate); + node->setRotation(local_rot); } if (!getParent() && m_prop.automatic_face_movement_dir && @@ -1501,11 +1504,7 @@ void GenericCAO::processMessage(const std::string &data) m_position = readV3F32(is); m_velocity = readV3F32(is); m_acceleration = readV3F32(is); - - if (std::fabs(m_prop.automatic_rotate) < 0.001f) - m_rotation = readV3F32(is); - else - readV3F32(is); + m_rotation = readV3F32(is); m_rotation = wrapDegrees_0_360_v3f(m_rotation); bool do_interpolate = readU8(is); From a9c3a423231e26ea3edee51d5f0bf949ca8e529b Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sun, 17 May 2020 19:09:10 +0100 Subject: [PATCH 205/424] Add core.open_url() to main menu API (#8592) --- .../net/minetest/minetest/GameActivity.java | 6 + builtin/mainmenu/dlg_contentstore.lua | 113 ++++-------------- builtin/mainmenu/tab_credits.lua | 11 +- doc/menu_lua_api.txt | 5 + src/porting.cpp | 30 ++++- src/porting.h | 3 + src/porting_android.cpp | 12 ++ src/porting_android.h | 2 + src/script/lua_api/l_mainmenu.cpp | 9 ++ src/script/lua_api/l_mainmenu.h | 3 + 10 files changed, 98 insertions(+), 96 deletions(-) diff --git a/build/android/app/src/main/java/net/minetest/minetest/GameActivity.java b/build/android/app/src/main/java/net/minetest/minetest/GameActivity.java index 02b61b598..635512569 100644 --- a/build/android/app/src/main/java/net/minetest/minetest/GameActivity.java +++ b/build/android/app/src/main/java/net/minetest/minetest/GameActivity.java @@ -22,6 +22,7 @@ package net.minetest.minetest; import android.app.NativeActivity; import android.content.Intent; +import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.view.View; @@ -117,4 +118,9 @@ public class GameActivity extends NativeActivity { public int getDisplayWidth() { return getResources().getDisplayMetrics().widthPixels; } + + public void openURL(String url) { + Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + startActivity(browserIntent); + } } diff --git a/builtin/mainmenu/dlg_contentstore.lua b/builtin/mainmenu/dlg_contentstore.lua index 3bc5f60bb..ce5c061c6 100644 --- a/builtin/mainmenu/dlg_contentstore.lua +++ b/builtin/mainmenu/dlg_contentstore.lua @@ -16,7 +16,6 @@ --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. local store = { packages = {}, packages_full = {} } -local package_dialog = {} -- Screenshot local screenshot_dir = core.get_cache_path() .. DIR_DELIM .. "cdb" @@ -44,8 +43,6 @@ local filter_types_type = { } - - local function download_package(param) if core.download_file(param.package.url, param.filename) then return { @@ -195,74 +192,6 @@ local function get_screenshot(package) return defaulttexturedir .. "loading_screenshot.png" end - - -function package_dialog.get_formspec() - local package = package_dialog.package - - store.update_paths() - - local formspec = { - "size[9,4;true]", - "image[0,1;4.5,3;", core.formspec_escape(get_screenshot(package)), ']', - "label[3.8,1;", - minetest.colorize(mt_color_green, core.formspec_escape(package.title)), "\n", - minetest.colorize('#BFBFBF', "by " .. core.formspec_escape(package.author)), "]", - "textarea[4,2;5.3,2;;;", core.formspec_escape(package.short_description), "]", - "button[0,0;2,1;back;", fgettext("Back"), "]", - } - - if not package.path then - formspec[#formspec + 1] = "button[7,0;2,1;install;" - formspec[#formspec + 1] = fgettext("Install") - formspec[#formspec + 1] = "]" - elseif package.installed_release < package.release then - -- The install_ action also handles updating - formspec[#formspec + 1] = "button[7,0;2,1;install;" - formspec[#formspec + 1] = fgettext("Update") - formspec[#formspec + 1] = "]" - formspec[#formspec + 1] = "button[5,0;2,1;uninstall;" - formspec[#formspec + 1] = fgettext("Uninstall") - formspec[#formspec + 1] = "]" - else - formspec[#formspec + 1] = "button[7,0;2,1;uninstall;" - formspec[#formspec + 1] = fgettext("Uninstall") - formspec[#formspec + 1] = "]" - end - - return table.concat(formspec, "") -end - -function package_dialog.handle_submit(this, fields) - if fields.back then - this:delete() - return true - end - - if fields.install then - start_install(this, package_dialog.package) - return true - end - - if fields.uninstall then - local dlg_delmod = create_delete_content_dlg(package_dialog.package) - dlg_delmod:set_parent(this) - this:hide() - dlg_delmod:show() - return true - end - - return false -end - -function package_dialog.create(package) - package_dialog.package = package - return dialog_create("package_view", - package_dialog.get_formspec, - package_dialog.handle_submit, - nil) -end - function store.load() local tmpdir = os.tempfolder() local target = tmpdir .. DIR_DELIM .. "packages.json" @@ -462,44 +391,45 @@ function store.get_formspec(dlgdata) minetest.colorize("#BFBFBF", " by " .. package.author)) formspec[#formspec + 1] = "]" - -- description - if package.path and package.installed_release < package.release then - formspec[#formspec + 1] = "textarea[1.25,0.3;7.5,1;;;" - else - formspec[#formspec + 1] = "textarea[1.25,0.3;9,1;;;" - end - formspec[#formspec + 1] = core.formspec_escape(package.short_description) - formspec[#formspec + 1] = "]" - -- buttons + local description_width = 7.5 if not package.path then - formspec[#formspec + 1] = "button[9.9,0;1.5,1;install_" + formspec[#formspec + 1] = "button[8.4,0;1.5,1;install_" formspec[#formspec + 1] = tostring(i) formspec[#formspec + 1] = ";" formspec[#formspec + 1] = fgettext("Install") formspec[#formspec + 1] = "]" else if package.installed_release < package.release then + description_width = 6 + -- The install_ action also handles updating - formspec[#formspec + 1] = "button[8.4,0;1.5,1;install_" + formspec[#formspec + 1] = "button[6.9,0;1.5,1;install_" formspec[#formspec + 1] = tostring(i) formspec[#formspec + 1] = ";" formspec[#formspec + 1] = fgettext("Update") formspec[#formspec + 1] = "]" end - formspec[#formspec + 1] = "button[9.9,0;1.5,1;uninstall_" + formspec[#formspec + 1] = "button[8.4,0;1.5,1;uninstall_" formspec[#formspec + 1] = tostring(i) formspec[#formspec + 1] = ";" formspec[#formspec + 1] = fgettext("Uninstall") formspec[#formspec + 1] = "]" end - --formspec[#formspec + 1] = "button[9.9,0;1.5,1;view_" - --formspec[#formspec + 1] = tostring(i) - --formspec[#formspec + 1] = ";" - --formspec[#formspec + 1] = fgettext("View") - --formspec[#formspec + 1] = "]" + formspec[#formspec + 1] = "button[9.9,0;1.5,1;view_" + formspec[#formspec + 1] = tostring(i) + formspec[#formspec + 1] = ";" + formspec[#formspec + 1] = fgettext("View") + formspec[#formspec + 1] = "]" + + -- description + formspec[#formspec + 1] = "textarea[1.25,0.3;" + formspec[#formspec + 1] = tostring(description_width) + formspec[#formspec + 1] = ",1;;;" + formspec[#formspec + 1] = core.formspec_escape(package.short_description) + formspec[#formspec + 1] = "]" formspec[#formspec + 1] = "container_end[]" end @@ -576,10 +506,9 @@ function store.handle_submit(this, fields) end if fields["view_" .. i] then - local dlg = package_dialog.create(package) - dlg:set_parent(this) - this:hide() - dlg:show() + local url = ("%s/packages/%s?protocol_version=%d"):format( + core.settings:get("contentdb_url"), package.id, core.get_max_supp_proto()) + core.open_url(url) return true end end diff --git a/builtin/mainmenu/tab_credits.lua b/builtin/mainmenu/tab_credits.lua index 962d2a3b4..c2b7e503a 100644 --- a/builtin/mainmenu/tab_credits.lua +++ b/builtin/mainmenu/tab_credits.lua @@ -101,8 +101,8 @@ return { local logofile = defaulttexturedir .. "logo.png" local version = core.get_version() return "image[0.5,1;" .. core.formspec_escape(logofile) .. "]" .. - "label[0.5,3.2;" .. version.project .. " " .. version.string .. "]" .. - "label[0.5,3.5;http://minetest.net]" .. + "label[0.5,2.8;" .. version.project .. " " .. version.string .. "]" .. + "button[0.5,3;2,2;homepage;minetest.net]" .. "tablecolumns[color;text]" .. "tableoptions[background=#00000000;highlight=#00000000;border=false]" .. "table[3.5,-0.25;8.5,6.05;list_credits;" .. @@ -115,5 +115,10 @@ return { "#FFFF00," .. fgettext("Previous Contributors") .. ",," .. buildCreditList(previous_contributors) .. "," .. ";1]" - end + end, + cbf_button_handler = function(this, fields, name, tabdata) + if fields.homepage then + core.open_url("https://www.minetest.net") + end + end, } diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt index 8f5460acb..485c50110 100644 --- a/doc/menu_lua_api.txt +++ b/doc/menu_lua_api.txt @@ -234,6 +234,11 @@ core.get_min_supp_proto() core.get_max_supp_proto() ^ returns the maximum supported network protocol version +Other: +core.open_url(url) +^ opens the URL in a web browser, returns false on failure. +^ Must begin with http:// or https:// + Async: core.handle_async(async_job,parameters,finished) ^ execute a function asynchronously diff --git a/src/porting.cpp b/src/porting.cpp index c0381ad06..ef1640467 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -33,22 +33,28 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include #include + #include #endif #if !defined(_WIN32) #include #include + #if !defined(__ANDROID__) + #include + #endif #endif #if defined(__hpux) #define _PSTAT64 #include #endif +#if defined(__ANDROID__) + #include "porting_android.h" +#endif #include "config.h" #include "debug.h" #include "filesys.h" #include "log.h" #include "util/string.h" -#include "settings.h" #include #include #include @@ -697,6 +703,28 @@ int mt_snprintf(char *buf, const size_t buf_size, const char *fmt, ...) return c; } +bool openURL(const std::string &url) +{ + if ((url.substr(0, 7) != "http://" && url.substr(0, 8) != "https://") || + url.find_first_of("\r\n") != std::string::npos) { + errorstream << "Invalid url: " << url << std::endl; + return false; + } + +#if defined(_WIN32) + return (intptr_t)ShellExecuteA(NULL, NULL, url.c_str(), NULL, NULL, SW_SHOWNORMAL) > 32; +#elif defined(__ANDROID__) + openURLAndroid(url); + return true; +#elif defined(__APPLE__) + const char *argv[] = {"open", url.c_str(), NULL}; + return posix_spawnp(NULL, "open", NULL, NULL, (char**)argv, environ) == 0; +#else + const char *argv[] = {"xdg-open", url.c_str(), NULL}; + return posix_spawnp(NULL, "xdg-open", NULL, NULL, (char**)argv, environ) == 0; +#endif +} + // Load performance counter frequency only once at startup #ifdef _WIN32 diff --git a/src/porting.h b/src/porting.h index 4d30a5970..f50f0a950 100644 --- a/src/porting.h +++ b/src/porting.h @@ -329,6 +329,9 @@ bool secure_rand_fill_buf(void *buf, size_t len); void attachOrCreateConsole(); int mt_snprintf(char *buf, const size_t buf_size, const char *fmt, ...); + +bool openURL(const std::string &url); + } // namespace porting #ifdef __ANDROID__ diff --git a/src/porting_android.cpp b/src/porting_android.cpp index 2c91df235..41b521ec2 100644 --- a/src/porting_android.cpp +++ b/src/porting_android.cpp @@ -213,6 +213,18 @@ void showInputDialog(const std::string &acceptButton, const std::string &hint, jacceptButton, jhint, jcurrent, jeditType); } +void openURLAndroid(const std::string &url) +{ + jmethodID url_open = jnienv->GetMethodID(nativeActivity, "openURL", + "(Ljava/lang/String;)V"); + + FATAL_ERROR_IF(url_open == nullptr, + "porting::openURLAndroid unable to find java openURL method"); + + jstring jurl = jnienv->NewStringUTF(url.c_str()); + jnienv->CallVoidMethod(app_global->activity->clazz, url_open, jurl); +} + int getInputDialogState() { jmethodID dialogstate = jnienv->GetMethodID(nativeActivity, diff --git a/src/porting_android.h b/src/porting_android.h index 42f90b60b..6eb054041 100644 --- a/src/porting_android.h +++ b/src/porting_android.h @@ -58,6 +58,8 @@ void initializePathsAndroid(); void showInputDialog(const std::string &acceptButton, const std::string &hint, const std::string ¤t, int editType); +void openURLAndroid(const std::string &url); + /** * WORKAROUND for not working callbacks from java -> c++ * get current state of input dialog diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp index a76e9f079..f32c477c2 100644 --- a/src/script/lua_api/l_mainmenu.cpp +++ b/src/script/lua_api/l_mainmenu.cpp @@ -1063,6 +1063,14 @@ int ModApiMainMenu::l_get_max_supp_proto(lua_State *L) return 1; } +/******************************************************************************/ +int ModApiMainMenu::l_open_url(lua_State *L) +{ + std::string url = luaL_checkstring(L, 1); + lua_pushboolean(L, porting::openURL(url)); + return 1; +} + /******************************************************************************/ int ModApiMainMenu::l_do_async_callback(lua_State *L) { @@ -1125,6 +1133,7 @@ void ModApiMainMenu::Initialize(lua_State *L, int top) API_FCT(get_screen_info); API_FCT(get_min_supp_proto); API_FCT(get_max_supp_proto); + API_FCT(open_url); API_FCT(do_async_callback); } diff --git a/src/script/lua_api/l_mainmenu.h b/src/script/lua_api/l_mainmenu.h index b2ca49320..5a16b3bfe 100644 --- a/src/script/lua_api/l_mainmenu.h +++ b/src/script/lua_api/l_mainmenu.h @@ -145,6 +145,9 @@ private: static int l_get_max_supp_proto(lua_State *L); + // other + static int l_open_url(lua_State *L); + // async static int l_do_async_callback(lua_State *L); From be38a44ffe2355d909774923a517d8b37f932dfe Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 15 May 2020 15:12:37 +0200 Subject: [PATCH 206/424] Client: Add sum and average to packetcounter --- src/client/client.cpp | 14 ++++++++++++-- src/client/client.h | 3 ++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/client/client.cpp b/src/client/client.cpp index 941fc203d..c03c062c6 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -64,6 +64,14 @@ extern gui::IGUIEnvironment* guienv; Utility classes */ +u32 PacketCounter::sum() const +{ + u32 n = 0; + for (const auto &it : m_packets) + n += it.second; + return n; +} + void PacketCounter::print(std::ostream &o) const { for (const auto &it : m_packets) { @@ -357,9 +365,11 @@ void Client::step(float dtime) if(counter <= 0.0f) { counter = 30.0f; + u32 sum = m_packetcounter.sum(); + float avg = sum / counter; - infostream << "Client packetcounter (" << m_packetcounter_timer - << "s):"< m_packets; + std::map m_packets; }; class ClientScripting; From 52430d34d33f0ae3ff188a009307bf0a86048dfe Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 15 May 2020 15:42:33 +0200 Subject: [PATCH 207/424] content_mapblock: Move static initialization out of functions --- src/client/content_mapblock.cpp | 54 ++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/src/client/content_mapblock.cpp b/src/client/content_mapblock.cpp index 9b4fd221e..bf1b4c7d6 100644 --- a/src/client/content_mapblock.cpp +++ b/src/client/content_mapblock.cpp @@ -512,8 +512,7 @@ f32 MapblockMeshGenerator::getCornerLevel(int i, int k) return 0; } -void MapblockMeshGenerator::drawLiquidSides() -{ +namespace { struct LiquidFaceDesc { v3s16 dir; // XZ v3s16 p[2]; // XZ only; 1 means +, 0 means - @@ -521,20 +520,23 @@ void MapblockMeshGenerator::drawLiquidSides() struct UV { int u, v; }; - static const LiquidFaceDesc base_faces[4] = { + static const LiquidFaceDesc liquid_base_faces[4] = { {v3s16( 1, 0, 0), {v3s16(1, 0, 1), v3s16(1, 0, 0)}}, {v3s16(-1, 0, 0), {v3s16(0, 0, 0), v3s16(0, 0, 1)}}, {v3s16( 0, 0, 1), {v3s16(0, 0, 1), v3s16(1, 0, 1)}}, {v3s16( 0, 0, -1), {v3s16(1, 0, 0), v3s16(0, 0, 0)}}, }; - static const UV base_vertices[4] = { + static const UV liquid_base_vertices[4] = { {0, 1}, {1, 1}, {1, 0}, {0, 0} }; +} - for (const auto &face : base_faces) { +void MapblockMeshGenerator::drawLiquidSides() +{ + for (const auto &face : liquid_base_faces) { const NeighborData &neighbor = liquid_neighbors[face.dir.Z + 1][face.dir.X + 1]; // No face between nodes of the same liquid, unless there is node @@ -554,7 +556,7 @@ void MapblockMeshGenerator::drawLiquidSides() video::S3DVertex vertices[4]; for (int j = 0; j < 4; j++) { - const UV &vertex = base_vertices[j]; + const UV &vertex = liquid_base_vertices[j]; const v3s16 &base = face.p[vertex.u]; float v = vertex.v; @@ -1193,15 +1195,14 @@ bool MapblockMeshGenerator::isSameRail(v3s16 dir) (def2.getGroup(raillike_groupname) == raillike_group)); } -void MapblockMeshGenerator::drawRaillikeNode() -{ - static const v3s16 direction[4] = { +namespace { + static const v3s16 rail_direction[4] = { v3s16( 0, 0, 1), v3s16( 0, 0, -1), v3s16(-1, 0, 0), v3s16( 1, 0, 0), }; - static const int slope_angle[4] = {0, 180, 90, -90}; + static const int rail_slope_angle[4] = {0, 180, 90, -90}; enum RailTile { straight, @@ -1214,8 +1215,8 @@ void MapblockMeshGenerator::drawRaillikeNode() int angle; }; static const RailDesc rail_kinds[16] = { - // +x -x -z +z - //------------- + // +x -x -z +z + //------------- {straight, 0}, // . . . . {straight, 0}, // . . . +Z {straight, 0}, // . . -Z . @@ -1233,7 +1234,10 @@ void MapblockMeshGenerator::drawRaillikeNode() {junction, 270}, // +X -X -Z . { cross, 0}, // +X -X -Z +Z }; +} +void MapblockMeshGenerator::drawRaillikeNode() +{ raillike_group = nodedef->get(n).getGroup(raillike_groupname); int code = 0; @@ -1241,14 +1245,14 @@ void MapblockMeshGenerator::drawRaillikeNode() int tile_index; bool sloped = false; for (int dir = 0; dir < 4; dir++) { - bool rail_above = isSameRail(direction[dir] + v3s16(0, 1, 0)); + bool rail_above = isSameRail(rail_direction[dir] + v3s16(0, 1, 0)); if (rail_above) { sloped = true; - angle = slope_angle[dir]; + angle = rail_slope_angle[dir]; } if (rail_above || - isSameRail(direction[dir]) || - isSameRail(direction[dir] + v3s16(0, -1, 0))) + isSameRail(rail_direction[dir]) || + isSameRail(rail_direction[dir] + v3s16(0, -1, 0))) code |= 1 << dir; } @@ -1276,9 +1280,8 @@ void MapblockMeshGenerator::drawRaillikeNode() drawQuad(vertices); } -void MapblockMeshGenerator::drawNodeboxNode() -{ - static const v3s16 tile_dirs[6] = { +namespace { + static const v3s16 nodebox_tile_dirs[6] = { v3s16(0, 1, 0), v3s16(0, -1, 0), v3s16(1, 0, 0), @@ -1288,7 +1291,7 @@ void MapblockMeshGenerator::drawNodeboxNode() }; // we have this order for some reason... - static const v3s16 connection_dirs[6] = { + static const v3s16 nodebox_connection_dirs[6] = { v3s16( 0, 1, 0), // top v3s16( 0, -1, 0), // bottom v3s16( 0, 0, -1), // front @@ -1296,19 +1299,22 @@ void MapblockMeshGenerator::drawNodeboxNode() v3s16( 0, 0, 1), // back v3s16( 1, 0, 0), // right }; +} +void MapblockMeshGenerator::drawNodeboxNode() +{ TileSpec tiles[6]; for (int face = 0; face < 6; face++) { // Handles facedir rotation for textures - getTile(tile_dirs[face], &tiles[face]); + getTile(nodebox_tile_dirs[face], &tiles[face]); } // locate possible neighboring nodes to connect to - int neighbors_set = 0; + u8 neighbors_set = 0; if (f->node_box.type == NODEBOX_CONNECTED) { for (int dir = 0; dir != 6; dir++) { - int flag = 1 << dir; - v3s16 p2 = blockpos_nodes + p + connection_dirs[dir]; + u8 flag = 1 << dir; + v3s16 p2 = blockpos_nodes + p + nodebox_connection_dirs[dir]; MapNode n2 = data->m_vmanip.getNodeNoEx(p2); if (nodedef->nodeboxConnects(n, n2, flag)) neighbors_set |= flag; From 11723cffe011e99c1092388958fb1a047ab1c09c Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 15 May 2020 16:38:19 +0200 Subject: [PATCH 208/424] builtin: Move common/async_event.lua to mainmenu/async_event.lua It only works in the context of the mainmenu. --- builtin/{common => mainmenu}/async_event.lua | 10 +--------- builtin/mainmenu/init.lua | 4 +--- 2 files changed, 2 insertions(+), 12 deletions(-) rename builtin/{common => mainmenu}/async_event.lua (74%) diff --git a/builtin/common/async_event.lua b/builtin/mainmenu/async_event.lua similarity index 74% rename from builtin/common/async_event.lua rename to builtin/mainmenu/async_event.lua index 988af79b9..04bfb78d6 100644 --- a/builtin/common/async_event.lua +++ b/builtin/mainmenu/async_event.lua @@ -8,15 +8,7 @@ local function handle_job(jobid, serialized_retval) core.async_jobs[jobid] = nil end -if core.register_globalstep then - core.register_globalstep(function(dtime) - for i, job in ipairs(core.get_finished_jobs()) do - handle_job(job.jobid, job.retval) - end - end) -else - core.async_event_handler = handle_job -end +core.async_event_handler = handle_job function core.handle_async(func, parameter, callback) -- Serialize function diff --git a/builtin/mainmenu/init.lua b/builtin/mainmenu/init.lua index 130c3e73c..c17e79270 100644 --- a/builtin/mainmenu/init.lua +++ b/builtin/mainmenu/init.lua @@ -20,20 +20,18 @@ mt_color_blue = "#6389FF" mt_color_green = "#72FF63" mt_color_dark_green = "#25C191" ---for all other colors ask sfan5 to complete his work! - local menupath = core.get_mainmenu_path() local basepath = core.get_builtin_path() local menustyle = core.settings:get("main_menu_style") defaulttexturedir = core.get_texturepath_share() .. DIR_DELIM .. "base" .. DIR_DELIM .. "pack" .. DIR_DELIM -dofile(basepath .. "common" .. DIR_DELIM .. "async_event.lua") dofile(basepath .. "common" .. DIR_DELIM .. "filterlist.lua") dofile(basepath .. "fstk" .. DIR_DELIM .. "buttonbar.lua") dofile(basepath .. "fstk" .. DIR_DELIM .. "dialog.lua") dofile(basepath .. "fstk" .. DIR_DELIM .. "tabview.lua") dofile(basepath .. "fstk" .. DIR_DELIM .. "ui.lua") +dofile(menupath .. DIR_DELIM .. "async_event.lua") dofile(menupath .. DIR_DELIM .. "common.lua") dofile(menupath .. DIR_DELIM .. "pkgmgr.lua") dofile(menupath .. DIR_DELIM .. "textures.lua") From 0fc51db7722f9aa1e0aa2dacade6041c932b0731 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 18 May 2020 23:23:25 +0200 Subject: [PATCH 209/424] Add missing sao->isGone() checks fixes #9883 --- src/collision.cpp | 3 ++- src/serverenvironment.cpp | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/collision.cpp b/src/collision.cpp index 06ef820c5..d85a56884 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -397,7 +397,8 @@ collisionMoveResult collisionMoveSimple(Environment *env, IGameDef *gamedef, // we directly use the callback to populate the result to prevent // a useless result loop here auto include_obj_cb = [self, &objects] (ServerActiveObject *obj) { - if (!self || (self != obj && self != obj->getParent())) { + if (!obj->isGone() && + (!self || (self != obj && self != obj->getParent()))) { objects.push_back((ActiveObject *)obj); } return false; diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 6bf7399cf..d485c32e8 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -1623,6 +1623,8 @@ void ServerEnvironment::getSelectedActiveObjects( const v3f line_vector = shootline_on_map.getVector(); for (auto obj : objs) { + if (obj->isGone()) + continue; aabb3f selection_box; if (!obj->getSelectionBox(&selection_box)) continue; From 7d3972a5049324f776ab008894c34569641f0073 Mon Sep 17 00:00:00 2001 From: LoneWolfHT Date: Tue, 19 May 2020 10:10:39 -0700 Subject: [PATCH 210/424] Add ability to scale HUD text (#9814) Add 'size' property to HUD text elements that is used for relative font size calculations. --- doc/lua_api.txt | 2 ++ src/client/hud.cpp | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 07758c237..9c7c42436 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1356,6 +1356,8 @@ Displays text on the HUD. text. Specify `0xFFFFFF` for white text, `0xFF0000` for red, and so on. * `alignment`: The alignment of the text. * `offset`: offset in pixels from position. +* `size`: size of the text. + The player-set font size is multiplied by size.x (y value isn't used). ### `statbar` diff --git a/src/client/hud.cpp b/src/client/hud.cpp index f8f712762..4edc229b2 100644 --- a/src/client/hud.cpp +++ b/src/client/hud.cpp @@ -319,16 +319,21 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) floor(e->pos.Y * (float) m_screensize.Y + 0.5)); switch (e->type) { case HUD_ELEM_TEXT: { + irr::gui::IGUIFont *textfont = font; + if (e->size.X > 0) + textfont = g_fontengine->getFont( + e->size.X * g_fontengine->getDefaultFontSize()); + video::SColor color(255, (e->number >> 16) & 0xFF, (e->number >> 8) & 0xFF, (e->number >> 0) & 0xFF); core::rect size(0, 0, e->scale.X, text_height * e->scale.Y); std::wstring text = unescape_translate(utf8_to_wide(e->text)); - core::dimension2d textsize = font->getDimension(text.c_str()); + core::dimension2d textsize = textfont->getDimension(text.c_str()); v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2), (e->align.Y - 1.0) * (textsize.Height / 2)); v2s32 offs(e->offset.X, e->offset.Y); - font->draw(text.c_str(), size + pos + offset + offs, color); + textfont->draw(text.c_str(), size + pos + offset + offs, color); break; } case HUD_ELEM_STATBAR: { v2s32 offs(e->offset.X, e->offset.Y); From c94d37827dd3a8be9dcc59bb693032ba7ea07922 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 19 May 2020 21:08:37 +0200 Subject: [PATCH 211/424] Rework functionality of leveled nodes (#9852) Co-authored-by: sfan5 Co-authored-by: SmallJoker --- builtin/game/falling.lua | 58 ++++++++++++++++++++++++--------- doc/lua_api.txt | 10 ++++-- src/mapnode.cpp | 21 ++++++------ src/mapnode.h | 6 ++-- src/nodedef.cpp | 6 ++++ src/nodedef.h | 4 ++- src/script/common/c_content.cpp | 4 +++ src/script/lua_api/l_env.cpp | 4 +-- 8 files changed, 79 insertions(+), 34 deletions(-) diff --git a/builtin/game/falling.lua b/builtin/game/falling.lua index 7037ae885..cdbb13acc 100644 --- a/builtin/game/falling.lua +++ b/builtin/game/falling.lua @@ -109,6 +109,7 @@ core.register_entity(":__builtin:falling_node", { if core.is_colored_paramtype(def.paramtype2) then itemstring = core.itemstring_with_palette(itemstring, node.param2) end + -- FIXME: solution needed for paramtype2 == "leveled" local vsize if def.visual_scale then local s = def.visual_scale * SCALE @@ -122,6 +123,24 @@ core.register_entity(":__builtin:falling_node", { }) end + -- Set collision box (certain nodeboxes only for now) + local nb_types = {fixed=true, leveled=true, connected=true} + if def.drawtype == "nodebox" and def.node_box and + nb_types[def.node_box.type] then + local box = table.copy(def.node_box.fixed) + if type(box[1]) == "table" then + box = #box == 1 and box[1] or nil -- We can only use a single box + end + if box then + if def.paramtype2 == "leveled" and (self.node.level or 0) > 0 then + box[5] = -0.5 + self.node.level / 64 + end + self.object:set_properties({ + collisionbox = box + }) + end + end + -- Rotate entity if def.drawtype == "torchlike" then self.object:set_yaw(math.pi*0.25) @@ -196,13 +215,16 @@ core.register_entity(":__builtin:falling_node", { try_place = function(self, bcp, bcn) local bcd = core.registered_nodes[bcn.name] -- Add levels if dropped on same leveled node - if bcd and bcd.leveled and + if bcd and bcd.paramtype2 == "leveled" and bcn.name == self.node.name then local addlevel = self.node.level - if not addlevel or addlevel <= 0 then + if (addlevel or 0) <= 0 then addlevel = bcd.leveled end - if core.add_node_level(bcp, addlevel) == 0 then + if core.add_node_level(bcp, addlevel) < addlevel then + return true + elseif bcd.buildable_to then + -- Node level has already reached max, don't place anything return true end end @@ -351,6 +373,7 @@ local function convert_to_falling_node(pos, node) if not obj then return false end + -- remember node level, the entities' set_node() uses this node.level = core.get_node_level(pos) local meta = core.get_meta(pos) local metatable = meta and meta:to_table() or {} @@ -436,18 +459,23 @@ function core.check_single_for_falling(p) -- Only spawn falling node if node below is loaded local n_bottom = core.get_node_or_nil(p_bottom) local d_bottom = n_bottom and core.registered_nodes[n_bottom.name] - if d_bottom and - - (core.get_item_group(n.name, "float") == 0 or - d_bottom.liquidtype == "none") and - - (n.name ~= n_bottom.name or (d_bottom.leveled and - core.get_node_level(p_bottom) < - core.get_node_max_level(p_bottom))) and - - (not d_bottom.walkable or d_bottom.buildable_to) then - convert_to_falling_node(p, n) - return true + if d_bottom then + local same = n.name == n_bottom.name + -- Let leveled nodes fall if it can merge with the bottom node + if same and d_bottom.paramtype2 == "leveled" and + core.get_node_level(p_bottom) < + core.get_node_max_level(p_bottom) then + convert_to_falling_node(p, n) + return true + end + -- Otherwise only if the bottom node is considered "fall through" + if not same and + (not d_bottom.walkable or d_bottom.buildable_to) and + (core.get_item_group(n.name, "float") == 0 or + d_bottom.liquidtype == "none") then + convert_to_falling_node(p, n) + return true + end end end diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 9c7c42436..8b7c412ab 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -4882,7 +4882,7 @@ Environment access * `minetest.add_node_level(pos, level)` * increase level of leveled node by level, default `level` equals `1` * if `totallevel > maxlevel`, returns rest (`total-max`) - * can be negative for decreasing + * `level` must be between -127 and 127 * `minetest.fix_light(pos1, pos2)`: returns `true`/`false` * resets the light in a cuboid-shaped part of the map and removes lighting bugs. @@ -7012,11 +7012,15 @@ Used by `minetest.register_node`. -- If true, a new liquid source can be created by placing two or more -- sources nearby - leveled = 16, + leveled = 0, -- Only valid for "nodebox" drawtype with 'type = "leveled"'. -- Allows defining the nodebox height without using param2. -- The nodebox height is 'leveled' / 64 nodes. - -- The maximum value of 'leveled' is 127. + -- The maximum value of 'leveled' is `leveled_max`. + + leveled_max = 127, + -- Maximum value for `leveled` (0-127), enforced in + -- `minetest.set_node_level` and `minetest.add_node_level`. liquid_range = 8, -- Number of flowing nodes around source (max. 8) diff --git a/src/mapnode.cpp b/src/mapnode.cpp index bf7e79a71..24d62b504 100644 --- a/src/mapnode.cpp +++ b/src/mapnode.cpp @@ -584,7 +584,7 @@ u8 MapNode::getMaxLevel(const NodeDefManager *nodemgr) const if( f.liquid_type == LIQUID_FLOWING || f.param_type_2 == CPT2_FLOWINGLIQUID) return LIQUID_LEVEL_MAX; if(f.leveled || f.param_type_2 == CPT2_LEVELED) - return LEVELED_MAX; + return f.leveled_max; return 0; } @@ -603,14 +603,15 @@ u8 MapNode::getLevel(const NodeDefManager *nodemgr) const if (level) return level; } - if (f.leveled > LEVELED_MAX) - return LEVELED_MAX; + // Return static value from nodedef if param2 isn't used for level + if (f.leveled > f.leveled_max) + return f.leveled_max; return f.leveled; } -u8 MapNode::setLevel(const NodeDefManager *nodemgr, s8 level) +s8 MapNode::setLevel(const NodeDefManager *nodemgr, s16 level) { - u8 rest = 0; + s8 rest = 0; const ContentFeatures &f = nodemgr->get(*this); if (f.param_type_2 == CPT2_FLOWINGLIQUID || f.liquid_type == LIQUID_FLOWING @@ -631,18 +632,18 @@ u8 MapNode::setLevel(const NodeDefManager *nodemgr, s8 level) if (level < 0) { // zero means default for a leveled nodebox rest = level; level = 0; - } else if (level > LEVELED_MAX) { - rest = level - LEVELED_MAX; - level = LEVELED_MAX; + } else if (level > f.leveled_max) { + rest = level - f.leveled_max; + level = f.leveled_max; } setParam2((level & LEVELED_MASK) | (getParam2() & ~LEVELED_MASK)); } return rest; } -u8 MapNode::addLevel(const NodeDefManager *nodemgr, s8 add) +s8 MapNode::addLevel(const NodeDefManager *nodemgr, s16 add) { - s8 level = getLevel(nodemgr); + s16 level = getLevel(nodemgr); level += add; return setLevel(nodemgr, level); } diff --git a/src/mapnode.h b/src/mapnode.h index 7a3d30ddc..32ac1b4f6 100644 --- a/src/mapnode.h +++ b/src/mapnode.h @@ -268,12 +268,12 @@ struct MapNode std::vector *boxes, u8 neighbors = 0) const; /* - Liquid helpers + Liquid/leveled helpers */ u8 getMaxLevel(const NodeDefManager *nodemgr) const; u8 getLevel(const NodeDefManager *nodemgr) const; - u8 setLevel(const NodeDefManager *nodemgr, s8 level = 1); - u8 addLevel(const NodeDefManager *nodemgr, s8 add = 1); + s8 setLevel(const NodeDefManager *nodemgr, s16 level = 1); + s8 addLevel(const NodeDefManager *nodemgr, s16 add = 1); /* Serialization functions diff --git a/src/nodedef.cpp b/src/nodedef.cpp index 65199830f..b8211fceb 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -368,6 +368,7 @@ void ContentFeatures::reset() floodable = false; rightclickable = true; leveled = 0; + leveled_max = LEVELED_MAX; liquid_type = LIQUID_NONE; liquid_alternative_flowing = ""; liquid_alternative_source = ""; @@ -478,6 +479,7 @@ void ContentFeatures::serialize(std::ostream &os, u16 protocol_version) const writeU8(os, legacy_wallmounted); os << serializeString(node_dig_prediction); + writeU8(os, leveled_max); } void ContentFeatures::correctAlpha(TileDef *tiles, int length) @@ -586,6 +588,10 @@ void ContentFeatures::deSerialize(std::istream &is) try { node_dig_prediction = deSerializeString(is); + u8 tmp_leveled_max = readU8(is); + if (is.eof()) /* readU8 doesn't throw exceptions so we have to do this */ + throw SerializationError(""); + leveled_max = tmp_leveled_max; } catch(SerializationError &e) {}; } diff --git a/src/nodedef.h b/src/nodedef.h index 0fce6eab1..497e7ee0e 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -326,8 +326,10 @@ struct ContentFeatures std::vector connects_to_ids; // Post effect color, drawn when the camera is inside the node. video::SColor post_effect_color; - // Flowing liquid or snow, value = default level + // Flowing liquid or leveled nodebox, value = default level u8 leveled; + // Maximum value for leveled nodes + u8 leveled_max; // --- LIGHTING-RELATED --- diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index de9634c42..116a59c09 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -694,6 +694,8 @@ ContentFeatures read_content_features(lua_State *L, int index) f.liquid_range = getintfield_default(L, index, "liquid_range", f.liquid_range); f.leveled = getintfield_default(L, index, "leveled", f.leveled); + f.leveled_max = getintfield_default(L, index, + "leveled_max", f.leveled_max); getboolfield(L, index, "liquid_renewable", f.liquid_renewable); f.drowning = getintfield_default(L, index, @@ -860,6 +862,8 @@ void push_content_features(lua_State *L, const ContentFeatures &c) lua_setfield(L, -2, "post_effect_color"); lua_pushnumber(L, c.leveled); lua_setfield(L, -2, "leveled"); + lua_pushnumber(L, c.leveled_max); + lua_setfield(L, -2, "leveled_max"); lua_pushboolean(L, c.sunlight_propagates); lua_setfield(L, -2, "sunlight_propagates"); lua_pushnumber(L, c.light_source); diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index b8a8a5ce1..89ec9dc7e 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -529,13 +529,13 @@ int ModApiEnvMod::l_set_node_level(lua_State *L) // add_node_level(pos, level) // pos = {x=num, y=num, z=num} -// level: 0..63 +// level: -127..127 int ModApiEnvMod::l_add_node_level(lua_State *L) { GET_ENV_PTR; v3s16 pos = read_v3s16(L, 1); - u8 level = 1; + s16 level = 1; if(lua_isnumber(L, 2)) level = lua_tonumber(L, 2); MapNode n = env->getMap().getNode(pos); From 732c8008f495bc344957bd0ccbd4010adb939207 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 20 May 2020 20:13:16 +0200 Subject: [PATCH 212/424] CSM: Fix crashing minetest.get_item_def() fixes #9884 --- src/script/common/c_content.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index 116a59c09..2157d087d 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -164,7 +164,7 @@ void push_item_definition_full(lua_State *L, const ItemDefinition &i) lua_setfield(L, -2, "usable"); lua_pushboolean(L, i.liquids_pointable); lua_setfield(L, -2, "liquids_pointable"); - if (i.type == ITEM_TOOL) { + if (i.tool_capabilities) { push_tool_capabilities(L, *i.tool_capabilities); lua_setfield(L, -2, "tool_capabilities"); } From c47a680db7f3c2f241cc444a1257607492872412 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 19 May 2020 20:45:02 +0200 Subject: [PATCH 213/424] Stop wasting memory on identical textures when texture filtering is disabled --- src/client/tile.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/client/tile.cpp b/src/client/tile.cpp index 0fa7a4ae2..d03588b2b 100644 --- a/src/client/tile.cpp +++ b/src/client/tile.cpp @@ -668,7 +668,14 @@ video::ITexture* TextureSource::getTexture(const std::string &name, u32 *id) video::ITexture* TextureSource::getTextureForMesh(const std::string &name, u32 *id) { - return getTexture(name + "^[applyfiltersformesh", id); + static thread_local bool filter_needed = + g_settings->getBool("texture_clean_transparent") || + ((m_setting_trilinear_filter || m_setting_bilinear_filter) && + g_settings->getS32("texture_min_size") > 1); + // Avoid duplicating texture if it won't actually change + if (filter_needed) + return getTexture(name + "^[applyfiltersformesh", id); + return getTexture(name, id); } Palette* TextureSource::getPalette(const std::string &name) @@ -1623,6 +1630,9 @@ bool TextureSource::generateImagePart(std::string part_of_name, */ else if (str_starts_with(part_of_name, "[applyfiltersformesh")) { + /* IMPORTANT: When changing this, getTextureForMesh() needs to be + * updated too. */ + // Apply the "clean transparent" filter, if configured. if (g_settings->getBool("texture_clean_transparent")) imageCleanTransparent(baseimg, 127); From 42fcfb75e85523a2fa5d99a453c2fabc2c04c0f6 Mon Sep 17 00:00:00 2001 From: Paramat Date: Wed, 20 May 2020 22:16:14 +0100 Subject: [PATCH 214/424] Allow more than 255 biomes, document new maximum (#9855) Change biomemap data type from u8 to u16. New technical (not practical) maximum is 65535 biomes. --- doc/lua_api.txt | 4 ++++ src/mapgen/cavegen.cpp | 8 ++++---- src/mapgen/cavegen.h | 8 +++++--- src/mapgen/mapgen.h | 8 ++++---- src/mapgen/mg_biome.h | 6 +++--- src/mapgen/mg_decoration.cpp | 6 ++---- src/mapgen/mg_decoration.h | 4 +++- src/mapgen/mg_ore.cpp | 28 ++++++++++++++-------------- src/mapgen/mg_ore.h | 22 ++++++++++++---------- src/script/lua_api/l_mapgen.cpp | 4 ++-- src/script/lua_api/l_mapgen.h | 2 ++ 11 files changed, 55 insertions(+), 45 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 8b7c412ab..0101bd4cf 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -7443,6 +7443,10 @@ Biome definition Used by `minetest.register_biome`. +The maximum number of biomes that can be used is 65535. However, using an +excessive number of biomes will slow down map generation. Depending on desired +performance and computing power the practical limit is much lower. + { name = "tundra", diff --git a/src/mapgen/cavegen.cpp b/src/mapgen/cavegen.cpp index a9df4506f..340079821 100644 --- a/src/mapgen/cavegen.cpp +++ b/src/mapgen/cavegen.cpp @@ -1,8 +1,8 @@ /* Minetest -Copyright (C) 2010-2018 celeron55, Perttu Ahola -Copyright (C) 2010-2018 kwolekr, Ryan Kwolek -Copyright (C) 2015-2018 paramat +Copyright (C) 2010-2020 celeron55, Perttu Ahola +Copyright (C) 2015-2020 paramat +Copyright (C) 2010-2016 kwolekr, Ryan Kwolek 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 @@ -69,7 +69,7 @@ CavesNoiseIntersection::~CavesNoiseIntersection() void CavesNoiseIntersection::generateCaves(MMVManip *vm, - v3s16 nmin, v3s16 nmax, u8 *biomemap) + v3s16 nmin, v3s16 nmax, biome_t *biomemap) { assert(vm); assert(biomemap); diff --git a/src/mapgen/cavegen.h b/src/mapgen/cavegen.h index ff09f9423..d678d365b 100644 --- a/src/mapgen/cavegen.h +++ b/src/mapgen/cavegen.h @@ -1,7 +1,7 @@ /* Minetest -Copyright (C) 2010-2018 kwolekr, Ryan Kwolek -Copyright (C) 2015-2018 paramat +Copyright (C) 2015-2020 paramat +Copyright (C) 2010-2016 kwolekr, Ryan Kwolek 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., #define VMANIP_FLAG_CAVE VOXELFLAG_CHECKED1 +typedef u16 biome_t; // copy from mg_biome.h to avoid an unnecessary include + class GenerateNotifier; /* @@ -44,7 +46,7 @@ public: NoiseParams *np_cave2, s32 seed, float cave_width); ~CavesNoiseIntersection(); - void generateCaves(MMVManip *vm, v3s16 nmin, v3s16 nmax, u8 *biomemap); + void generateCaves(MMVManip *vm, v3s16 nmin, v3s16 nmax, biome_t *biomemap); private: const NodeDefManager *m_ndef; diff --git a/src/mapgen/mapgen.h b/src/mapgen/mapgen.h index 7845c5349..a92b3b0d0 100644 --- a/src/mapgen/mapgen.h +++ b/src/mapgen/mapgen.h @@ -1,8 +1,8 @@ /* Minetest -Copyright (C) 2010-2018 celeron55, Perttu Ahola -Copyright (C) 2013-2018 kwolekr, Ryan Kwolek -Copyright (C) 2015-2018 paramat +Copyright (C) 2010-2020 celeron55, Perttu Ahola +Copyright (C) 2015-2020 paramat +Copyright (C) 2013-2016 kwolekr, Ryan Kwolek 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 @@ -38,7 +38,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #define MG_DECORATIONS 0x20 #define MG_BIOMES 0x40 -typedef u8 biome_t; // copy from mg_biome.h to avoid an unnecessary include +typedef u16 biome_t; // copy from mg_biome.h to avoid an unnecessary include class Settings; class MMVManip; diff --git a/src/mapgen/mg_biome.h b/src/mapgen/mg_biome.h index 57f4aa20d..be4cfea4d 100644 --- a/src/mapgen/mg_biome.h +++ b/src/mapgen/mg_biome.h @@ -1,7 +1,7 @@ /* Minetest -Copyright (C) 2014-2018 kwolekr, Ryan Kwolek -Copyright (C) 2014-2018 paramat +Copyright (C) 2014-2020 paramat +Copyright (C) 2014-2016 kwolekr, Ryan Kwolek 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 @@ -32,7 +32,7 @@ class BiomeManager; //// Biome //// -typedef u8 biome_t; +typedef u16 biome_t; #define BIOME_NONE ((biome_t)0) diff --git a/src/mapgen/mg_decoration.cpp b/src/mapgen/mg_decoration.cpp index a9b67d239..a4cada396 100644 --- a/src/mapgen/mg_decoration.cpp +++ b/src/mapgen/mg_decoration.cpp @@ -206,8 +206,7 @@ size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) // All-surfaces decorations // Check biome of column if (mg->biomemap && !biomes.empty()) { - std::unordered_set::const_iterator iter = - biomes.find(mg->biomemap[mapindex]); + auto iter = biomes.find(mg->biomemap[mapindex]); if (iter == biomes.end()) continue; } @@ -259,8 +258,7 @@ size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) continue; if (mg->biomemap && !biomes.empty()) { - std::unordered_set::const_iterator iter = - biomes.find(mg->biomemap[mapindex]); + auto iter = biomes.find(mg->biomemap[mapindex]); if (iter == biomes.end()) continue; } diff --git a/src/mapgen/mg_decoration.h b/src/mapgen/mg_decoration.h index 1f9eb4510..1ea02a527 100644 --- a/src/mapgen/mg_decoration.h +++ b/src/mapgen/mg_decoration.h @@ -25,6 +25,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "noise.h" #include "nodedef.h" +typedef u16 biome_t; // copy from mg_biome.h to avoid an unnecessary include + class Mapgen; class MMVManip; class PcgRandom; @@ -72,7 +74,7 @@ public: s16 nspawnby; s16 place_offset_y = 0; - std::unordered_set biomes; + std::unordered_set biomes; protected: void cloneTo(Decoration *def) const; diff --git a/src/mapgen/mg_ore.cpp b/src/mapgen/mg_ore.cpp index db647f82b..b50ed6a32 100644 --- a/src/mapgen/mg_ore.cpp +++ b/src/mapgen/mg_ore.cpp @@ -1,7 +1,7 @@ /* Minetest -Copyright (C) 2014-2018 kwolekr, Ryan Kwolek -Copyright (C) 2015-2018 paramat +Copyright (C) 2015-2020 paramat +Copyright (C) 2014-2016 kwolekr, Ryan Kwolek 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 @@ -146,7 +146,7 @@ ObjDef *OreScatter::clone() const void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap) + v3s16 nmin, v3s16 nmax, biome_t *biomemap) { PcgRandom pr(blockseed); MapNode n_ore(c_ore, 0, ore_param2); @@ -170,7 +170,7 @@ void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed, if (biomemap && !biomes.empty()) { u32 index = sizex * (z0 - nmin.Z) + (x0 - nmin.X); - std::unordered_set::const_iterator it = biomes.find(biomemap[index]); + auto it = biomes.find(biomemap[index]); if (it == biomes.end()) continue; } @@ -208,7 +208,7 @@ ObjDef *OreSheet::clone() const void OreSheet::generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap) + v3s16 nmin, v3s16 nmax, biome_t *biomemap) { PcgRandom pr(blockseed + 4234); MapNode n_ore(c_ore, 0, ore_param2); @@ -237,7 +237,7 @@ void OreSheet::generate(MMVManip *vm, int mapseed, u32 blockseed, continue; if (biomemap && !biomes.empty()) { - std::unordered_set::const_iterator it = biomes.find(biomemap[index]); + auto it = biomes.find(biomemap[index]); if (it == biomes.end()) continue; } @@ -285,7 +285,7 @@ ObjDef *OrePuff::clone() const void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap) + v3s16 nmin, v3s16 nmax, biome_t *biomemap) { PcgRandom pr(blockseed + 4234); MapNode n_ore(c_ore, 0, ore_param2); @@ -312,7 +312,7 @@ void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed, continue; if (biomemap && !biomes.empty()) { - std::unordered_set::const_iterator it = biomes.find(biomemap[index]); + auto it = biomes.find(biomemap[index]); if (it == biomes.end()) continue; } @@ -366,7 +366,7 @@ ObjDef *OreBlob::clone() const void OreBlob::generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap) + v3s16 nmin, v3s16 nmax, biome_t *biomemap) { PcgRandom pr(blockseed + 2404); MapNode n_ore(c_ore, 0, ore_param2); @@ -388,7 +388,7 @@ void OreBlob::generate(MMVManip *vm, int mapseed, u32 blockseed, if (biomemap && !biomes.empty()) { u32 bmapidx = sizex * (z0 - nmin.Z) + (x0 - nmin.X); - std::unordered_set::const_iterator it = biomes.find(biomemap[bmapidx]); + auto it = biomes.find(biomemap[bmapidx]); if (it == biomes.end()) continue; } @@ -451,7 +451,7 @@ ObjDef *OreVein::clone() const void OreVein::generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap) + v3s16 nmin, v3s16 nmax, biome_t *biomemap) { PcgRandom pr(blockseed + 520); MapNode n_ore(c_ore, 0, ore_param2); @@ -485,7 +485,7 @@ void OreVein::generate(MMVManip *vm, int mapseed, u32 blockseed, if (biomemap && !biomes.empty()) { u32 bmapidx = sizex * (z - nmin.Z) + (x - nmin.X); - std::unordered_set::const_iterator it = biomes.find(biomemap[bmapidx]); + auto it = biomes.find(biomemap[bmapidx]); if (it == biomes.end()) continue; } @@ -532,7 +532,7 @@ ObjDef *OreStratum::clone() const void OreStratum::generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap) + v3s16 nmin, v3s16 nmax, biome_t *biomemap) { PcgRandom pr(blockseed + 4234); MapNode n_ore(c_ore, 0, ore_param2); @@ -560,7 +560,7 @@ void OreStratum::generate(MMVManip *vm, int mapseed, u32 blockseed, for (int z = nmin.Z; z <= nmax.Z; z++) for (int x = nmin.X; x <= nmax.X; x++, index++) { if (biomemap && !biomes.empty()) { - std::unordered_set::const_iterator it = biomes.find(biomemap[index]); + auto it = biomes.find(biomemap[index]); if (it == biomes.end()) continue; } diff --git a/src/mapgen/mg_ore.h b/src/mapgen/mg_ore.h index 213bdc964..76420fab4 100644 --- a/src/mapgen/mg_ore.h +++ b/src/mapgen/mg_ore.h @@ -1,7 +1,7 @@ /* Minetest -Copyright (C) 2014-2018 kwolekr, Ryan Kwolek -Copyright (C) 2015-2018 paramat +Copyright (C) 2015-2020 paramat +Copyright (C) 2014-2016 kwolekr, Ryan Kwolek 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 @@ -25,6 +25,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "noise.h" #include "nodedef.h" +typedef u16 biome_t; // copy from mg_biome.h to avoid an unnecessary include + class Noise; class Mapgen; class MMVManip; @@ -64,7 +66,7 @@ public: float nthresh; // threshold for noise at which an ore is placed NoiseParams np; // noise for distribution of clusters (NULL for uniform scattering) Noise *noise = nullptr; - std::unordered_set biomes; + std::unordered_set biomes; Ore() = default;; virtual ~Ore(); @@ -73,7 +75,7 @@ public: size_t placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap) = 0; + v3s16 nmin, v3s16 nmax, biome_t *biomemap) = 0; protected: void cloneTo(Ore *def) const; @@ -86,7 +88,7 @@ public: ObjDef *clone() const; virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap); + v3s16 nmin, v3s16 nmax, biome_t *biomemap); }; class OreSheet : public Ore { @@ -100,7 +102,7 @@ public: float column_midpoint_factor; virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap); + v3s16 nmin, v3s16 nmax, biome_t *biomemap); }; class OrePuff : public Ore { @@ -118,7 +120,7 @@ public: virtual ~OrePuff(); virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap); + v3s16 nmin, v3s16 nmax, biome_t *biomemap); }; class OreBlob : public Ore { @@ -128,7 +130,7 @@ public: ObjDef *clone() const; virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap); + v3s16 nmin, v3s16 nmax, biome_t *biomemap); }; class OreVein : public Ore { @@ -145,7 +147,7 @@ public: virtual ~OreVein(); virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap); + v3s16 nmin, v3s16 nmax, biome_t *biomemap); }; class OreStratum : public Ore { @@ -162,7 +164,7 @@ public: virtual ~OreStratum(); virtual void generate(MMVManip *vm, int mapseed, u32 blockseed, - v3s16 nmin, v3s16 nmax, u8 *biomemap); + v3s16 nmin, v3s16 nmax, biome_t *biomemap); }; class OreManager : public ObjDefManager { diff --git a/src/script/lua_api/l_mapgen.cpp b/src/script/lua_api/l_mapgen.cpp index 584085428..834938e56 100644 --- a/src/script/lua_api/l_mapgen.cpp +++ b/src/script/lua_api/l_mapgen.cpp @@ -97,7 +97,7 @@ Biome *get_or_load_biome(lua_State *L, int index, BiomeManager *biomemgr); Biome *read_biome_def(lua_State *L, int index, const NodeDefManager *ndef); size_t get_biome_list(lua_State *L, int index, - BiomeManager *biomemgr, std::unordered_set *biome_id_list); + BiomeManager *biomemgr, std::unordered_set *biome_id_list); Schematic *get_or_load_schematic(lua_State *L, int index, SchematicManager *schemmgr, StringMap *replace_names); @@ -425,7 +425,7 @@ Biome *read_biome_def(lua_State *L, int index, const NodeDefManager *ndef) size_t get_biome_list(lua_State *L, int index, - BiomeManager *biomemgr, std::unordered_set *biome_id_list) + BiomeManager *biomemgr, std::unordered_set *biome_id_list) { if (index < 0) index = lua_gettop(L) + 1 + index; diff --git a/src/script/lua_api/l_mapgen.h b/src/script/lua_api/l_mapgen.h index 4a6a9ccf4..0bdc56fc5 100644 --- a/src/script/lua_api/l_mapgen.h +++ b/src/script/lua_api/l_mapgen.h @@ -21,6 +21,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "lua_api/l_base.h" +typedef u16 biome_t; // copy from mg_biome.h to avoid an unnecessary include + class ModApiMapgen : public ModApiBase { private: From 82e41378937378667cdbdda3ea9e8c1acb5822ea Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Thu, 21 May 2020 00:52:10 +0300 Subject: [PATCH 215/424] Cache liquid alternative IDs (#8053) --- src/client/content_mapblock.cpp | 4 ++-- src/map.cpp | 12 ++++++------ src/mapnode.cpp | 4 ++-- src/nodedef.cpp | 21 ++++++++++++++++++++- src/nodedef.h | 9 ++++++--- src/server.cpp | 4 ++-- 6 files changed, 38 insertions(+), 16 deletions(-) diff --git a/src/client/content_mapblock.cpp b/src/client/content_mapblock.cpp index bf1b4c7d6..50efd2e40 100644 --- a/src/client/content_mapblock.cpp +++ b/src/client/content_mapblock.cpp @@ -405,8 +405,8 @@ void MapblockMeshGenerator::prepareLiquidNodeDrawing() MapNode ntop = data->m_vmanip.getNodeNoEx(blockpos_nodes + v3s16(p.X, p.Y + 1, p.Z)); MapNode nbottom = data->m_vmanip.getNodeNoEx(blockpos_nodes + v3s16(p.X, p.Y - 1, p.Z)); - c_flowing = nodedef->getId(f->liquid_alternative_flowing); - c_source = nodedef->getId(f->liquid_alternative_source); + c_flowing = f->liquid_alternative_flowing_id; + c_source = f->liquid_alternative_source_id; top_is_same_liquid = (ntop.getContent() == c_flowing) || (ntop.getContent() == c_source); draw_liquid_bottom = (nbottom.getContent() != c_flowing) && (nbottom.getContent() != c_source); if (draw_liquid_bottom) { diff --git a/src/map.cpp b/src/map.cpp index 5f1b984a4..677cbc869 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -568,7 +568,7 @@ void Map::transformLiquids(std::map &modified_blocks, switch (liquid_type) { case LIQUID_SOURCE: liquid_level = LIQUID_LEVEL_SOURCE; - liquid_kind = m_nodedef->getId(cf.liquid_alternative_flowing); + liquid_kind = cf.liquid_alternative_flowing_id; break; case LIQUID_FLOWING: liquid_level = (n0.param2 & LIQUID_LEVEL_MASK); @@ -641,8 +641,8 @@ void Map::transformLiquids(std::map &modified_blocks, case LIQUID_SOURCE: // if this node is not (yet) of a liquid type, choose the first liquid type we encounter if (liquid_kind == CONTENT_AIR) - liquid_kind = m_nodedef->getId(cfnb.liquid_alternative_flowing); - if (m_nodedef->getId(cfnb.liquid_alternative_flowing) != liquid_kind) { + liquid_kind = cfnb.liquid_alternative_flowing_id; + if (cfnb.liquid_alternative_flowing_id != liquid_kind) { neutrals[num_neutrals++] = nb; } else { // Do not count bottom source, it will screw things up @@ -653,8 +653,8 @@ void Map::transformLiquids(std::map &modified_blocks, case LIQUID_FLOWING: // if this node is not (yet) of a liquid type, choose the first liquid type we encounter if (liquid_kind == CONTENT_AIR) - liquid_kind = m_nodedef->getId(cfnb.liquid_alternative_flowing); - if (m_nodedef->getId(cfnb.liquid_alternative_flowing) != liquid_kind) { + liquid_kind = cfnb.liquid_alternative_flowing_id; + if (cfnb.liquid_alternative_flowing_id != liquid_kind) { neutrals[num_neutrals++] = nb; } else { flows[num_flows++] = nb; @@ -680,7 +680,7 @@ void Map::transformLiquids(std::map &modified_blocks, // liquid_kind will be set to either the flowing alternative of the node (if it's a liquid) // or the flowing alternative of the first of the surrounding sources (if it's air), so // it's perfectly safe to use liquid_kind here to determine the new node content. - new_node_content = m_nodedef->getId(m_nodedef->get(liquid_kind).liquid_alternative_source); + new_node_content = m_nodedef->get(liquid_kind).liquid_alternative_source_id; } else if (num_sources >= 1 && sources[0].t != NEIGHBOR_LOWER) { // liquid_kind is set properly, see above max_node_level = new_node_level = LIQUID_LEVEL_MAX; diff --git a/src/mapnode.cpp b/src/mapnode.cpp index 24d62b504..dcf1f6d6e 100644 --- a/src/mapnode.cpp +++ b/src/mapnode.cpp @@ -622,10 +622,10 @@ s8 MapNode::setLevel(const NodeDefManager *nodemgr, s16 level) } if (level >= LIQUID_LEVEL_SOURCE) { rest = level - LIQUID_LEVEL_SOURCE; - setContent(nodemgr->getId(f.liquid_alternative_source)); + setContent(f.liquid_alternative_source_id); setParam2(0); } else { - setContent(nodemgr->getId(f.liquid_alternative_flowing)); + setContent(f.liquid_alternative_flowing_id); setParam2((level & LIQUID_LEVEL_MASK) | (getParam2() & ~LIQUID_LEVEL_MASK)); } } else if (f.param_type_2 == CPT2_LEVELED) { diff --git a/src/nodedef.cpp b/src/nodedef.cpp index b8211fceb..cb841e544 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -371,7 +371,9 @@ void ContentFeatures::reset() leveled_max = LEVELED_MAX; liquid_type = LIQUID_NONE; liquid_alternative_flowing = ""; + liquid_alternative_flowing_id = CONTENT_IGNORE; liquid_alternative_source = ""; + liquid_alternative_source_id = CONTENT_IGNORE; liquid_viscosity = 0; liquid_renewable = true; liquid_range = LIQUID_LEVEL_MAX+1; @@ -1444,6 +1446,10 @@ void NodeDefManager::deSerialize(std::istream &is) getNodeBoxUnion(f.selection_box, f, &m_selection_box_union); fixSelectionBoxIntUnion(); } + + // Since liquid_alternative_flowing_id and liquid_alternative_source_id + // are not sent, resolve them client-side too. + resolveCrossrefs(); } @@ -1504,15 +1510,28 @@ void NodeDefManager::resetNodeResolveState() m_pending_resolve_callbacks.clear(); } -void NodeDefManager::mapNodeboxConnections() +static void removeDupes(std::vector &list) +{ + std::sort(list.begin(), list.end()); + auto new_end = std::unique(list.begin(), list.end()); + list.erase(new_end, list.end()); +} + +void NodeDefManager::resolveCrossrefs() { for (ContentFeatures &f : m_content_features) { + if (f.liquid_type != LIQUID_NONE) { + f.liquid_alternative_flowing_id = getId(f.liquid_alternative_flowing); + f.liquid_alternative_source_id = getId(f.liquid_alternative_source); + continue; + } if (f.drawtype != NDT_NODEBOX || f.node_box.type != NODEBOX_CONNECTED) continue; for (const std::string &name : f.connects_to) { getIds(name, f.connects_to_ids); } + removeDupes(f.connects_to_ids); } } diff --git a/src/nodedef.h b/src/nodedef.h index 497e7ee0e..0992001e1 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -368,8 +368,10 @@ struct ContentFeatures enum LiquidType liquid_type; // If the content is liquid, this is the flowing version of the liquid. std::string liquid_alternative_flowing; + content_t liquid_alternative_flowing_id; // If the content is liquid, this is the source version of the liquid. std::string liquid_alternative_source; + content_t liquid_alternative_source_id; // Viscosity for fluid flow, ranging from 1 to 7, with // 1 giving almost instantaneous propagation and 7 being // the slowest possible @@ -428,7 +430,7 @@ struct ContentFeatures } bool sameLiquid(const ContentFeatures &f) const{ if(!isLiquid() || !f.isLiquid()) return false; - return (liquid_alternative_flowing == f.liquid_alternative_flowing); + return (liquid_alternative_flowing_id == f.liquid_alternative_flowing_id); } int getGroup(const std::string &group) const @@ -641,10 +643,11 @@ public: void resetNodeResolveState(); /*! - * Resolves the IDs to which connecting nodes connect from names. + * Resolves (caches the IDs) cross-references between nodes, + * like liquid alternatives. * Must be called after node registration has finished! */ - void mapNodeboxConnections(); + void resolveCrossrefs(); private: /*! diff --git a/src/server.cpp b/src/server.cpp index b28c30e1e..92870f972 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -412,8 +412,8 @@ void Server::init() // Perform pending node name resolutions m_nodedef->runNodeResolveCallbacks(); - // unmap node names for connected nodeboxes - m_nodedef->mapNodeboxConnections(); + // unmap node names in cross-references + m_nodedef->resolveCrossrefs(); // init the recipe hashes to speed up crafting m_craftdef->initHashes(this); From 1bcdc2d7e9d91f21cd9be2836b777c5088313fa8 Mon Sep 17 00:00:00 2001 From: Paramat Date: Fri, 22 May 2020 01:32:20 +0100 Subject: [PATCH 216/424] Various documentation fixes in settingtypes.txt (#9910) Fix incorrect value of 'mgv7_floatland_density'. Use correct spelling of 'persistence'. Move '3d_paralax_strength' into correct section (3D mode). Refer to 'active_object_send_range_blocks' instead of non-existent 'active_object_range'. --- builtin/settingtypes.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index d3f2c60b5..28ea58ffd 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -42,10 +42,10 @@ # Flags are always separated by comma without spaces. # - default possible_flags # * noise_params_2d: -# Format is , , (, , ), , , , [, ] +# Format is , , (, , ), , , , [, ] # - default # * noise_params_3d: -# Format is , , (, , ), , , , [, ] +# Format is , , (, , ), , , , [, ] # - default # * v3f: # Format is (, , ) @@ -561,9 +561,6 @@ enable_parallax_occlusion (Parallax occlusion) bool false # 1 = relief mapping (slower, more accurate). parallax_occlusion_mode (Parallax occlusion mode) int 1 0 1 -# Strength of parallax. -3d_paralax_strength (Parallax occlusion strength) float 0.025 - # Number of parallax occlusion iterations. parallax_occlusion_iterations (Parallax occlusion iterations) int 4 @@ -713,6 +710,9 @@ fall_bobbing_amount (Fall bobbing factor) float 0.03 # Note that the interlaced mode requires shaders to be enabled. 3d_mode (3D mode) enum none none,anaglyph,interlaced,topbottom,sidebyside,crossview,pageflip +# Strength of 3D mode parallax. +3d_paralax_strength (3D mode parallax strength) float 0.025 + # In-game chat console height, between 0.1 (10%) and 1.0 (100%). console_height (Console height) float 0.6 0.1 1.0 @@ -1160,7 +1160,7 @@ active_object_send_range_blocks (Active object send range) int 4 # active block stuff, stated in mapblocks (16 nodes). # In active blocks objects are loaded and ABMs run. # This is also the minimum range in which active objects (mobs) are maintained. -# This should be configured together with active_object_range. +# This should be configured together with active_object_send_range_blocks. active_block_range (Active block range) int 3 # From how far blocks are sent to clients, stated in mapblocks (16 nodes). @@ -1640,7 +1640,7 @@ mgv7_float_taper_exp (Floatland taper exponent) float 2.0 # Value = 0.0: 50% of volume is floatland. # Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test # to be sure) creates a solid floatland layer. -mgv7_floatland_density (Floatland density) float -0.9 +mgv7_floatland_density (Floatland density) float -0.6 # Surface level of optional water placed on a solid floatland layer. # Water is disabled by default and will only be placed if this value is set From 1357ea1da25bf01acaf95d5f5419d4f83a84ed61 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 22 May 2020 13:23:25 +0200 Subject: [PATCH 217/424] Cleanup of particle & particlespawner structures and code (#9893) --- src/CMakeLists.txt | 1 + src/client/clientevent.h | 45 +-- src/client/particles.cpp | 333 +++++++++-------------- src/client/particles.h | 58 +--- src/network/clientpackethandler.cpp | 126 +++------ src/particles.cpp | 53 ++++ src/particles.h | 73 +++++ src/script/lua_api/l_particles.cpp | 186 ++++++------- src/script/lua_api/l_particles_local.cpp | 149 ++++------ src/server.cpp | 106 +++----- src/server.h | 42 +-- 11 files changed, 497 insertions(+), 675 deletions(-) create mode 100644 src/particles.cpp create mode 100644 src/particles.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dd68ceec9..3d6d1b0ea 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -427,6 +427,7 @@ set(common_SRCS noise.cpp objdef.cpp object_properties.cpp + particles.cpp pathfinder.cpp player.cpp porting.cpp diff --git a/src/client/clientevent.h b/src/client/clientevent.h index 7f3984b03..9bd31efce 100644 --- a/src/client/clientevent.h +++ b/src/client/clientevent.h @@ -21,8 +21,13 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include "irrlichttypes_bloated.h" -#include "hud.h" -#include "skyparams.h" + +struct ParticleParameters; +struct ParticleSpawnerParameters; +struct SkyboxParams; +struct SunParams; +struct MoonParams; +struct StarParams; enum ClientEventType : u8 { @@ -77,44 +82,12 @@ struct ClientEvent } show_formspec; // struct{ //} textures_updated; + ParticleParameters *spawn_particle; struct { - v3f *pos; - v3f *vel; - v3f *acc; - f32 expirationtime; - f32 size; - bool collisiondetection; - bool collision_removal; - bool object_collision; - bool vertical; - std::string *texture; - struct TileAnimationParams animation; - u8 glow; - } 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; - bool collision_removal; - bool object_collision; + ParticleSpawnerParameters *p; u16 attached_id; - bool vertical; - std::string *texture; u64 id; - struct TileAnimationParams animation; - u8 glow; } add_particlespawner; struct { diff --git a/src/client/particles.cpp b/src/client/particles.cpp index a0e4e54eb..c2e751b4f 100644 --- a/src/client/particles.cpp +++ b/src/client/particles.cpp @@ -37,32 +37,31 @@ with this program; if not, write to the Free Software Foundation, Inc., Utility */ -v3f random_v3f(v3f min, v3f max) +static f32 random_f32(f32 min, f32 max) +{ + return rand() / (float)RAND_MAX * (max - min) + min; +} + +static v3f random_v3f(v3f min, v3f max) { return v3f( - rand() / (float)RAND_MAX * (max.X - min.X) + min.X, - rand() / (float)RAND_MAX * (max.Y - min.Y) + min.Y, - rand() / (float)RAND_MAX * (max.Z - min.Z) + min.Z); + random_f32(min.X, max.X), + random_f32(min.Y, max.Y), + random_f32(min.Z, max.Z)); } +/* + Particle +*/ + Particle::Particle( IGameDef *gamedef, LocalPlayer *player, ClientEnvironment *env, - v3f pos, - v3f velocity, - v3f acceleration, - float expirationtime, - float size, - bool collisiondetection, - bool collision_removal, - bool object_collision, - bool vertical, + const ParticleParameters &p, video::ITexture *texture, v2f texpos, v2f texsize, - const struct TileAnimationParams &anim, - u8 glow, video::SColor color ): scene::ISceneNode(RenderingEngine::get_scene_manager()->getRootSceneNode(), @@ -81,33 +80,28 @@ Particle::Particle( m_material.setTexture(0, texture); m_texpos = texpos; m_texsize = texsize; - m_animation = anim; + m_animation = p.animation; // Color m_base_color = color; m_color = color; // Particle related - m_pos = pos; - m_velocity = velocity; - m_acceleration = acceleration; - m_expiration = expirationtime; + m_pos = p.pos; + m_velocity = p.vel; + m_acceleration = p.acc; + m_expiration = p.expirationtime; m_player = player; - m_size = size; - m_collisiondetection = collisiondetection; - m_collision_removal = collision_removal; - m_object_collision = object_collision; - m_vertical = vertical; - m_glow = glow; + m_size = p.size; + m_collisiondetection = p.collisiondetection; + m_collision_removal = p.collision_removal; + m_object_collision = p.object_collision; + m_vertical = p.vertical; + m_glow = p.glow; // Irrlicht stuff - m_collisionbox = aabb3f( - -size / 2, - -size / 2, - -size / 2, - size / 2, - size / 2, - size / 2); + const float c = p.size / 2; + m_collisionbox = aabb3f(-c, -c, -c, c, c, c); this->setAutomaticCulling(scene::EAC_OFF); // Init lighting @@ -255,52 +249,22 @@ void Particle::updateVertices() ParticleSpawner::ParticleSpawner( IGameDef *gamedef, LocalPlayer *player, - u16 amount, - float time, - v3f minpos, v3f maxpos, - v3f minvel, v3f maxvel, - v3f minacc, v3f maxacc, - float minexptime, float maxexptime, - float minsize, float maxsize, - bool collisiondetection, - bool collision_removal, - bool object_collision, + const ParticleSpawnerParameters &p, u16 attached_id, - bool vertical, video::ITexture *texture, - const struct TileAnimationParams &anim, - u8 glow, ParticleManager *p_manager ): - m_particlemanager(p_manager) + m_particlemanager(p_manager), p(p) { m_gamedef = gamedef; m_player = player; - m_amount = amount; - m_spawntime = time; - m_minpos = minpos; - m_maxpos = maxpos; - m_minvel = minvel; - m_maxvel = maxvel; - m_minacc = minacc; - m_maxacc = maxacc; - m_minexptime = minexptime; - m_maxexptime = maxexptime; - m_minsize = minsize; - m_maxsize = maxsize; - m_collisiondetection = collisiondetection; - m_collision_removal = collision_removal; - m_object_collision = object_collision; m_attached_id = attached_id; - m_vertical = vertical; m_texture = texture; m_time = 0; - m_animation = anim; - m_glow = glow; - for (u16 i = 0; i <= m_amount; i++) - { - float spawntime = (float)rand() / (float)RAND_MAX * m_spawntime; + m_spawntimes.reserve(p.amount + 1); + for (u16 i = 0; i <= p.amount; i++) { + float spawntime = rand() / (float)RAND_MAX * p.time; m_spawntimes.push_back(spawntime); } } @@ -309,7 +273,7 @@ void ParticleSpawner::spawnParticle(ClientEnvironment *env, float radius, const core::matrix4 *attached_absolute_pos_rot_matrix) { v3f ppos = m_player->getPosition() / BS; - v3f pos = random_v3f(m_minpos, m_maxpos); + v3f pos = random_v3f(p.minpos, p.maxpos); // Need to apply this first or the following check // will be wrong for attached spawners @@ -326,41 +290,32 @@ void ParticleSpawner::spawnParticle(ClientEnvironment *env, float radius, if (pos.getDistanceFrom(ppos) > radius) return; - v3f vel = random_v3f(m_minvel, m_maxvel); - v3f acc = random_v3f(m_minacc, m_maxacc); + // Parameters for the single particle we're about to spawn + ParticleParameters pp; + pp.pos = pos; + + pp.vel = random_v3f(p.minvel, p.maxvel); + pp.acc = random_v3f(p.minacc, p.maxacc); if (attached_absolute_pos_rot_matrix) { // Apply attachment rotation - attached_absolute_pos_rot_matrix->rotateVect(vel); - attached_absolute_pos_rot_matrix->rotateVect(acc); + attached_absolute_pos_rot_matrix->rotateVect(pp.vel); + attached_absolute_pos_rot_matrix->rotateVect(pp.acc); } - float exptime = rand() / (float)RAND_MAX - * (m_maxexptime - m_minexptime) - + m_minexptime; + pp.expirationtime = random_f32(p.minexptime, p.maxexptime); + pp.size = random_f32(p.minsize, p.maxsize); - float size = rand() / (float)RAND_MAX - * (m_maxsize - m_minsize) - + m_minsize; + p.copyCommon(pp); m_particlemanager->addParticle(new Particle( m_gamedef, m_player, env, - pos, - vel, - acc, - exptime, - size, - m_collisiondetection, - m_collision_removal, - m_object_collision, - m_vertical, + pp, m_texture, v2f(0.0, 0.0), - v2f(1.0, 1.0), - m_animation, - m_glow + v2f(1.0, 1.0) )); } @@ -381,12 +336,11 @@ void ParticleSpawner::step(float dtime, ClientEnvironment *env) } } - if (m_spawntime != 0) { + if (p.time != 0) { // Spawner exists for a predefined timespan - for (std::vector::iterator i = m_spawntimes.begin(); - i != m_spawntimes.end();) { - if ((*i) <= m_time && m_amount > 0) { - --m_amount; + for (auto i = m_spawntimes.begin(); i != m_spawntimes.end(); ) { + if ((*i) <= m_time && p.amount > 0) { + --p.amount; // Pretend to, but don't actually spawn a particle if it is // attached to an unloaded object or distant from player. @@ -405,13 +359,16 @@ void ParticleSpawner::step(float dtime, ClientEnvironment *env) if (unloaded) return; - for (int i = 0; i <= m_amount; i++) { + for (int i = 0; i <= p.amount; i++) { if (rand() / (float)RAND_MAX < dtime) spawnParticle(env, radius, attached_absolute_pos_rot_matrix); } } } +/* + ParticleManager +*/ ParticleManager::ParticleManager(ClientEnvironment *env) : m_env(env) @@ -479,99 +436,84 @@ void ParticleManager::handleParticleEvent(ClientEvent *event, Client *client, { switch (event->type) { case CE_DELETE_PARTICLESPAWNER: { - MutexAutoLock lock(m_spawner_list_lock); - if (m_particle_spawners.find(event->delete_particlespawner.id) != - m_particle_spawners.end()) { - delete m_particle_spawners.find(event->delete_particlespawner.id)->second; - m_particle_spawners.erase(event->delete_particlespawner.id); - } + deleteParticleSpawner(event->delete_particlespawner.id); // no allocated memory in delete event break; } case CE_ADD_PARTICLESPAWNER: { - { - MutexAutoLock lock(m_spawner_list_lock); - if (m_particle_spawners.find(event->add_particlespawner.id) != - m_particle_spawners.end()) { - delete m_particle_spawners.find(event->add_particlespawner.id)->second; - m_particle_spawners.erase(event->add_particlespawner.id); - } - } + deleteParticleSpawner(event->add_particlespawner.id); + + const ParticleSpawnerParameters &p = *event->add_particlespawner.p; video::ITexture *texture = - client->tsrc()->getTextureForMesh(*(event->add_particlespawner.texture)); + client->tsrc()->getTextureForMesh(p.texture); auto toadd = new ParticleSpawner(client, player, - event->add_particlespawner.amount, - event->add_particlespawner.spawntime, - *event->add_particlespawner.minpos, - *event->add_particlespawner.maxpos, - *event->add_particlespawner.minvel, - *event->add_particlespawner.maxvel, - *event->add_particlespawner.minacc, - *event->add_particlespawner.maxacc, - event->add_particlespawner.minexptime, - event->add_particlespawner.maxexptime, - event->add_particlespawner.minsize, - event->add_particlespawner.maxsize, - event->add_particlespawner.collisiondetection, - event->add_particlespawner.collision_removal, - event->add_particlespawner.object_collision, + p, event->add_particlespawner.attached_id, - event->add_particlespawner.vertical, texture, - event->add_particlespawner.animation, - event->add_particlespawner.glow, this); - /* delete allocated content of event */ - delete event->add_particlespawner.minpos; - delete event->add_particlespawner.maxpos; - delete event->add_particlespawner.minvel; - delete event->add_particlespawner.maxvel; - delete event->add_particlespawner.minacc; - delete event->add_particlespawner.texture; - delete event->add_particlespawner.maxacc; + addParticleSpawner(event->add_particlespawner.id, toadd); - { - MutexAutoLock lock(m_spawner_list_lock); - m_particle_spawners[event->add_particlespawner.id] = toadd; - } + delete event->add_particlespawner.p; break; } case CE_SPAWN_PARTICLE: { + const ParticleParameters &p = *event->spawn_particle; video::ITexture *texture = - client->tsrc()->getTextureForMesh(*(event->spawn_particle.texture)); + client->tsrc()->getTextureForMesh(p.texture); Particle *toadd = new Particle(client, player, m_env, - *event->spawn_particle.pos, - *event->spawn_particle.vel, - *event->spawn_particle.acc, - event->spawn_particle.expirationtime, - event->spawn_particle.size, - event->spawn_particle.collisiondetection, - event->spawn_particle.collision_removal, - event->spawn_particle.object_collision, - event->spawn_particle.vertical, + p, texture, v2f(0.0, 0.0), - v2f(1.0, 1.0), - event->spawn_particle.animation, - event->spawn_particle.glow); + v2f(1.0, 1.0)); addParticle(toadd); - delete event->spawn_particle.pos; - delete event->spawn_particle.vel; - delete event->spawn_particle.acc; - delete event->spawn_particle.texture; - + delete event->spawn_particle; break; } default: break; } } +bool ParticleManager::getNodeParticleParams(const MapNode &n, + const ContentFeatures &f, ParticleParameters &p, + video::ITexture **texture, v2f &texpos, v2f &texsize, video::SColor *color) +{ + // No particles for "airlike" nodes + if (f.drawtype == NDT_AIRLIKE) + return false; + + // Texture + u8 texid = rand() % 6; + const TileLayer &tile = f.tiles[texid].layers[0]; + p.animation.type = TAT_NONE; + + // Only use first frame of animated texture + if (tile.material_flags & MATERIAL_FLAG_ANIMATION) + *texture = (*tile.frames)[0].texture; + else + *texture = tile.texture; + + float size = (rand() % 8) / 64.0f; + p.size = BS * size; + if (tile.scale) + size /= tile.scale; + texsize = v2f(size * 2.0f, size * 2.0f); + texpos.X = (rand() % 64) / 64.0f - texsize.X; + texpos.Y = (rand() % 64) / 64.0f - texsize.Y; + + if (tile.has_color) + *color = tile.color; + else + n.getColor(f, color); + + return true; +} + // The final burst of particles when a node is finally dug, *not* particles // spawned during the digging of a node. @@ -593,73 +535,41 @@ void ParticleManager::addDiggingParticles(IGameDef *gamedef, void ParticleManager::addNodeParticle(IGameDef *gamedef, LocalPlayer *player, v3s16 pos, const MapNode &n, const ContentFeatures &f) { - // No particles for "airlike" nodes - if (f.drawtype == NDT_AIRLIKE) + ParticleParameters p; + video::ITexture *texture; + v2f texpos, texsize; + video::SColor color; + + if (!getNodeParticleParams(n, f, p, &texture, texpos, texsize, &color)) return; - // Texture - u8 texid = myrand_range(0, 5); - const TileLayer &tile = f.tiles[texid].layers[0]; - video::ITexture *texture; - struct TileAnimationParams anim; - anim.type = TAT_NONE; - - // Only use first frame of animated texture - if (tile.material_flags & MATERIAL_FLAG_ANIMATION) - texture = (*tile.frames)[0].texture; - else - texture = tile.texture; - - float size = (rand() % 8) / 64.0f; - float visual_size = BS * size; - if (tile.scale) - size /= tile.scale; - v2f texsize(size * 2.0f, size * 2.0f); - v2f texpos; - texpos.X = (rand() % 64) / 64.0f - texsize.X; - texpos.Y = (rand() % 64) / 64.0f - texsize.Y; + p.expirationtime = (rand() % 100) / 100.0f; // Physics - v3f velocity( + p.vel = v3f( (rand() % 150) / 50.0f - 1.5f, (rand() % 150) / 50.0f, (rand() % 150) / 50.0f - 1.5f ); - v3f acceleration( + p.acc = v3f( 0.0f, -player->movement_gravity * player->physics_override_gravity / BS, 0.0f ); - v3f particlepos = v3f( + p.pos = v3f( (f32)pos.X + (rand() % 100) / 200.0f - 0.25f, (f32)pos.Y + (rand() % 100) / 200.0f - 0.25f, (f32)pos.Z + (rand() % 100) / 200.0f - 0.25f ); - video::SColor color; - if (tile.has_color) - color = tile.color; - else - n.getColor(f, &color); - Particle *toadd = new Particle( gamedef, player, m_env, - particlepos, - velocity, - acceleration, - (rand() % 100) / 100.0f, // expiration time - visual_size, - true, - false, - false, - false, + p, texture, texpos, texsize, - anim, - 0, color); addParticle(toadd); @@ -670,3 +580,20 @@ void ParticleManager::addParticle(Particle *toadd) MutexAutoLock lock(m_particle_list_lock); m_particles.push_back(toadd); } + + +void ParticleManager::addParticleSpawner(u64 id, ParticleSpawner *toadd) +{ + MutexAutoLock lock(m_spawner_list_lock); + m_particle_spawners[id] = toadd; +} + +void ParticleManager::deleteParticleSpawner(u64 id) +{ + MutexAutoLock lock(m_spawner_list_lock); + auto it = m_particle_spawners.find(id); + if (it != m_particle_spawners.end()) { + delete it->second; + m_particle_spawners.erase(it); + } +} diff --git a/src/client/particles.h b/src/client/particles.h index e7b8cbe24..7dda0e1b1 100644 --- a/src/client/particles.h +++ b/src/client/particles.h @@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "irrlichttypes_extrabloated.h" #include "client/tile.h" #include "localplayer.h" -#include "tileanimation.h" +#include "../particles.h" struct ClientEvent; class ParticleManager; @@ -38,20 +38,10 @@ class Particle : public scene::ISceneNode IGameDef* gamedef, LocalPlayer *player, ClientEnvironment *env, - v3f pos, - v3f velocity, - v3f acceleration, - float expirationtime, - float size, - bool collisiondetection, - bool collision_removal, - bool object_collision, - bool vertical, + const ParticleParameters &p, video::ITexture *texture, v2f texpos, v2f texsize, - const struct TileAnimationParams &anim, - u8 glow, video::SColor color = video::SColor(0xFFFFFFFF) ); ~Particle() = default; @@ -119,20 +109,9 @@ class ParticleSpawner public: ParticleSpawner(IGameDef* gamedef, LocalPlayer *player, - u16 amount, - float time, - v3f minp, v3f maxp, - v3f minvel, v3f maxvel, - v3f minacc, v3f maxacc, - float minexptime, float maxexptime, - float minsize, float maxsize, - bool collisiondetection, - bool collision_removal, - bool object_collision, + const ParticleSpawnerParameters &p, u16 attached_id, - bool vertical, video::ITexture *texture, - const struct TileAnimationParams &anim, u8 glow, ParticleManager* p_manager); ~ParticleSpawner() = default; @@ -140,7 +119,7 @@ public: void step(float dtime, ClientEnvironment *env); bool get_expired () - { return (m_amount <= 0) && m_spawntime != 0; } + { return p.amount <= 0 && p.time != 0; } private: void spawnParticle(ClientEnvironment *env, float radius, @@ -150,27 +129,10 @@ private: float m_time; IGameDef *m_gamedef; LocalPlayer *m_player; - u16 m_amount; - float m_spawntime; - v3f m_minpos; - v3f m_maxpos; - v3f m_minvel; - v3f m_maxvel; - v3f m_minacc; - v3f m_maxacc; - float m_minexptime; - float m_maxexptime; - float m_minsize; - float m_maxsize; + ParticleSpawnerParameters p; video::ITexture *m_texture; std::vector m_spawntimes; - bool m_collisiondetection; - bool m_collision_removal; - bool m_object_collision; - bool m_vertical; u16 m_attached_id; - struct TileAnimationParams m_animation; - u8 m_glow; }; /** @@ -197,8 +159,8 @@ public: /** * This function is only used by client particle spawners * - * We don't need to check the particle spawner list because client ID will n - * ever overlap (u64) + * We don't need to check the particle spawner list because client ID will + * never overlap (u64) * @return new id */ u64 generateSpawnerId() @@ -207,9 +169,15 @@ public: } protected: + static bool getNodeParticleParams(const MapNode &n, const ContentFeatures &f, + ParticleParameters &p, video::ITexture **texture, v2f &texpos, + v2f &texsize, video::SColor *color); + void addParticle(Particle* toadd); private: + void addParticleSpawner(u64 id, ParticleSpawner *toadd); + void deleteParticleSpawner(u64 id); void stepParticles(float dtime); void stepSpawners(float dtime); diff --git a/src/network/clientpackethandler.cpp b/src/network/clientpackethandler.cpp index 7b1b1368c..054e60c3c 100644 --- a/src/network/clientpackethandler.cpp +++ b/src/network/clientpackethandler.cpp @@ -958,114 +958,56 @@ void Client::handleCommand_SpawnParticle(NetworkPacket* pkt) std::string datastring(pkt->getString(0), pkt->getSize()); std::istringstream is(datastring, std::ios_base::binary); - v3f pos = readV3F32(is); - v3f vel = readV3F32(is); - v3f acc = readV3F32(is); - float expirationtime = readF32(is); - float size = readF32(is); - bool collisiondetection = readU8(is); - std::string texture = deSerializeLongString(is); - - bool vertical = false; - bool collision_removal = false; - TileAnimationParams animation; - animation.type = TAT_NONE; - u8 glow = 0; - bool object_collision = false; - try { - vertical = readU8(is); - collision_removal = readU8(is); - animation.deSerialize(is, m_proto_ver); - glow = readU8(is); - object_collision = readU8(is); - } catch (...) {} + ParticleParameters p; + p.deSerialize(is, m_proto_ver); ClientEvent *event = new ClientEvent(); - event->type = CE_SPAWN_PARTICLE; - event->spawn_particle.pos = new v3f (pos); - event->spawn_particle.vel = new v3f (vel); - event->spawn_particle.acc = new v3f (acc); - event->spawn_particle.expirationtime = expirationtime; - event->spawn_particle.size = size; - event->spawn_particle.collisiondetection = collisiondetection; - event->spawn_particle.collision_removal = collision_removal; - event->spawn_particle.object_collision = object_collision; - event->spawn_particle.vertical = vertical; - event->spawn_particle.texture = new std::string(texture); - event->spawn_particle.animation = animation; - event->spawn_particle.glow = glow; + event->type = CE_SPAWN_PARTICLE; + event->spawn_particle = new ParticleParameters(p); m_client_event_queue.push(event); } void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt) { - u16 amount; - float spawntime; - v3f minpos; - v3f maxpos; - v3f minvel; - v3f maxvel; - v3f minacc; - v3f maxacc; - float minexptime; - float maxexptime; - float minsize; - float maxsize; - bool collisiondetection; + std::string datastring(pkt->getString(0), pkt->getSize()); + std::istringstream is(datastring, std::ios_base::binary); + + ParticleSpawnerParameters p; u32 server_id; + u16 attached_id = 0; - *pkt >> amount >> spawntime >> minpos >> maxpos >> minvel >> maxvel - >> minacc >> maxacc >> minexptime >> maxexptime >> minsize - >> maxsize >> collisiondetection; + p.amount = readU16(is); + p.time = readF32(is); + p.minpos = readV3F32(is); + p.maxpos = readV3F32(is); + p.minvel = readV3F32(is); + p.maxvel = readV3F32(is); + p.minacc = readV3F32(is); + p.maxacc = readV3F32(is); + p.minexptime = readF32(is); + p.maxexptime = readF32(is); + p.minsize = readF32(is); + p.maxsize = readF32(is); + p.collisiondetection = readU8(is); + p.texture = deSerializeLongString(is); - std::string texture = pkt->readLongString(); + server_id = readU32(is); - *pkt >> server_id; + p.vertical = readU8(is); + p.collision_removal = readU8(is); - bool vertical = false; - bool collision_removal = false; - u16 attached_id = 0; - TileAnimationParams animation; - animation.type = TAT_NONE; - u8 glow = 0; - bool object_collision = false; - try { - *pkt >> vertical; - *pkt >> collision_removal; - *pkt >> attached_id; + attached_id = readU16(is); - // This is horrible but required (why are there two ways to deserialize pkts?) - std::string datastring(pkt->getRemainingString(), pkt->getRemainingBytes()); - std::istringstream is(datastring, std::ios_base::binary); - animation.deSerialize(is, m_proto_ver); - glow = readU8(is); - object_collision = readU8(is); - } catch (...) {} + p.animation.deSerialize(is, m_proto_ver); + p.glow = readU8(is); + p.object_collision = readU8(is); auto event = new ClientEvent(); - event->type = CE_ADD_PARTICLESPAWNER; - event->add_particlespawner.amount = amount; - event->add_particlespawner.spawntime = spawntime; - event->add_particlespawner.minpos = new v3f (minpos); - event->add_particlespawner.maxpos = new v3f (maxpos); - event->add_particlespawner.minvel = new v3f (minvel); - event->add_particlespawner.maxvel = new v3f (maxvel); - event->add_particlespawner.minacc = new v3f (minacc); - event->add_particlespawner.maxacc = new v3f (maxacc); - event->add_particlespawner.minexptime = minexptime; - event->add_particlespawner.maxexptime = maxexptime; - event->add_particlespawner.minsize = minsize; - event->add_particlespawner.maxsize = maxsize; - event->add_particlespawner.collisiondetection = collisiondetection; - event->add_particlespawner.collision_removal = collision_removal; - event->add_particlespawner.object_collision = object_collision; - event->add_particlespawner.attached_id = attached_id; - event->add_particlespawner.vertical = vertical; - event->add_particlespawner.texture = new std::string(texture); - event->add_particlespawner.id = server_id; - event->add_particlespawner.animation = animation; - event->add_particlespawner.glow = glow; + event->type = CE_ADD_PARTICLESPAWNER; + event->add_particlespawner.p = new ParticleSpawnerParameters(p); + event->add_particlespawner.attached_id = attached_id; + event->add_particlespawner.id = server_id; m_client_event_queue.push(event); } diff --git a/src/particles.cpp b/src/particles.cpp new file mode 100644 index 000000000..711d189f6 --- /dev/null +++ b/src/particles.cpp @@ -0,0 +1,53 @@ +/* +Minetest +Copyright (C) 2020 sfan5 + +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 "particles.h" +#include "util/serialize.h" + +void ParticleParameters::serialize(std::ostream &os, u16 protocol_ver) const +{ + writeV3F32(os, pos); + writeV3F32(os, vel); + writeV3F32(os, acc); + writeF32(os, expirationtime); + writeF32(os, size); + writeU8(os, collisiondetection); + os << serializeLongString(texture); + writeU8(os, vertical); + writeU8(os, collision_removal); + animation.serialize(os, 6); /* NOT the protocol ver */ + writeU8(os, glow); + writeU8(os, object_collision); +} + +void ParticleParameters::deSerialize(std::istream &is, u16 protocol_ver) +{ + pos = readV3F32(is); + vel = readV3F32(is); + acc = readV3F32(is); + expirationtime = readF32(is); + size = readF32(is); + collisiondetection = readU8(is); + texture = deSerializeLongString(is); + vertical = readU8(is); + collision_removal = readU8(is); + animation.deSerialize(is, 6); /* NOT the protocol ver */ + glow = readU8(is); + object_collision = readU8(is); +} diff --git a/src/particles.h b/src/particles.h new file mode 100644 index 000000000..659c1249f --- /dev/null +++ b/src/particles.h @@ -0,0 +1,73 @@ +/* +Minetest +Copyright (C) 2013 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#pragma once + +#include +#include "irrlichttypes_bloated.h" +#include "tileanimation.h" + +// This file defines the particle-related structures that both the server and +// client need. The ParticleManager and rendering is in client/particles.h + +struct CommonParticleParams { + bool collisiondetection = false; + bool collision_removal = false; + bool object_collision = false; + bool vertical = false; + std::string texture; + struct TileAnimationParams animation; + u8 glow = 0; + + CommonParticleParams() { + animation.type = TAT_NONE; + } + + /* This helper is useful for copying params from + * ParticleSpawnerParameters to ParticleParameters */ + inline void copyCommon(CommonParticleParams &to) const { + to.collisiondetection = collisiondetection; + to.collision_removal = collision_removal; + to.object_collision = object_collision; + to.vertical = vertical; + to.texture = texture; + to.animation = animation; + to.glow = glow; + } +}; + +struct ParticleParameters : CommonParticleParams { + v3f pos; + v3f vel; + v3f acc; + f32 expirationtime = 1; + f32 size = 1; + + void serialize(std::ostream &os, u16 protocol_ver) const; + void deSerialize(std::istream &is, u16 protocol_ver); +}; + +struct ParticleSpawnerParameters : CommonParticleParams { + u16 amount = 1; + v3f minpos, maxpos, minvel, maxvel, minacc, maxacc; + f32 time = 1; + f32 minexptime = 1, maxexptime = 1, minsize = 1, maxsize = 1; + + // For historical reasons no (de-)serialization methods here +}; diff --git a/src/script/lua_api/l_particles.cpp b/src/script/lua_api/l_particles.cpp index 340903ebf..7680aa17b 100644 --- a/src/script/lua_api/l_particles.cpp +++ b/src/script/lua_api/l_particles.cpp @@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common/c_converter.h" #include "common/c_content.h" #include "server.h" -#include "client/particles.h" +#include "particles.h" // add_particle({pos=, velocity=, acceleration=, expirationtime=, // size=, collisiondetection=, collision_removal=, object_collision=, @@ -40,85 +40,81 @@ with this program; if not, write to the Free Software Foundation, Inc., // glow = num int ModApiParticles::l_add_particle(lua_State *L) { - MAP_LOCK_REQUIRED; + NO_MAP_LOCK_REQUIRED; // Get parameters - v3f pos, vel, acc; - float expirationtime, size; - expirationtime = size = 1; - bool collisiondetection, vertical, collision_removal, object_collision; - collisiondetection = vertical = collision_removal = object_collision = false; - struct TileAnimationParams animation; - animation.type = TAT_NONE; - std::string texture; + struct ParticleParameters p; std::string playername; - u8 glow = 0; if (lua_gettop(L) > 1) // deprecated { - log_deprecated(L, "Deprecated add_particle call with individual parameters instead of definition"); - pos = check_v3f(L, 1); - vel = check_v3f(L, 2); - acc = check_v3f(L, 3); - expirationtime = luaL_checknumber(L, 4); - size = luaL_checknumber(L, 5); - collisiondetection = readParam(L, 6); - texture = luaL_checkstring(L, 7); + log_deprecated(L, "Deprecated add_particle call with " + "individual parameters instead of definition"); + p.pos = check_v3f(L, 1); + p.vel = check_v3f(L, 2); + p.acc = check_v3f(L, 3); + p.expirationtime = luaL_checknumber(L, 4); + p.size = luaL_checknumber(L, 5); + p.collisiondetection = readParam(L, 6); + p.texture = luaL_checkstring(L, 7); if (lua_gettop(L) == 8) // only spawn for a single player playername = luaL_checkstring(L, 8); } else if (lua_istable(L, 1)) { lua_getfield(L, 1, "pos"); - pos = lua_istable(L, -1) ? check_v3f(L, -1) : v3f(); + if (lua_istable(L, -1)) + p.pos = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "vel"); if (lua_istable(L, -1)) { - vel = check_v3f(L, -1); + p.vel = check_v3f(L, -1); log_deprecated(L, "The use of vel is deprecated. " "Use velocity instead"); } lua_pop(L, 1); lua_getfield(L, 1, "velocity"); - vel = lua_istable(L, -1) ? check_v3f(L, -1) : vel; + if (lua_istable(L, -1)) + p.vel = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "acc"); if (lua_istable(L, -1)) { - acc = check_v3f(L, -1); + p.acc = check_v3f(L, -1); log_deprecated(L, "The use of acc is deprecated. " "Use acceleration instead"); } lua_pop(L, 1); lua_getfield(L, 1, "acceleration"); - acc = lua_istable(L, -1) ? check_v3f(L, -1) : acc; + if (lua_istable(L, -1)) + p.acc = check_v3f(L, -1); lua_pop(L, 1); - expirationtime = getfloatfield_default(L, 1, "expirationtime", 1); - size = getfloatfield_default(L, 1, "size", 1); - collisiondetection = getboolfield_default(L, 1, - "collisiondetection", collisiondetection); - collision_removal = getboolfield_default(L, 1, - "collision_removal", collision_removal); - object_collision = getboolfield_default(L, 1, - "object_collision", object_collision); - vertical = getboolfield_default(L, 1, "vertical", vertical); + p.expirationtime = getfloatfield_default(L, 1, "expirationtime", + p.expirationtime); + p.size = getfloatfield_default(L, 1, "size", p.size); + p.collisiondetection = getboolfield_default(L, 1, + "collisiondetection", p.collisiondetection); + p.collision_removal = getboolfield_default(L, 1, + "collision_removal", p.collision_removal); + p.object_collision = getboolfield_default(L, 1, + "object_collision", p.object_collision); + p.vertical = getboolfield_default(L, 1, "vertical", p.vertical); lua_getfield(L, 1, "animation"); - animation = read_animation_definition(L, -1); + p.animation = read_animation_definition(L, -1); lua_pop(L, 1); - texture = getstringfield_default(L, 1, "texture", ""); - playername = getstringfield_default(L, 1, "playername", ""); + p.texture = getstringfield_default(L, 1, "texture", p.texture); + p.glow = getintfield_default(L, 1, "glow", p.glow); - glow = getintfield_default(L, 1, "glow", 0); + playername = getstringfield_default(L, 1, "playername", ""); } - getServer(L)->spawnParticle(playername, pos, vel, acc, expirationtime, size, - collisiondetection, collision_removal, object_collision, vertical, - texture, animation, glow); + + getServer(L)->spawnParticle(playername, p); return 1; } @@ -146,84 +142,82 @@ int ModApiParticles::l_add_particle(lua_State *L) // glow = num int ModApiParticles::l_add_particlespawner(lua_State *L) { - MAP_LOCK_REQUIRED; + NO_MAP_LOCK_REQUIRED; // Get parameters - u16 amount = 1; - v3f minpos, maxpos, minvel, maxvel, minacc, maxacc; - float time, minexptime, maxexptime, minsize, maxsize; - time = minexptime = maxexptime = minsize = maxsize = 1; - bool collisiondetection, vertical, collision_removal, object_collision; - collisiondetection = vertical = collision_removal = object_collision = false; - struct TileAnimationParams animation; - animation.type = TAT_NONE; + ParticleSpawnerParameters p; ServerActiveObject *attached = NULL; - std::string texture; std::string playername; - u8 glow = 0; if (lua_gettop(L) > 1) //deprecated { - log_deprecated(L,"Deprecated add_particlespawner call with individual parameters instead of definition"); - amount = luaL_checknumber(L, 1); - time = luaL_checknumber(L, 2); - minpos = check_v3f(L, 3); - maxpos = check_v3f(L, 4); - minvel = check_v3f(L, 5); - maxvel = check_v3f(L, 6); - minacc = check_v3f(L, 7); - maxacc = check_v3f(L, 8); - minexptime = luaL_checknumber(L, 9); - maxexptime = luaL_checknumber(L, 10); - minsize = luaL_checknumber(L, 11); - maxsize = luaL_checknumber(L, 12); - collisiondetection = readParam(L, 13); - texture = luaL_checkstring(L, 14); + log_deprecated(L, "Deprecated add_particlespawner call with " + "individual parameters instead of definition"); + p.amount = luaL_checknumber(L, 1); + p.time = luaL_checknumber(L, 2); + p.minpos = check_v3f(L, 3); + p.maxpos = check_v3f(L, 4); + p.minvel = check_v3f(L, 5); + p.maxvel = check_v3f(L, 6); + p.minacc = check_v3f(L, 7); + p.maxacc = check_v3f(L, 8); + p.minexptime = luaL_checknumber(L, 9); + p.maxexptime = luaL_checknumber(L, 10); + p.minsize = luaL_checknumber(L, 11); + p.maxsize = luaL_checknumber(L, 12); + p.collisiondetection = readParam(L, 13); + p.texture = luaL_checkstring(L, 14); if (lua_gettop(L) == 15) // only spawn for a single player playername = luaL_checkstring(L, 15); } else if (lua_istable(L, 1)) { - amount = getintfield_default(L, 1, "amount", amount); - time = getfloatfield_default(L, 1, "time", time); + p.amount = getintfield_default(L, 1, "amount", p.amount); + p.time = getfloatfield_default(L, 1, "time", p.time); lua_getfield(L, 1, "minpos"); - minpos = lua_istable(L, -1) ? check_v3f(L, -1) : minpos; + if (lua_istable(L, -1)) + p.minpos = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "maxpos"); - maxpos = lua_istable(L, -1) ? check_v3f(L, -1) : maxpos; + if (lua_istable(L, -1)) + p.maxpos = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "minvel"); - minvel = lua_istable(L, -1) ? check_v3f(L, -1) : minvel; + if (lua_istable(L, -1)) + p.minvel = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "maxvel"); - maxvel = lua_istable(L, -1) ? check_v3f(L, -1) : maxvel; + if (lua_istable(L, -1)) + p.maxvel = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "minacc"); - minacc = lua_istable(L, -1) ? check_v3f(L, -1) : minacc; + if (lua_istable(L, -1)) + p.minacc = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "maxacc"); - maxacc = lua_istable(L, -1) ? check_v3f(L, -1) : maxacc; + if (lua_istable(L, -1)) + p.maxacc = check_v3f(L, -1); lua_pop(L, 1); - minexptime = getfloatfield_default(L, 1, "minexptime", minexptime); - maxexptime = getfloatfield_default(L, 1, "maxexptime", maxexptime); - minsize = getfloatfield_default(L, 1, "minsize", minsize); - maxsize = getfloatfield_default(L, 1, "maxsize", maxsize); - collisiondetection = getboolfield_default(L, 1, - "collisiondetection", collisiondetection); - collision_removal = getboolfield_default(L, 1, - "collision_removal", collision_removal); - object_collision = getboolfield_default(L, 1, - "object_collision", object_collision); + p.minexptime = getfloatfield_default(L, 1, "minexptime", p.minexptime); + p.maxexptime = getfloatfield_default(L, 1, "maxexptime", p.maxexptime); + p.minsize = getfloatfield_default(L, 1, "minsize", p.minsize); + p.maxsize = getfloatfield_default(L, 1, "maxsize", p.maxsize); + p.collisiondetection = getboolfield_default(L, 1, + "collisiondetection", p.collisiondetection); + p.collision_removal = getboolfield_default(L, 1, + "collision_removal", p.collision_removal); + p.object_collision = getboolfield_default(L, 1, + "object_collision", p.object_collision); lua_getfield(L, 1, "animation"); - animation = read_animation_definition(L, -1); + p.animation = read_animation_definition(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "attached"); @@ -233,25 +227,13 @@ int ModApiParticles::l_add_particlespawner(lua_State *L) attached = ObjectRef::getobject(ref); } - vertical = getboolfield_default(L, 1, "vertical", vertical); - texture = getstringfield_default(L, 1, "texture", ""); + p.vertical = getboolfield_default(L, 1, "vertical", p.vertical); + p.texture = getstringfield_default(L, 1, "texture", p.texture); playername = getstringfield_default(L, 1, "playername", ""); - glow = getintfield_default(L, 1, "glow", 0); + p.glow = getintfield_default(L, 1, "glow", p.glow); } - u32 id = getServer(L)->addParticleSpawner(amount, time, - minpos, maxpos, - minvel, maxvel, - minacc, maxacc, - minexptime, maxexptime, - minsize, maxsize, - collisiondetection, - collision_removal, - object_collision, - attached, - vertical, - texture, playername, - animation, glow); + u32 id = getServer(L)->addParticleSpawner(p, attached, playername); lua_pushnumber(L, id); return 1; @@ -261,7 +243,7 @@ int ModApiParticles::l_add_particlespawner(lua_State *L) // player (string) is optional int ModApiParticles::l_delete_particlespawner(lua_State *L) { - MAP_LOCK_REQUIRED; + NO_MAP_LOCK_REQUIRED; // Get parameters u32 id = luaL_checknumber(L, 1); diff --git a/src/script/lua_api/l_particles_local.cpp b/src/script/lua_api/l_particles_local.cpp index a9bf55665..9595b2fab 100644 --- a/src/script/lua_api/l_particles_local.cpp +++ b/src/script/lua_api/l_particles_local.cpp @@ -32,56 +32,44 @@ int ModApiParticlesLocal::l_add_particle(lua_State *L) luaL_checktype(L, 1, LUA_TTABLE); // Get parameters - v3f pos, vel, acc; - float expirationtime, size; - bool collisiondetection, vertical, collision_removal; - - struct TileAnimationParams animation; - animation.type = TAT_NONE; - - std::string texture; - - u8 glow; + ParticleParameters p; lua_getfield(L, 1, "pos"); - pos = lua_istable(L, -1) ? check_v3f(L, -1) : v3f(0, 0, 0); + if (lua_istable(L, -1)) + p.pos = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "velocity"); - vel = lua_istable(L, -1) ? check_v3f(L, -1) : v3f(0, 0, 0); + if (lua_istable(L, -1)) + p.vel = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "acceleration"); - acc = lua_istable(L, -1) ? check_v3f(L, -1) : v3f(0, 0, 0); + if (lua_istable(L, -1)) + p.acc = check_v3f(L, -1); lua_pop(L, 1); - expirationtime = getfloatfield_default(L, 1, "expirationtime", 1); - size = getfloatfield_default(L, 1, "size", 1); - collisiondetection = getboolfield_default(L, 1, "collisiondetection", false); - collision_removal = getboolfield_default(L, 1, "collision_removal", false); - vertical = getboolfield_default(L, 1, "vertical", false); + p.expirationtime = getfloatfield_default(L, 1, "expirationtime", + p.expirationtime); + p.size = getfloatfield_default(L, 1, "size", p.size); + p.collisiondetection = getboolfield_default(L, 1, + "collisiondetection", p.collisiondetection); + p.collision_removal = getboolfield_default(L, 1, + "collision_removal", p.collision_removal); + p.object_collision = getboolfield_default(L, 1, + "object_collision", p.object_collision); + p.vertical = getboolfield_default(L, 1, "vertical", p.vertical); lua_getfield(L, 1, "animation"); - animation = read_animation_definition(L, -1); + p.animation = read_animation_definition(L, -1); lua_pop(L, 1); - texture = getstringfield_default(L, 1, "texture", ""); - - glow = getintfield_default(L, 1, "glow", 0); + p.texture = getstringfield_default(L, 1, "texture", p.texture); + p.glow = getintfield_default(L, 1, "glow", p.glow); ClientEvent *event = new ClientEvent(); - event->type = CE_SPAWN_PARTICLE; - event->spawn_particle.pos = new v3f (pos); - event->spawn_particle.vel = new v3f (vel); - event->spawn_particle.acc = new v3f (acc); - event->spawn_particle.expirationtime = expirationtime; - event->spawn_particle.size = size; - event->spawn_particle.collisiondetection = collisiondetection; - event->spawn_particle.collision_removal = collision_removal; - event->spawn_particle.vertical = vertical; - event->spawn_particle.texture = new std::string(texture); - event->spawn_particle.animation = animation; - event->spawn_particle.glow = glow; + event->type = CE_SPAWN_PARTICLE; + event->spawn_particle = new ParticleParameters(p); getClient(L)->pushToEventQueue(event); return 0; @@ -90,94 +78,69 @@ int ModApiParticlesLocal::l_add_particle(lua_State *L) int ModApiParticlesLocal::l_add_particlespawner(lua_State *L) { luaL_checktype(L, 1, LUA_TTABLE); + // Get parameters - u16 amount; - v3f minpos, maxpos, minvel, maxvel, minacc, maxacc; - float time, minexptime, maxexptime, minsize, maxsize; - bool collisiondetection, vertical, collision_removal; + ParticleSpawnerParameters p; - struct TileAnimationParams animation; - animation.type = TAT_NONE; - // TODO: Implement this when there is a way to get an objectref. - // ServerActiveObject *attached = NULL; - std::string texture; - u8 glow; - - amount = getintfield_default(L, 1, "amount", 1); - time = getfloatfield_default(L, 1, "time", 1); + p.amount = getintfield_default(L, 1, "amount", p.amount); + p.time = getfloatfield_default(L, 1, "time", p.time); lua_getfield(L, 1, "minpos"); - minpos = lua_istable(L, -1) ? check_v3f(L, -1) : v3f(0, 0, 0); + if (lua_istable(L, -1)) + p.minpos = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "maxpos"); - maxpos = lua_istable(L, -1) ? check_v3f(L, -1) : v3f(0, 0, 0); + if (lua_istable(L, -1)) + p.maxpos = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "minvel"); - minvel = lua_istable(L, -1) ? check_v3f(L, -1) : v3f(0, 0, 0); + if (lua_istable(L, -1)) + p.minvel = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "maxvel"); - maxvel = lua_istable(L, -1) ? check_v3f(L, -1) : v3f(0, 0, 0); + if (lua_istable(L, -1)) + p.maxvel = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "minacc"); - minacc = lua_istable(L, -1) ? check_v3f(L, -1) : v3f(0, 0, 0); + if (lua_istable(L, -1)) + p.minacc = check_v3f(L, -1); lua_pop(L, 1); lua_getfield(L, 1, "maxacc"); - maxacc = lua_istable(L, -1) ? check_v3f(L, -1) : v3f(0, 0, 0); + if (lua_istable(L, -1)) + p.maxacc = check_v3f(L, -1); lua_pop(L, 1); - minexptime = getfloatfield_default(L, 1, "minexptime", 1); - maxexptime = getfloatfield_default(L, 1, "maxexptime", 1); - minsize = getfloatfield_default(L, 1, "minsize", 1); - maxsize = getfloatfield_default(L, 1, "maxsize", 1); - - collisiondetection = getboolfield_default(L, 1, "collisiondetection", false); - collision_removal = getboolfield_default(L, 1, "collision_removal", false); - vertical = getboolfield_default(L, 1, "vertical", false); + p.minexptime = getfloatfield_default(L, 1, "minexptime", p.minexptime); + p.maxexptime = getfloatfield_default(L, 1, "maxexptime", p.maxexptime); + p.minsize = getfloatfield_default(L, 1, "minsize", p.minsize); + p.maxsize = getfloatfield_default(L, 1, "maxsize", p.maxsize); + p.collisiondetection = getboolfield_default(L, 1, + "collisiondetection", p.collisiondetection); + p.collision_removal = getboolfield_default(L, 1, + "collision_removal", p.collision_removal); + p.object_collision = getboolfield_default(L, 1, + "object_collision", p.object_collision); lua_getfield(L, 1, "animation"); - animation = read_animation_definition(L, -1); + p.animation = read_animation_definition(L, -1); lua_pop(L, 1); - // TODO: Implement this when a way to get an objectref on the client is added -// lua_getfield(L, 1, "attached"); -// if (!lua_isnil(L, -1)) { -// ObjectRef *ref = ObjectRef::checkobject(L, -1); -// lua_pop(L, 1); -// attached = ObjectRef::getobject(ref); -// } - - texture = getstringfield_default(L, 1, "texture", ""); - glow = getintfield_default(L, 1, "glow", 0); + p.vertical = getboolfield_default(L, 1, "vertical", p.vertical); + p.texture = getstringfield_default(L, 1, "texture", p.texture); + p.glow = getintfield_default(L, 1, "glow", p.glow); u64 id = getClient(L)->getParticleManager()->generateSpawnerId(); auto event = new ClientEvent(); - event->type = CE_ADD_PARTICLESPAWNER; - event->add_particlespawner.amount = amount; - event->add_particlespawner.spawntime = time; - event->add_particlespawner.minpos = new v3f (minpos); - event->add_particlespawner.maxpos = new v3f (maxpos); - event->add_particlespawner.minvel = new v3f (minvel); - event->add_particlespawner.maxvel = new v3f (maxvel); - event->add_particlespawner.minacc = new v3f (minacc); - event->add_particlespawner.maxacc = new v3f (maxacc); - event->add_particlespawner.minexptime = minexptime; - event->add_particlespawner.maxexptime = maxexptime; - event->add_particlespawner.minsize = minsize; - event->add_particlespawner.maxsize = maxsize; - event->add_particlespawner.collisiondetection = collisiondetection; - event->add_particlespawner.collision_removal = collision_removal; - event->add_particlespawner.attached_id = 0; - event->add_particlespawner.vertical = vertical; - event->add_particlespawner.texture = new std::string(texture); - event->add_particlespawner.id = id; - event->add_particlespawner.animation = animation; - event->add_particlespawner.glow = glow; + event->type = CE_ADD_PARTICLESPAWNER; + event->add_particlespawner.p = new ParticleSpawnerParameters(p); + event->add_particlespawner.attached_id = 0; + event->add_particlespawner.id = id; getClient(L)->pushToEventQueue(event); lua_pushnumber(L, id); diff --git a/src/server.cpp b/src/server.cpp index 92870f972..68b0131d4 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -1504,17 +1504,15 @@ void Server::SendShowFormspecMessage(session_t peer_id, const std::string &forms // Spawns a particle on peer with peer_id void Server::SendSpawnParticle(session_t peer_id, u16 protocol_version, - v3f pos, v3f velocity, v3f acceleration, - float expirationtime, float size, bool collisiondetection, - bool collision_removal, bool object_collision, - bool vertical, const std::string &texture, - const struct TileAnimationParams &animation, u8 glow) + const ParticleParameters &p) { static thread_local const float radius = g_settings->getS16("max_block_send_distance") * MAP_BLOCKSIZE * BS; if (peer_id == PEER_ID_INEXISTENT) { std::vector clients = m_clients.getClientIDs(); + const v3f pos = p.pos * BS; + const float radius_sq = radius * radius; for (const session_t client_id : clients) { RemotePlayer *player = m_env->getPlayer(client_id); @@ -1526,76 +1524,59 @@ void Server::SendSpawnParticle(session_t peer_id, u16 protocol_version, continue; // Do not send to distant clients - if (sao->getBasePosition().getDistanceFrom(pos * BS) > radius) + if (sao->getBasePosition().getDistanceFromSQ(pos) > radius_sq) continue; - SendSpawnParticle(client_id, player->protocol_version, - pos, velocity, acceleration, - expirationtime, size, collisiondetection, collision_removal, - object_collision, vertical, texture, animation, glow); + SendSpawnParticle(client_id, player->protocol_version, p); } return; } + assert(protocol_version != 0); NetworkPacket pkt(TOCLIENT_SPAWN_PARTICLE, 0, peer_id); - pkt << pos << velocity << acceleration << expirationtime - << size << collisiondetection; - pkt.putLongString(texture); - pkt << vertical; - pkt << collision_removal; - // This is horrible but required (why are there two ways to serialize pkts?) - std::ostringstream os(std::ios_base::binary); - animation.serialize(os, protocol_version); - pkt.putRawString(os.str()); - pkt << glow; - pkt << object_collision; + { + // NetworkPacket and iostreams are incompatible... + std::ostringstream oss(std::ios_base::binary); + p.serialize(oss, protocol_version); + pkt.putRawString(oss.str()); + } Send(&pkt); } // Adds a ParticleSpawner on peer with peer_id void Server::SendAddParticleSpawner(session_t peer_id, u16 protocol_version, - u16 amount, float spawntime, v3f minpos, v3f maxpos, - v3f minvel, v3f maxvel, v3f minacc, v3f maxacc, float minexptime, float maxexptime, - float minsize, float maxsize, bool collisiondetection, bool collision_removal, - bool object_collision, u16 attached_id, bool vertical, const std::string &texture, u32 id, - const struct TileAnimationParams &animation, u8 glow) + const ParticleSpawnerParameters &p, u16 attached_id, u32 id) { if (peer_id == PEER_ID_INEXISTENT) { - // This sucks and should be replaced: std::vector clients = m_clients.getClientIDs(); for (const session_t client_id : clients) { RemotePlayer *player = m_env->getPlayer(client_id); if (!player) continue; SendAddParticleSpawner(client_id, player->protocol_version, - amount, spawntime, minpos, maxpos, - minvel, maxvel, minacc, maxacc, minexptime, maxexptime, - minsize, maxsize, collisiondetection, collision_removal, - object_collision, attached_id, vertical, texture, id, - animation, glow); + p, attached_id, id); } return; } + assert(protocol_version != 0); - NetworkPacket pkt(TOCLIENT_ADD_PARTICLESPAWNER, 0, peer_id); + NetworkPacket pkt(TOCLIENT_ADD_PARTICLESPAWNER, 100, peer_id); - pkt << amount << spawntime << minpos << maxpos << minvel << maxvel - << minacc << maxacc << minexptime << maxexptime << minsize - << maxsize << collisiondetection; + pkt << p.amount << p.time << p.minpos << p.maxpos << p.minvel + << p.maxvel << p.minacc << p.maxacc << p.minexptime << p.maxexptime + << p.minsize << p.maxsize << p.collisiondetection; - pkt.putLongString(texture); + pkt.putLongString(p.texture); - pkt << id << vertical; - pkt << collision_removal; - pkt << attached_id; - // This is horrible but required - std::ostringstream os(std::ios_base::binary); - animation.serialize(os, protocol_version); - pkt.putRawString(os.str()); - pkt << glow; - pkt << object_collision; + pkt << id << p.vertical << p.collision_removal << attached_id; + { + std::ostringstream os(std::ios_base::binary); + p.animation.serialize(os, protocol_version); + pkt.putRawString(os.str()); + } + pkt << p.glow << p.object_collision; Send(&pkt); } @@ -1604,7 +1585,6 @@ void Server::SendDeleteParticleSpawner(session_t peer_id, u32 id) { NetworkPacket pkt(TOCLIENT_DELETE_PARTICLESPAWNER, 4, peer_id); - // Ugly error in this packet pkt << id; if (peer_id != PEER_ID_INEXISTENT) @@ -3365,12 +3345,8 @@ void Server::notifyPlayers(const std::wstring &msg) SendChatMessage(PEER_ID_INEXISTENT, ChatMessage(msg)); } -void Server::spawnParticle(const std::string &playername, v3f pos, - v3f velocity, v3f acceleration, - float expirationtime, float size, bool - collisiondetection, bool collision_removal, bool object_collision, - bool vertical, const std::string &texture, - const struct TileAnimationParams &animation, u8 glow) +void Server::spawnParticle(const std::string &playername, + const ParticleParameters &p) { // m_env will be NULL if the server is initializing if (!m_env) @@ -3386,18 +3362,11 @@ void Server::spawnParticle(const std::string &playername, v3f pos, proto_ver = player->protocol_version; } - SendSpawnParticle(peer_id, proto_ver, pos, velocity, acceleration, - expirationtime, size, collisiondetection, collision_removal, - object_collision, vertical, texture, animation, glow); + SendSpawnParticle(peer_id, proto_ver, p); } -u32 Server::addParticleSpawner(u16 amount, float spawntime, - v3f minpos, v3f maxpos, v3f minvel, v3f maxvel, v3f minacc, v3f maxacc, - float minexptime, float maxexptime, float minsize, float maxsize, - bool collisiondetection, bool collision_removal, bool object_collision, - ServerActiveObject *attached, bool vertical, const std::string &texture, - const std::string &playername, const struct TileAnimationParams &animation, - u8 glow) +u32 Server::addParticleSpawner(const ParticleSpawnerParameters &p, + ServerActiveObject *attached, const std::string &playername) { // m_env will be NULL if the server is initializing if (!m_env) @@ -3417,16 +3386,11 @@ u32 Server::addParticleSpawner(u16 amount, float spawntime, u32 id; if (attached_id == 0) - id = m_env->addParticleSpawner(spawntime); + id = m_env->addParticleSpawner(p.time); else - id = m_env->addParticleSpawner(spawntime, attached_id); - - SendAddParticleSpawner(peer_id, proto_ver, amount, spawntime, - minpos, maxpos, minvel, maxvel, minacc, maxacc, - minexptime, maxexptime, minsize, maxsize, collisiondetection, - collision_removal, object_collision, attached_id, vertical, - texture, id, animation, glow); + id = m_env->addParticleSpawner(p.time, attached_id); + SendAddParticleSpawner(peer_id, proto_ver, p, attached_id, id); return id; } diff --git a/src/server.h b/src/server.h index 7a1de9370..27943cc29 100644 --- a/src/server.h +++ b/src/server.h @@ -27,7 +27,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "content/mods.h" #include "inventorymanager.h" #include "content/subgames.h" -#include "tileanimation.h" // struct TileAnimationParams +#include "tileanimation.h" // TileAnimationParams +#include "particles.h" // ParticleParams #include "network/peerhandler.h" #include "network/address.h" #include "util/numeric.h" @@ -226,24 +227,12 @@ public: void notifyPlayer(const char *name, const std::wstring &msg); void notifyPlayers(const std::wstring &msg); - void spawnParticle(const std::string &playername, - v3f pos, v3f velocity, v3f acceleration, - float expirationtime, float size, - bool collisiondetection, bool collision_removal, bool object_collision, - bool vertical, const std::string &texture, - const struct TileAnimationParams &animation, u8 glow); - u32 addParticleSpawner(u16 amount, float spawntime, - v3f minpos, v3f maxpos, - v3f minvel, v3f maxvel, - v3f minacc, v3f maxacc, - float minexptime, float maxexptime, - float minsize, float maxsize, - bool collisiondetection, bool collision_removal, bool object_collision, - ServerActiveObject *attached, - bool vertical, const std::string &texture, - const std::string &playername, const struct TileAnimationParams &animation, - u8 glow); + void spawnParticle(const std::string &playername, + const ParticleParameters &p); + + u32 addParticleSpawner(const ParticleSpawnerParameters &p, + ServerActiveObject *attached, const std::string &playername); void deleteParticleSpawner(const std::string &playername, u32 id); @@ -453,26 +442,13 @@ private: // Adds a ParticleSpawner on peer with peer_id (PEER_ID_INEXISTENT == all) void SendAddParticleSpawner(session_t peer_id, u16 protocol_version, - u16 amount, float spawntime, - v3f minpos, v3f maxpos, - v3f minvel, v3f maxvel, - v3f minacc, v3f maxacc, - float minexptime, float maxexptime, - float minsize, float maxsize, - bool collisiondetection, bool collision_removal, bool object_collision, - u16 attached_id, - bool vertical, const std::string &texture, u32 id, - const struct TileAnimationParams &animation, u8 glow); + const ParticleSpawnerParameters &p, u16 attached_id, u32 id); void SendDeleteParticleSpawner(session_t peer_id, u32 id); // Spawns particle on peer with peer_id (PEER_ID_INEXISTENT == all) void SendSpawnParticle(session_t peer_id, u16 protocol_version, - v3f pos, v3f velocity, v3f acceleration, - float expirationtime, float size, - bool collisiondetection, bool collision_removal, bool object_collision, - bool vertical, const std::string &texture, - const struct TileAnimationParams &animation, u8 glow); + const ParticleParameters &p); void SendActiveObjectRemoveAdd(RemoteClient *client, PlayerSAO *playersao); void SendActiveObjectMessages(session_t peer_id, const std::string &datas, From 7ab0c0662a95eb504665c940f92c2fde895929be Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Fri, 22 May 2020 14:19:07 +0200 Subject: [PATCH 218/424] MacOS: Fix environ not being found --- src/porting.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/porting.cpp b/src/porting.cpp index ef1640467..29af62f7d 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -49,6 +49,11 @@ with this program; if not, write to the Free Software Foundation, Inc., #if defined(__ANDROID__) #include "porting_android.h" #endif +#if defined(__APPLE__) + // For _NSGetEnviron() + // Related: https://gitlab.haskell.org/ghc/ghc/issues/2458 + #include +#endif #include "config.h" #include "debug.h" @@ -718,7 +723,8 @@ bool openURL(const std::string &url) return true; #elif defined(__APPLE__) const char *argv[] = {"open", url.c_str(), NULL}; - return posix_spawnp(NULL, "open", NULL, NULL, (char**)argv, environ) == 0; + return posix_spawnp(NULL, "open", NULL, NULL, (char**)argv, + (*_NSGetEnviron())) == 0; #else const char *argv[] = {"xdg-open", url.c_str(), NULL}; return posix_spawnp(NULL, "xdg-open", NULL, NULL, (char**)argv, environ) == 0; From e79bc40c0a5312baf4e8c3e33048d50b41b4a2ff Mon Sep 17 00:00:00 2001 From: Lejo1 Date: Wed, 20 May 2020 21:54:52 +0200 Subject: [PATCH 219/424] Check for valid base64 before decoding (#9904) --- doc/lua_api.txt | 2 +- src/script/lua_api/l_util.cpp | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 0101bd4cf..bd0cb8acb 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -5449,7 +5449,7 @@ Misc. * Example: `minetest.rgba(10, 20, 30, 40)`, returns `"#0A141E28"` * `minetest.encode_base64(string)`: returns string encoded in base64 * Encodes a string in base64. -* `minetest.decode_base64(string)`: returns string +* `minetest.decode_base64(string)`: returns string or nil for invalid base64 * Decodes a string encoded in base64. * `minetest.is_protected(pos, name)`: returns boolean * Returning `true` restricts the player `name` from modifying (i.e. digging, diff --git a/src/script/lua_api/l_util.cpp b/src/script/lua_api/l_util.cpp index 28ee39fc8..cd63e20c2 100644 --- a/src/script/lua_api/l_util.cpp +++ b/src/script/lua_api/l_util.cpp @@ -318,9 +318,13 @@ int ModApiUtil::l_decode_base64(lua_State *L) NO_MAP_LOCK_REQUIRED; size_t size; - const char *data = luaL_checklstring(L, 1, &size); + const char *d = luaL_checklstring(L, 1, &size); + const std::string data = std::string(d, size); - std::string out = base64_decode(std::string(data, size)); + if (!base64_is_valid(data)) + return 0; + + std::string out = base64_decode(data); lua_pushlstring(L, out.data(), out.size()); return 1; From 037422fdba9a47bd538480988fbf8aad67d66c85 Mon Sep 17 00:00:00 2001 From: Awkor Date: Sat, 23 May 2020 13:23:05 +0200 Subject: [PATCH 220/424] Modernize include guards and add missing ones (#9898) --- src/client/hud.h | 4 +--- src/client/render/factory.h | 2 ++ src/gui/guiButtonImage.h | 2 ++ src/gui/guiButtonItemImage.h | 2 ++ src/hud.h | 4 +--- src/script/lua_api/l_particles_local.h | 2 ++ src/util/md32_common.h | 2 ++ 7 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/client/hud.h b/src/client/hud.h index 6274b1a83..e2abf326c 100644 --- a/src/client/hud.h +++ b/src/client/hud.h @@ -18,8 +18,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef CLIENT_HUD_HEADER -#define CLIENT_HUD_HEADER +#pragma once #include #include @@ -147,4 +146,3 @@ void drawItemStack( const v3s16 &angle, const v3s16 &rotation_speed); -#endif diff --git a/src/client/render/factory.h b/src/client/render/factory.h index 22738404a..e3339a836 100644 --- a/src/client/render/factory.h +++ b/src/client/render/factory.h @@ -18,6 +18,8 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#pragma once + #include #include "core.h" diff --git a/src/gui/guiButtonImage.h b/src/gui/guiButtonImage.h index a948d772b..59a25b4f0 100644 --- a/src/gui/guiButtonImage.h +++ b/src/gui/guiButtonImage.h @@ -17,6 +17,8 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#pragma once + #include "guiButton.h" #include "IGUIButton.h" diff --git a/src/gui/guiButtonItemImage.h b/src/gui/guiButtonItemImage.h index 9cd0f6188..aad923bda 100644 --- a/src/gui/guiButtonItemImage.h +++ b/src/gui/guiButtonItemImage.h @@ -17,6 +17,8 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#pragma once + #include "guiButton.h" #include "IGUIButton.h" diff --git a/src/hud.h b/src/hud.h index bab420ed2..e015baec1 100644 --- a/src/hud.h +++ b/src/hud.h @@ -18,8 +18,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef HUD_HEADER -#define HUD_HEADER +#pragma once #include "irrlichttypes_extrabloated.h" #include @@ -101,4 +100,3 @@ extern const EnumString es_HudElementType[]; extern const EnumString es_HudElementStat[]; extern const EnumString es_HudBuiltinElement[]; -#endif diff --git a/src/script/lua_api/l_particles_local.h b/src/script/lua_api/l_particles_local.h index 5dff153b3..d8bb2b1c6 100644 --- a/src/script/lua_api/l_particles_local.h +++ b/src/script/lua_api/l_particles_local.h @@ -18,6 +18,8 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#pragma once + #include "lua_api/l_base.h" class ModApiParticlesLocal : public ModApiBase diff --git a/src/util/md32_common.h b/src/util/md32_common.h index 085d1d7a5..a4c2099c9 100644 --- a/src/util/md32_common.h +++ b/src/util/md32_common.h @@ -109,6 +109,8 @@ * */ +#pragma once + #if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN) # error "DATA_ORDER must be defined!" #endif From 15ba75e4cf1d1b8ceaa9d8ce33dcfdd7dbe80741 Mon Sep 17 00:00:00 2001 From: sorcerykid Date: Sat, 23 May 2020 06:24:06 -0500 Subject: [PATCH 221/424] Add on_authplayer callback and 'last_login' to on_joinplayer (#9574) Replace on_auth_fail callback with more versatile on_authplayer Better clarify account login process in Lua API documentation Change initial timestamp for newly registered accounts to -1 --- builtin/game/auth.lua | 3 +- builtin/game/chat.lua | 2 +- builtin/game/deprecated.lua | 16 +++++++++++ builtin/game/register.lua | 2 +- doc/lua_api.txt | 20 +++++++------ src/network/serverpackethandler.cpp | 44 +++++++++++++++-------------- src/script/cpp_api/s_player.cpp | 19 +++++++++---- src/script/cpp_api/s_player.h | 4 +-- src/script/cpp_api/s_server.cpp | 14 ++++++--- src/script/cpp_api/s_server.h | 3 +- 10 files changed, 81 insertions(+), 46 deletions(-) diff --git a/builtin/game/auth.lua b/builtin/game/auth.lua index 7aedfc82e..fc061666c 100644 --- a/builtin/game/auth.lua +++ b/builtin/game/auth.lua @@ -41,7 +41,6 @@ core.builtin_auth_handler = { return { password = auth_entry.password, privileges = privileges, - -- Is set to nil if unknown last_login = auth_entry.last_login, } end, @@ -53,7 +52,7 @@ core.builtin_auth_handler = { name = name, password = password, privileges = core.string_to_privs(core.settings:get("default_privs")), - last_login = os.time(), + last_login = -1, -- Defer login time calculation until record_login (called by on_joinplayer) }) end, delete_auth = function(name) diff --git a/builtin/game/chat.lua b/builtin/game/chat.lua index b9f84e522..aae811794 100644 --- a/builtin/game/chat.lua +++ b/builtin/game/chat.lua @@ -1068,7 +1068,7 @@ core.register_chatcommand("last-login", { param = name end local pauth = core.get_auth_handler().get_auth(param) - if pauth and pauth.last_login then + if pauth and pauth.last_login and pauth.last_login ~= -1 then -- Time in UTC, ISO 8601 format return true, "Last login time was " .. os.date("!%Y-%m-%dT%H:%M:%SZ", pauth.last_login) diff --git a/builtin/game/deprecated.lua b/builtin/game/deprecated.lua index 73e105eb8..20f0482eb 100644 --- a/builtin/game/deprecated.lua +++ b/builtin/game/deprecated.lua @@ -70,3 +70,19 @@ core.setting_get = setting_proxy("get") core.setting_setbool = setting_proxy("set_bool") core.setting_getbool = setting_proxy("get_bool") core.setting_save = setting_proxy("write") + +-- +-- core.register_on_auth_fail +-- + +function core.register_on_auth_fail(func) + core.log("deprecated", "core.register_on_auth_fail " .. + "is obsolete and should be replaced by " .. + "core.register_on_authplayer instead.") + + core.register_on_authplayer(function (player_name, ip, is_success) + if not is_success then + func(player_name, ip) + end + end) +end diff --git a/builtin/game/register.lua b/builtin/game/register.lua index eb6c2897c..1034d4f2b 100644 --- a/builtin/game/register.lua +++ b/builtin/game/register.lua @@ -607,9 +607,9 @@ core.registered_on_item_eats, core.register_on_item_eat = make_registration() core.registered_on_punchplayers, core.register_on_punchplayer = make_registration() core.registered_on_priv_grant, core.register_on_priv_grant = make_registration() core.registered_on_priv_revoke, core.register_on_priv_revoke = make_registration() +core.registered_on_authplayers, core.register_on_authplayer = make_registration() core.registered_can_bypass_userlimit, core.register_can_bypass_userlimit = make_registration() core.registered_on_modchannel_message, core.register_on_modchannel_message = make_registration() -core.registered_on_auth_fail, core.register_on_auth_fail = make_registration() core.registered_on_player_inventory_actions, core.register_on_player_inventory_action = make_registration() core.registered_allow_player_inventory_actions, core.register_allow_player_inventory_action = make_registration() diff --git a/doc/lua_api.txt b/doc/lua_api.txt index bd0cb8acb..26061eccb 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -4374,7 +4374,7 @@ Call these functions only at load time! * Called after generating a piece of world. Modifying nodes inside the area is a bit faster than usually. * `minetest.register_on_newplayer(function(ObjectRef))` - * Called after a new player has been created + * Called when a new player enters the world for the first time * `minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage))` * Called when a player is punched * Note: This callback is invoked even if the punched player is dead. @@ -4415,19 +4415,23 @@ Call these functions only at load time! * Called _before_ repositioning of player occurs * return true in func to disable regular player placement * `minetest.register_on_prejoinplayer(function(name, ip))` - * Called before a player joins the game - * If it returns a string, the player is disconnected with that string as + * Called when a client connects to the server, prior to authentication + * If it returns a string, the client is disconnected with that string as reason. -* `minetest.register_on_joinplayer(function(ObjectRef))` +* `minetest.register_on_joinplayer(function(ObjectRef, last_login))` * Called when a player joins the game + * `last_login`: The timestamp of the previous login, or nil if player is new * `minetest.register_on_leaveplayer(function(ObjectRef, timed_out))` * Called when a player leaves the game * `timed_out`: True for timeout, false for other reasons. +* `minetest.register_on_authplayer(function(name, ip, is_success))` + * Called when a client attempts to log into an account. + * `name`: The name of the account being authenticated. + * `ip`: The IP address of the client + * `is_success`: Whether the client was successfully authenticated + * For newly registered accounts, `is_success` will always be true * `minetest.register_on_auth_fail(function(name, ip))` - * Called when a client attempts to log into an account but supplies the - wrong password. - * `ip`: The IP address of the client. - * `name`: The account the client attempted to log into. + * Deprecated: use `minetest.register_on_authplayer(name, ip, is_success)` instead. * `minetest.register_on_cheat(function(ObjectRef, cheat))` * Called when a player cheats * `cheat`: `{type=}`, where `` is one of: diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index 2fa9d4196..fed3b6f85 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -409,9 +409,12 @@ void Server::handleCommand_ClientReady(NetworkPacket* pkt) // (u16) 1 + std::string represents a pseudo vector serialization representation notice_pkt << (u8) PLAYER_LIST_ADD << (u16) 1 << std::string(playersao->getPlayer()->getName()); m_clients.sendToAll(¬ice_pkt); - m_clients.event(peer_id, CSE_SetClientReady); - m_script->on_joinplayer(playersao); + + s64 last_login; + m_script->getAuth(playersao->getPlayer()->getName(), nullptr, nullptr, &last_login); + m_script->on_joinplayer(playersao, last_login); + // Send shutdown timer if shutdown has been scheduled if (m_shutdown_state.isTimerRunning()) { SendChatMessage(peer_id, m_shutdown_state.getShutdownTimerMessage()); @@ -1512,6 +1515,7 @@ void Server::handleCommand_FirstSrp(NetworkPacket* pkt) initial_ver_key = encode_srp_verifier(verification_key, salt); m_script->createAuth(playername, initial_ver_key); + m_script->on_authplayer(playername, addr_s, true); acceptAuth(peer_id, false); } else { @@ -1648,24 +1652,25 @@ void Server::handleCommand_SrpBytesM(NetworkPacket* pkt) session_t peer_id = pkt->getPeerId(); RemoteClient *client = getClient(peer_id, CS_Invalid); ClientState cstate = client->getState(); + std::string addr_s = getPeerAddress(pkt->getPeerId()).serializeString(); + std::string playername = client->getName(); bool wantSudo = (cstate == CS_Active); verbosestream << "Server: Received TOCLIENT_SRP_BYTES_M." << std::endl; if (!((cstate == CS_HelloSent) || (cstate == CS_Active))) { - actionstream << "Server: got SRP _M packet in wrong state " << cstate << - " from " << getPeerAddress(peer_id).serializeString() << - ". Ignoring." << std::endl; + actionstream << "Server: got SRP _M packet in wrong state " + << cstate << " from " << addr_s + << ". Ignoring." << std::endl; return; } if (client->chosen_mech != AUTH_MECHANISM_SRP && client->chosen_mech != AUTH_MECHANISM_LEGACY_PASSWORD) { - actionstream << "Server: got SRP _M packet, while auth is going on " - "with mech " << client->chosen_mech << " from " << - getPeerAddress(peer_id).serializeString() << - " (wantSudo=" << wantSudo << "). Denying." << std::endl; + actionstream << "Server: got SRP _M packet, while auth" + << "is going on with mech " << client->chosen_mech << " from " + << addr_s << " (wantSudo=" << wantSudo << "). Denying." << std::endl; if (wantSudo) { DenySudoAccess(peer_id); return; @@ -1680,9 +1685,8 @@ void Server::handleCommand_SrpBytesM(NetworkPacket* pkt) if (srp_verifier_get_session_key_length((SRPVerifier *) client->auth_data) != bytes_M.size()) { - actionstream << "Server: User " << client->getName() << " at " << - getPeerAddress(peer_id).serializeString() << - " sent bytes_M with invalid length " << bytes_M.size() << std::endl; + actionstream << "Server: User " << playername << " at " << addr_s + << " sent bytes_M with invalid length " << bytes_M.size() << std::endl; DenyAccess(peer_id, SERVER_ACCESSDENIED_UNEXPECTED_DATA); return; } @@ -1694,24 +1698,21 @@ void Server::handleCommand_SrpBytesM(NetworkPacket* pkt) if (!bytes_HAMK) { if (wantSudo) { - actionstream << "Server: User " << client->getName() << " at " << - getPeerAddress(peer_id).serializeString() << - " tried to change their password, but supplied wrong (SRP) " - "password for authentication." << std::endl; + actionstream << "Server: User " << playername << " at " << addr_s + << " tried to change their password, but supplied wrong" + << " (SRP) password for authentication." << std::endl; DenySudoAccess(peer_id); return; } - std::string ip = getPeerAddress(peer_id).serializeString(); - actionstream << "Server: User " << client->getName() << " at " << ip << - " supplied wrong password (auth mechanism: SRP)." << std::endl; - m_script->on_auth_failure(client->getName(), ip); + actionstream << "Server: User " << playername << " at " << addr_s + << " supplied wrong password (auth mechanism: SRP)." << std::endl; + m_script->on_authplayer(playername, addr_s, false); DenyAccess(peer_id, SERVER_ACCESSDENIED_WRONG_PASSWORD); return; } if (client->create_player_on_auth_success) { - std::string playername = client->getName(); m_script->createAuth(playername, client->enc_pwd); std::string checkpwd; // not used, but needed for passing something @@ -1725,6 +1726,7 @@ void Server::handleCommand_SrpBytesM(NetworkPacket* pkt) client->create_player_on_auth_success = false; } + m_script->on_authplayer(playername, addr_s, true); acceptAuth(peer_id, wantSudo); } diff --git a/src/script/cpp_api/s_player.cpp b/src/script/cpp_api/s_player.cpp index df67ea00c..712120c61 100644 --- a/src/script/cpp_api/s_player.cpp +++ b/src/script/cpp_api/s_player.cpp @@ -147,7 +147,7 @@ bool ScriptApiPlayer::can_bypass_userlimit(const std::string &name, const std::s return lua_toboolean(L, -1); } -void ScriptApiPlayer::on_joinplayer(ServerActiveObject *player) +void ScriptApiPlayer::on_joinplayer(ServerActiveObject *player, s64 last_login) { SCRIPTAPI_PRECHECKHEADER @@ -156,7 +156,11 @@ void ScriptApiPlayer::on_joinplayer(ServerActiveObject *player) lua_getfield(L, -1, "registered_on_joinplayers"); // Call callbacks objectrefGetOrCreate(L, player); - runCallbacks(1, RUN_CALLBACKS_MODE_FIRST); + if (last_login != -1) + lua_pushinteger(L, last_login); + else + lua_pushnil(L); + runCallbacks(2, RUN_CALLBACKS_MODE_FIRST); } void ScriptApiPlayer::on_leaveplayer(ServerActiveObject *player, @@ -216,16 +220,19 @@ void ScriptApiPlayer::on_playerReceiveFields(ServerActiveObject *player, runCallbacks(3, RUN_CALLBACKS_MODE_OR_SC); } -void ScriptApiPlayer::on_auth_failure(const std::string &name, const std::string &ip) +void ScriptApiPlayer::on_authplayer(const std::string &name, const std::string &ip, bool is_success) { SCRIPTAPI_PRECHECKHEADER - // Get core.registered_on_auth_failure + // Get core.registered_on_authplayers lua_getglobal(L, "core"); - lua_getfield(L, -1, "registered_on_auth_fail"); + lua_getfield(L, -1, "registered_on_authplayers"); + + // Call callbacks lua_pushstring(L, name.c_str()); lua_pushstring(L, ip.c_str()); - runCallbacks(2, RUN_CALLBACKS_MODE_FIRST); + lua_pushboolean(L, is_success); + runCallbacks(3, RUN_CALLBACKS_MODE_FIRST); } void ScriptApiPlayer::pushMoveArguments( diff --git a/src/script/cpp_api/s_player.h b/src/script/cpp_api/s_player.h index 7ca3d8f30..a337f975b 100644 --- a/src/script/cpp_api/s_player.h +++ b/src/script/cpp_api/s_player.h @@ -41,7 +41,7 @@ public: bool on_prejoinplayer(const std::string &name, const std::string &ip, std::string *reason); bool can_bypass_userlimit(const std::string &name, const std::string &ip); - void on_joinplayer(ServerActiveObject *player); + void on_joinplayer(ServerActiveObject *player, s64 last_login); void on_leaveplayer(ServerActiveObject *player, bool timeout); void on_cheat(ServerActiveObject *player, const std::string &cheat_type); bool on_punchplayer(ServerActiveObject *player, ServerActiveObject *hitter, @@ -51,7 +51,7 @@ public: const PlayerHPChangeReason &reason); void on_playerReceiveFields(ServerActiveObject *player, const std::string &formname, const StringMap &fields); - void on_auth_failure(const std::string &name, const std::string &ip); + void on_authplayer(const std::string &name, const std::string &ip, bool is_success); // Player inventory callbacks // Return number of accepted items to be moved diff --git a/src/script/cpp_api/s_server.cpp b/src/script/cpp_api/s_server.cpp index 1ce2f9d45..96cb28b28 100644 --- a/src/script/cpp_api/s_server.cpp +++ b/src/script/cpp_api/s_server.cpp @@ -23,7 +23,8 @@ with this program; if not, write to the Free Software Foundation, Inc., bool ScriptApiServer::getAuth(const std::string &playername, std::string *dst_password, - std::set *dst_privs) + std::set *dst_privs, + s64 *dst_last_login) { SCRIPTAPI_PRECHECKHEADER @@ -43,8 +44,7 @@ bool ScriptApiServer::getAuth(const std::string &playername, luaL_checktype(L, -1, LUA_TTABLE); std::string password; - bool found = getstringfield(L, -1, "password", password); - if (!found) + if (!getstringfield(L, -1, "password", password)) throw LuaError("Authentication handler didn't return password"); if (dst_password) *dst_password = password; @@ -54,7 +54,13 @@ bool ScriptApiServer::getAuth(const std::string &playername, throw LuaError("Authentication handler didn't return privilege table"); if (dst_privs) readPrivileges(-1, *dst_privs); - lua_pop(L, 1); + lua_pop(L, 1); // Remove key from privs table + + s64 last_login; + if(!getintfield(L, -1, "last_login", last_login)) + throw LuaError("Authentication handler didn't return last_login"); + if (dst_last_login) + *dst_last_login = (s64)last_login; return true; } diff --git a/src/script/cpp_api/s_server.h b/src/script/cpp_api/s_server.h index a4cede84d..d8639cba7 100644 --- a/src/script/cpp_api/s_server.h +++ b/src/script/cpp_api/s_server.h @@ -43,7 +43,8 @@ public: /* auth */ bool getAuth(const std::string &playername, std::string *dst_password, - std::set *dst_privs); + std::set *dst_privs, + s64 *dst_last_login = nullptr); void createAuth(const std::string &playername, const std::string &password); bool setPassword(const std::string &playername, From 9d6e7e48d6fb1daff8fedcb2f111164bef61f1e7 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 22 May 2020 14:17:03 +0200 Subject: [PATCH 222/424] Implement spawning particles with node texture appearance --- build/android/native/jni/Android.mk | 1 + doc/lua_api.txt | 30 +++++++++- src/client/particles.cpp | 75 ++++++++++++++++++------ src/client/particles.h | 4 +- src/network/clientpackethandler.cpp | 10 ++++ src/particles.cpp | 10 ++++ src/particles.h | 6 ++ src/script/lua_api/l_particles.cpp | 14 +++++ src/script/lua_api/l_particles_local.cpp | 14 +++++ src/server.cpp | 1 + 10 files changed, 145 insertions(+), 20 deletions(-) diff --git a/build/android/native/jni/Android.mk b/build/android/native/jni/Android.mk index a5cb099e6..140947e6a 100644 --- a/build/android/native/jni/Android.mk +++ b/build/android/native/jni/Android.mk @@ -164,6 +164,7 @@ LOCAL_SRC_FILES := \ ../../../src/noise.cpp \ ../../../src/objdef.cpp \ ../../../src/object_properties.cpp \ + ../../../src/particles.cpp \ ../../../src/pathfinder.cpp \ ../../../src/player.cpp \ ../../../src/porting.cpp \ diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 26061eccb..5b3f61c99 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -7835,6 +7835,8 @@ Used by `minetest.add_particle`. size = 1, -- Scales the visual size of the particle texture. + -- If `node` is set, size can be set to 0 to spawn a randomly-sized + -- particle (just like actual node dig particles). collisiondetection = false, -- If true collides with `walkable` nodes and, depending on the @@ -7853,6 +7855,7 @@ Used by `minetest.add_particle`. -- If true faces player using y axis only texture = "image.png", + -- The texture of the particle playername = "singleplayer", -- Optional, if specified spawns particle only on the player's client @@ -7863,6 +7866,17 @@ Used by `minetest.add_particle`. glow = 0 -- Optional, specify particle self-luminescence in darkness. -- Values 0-14. + + node = {name = "ignore", param2 = 0}, + -- Optional, if specified the particle will have the same appearance as + -- node dig particles for the given node. + -- `texture` and `animation` will be ignored if this is set. + + node_tile = 0, + -- Optional, only valid in combination with `node` + -- If set to a valid number 1-6, specifies the tile from which the + -- particle texture is picked. + -- Otherwise, the default behavior is used. (currently: any random tile) } @@ -7892,7 +7906,9 @@ Used by `minetest.add_particlespawner`. maxsize = 1, -- The particles' properties are random values between the min and max -- values. - -- pos, velocity, acceleration, expirationtime, size + -- applies to: pos, velocity, acceleration, expirationtime, size + -- If `node` is set, min and maxsize can be set to 0 to spawn + -- randomly-sized particles (just like actual node dig particles). collisiondetection = false, -- If true collide with `walkable` nodes and, depending on the @@ -7915,6 +7931,7 @@ Used by `minetest.add_particlespawner`. -- If true face player using y axis only texture = "image.png", + -- The texture of the particle playername = "singleplayer", -- Optional, if specified spawns particles only on the player's client @@ -7925,6 +7942,17 @@ Used by `minetest.add_particlespawner`. glow = 0 -- Optional, specify particle self-luminescence in darkness. -- Values 0-14. + + node = {name = "ignore", param2 = 0}, + -- Optional, if specified the particles will have the same appearance as + -- node dig particles for the given node. + -- `texture` and `animation` will be ignored if this is set. + + node_tile = 0, + -- Optional, only valid in combination with `node` + -- If set to a valid number 1-6, specifies the tile from which the + -- particle texture is picked. + -- Otherwise, the default behavior is used. (currently: any random tile) } `HTTPRequest` definition diff --git a/src/client/particles.cpp b/src/client/particles.cpp index c2e751b4f..c78a3e71a 100644 --- a/src/client/particles.cpp +++ b/src/client/particles.cpp @@ -304,18 +304,37 @@ void ParticleSpawner::spawnParticle(ClientEnvironment *env, float radius, } pp.expirationtime = random_f32(p.minexptime, p.maxexptime); - pp.size = random_f32(p.minsize, p.maxsize); - p.copyCommon(pp); + video::ITexture *texture; + v2f texpos, texsize; + video::SColor color(0xFFFFFFFF); + + if (p.node.getContent() != CONTENT_IGNORE) { + const ContentFeatures &f = + m_particlemanager->m_env->getGameDef()->ndef()->get(p.node); + if (!ParticleManager::getNodeParticleParams(p.node, f, pp, &texture, + texpos, texsize, &color, p.node_tile)) + return; + } else { + texture = m_texture; + texpos = v2f(0.0f, 0.0f); + texsize = v2f(1.0f, 1.0f); + } + + // Allow keeping default random size + if (p.maxsize > 0.0f) + pp.size = random_f32(p.minsize, p.maxsize); + m_particlemanager->addParticle(new Particle( m_gamedef, m_player, env, pp, - m_texture, - v2f(0.0, 0.0), - v2f(1.0, 1.0) + texture, + texpos, + texsize, + color )); } @@ -460,17 +479,35 @@ void ParticleManager::handleParticleEvent(ClientEvent *event, Client *client, break; } case CE_SPAWN_PARTICLE: { - const ParticleParameters &p = *event->spawn_particle; - video::ITexture *texture = - client->tsrc()->getTextureForMesh(p.texture); + ParticleParameters &p = *event->spawn_particle; - Particle *toadd = new Particle(client, player, m_env, - p, - texture, - v2f(0.0, 0.0), - v2f(1.0, 1.0)); + video::ITexture *texture; + v2f texpos, texsize; + video::SColor color(0xFFFFFFFF); - addParticle(toadd); + f32 oldsize = p.size; + + if (p.node.getContent() != CONTENT_IGNORE) { + const ContentFeatures &f = m_env->getGameDef()->ndef()->get(p.node); + if (!getNodeParticleParams(p.node, f, p, &texture, texpos, + texsize, &color, p.node_tile)) + texture = nullptr; + } else { + texture = client->tsrc()->getTextureForMesh(p.texture); + texpos = v2f(0.0f, 0.0f); + texsize = v2f(1.0f, 1.0f); + } + + // Allow keeping default random size + if (oldsize > 0.0f) + p.size = oldsize; + + if (texture) { + Particle *toadd = new Particle(client, player, m_env, + p, texture, texpos, texsize, color); + + addParticle(toadd); + } delete event->spawn_particle; break; @@ -480,15 +517,19 @@ void ParticleManager::handleParticleEvent(ClientEvent *event, Client *client, } bool ParticleManager::getNodeParticleParams(const MapNode &n, - const ContentFeatures &f, ParticleParameters &p, - video::ITexture **texture, v2f &texpos, v2f &texsize, video::SColor *color) + const ContentFeatures &f, ParticleParameters &p, video::ITexture **texture, + v2f &texpos, v2f &texsize, video::SColor *color, u8 tilenum) { // No particles for "airlike" nodes if (f.drawtype == NDT_AIRLIKE) return false; // Texture - u8 texid = rand() % 6; + u8 texid; + if (tilenum > 0 && tilenum <= 6) + texid = tilenum - 1; + else + texid = rand() % 6; const TileLayer &tile = f.tiles[texid].layers[0]; p.animation.type = TAT_NONE; diff --git a/src/client/particles.h b/src/client/particles.h index 7dda0e1b1..2011f0262 100644 --- a/src/client/particles.h +++ b/src/client/particles.h @@ -42,7 +42,7 @@ class Particle : public scene::ISceneNode video::ITexture *texture, v2f texpos, v2f texsize, - video::SColor color = video::SColor(0xFFFFFFFF) + video::SColor color ); ~Particle() = default; @@ -171,7 +171,7 @@ public: protected: static bool getNodeParticleParams(const MapNode &n, const ContentFeatures &f, ParticleParameters &p, video::ITexture **texture, v2f &texpos, - v2f &texsize, video::SColor *color); + v2f &texsize, video::SColor *color, u8 tilenum = 0); void addParticle(Particle* toadd); diff --git a/src/network/clientpackethandler.cpp b/src/network/clientpackethandler.cpp index 054e60c3c..e000acc92 100644 --- a/src/network/clientpackethandler.cpp +++ b/src/network/clientpackethandler.cpp @@ -1003,6 +1003,16 @@ void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt) p.glow = readU8(is); p.object_collision = readU8(is); + // This is kinda awful + do { + u16 tmp_param0 = readU16(is); + if (is.eof()) + break; + p.node.param0 = tmp_param0; + p.node.param2 = readU8(is); + p.node_tile = readU8(is); + } while (0); + auto event = new ClientEvent(); event->type = CE_ADD_PARTICLESPAWNER; event->add_particlespawner.p = new ParticleSpawnerParameters(p); diff --git a/src/particles.cpp b/src/particles.cpp index 711d189f6..fd81238dc 100644 --- a/src/particles.cpp +++ b/src/particles.cpp @@ -34,6 +34,9 @@ void ParticleParameters::serialize(std::ostream &os, u16 protocol_ver) const animation.serialize(os, 6); /* NOT the protocol ver */ writeU8(os, glow); writeU8(os, object_collision); + writeU16(os, node.param0); + writeU8(os, node.param2); + writeU8(os, node_tile); } void ParticleParameters::deSerialize(std::istream &is, u16 protocol_ver) @@ -50,4 +53,11 @@ void ParticleParameters::deSerialize(std::istream &is, u16 protocol_ver) animation.deSerialize(is, 6); /* NOT the protocol ver */ glow = readU8(is); object_collision = readU8(is); + // This is kinda awful + u16 tmp_param0 = readU16(is); + if (is.eof()) + return; + node.param0 = tmp_param0; + node.param2 = readU8(is); + node_tile = readU8(is); } diff --git a/src/particles.h b/src/particles.h index 659c1249f..6f518b771 100644 --- a/src/particles.h +++ b/src/particles.h @@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include "irrlichttypes_bloated.h" #include "tileanimation.h" +#include "mapnode.h" // This file defines the particle-related structures that both the server and // client need. The ParticleManager and rendering is in client/particles.h @@ -34,9 +35,12 @@ struct CommonParticleParams { std::string texture; struct TileAnimationParams animation; u8 glow = 0; + MapNode node; + u8 node_tile = 0; CommonParticleParams() { animation.type = TAT_NONE; + node.setContent(CONTENT_IGNORE); } /* This helper is useful for copying params from @@ -49,6 +53,8 @@ struct CommonParticleParams { to.texture = texture; to.animation = animation; to.glow = glow; + to.node = node; + to.node_tile = node_tile; } }; diff --git a/src/script/lua_api/l_particles.cpp b/src/script/lua_api/l_particles.cpp index 7680aa17b..a51c4fe20 100644 --- a/src/script/lua_api/l_particles.cpp +++ b/src/script/lua_api/l_particles.cpp @@ -111,6 +111,13 @@ int ModApiParticles::l_add_particle(lua_State *L) p.texture = getstringfield_default(L, 1, "texture", p.texture); p.glow = getintfield_default(L, 1, "glow", p.glow); + lua_getfield(L, 1, "node"); + if (lua_istable(L, -1)) + p.node = readnode(L, -1, getGameDef(L)->ndef()); + lua_pop(L, 1); + + p.node_tile = getintfield_default(L, 1, "node_tile", p.node_tile); + playername = getstringfield_default(L, 1, "playername", ""); } @@ -231,6 +238,13 @@ int ModApiParticles::l_add_particlespawner(lua_State *L) p.texture = getstringfield_default(L, 1, "texture", p.texture); playername = getstringfield_default(L, 1, "playername", ""); p.glow = getintfield_default(L, 1, "glow", p.glow); + + lua_getfield(L, 1, "node"); + if (lua_istable(L, -1)) + p.node = readnode(L, -1, getGameDef(L)->ndef()); + lua_pop(L, 1); + + p.node_tile = getintfield_default(L, 1, "node_tile", p.node_tile); } u32 id = getServer(L)->addParticleSpawner(p, attached, playername); diff --git a/src/script/lua_api/l_particles_local.cpp b/src/script/lua_api/l_particles_local.cpp index 9595b2fab..cc68b13a5 100644 --- a/src/script/lua_api/l_particles_local.cpp +++ b/src/script/lua_api/l_particles_local.cpp @@ -67,6 +67,13 @@ int ModApiParticlesLocal::l_add_particle(lua_State *L) p.texture = getstringfield_default(L, 1, "texture", p.texture); p.glow = getintfield_default(L, 1, "glow", p.glow); + lua_getfield(L, 1, "node"); + if (lua_istable(L, -1)) + p.node = readnode(L, -1, getGameDef(L)->ndef()); + lua_pop(L, 1); + + p.node_tile = getintfield_default(L, 1, "node_tile", p.node_tile); + ClientEvent *event = new ClientEvent(); event->type = CE_SPAWN_PARTICLE; event->spawn_particle = new ParticleParameters(p); @@ -134,6 +141,13 @@ int ModApiParticlesLocal::l_add_particlespawner(lua_State *L) p.texture = getstringfield_default(L, 1, "texture", p.texture); p.glow = getintfield_default(L, 1, "glow", p.glow); + lua_getfield(L, 1, "node"); + if (lua_istable(L, -1)) + p.node = readnode(L, -1, getGameDef(L)->ndef()); + lua_pop(L, 1); + + p.node_tile = getintfield_default(L, 1, "node_tile", p.node_tile); + u64 id = getClient(L)->getParticleManager()->generateSpawnerId(); auto event = new ClientEvent(); diff --git a/src/server.cpp b/src/server.cpp index 68b0131d4..d6e545498 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -1577,6 +1577,7 @@ void Server::SendAddParticleSpawner(session_t peer_id, u16 protocol_version, pkt.putRawString(os.str()); } pkt << p.glow << p.object_collision; + pkt << p.node.param0 << p.node.param2 << p.node_tile; Send(&pkt); } From 10c3002aea784b5f0075f3f3e3ec824b6ba546ba Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 22 May 2020 15:25:47 +0200 Subject: [PATCH 223/424] Optimize particlespawner sending by not sending to distant players --- src/server.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/server.cpp b/src/server.cpp index d6e545498..8c62584c8 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -1549,12 +1549,30 @@ void Server::SendSpawnParticle(session_t peer_id, u16 protocol_version, void Server::SendAddParticleSpawner(session_t peer_id, u16 protocol_version, const ParticleSpawnerParameters &p, u16 attached_id, u32 id) { + static thread_local const float radius = + g_settings->getS16("max_block_send_distance") * MAP_BLOCKSIZE * BS; + if (peer_id == PEER_ID_INEXISTENT) { std::vector clients = m_clients.getClientIDs(); + const v3f pos = (p.minpos + p.maxpos) / 2.0f * BS; + const float radius_sq = radius * radius; + /* Don't send short-lived spawners to distant players. + * This could be replaced with proper tracking at some point. */ + const bool distance_check = !attached_id && p.time <= 1.0f; + for (const session_t client_id : clients) { RemotePlayer *player = m_env->getPlayer(client_id); if (!player) continue; + + if (distance_check) { + PlayerSAO *sao = player->getPlayerSAO(); + if (!sao) + continue; + if (sao->getBasePosition().getDistanceFromSQ(pos) > radius_sq) + continue; + } + SendAddParticleSpawner(client_id, player->protocol_version, p, attached_id, id); } From 8ee2ece3c97d3beeab5b9930cfcf0d76aa1d39c4 Mon Sep 17 00:00:00 2001 From: ANAND Date: Sun, 24 May 2020 15:18:19 +0530 Subject: [PATCH 224/424] lua_api.txt: Fix minor typo (#9917) --- doc/lua_api.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 5b3f61c99..a77c7567e 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -4494,7 +4494,7 @@ Call these functions only at load time! * The same as before, except that it is called before the player crafts, to make craft prediction, and it should not change anything. * `minetest.register_allow_player_inventory_action(function(player, action, inventory, inventory_info))` - * Determinates how much of a stack may be taken, put or moved to a + * Determines how much of a stack may be taken, put or moved to a player inventory. * `player` (type `ObjectRef`) is the player who modified the inventory `inventory` (type `InvRef`). From a9d6be8b6f769c1b795262f45e81bcb4a2cea4a1 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 11 May 2020 20:19:02 +0200 Subject: [PATCH 225/424] Fix documentation of emergequeue_limit settings --- builtin/settingtypes.txt | 10 +++++----- minetest.conf.example | 4 ++-- src/emerge.cpp | 1 + 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 28ea58ffd..e18de3382 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -2159,15 +2159,15 @@ chunksize (Chunk size) int 5 enable_mapgen_debug_info (Mapgen debug) bool false # Maximum number of blocks that can be queued for loading. -emergequeue_limit_total (Absolute limit of emerge queues) int 512 +emergequeue_limit_total (Absolute limit of queued blocks to emerge) int 512 # Maximum number of blocks to be queued that are to be loaded from file. -# Set to blank for an appropriate amount to be chosen automatically. -emergequeue_limit_diskonly (Limit of emerge queues on disk) int 64 +# This limit is enforced per player. +emergequeue_limit_diskonly (Per-player limit of queued blocks load from disk) int 64 # Maximum number of blocks to be queued that are to be generated. -# Set to blank for an appropriate amount to be chosen automatically. -emergequeue_limit_generate (Limit of emerge queues to generate) int 64 +# This limit is enforced per player. +emergequeue_limit_generate (Per-player limit of queued blocks to generate) int 64 # Number of emerge threads to use. # Value 0: diff --git a/minetest.conf.example b/minetest.conf.example index f04822c47..17d24a566 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -3251,12 +3251,12 @@ # emergequeue_limit_total = 512 # Maximum number of blocks to be queued that are to be loaded from file. -# Set to blank for an appropriate amount to be chosen automatically. +# This limit is enforced per player. # type: int # emergequeue_limit_diskonly = 64 # Maximum number of blocks to be queued that are to be generated. -# Set to blank for an appropriate amount to be chosen automatically. +# This limit is enforced per player. # type: int # emergequeue_limit_generate = 64 diff --git a/src/emerge.cpp b/src/emerge.cpp index a9fc0a4de..0ac26a682 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -159,6 +159,7 @@ EmergeManager::EmergeManager(Server *server) nthreads = 1; m_qlimit_total = g_settings->getU16("emergequeue_limit_total"); + // FIXME: these fallback values are probably not good if (!g_settings->getU16NoEx("emergequeue_limit_diskonly", m_qlimit_diskonly)) m_qlimit_diskonly = nthreads * 5 + 1; if (!g_settings->getU16NoEx("emergequeue_limit_generate", m_qlimit_generate)) From 5430770b6851a18417f6b2629c9167a5aa38baa5 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 11 May 2020 20:22:32 +0200 Subject: [PATCH 226/424] Fix constant re-queueing of emerges that will always be unsuccessful --- src/clientiface.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/clientiface.cpp b/src/clientiface.cpp index 4f954342a..602a44c90 100644 --- a/src/clientiface.cpp +++ b/src/clientiface.cpp @@ -344,10 +344,10 @@ void RemoteClient::GetNextBlocks ( } /* - If block has been marked to not exist on disk (dummy) - and generating new ones is not wanted, skip block. + If block has been marked to not exist on disk (dummy) or is + not generated and generating new ones is not wanted, skip block. */ - if (!generate && surely_not_found_on_disk) { + if (!generate && (surely_not_found_on_disk || block_is_invalid)) { // get next one. continue; } From f51cf7c68af16d0068b91d00ab2cc9abdf2b31d0 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 24 May 2020 11:48:51 +0200 Subject: [PATCH 227/424] Fix two bugs in content_cao fixes #9889 (backface_culling with visual = "cube") fixes #9916 (crash with visual = "upright_sprite") --- src/client/content_cao.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index 867bbf2c8..cdc12f041 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -713,6 +713,8 @@ void GenericCAO::addToScene(ITextureSource *tsrc) mesh->drop(); m_meshnode->setScale(m_prop.visual_size); + m_meshnode->setMaterialFlag(video::EMF_BACK_FACE_CULLING, + m_prop.backface_culling); setSceneNodeMaterial(m_meshnode); } else if (m_prop.visual == "mesh") { @@ -832,19 +834,20 @@ void GenericCAO::setNodeLight(u8 light) } if (m_enable_shaders) { - scene::ISceneNode *node = getSceneNode(); - - if (node == nullptr) - return; - if (m_prop.visual == "upright_sprite") { + if (!m_meshnode) + return; + scene::IMesh *mesh = m_meshnode->getMesh(); for (u32 i = 0; i < mesh->getMeshBufferCount(); ++i) { scene::IMeshBuffer *buf = mesh->getMeshBuffer(i); - video::SMaterial &material = buf->getMaterial(); - material.EmissiveColor = color; + buf->getMaterial().EmissiveColor = color; } } else { + scene::ISceneNode *node = getSceneNode(); + if (!node) + return; + for (u32 i = 0; i < node->getMaterialCount(); ++i) { video::SMaterial &material = node->getMaterial(i); material.EmissiveColor = color; From a9b74f4c3966ad38c2f9a97364d3fdda0e514c93 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sun, 24 May 2020 14:24:13 +0200 Subject: [PATCH 228/424] Add chat_font_size setting (#9736) Default font sizes are used when the setting value is 0 or below (clamped by Settings). --- builtin/settingtypes.txt | 4 ++++ src/client/gameui.cpp | 21 ++++++++++++--------- src/defaultsettings.cpp | 4 ++++ src/gui/guiChatConsole.cpp | 4 +++- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index e18de3382..c787aea2c 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -903,6 +903,10 @@ fallback_font_shadow_alpha (Fallback font shadow alpha) int 128 0 255 # This font will be used for certain languages or if the default font is unavailable. fallback_font_path (Fallback font path) filepath fonts/DroidSansFallbackFull.ttf +# Font size of the recent chat text and chat prompt in point (pt). +# Value 0 will use the default font size. +chat_font_size (Chat font size) int 0 + # Path to save screenshots at. Can be an absolute or relative path. # The folder will be created if it doesn't already exist. screenshot_path (Screenshot folder) path screenshots diff --git a/src/client/gameui.cpp b/src/client/gameui.cpp index bbe7caeb1..c216f405d 100644 --- a/src/client/gameui.cpp +++ b/src/client/gameui.cpp @@ -76,6 +76,11 @@ void GameUI::init() m_guitext_chat = gui::StaticText::add(guienv, L"", core::rect(0, 0, 0, 0), //false, false); // Disable word wrap as of now false, true, guiroot); + u16 chat_font_size = g_settings->getU16("chat_font_size"); + if (chat_font_size != 0) { + m_guitext_chat->setOverrideFont(g_fontengine->getFont( + chat_font_size, FM_Unspecified)); + } // Profiler text (size is updated when text is updated) m_guitext_profiler = gui::StaticText::add(guienv, L"", @@ -213,7 +218,6 @@ void GameUI::showTranslatedStatusText(const char *str) void GameUI::setChatText(const EnrichedString &chat_text, u32 recent_chat_count) { - setStaticText(m_guitext_chat, chat_text); // Update gui element size and position s32 chat_y = 5; @@ -221,16 +225,15 @@ void GameUI::setChatText(const EnrichedString &chat_text, u32 recent_chat_count) if (m_flags.show_debug) chat_y += 2 * g_fontengine->getLineHeight(); - // first pass to calculate height of text to be set const v2u32 &window_size = RenderingEngine::get_instance()->getWindowSize(); - s32 width = std::min(g_fontengine->getTextWidth(chat_text.c_str()) + 10, - window_size.X - 20); - m_guitext_chat->setRelativePosition(core::rect(10, chat_y, width, - chat_y + window_size.Y)); - // now use real height of text and adjust rect according to this size - m_guitext_chat->setRelativePosition(core::rect(10, chat_y, width, - chat_y + m_guitext_chat->getTextHeight())); + core::rect chat_size(10, chat_y, + window_size.X - 20, 0); + chat_size.LowerRightCorner.Y = std::min((s32)window_size.Y, + m_guitext_chat->getTextHeight() + chat_y); + + m_guitext_chat->setRelativePosition(chat_size); + setStaticText(m_guitext_chat, chat_text); m_recent_chat_count = recent_chat_count; } diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 1d0610c0f..5d1795003 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -321,8 +321,12 @@ void set_default_settings(Settings *settings) std::string font_size_str = std::to_string(DEFAULT_FONT_SIZE); #endif + // General font settings settings->setDefault("font_size", font_size_str); settings->setDefault("mono_font_size", font_size_str); + settings->setDefault("chat_font_size", "0"); // Default "font_size" + + // ContentDB settings->setDefault("contentdb_url", "https://content.minetest.net"); #ifdef __ANDROID__ settings->setDefault("contentdb_flag_blacklist", "nonfree, android_default"); diff --git a/src/gui/guiChatConsole.cpp b/src/gui/guiChatConsole.cpp index e67fae3c6..8de00c12f 100644 --- a/src/gui/guiChatConsole.cpp +++ b/src/gui/guiChatConsole.cpp @@ -74,7 +74,9 @@ GUIChatConsole::GUIChatConsole( m_background_color.setBlue(clamp_u8(myround(console_color.Z))); } - m_font = g_fontengine->getFont(FONT_SIZE_UNSPECIFIED, FM_Mono); + u16 chat_font_size = g_settings->getU16("chat_font_size"); + m_font = g_fontengine->getFont(chat_font_size != 0 ? + chat_font_size : FONT_SIZE_UNSPECIFIED, FM_Mono); if (!m_font) { errorstream << "GUIChatConsole: Unable to load mono font" << std::endl; From 6456aba73f0ef3f2fa7fd2b2a69cfdf8624afe23 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 24 May 2020 15:46:26 +0200 Subject: [PATCH 229/424] Replacement for Minimal Development Test (PR) (#9450) --- games/minimal/LICENSE.txt | 4 + games/minimal/README.md | 52 + games/minimal/game.conf | 2 +- games/minimal/menu/background.png | Bin 392 -> 152 bytes games/minimal/menu/header.png | Bin 0 -> 210 bytes games/minimal/menu/icon.png | Bin 218 -> 217 bytes games/minimal/mods/basenodes/init.lua | 334 +++ games/minimal/mods/basenodes/mod.conf | 2 + .../basenodes_dirt_with_grass_bottom.png | Bin 0 -> 187 bytes .../textures/basenodes_dirt_with_snow.png | Bin 0 -> 166 bytes .../basenodes_dirt_with_snow_bottom.png | Bin 0 -> 177 bytes .../textures/basenodes_snow_sheet.png | Bin 0 -> 166 bytes .../mods/basenodes/textures/default_apple.png | Bin 0 -> 102 bytes .../basenodes/textures/default_cobble.png | Bin 0 -> 340 bytes .../textures/default_desert_sand.png | Bin 0 -> 293 bytes .../textures/default_desert_stone.png | Bin 0 -> 584 bytes .../mods/basenodes/textures/default_dirt.png | Bin 0 -> 790 bytes .../mods/basenodes/textures/default_grass.png | Bin 0 -> 697 bytes .../basenodes/textures/default_grass_side.png | Bin 0 -> 796 bytes .../basenodes/textures/default_gravel.png | Bin 0 -> 171 bytes .../mods/basenodes/textures/default_ice.png | Bin 0 -> 369 bytes .../textures/default_junglegrass.png | Bin 0 -> 201 bytes .../textures/default_jungleleaves.png | Bin 0 -> 399 bytes .../basenodes/textures/default_jungletree.png | Bin 0 -> 730 bytes .../textures/default_jungletree_top.png | Bin 0 -> 714 bytes .../textures/default_lava.png | Bin .../textures/default_lava_flowing.png | Bin 0 -> 91 bytes .../basenodes/textures/default_leaves.png | Bin 0 -> 883 bytes .../textures/default_mossycobble.png | Bin 0 -> 574 bytes .../textures/default_pine_needles.png | Bin 0 -> 648 bytes .../basenodes/textures/default_pine_tree.png | Bin 0 -> 604 bytes .../textures/default_pine_tree_top.png | Bin 0 -> 174 bytes .../textures/default_river_water.png | Bin 0 -> 496 bytes .../textures/default_river_water_flowing.png | Bin 0 -> 99 bytes .../mods/basenodes/textures/default_sand.png | Bin 0 -> 554 bytes .../mods/basenodes/textures/default_snow.png | Bin 0 -> 166 bytes .../basenodes/textures/default_snow_side.png | Bin 0 -> 152 bytes .../mods/basenodes/textures/default_stone.png | Bin 0 -> 313 bytes .../mods/basenodes/textures/default_tree.png | Bin 0 -> 659 bytes .../basenodes/textures/default_tree_top.png | Bin 0 -> 175 bytes .../textures/default_water.png | Bin .../textures/default_water_flowing.png | Bin 0 -> 115 bytes games/minimal/mods/basetools/init.lua | 295 +++ games/minimal/mods/basetools/mod.conf | 2 + .../basetools/textures/basetools_dirtpick.png | Bin 0 -> 307 bytes .../textures/basetools_firesword.png | Bin 0 -> 190 bytes .../basetools/textures/basetools_icesword.png | Bin 0 -> 190 bytes .../textures/basetools_mesepick.png} | Bin .../basetools/textures/basetools_steelaxe.png | Bin 0 -> 131 bytes .../textures/basetools_steeldagger.png | Bin 0 -> 154 bytes .../textures/basetools_steelpick.png | Bin 0 -> 159 bytes .../textures/basetools_steelpick_l1.png | Bin 0 -> 190 bytes .../textures/basetools_steelpick_l2.png | Bin 0 -> 177 bytes .../textures/basetools_steelshears.png | Bin 0 -> 208 bytes .../textures/basetools_steelshovel.png | Bin 0 -> 140 bytes .../textures/basetools_steelsword.png | Bin 0 -> 163 bytes .../basetools/textures/basetools_stoneaxe.png | Bin 0 -> 130 bytes .../textures/basetools_stonepick.png} | Bin .../textures/basetools_stoneshears.png | Bin 0 -> 224 bytes .../textures/basetools_stoneshovel.png | Bin 0 -> 134 bytes .../textures/basetools_stonesword.png | Bin 0 -> 159 bytes .../basetools/textures/basetools_woodaxe.png | Bin 0 -> 121 bytes .../textures/basetools_woodpick.png} | Bin .../textures/basetools_woodshears.png | Bin 0 -> 212 bytes .../textures/basetools_woodshovel.png | Bin 0 -> 133 bytes .../textures/basetools_woodsword.png | Bin 0 -> 139 bytes games/minimal/mods/bucket/init.lua | 93 +- games/minimal/mods/bucket/mod.conf | 3 +- games/minimal/mods/bucket/textures/bucket.png | Bin 182 -> 163 bytes .../mods/bucket/textures/bucket_lava.png | Bin 183 -> 168 bytes .../mods/bucket/textures/bucket_water.png | Bin 180 -> 168 bytes games/minimal/mods/chest/init.lua | 27 + games/minimal/mods/chest/mod.conf | 2 + .../mods/chest/textures/chest_chest.png | Bin 0 -> 163 bytes .../minimal/mods/chest_of_everything/init.lua | 135 ++ .../minimal/mods/chest_of_everything/mod.conf | 2 + .../textures/chest_of_everything_chest.png | Bin 0 -> 210 bytes games/minimal/mods/default/init.lua | 1837 ----------------- games/minimal/mods/default/mapgen.lua | 137 -- games/minimal/mods/default/mod.conf | 2 - .../sounds/default_grass_footstep.1.ogg | Bin 7014 -> 0 bytes .../mods/default/textures/default_apple.png | Bin 109 -> 0 bytes .../mods/default/textures/default_book.png | Bin 157 -> 0 bytes .../default/textures/default_bookshelf.png | Bin 515 -> 0 bytes .../mods/default/textures/default_brick.png | Bin 457 -> 0 bytes .../default/textures/default_cactus_side.png | Bin 144 -> 0 bytes .../default/textures/default_cactus_top.png | Bin 121 -> 0 bytes .../mods/default/textures/default_chest.png | Bin 263 -> 0 bytes .../mods/default/textures/default_clay.png | Bin 318 -> 0 bytes .../default/textures/default_clay_brick.png | Bin 173 -> 0 bytes .../default/textures/default_clay_lump.png | Bin 140 -> 0 bytes .../mods/default/textures/default_cloud.png | Bin 83 -> 0 bytes .../default/textures/default_coal_lump.png | Bin 138 -> 0 bytes .../mods/default/textures/default_cobble.png | Bin 374 -> 0 bytes .../mods/default/textures/default_dirt.png | Bin 1586 -> 0 bytes .../mods/default/textures/default_fence.png | Bin 480 -> 0 bytes .../textures/default_furnace_fire_bg.png | Bin 220 -> 0 bytes .../textures/default_furnace_fire_fg.png | Bin 719 -> 0 bytes .../textures/default_furnace_front.png | Bin 159 -> 0 bytes .../textures/default_furnace_front_active.png | Bin 283 -> 0 bytes .../default/textures/default_furnace_side.png | Bin 125 -> 0 bytes .../mods/default/textures/default_glass.png | Bin 210 -> 0 bytes .../mods/default/textures/default_grass.png | Bin 782 -> 0 bytes .../textures/default_grass_footsteps.png | Bin 771 -> 0 bytes .../default/textures/default_grass_side.png | Bin 878 -> 0 bytes .../mods/default/textures/default_gravel.png | Bin 172 -> 0 bytes .../default/textures/default_iron_lump.png | Bin 140 -> 0 bytes .../default/textures/default_junglegrass.png | Bin 237 -> 0 bytes .../mods/default/textures/default_ladder.png | Bin 368 -> 0 bytes .../default_lava_flowing_animated.png | Bin 7818 -> 0 bytes .../textures/default_lava_source_animated.png | Bin 3145 -> 0 bytes .../mods/default/textures/default_leaves.png | Bin 1683 -> 0 bytes .../mods/default/textures/default_mese.png | Bin 129 -> 0 bytes .../default/textures/default_mineral_coal.png | Bin 142 -> 0 bytes .../default/textures/default_mineral_iron.png | Bin 922 -> 0 bytes .../default/textures/default_mossycobble.png | Bin 603 -> 0 bytes .../mods/default/textures/default_nc_back.png | Bin 186 -> 0 bytes .../default/textures/default_nc_front.png | Bin 204 -> 0 bytes .../mods/default/textures/default_nc_rb.png | Bin 137 -> 0 bytes .../mods/default/textures/default_nc_side.png | Bin 148 -> 0 bytes .../mods/default/textures/default_paper.png | Bin 139 -> 0 bytes .../mods/default/textures/default_papyrus.png | Bin 165 -> 0 bytes .../mods/default/textures/default_rail.png | Bin 437 -> 0 bytes .../textures/default_rail_crossing.png | Bin 388 -> 0 bytes .../default/textures/default_rail_curved.png | Bin 375 -> 0 bytes .../textures/default_rail_t_junction.png | Bin 374 -> 0 bytes .../default/textures/default_river_water.png | Bin 716 -> 0 bytes .../mods/default/textures/default_sand.png | Bin 762 -> 0 bytes .../default/textures/default_sandstone.png | Bin 744 -> 0 bytes .../mods/default/textures/default_sapling.png | Bin 328 -> 0 bytes .../textures/default_scorched_stuff.png | Bin 164 -> 0 bytes .../default/textures/default_sign_wall.png | Bin 416 -> 0 bytes .../default/textures/default_steel_block.png | Bin 128 -> 0 bytes .../default/textures/default_steel_ingot.png | Bin 144 -> 0 bytes .../mods/default/textures/default_stick.png | Bin 120 -> 0 bytes .../mods/default/textures/default_stone.png | Bin 389 -> 0 bytes .../default/textures/default_tnt_bottom.png | Bin 98 -> 0 bytes .../default/textures/default_tnt_side.png | Bin 129 -> 0 bytes .../mods/default/textures/default_tnt_top.png | Bin 146 -> 0 bytes .../textures/default_tool_steelaxe.png | Bin 140 -> 0 bytes .../textures/default_tool_steelpick.png | Bin 163 -> 0 bytes .../textures/default_tool_steelshovel.png | Bin 144 -> 0 bytes .../textures/default_tool_steelsword.png | Bin 169 -> 0 bytes .../textures/default_tool_stoneaxe.png | Bin 141 -> 0 bytes .../textures/default_tool_stoneshovel.png | Bin 144 -> 0 bytes .../textures/default_tool_stonesword.png | Bin 168 -> 0 bytes .../default/textures/default_tool_woodaxe.png | Bin 134 -> 0 bytes .../textures/default_tool_woodshovel.png | Bin 135 -> 0 bytes .../textures/default_tool_woodsword.png | Bin 147 -> 0 bytes .../mods/default/textures/default_torch.png | Bin 146 -> 0 bytes .../textures/default_torch_on_ceiling.png | Bin 137 -> 0 bytes .../textures/default_torch_on_floor.png | Bin 138 -> 0 bytes .../mods/default/textures/default_tree.png | Bin 1445 -> 0 bytes .../default/textures/default_tree_top.png | Bin 177 -> 0 bytes .../mods/default/textures/default_wood.png | Bin 1400 -> 0 bytes .../mods/default/textures/treeprop.png | Bin 757 -> 0 bytes games/minimal/mods/dignodes/init.lua | 37 + games/minimal/mods/dignodes/mod.conf | 2 + .../dignodes/textures/dignodes_choppy.png | Bin 0 -> 187 bytes .../dignodes/textures/dignodes_cracky.png | Bin 0 -> 193 bytes .../dignodes/textures/dignodes_crumbly.png | Bin 0 -> 172 bytes .../textures/dignodes_dig_immediate.png | Bin 0 -> 170 bytes .../mods/dignodes/textures/dignodes_none.png | Bin 0 -> 201 bytes .../dignodes/textures/dignodes_rating1.png | Bin 0 -> 94 bytes .../dignodes/textures/dignodes_rating2.png | Bin 0 -> 92 bytes .../dignodes/textures/dignodes_rating3.png | Bin 0 -> 93 bytes games/minimal/mods/experimental/commands.lua | 215 ++ games/minimal/mods/experimental/detached.lua | 29 + games/minimal/mods/experimental/init.lua | 817 +------- games/minimal/mods/experimental/items.lua | 103 + games/minimal/mods/experimental/mod.conf | 3 +- .../minimal/mods/experimental/modchannels.lua | 16 - .../textures/experimental_callback_node.png | Bin 0 -> 139 bytes .../textures/experimental_dummyball.png | Bin 399 -> 0 bytes .../textures/experimental_particle_sheet.png | Bin 0 -> 208 bytes .../experimental_particle_vertical.png | Bin 0 -> 308 bytes .../textures/experimental_tester_tool_1.png | Bin 160 -> 138 bytes .../textures/experimental_tiled.png | Bin 1041 -> 0 bytes .../minimal/mods/give_initial_stuff/init.lua | 47 +- .../minimal/mods/give_initial_stuff/mod.conf | 2 +- games/minimal/mods/initial_message/init.lua | 9 + games/minimal/mods/initial_message/mod.conf | 2 + games/minimal/mods/legacy/init.lua | 128 -- games/minimal/mods/legacy/mod.conf | 3 - .../mods/legacy/textures/apple_iron.png | Bin 119 -> 0 bytes .../mods/legacy/textures/cooked_rat.png | Bin 145 -> 0 bytes .../mods/legacy/textures/dungeon_master.png | Bin 3007 -> 0 bytes .../minimal/mods/legacy/textures/fireball.png | Bin 279 -> 0 bytes .../minimal/mods/legacy/textures/firefly.png | Bin 99 -> 0 bytes .../minimal/mods/legacy/textures/oerkki1.png | Bin 165 -> 0 bytes .../mods/legacy/textures/oerkki1_damaged.png | Bin 210 -> 0 bytes games/minimal/mods/legacy/textures/rat.png | Bin 141 -> 0 bytes games/minimal/mods/mapgen/init.lua | 81 + games/minimal/mods/mapgen/mod.conf | 3 + games/minimal/mods/modchannels/init.lua | 14 + games/minimal/mods/modchannels/mod.conf | 2 + games/minimal/mods/soundstuff/init.lua | 170 ++ games/minimal/mods/soundstuff/mod.conf | 2 + .../soundstuff/sounds/soundstuff_mono.ogg | Bin 0 -> 4362 bytes .../soundstuff/textures/soundstuff_eat.png | Bin 0 -> 113 bytes .../textures/soundstuff_node_blank.png | Bin 0 -> 83 bytes .../textures/soundstuff_node_climbable.png | Bin 0 -> 189 bytes .../textures/soundstuff_node_dig.png | Bin 0 -> 126 bytes .../textures/soundstuff_node_dug.png | Bin 0 -> 132 bytes .../textures/soundstuff_node_fall.png | Bin 0 -> 100 bytes .../textures/soundstuff_node_footstep.png | Bin 0 -> 120 bytes .../textures/soundstuff_node_place.png | Bin 0 -> 115 bytes .../textures/soundstuff_node_place_failed.png | Bin 0 -> 143 bytes .../textures/soundstuff_node_sound.png | Bin 0 -> 116 bytes games/minimal/mods/stairs/init.lua | 52 +- games/minimal/mods/stairs/mod.conf | 2 +- games/minimal/mods/test/crafting.lua | 71 - games/minimal/mods/test/formspec.lua | 298 --- games/minimal/mods/test/init.lua | 15 - games/minimal/mods/test/mod.conf | 3 - .../mods/test/textures/test_animation.png | Bin 3161 -> 0 bytes games/minimal/mods/test/textures/test_bg.png | Bin 972 -> 0 bytes .../mods/test/textures/test_bg_9slice.png | Bin 1017 -> 0 bytes .../test/textures/test_bg_9slice_hovered.png | Bin 1016 -> 0 bytes .../test/textures/test_bg_9slice_pressed.png | Bin 1016 -> 0 bytes .../mods/test/textures/test_bg_hovered.png | Bin 972 -> 0 bytes .../mods/test/textures/test_bg_pressed.png | Bin 971 -> 0 bytes games/minimal/mods/testentities/armor.lua | 41 + games/minimal/mods/testentities/callbacks.lua | 75 + games/minimal/mods/testentities/init.lua | 3 + games/minimal/mods/testentities/mod.conf | 2 + .../textures/testentities_armorball.png | Bin 0 -> 561 bytes .../textures/testentities_callback.png | Bin 0 -> 156 bytes .../textures/testentities_callback_step.png | Bin 0 -> 166 bytes .../textures/testentities_cube1.png | Bin 0 -> 130 bytes .../textures/testentities_cube2.png | Bin 0 -> 128 bytes .../textures/testentities_cube3.png | Bin 0 -> 124 bytes .../textures/testentities_cube4.png | Bin 0 -> 126 bytes .../textures/testentities_cube5.png | Bin 0 -> 126 bytes .../textures/testentities_cube6.png | Bin 0 -> 126 bytes .../textures/testentities_dungeon_master.png | Bin 0 -> 2855 bytes .../textures/testentities_sprite.png | Bin 0 -> 120 bytes .../textures/testentities_upright_sprite1.png | Bin 0 -> 114 bytes .../textures/testentities_upright_sprite2.png | Bin 0 -> 119 bytes games/minimal/mods/testentities/visuals.lua | 74 + games/minimal/mods/testfood/init.lua | 24 + games/minimal/mods/testfood/mod.conf | 2 + .../mods/testfood/textures/testfood_bad.png | Bin 0 -> 126 bytes .../mods/testfood/textures/testfood_bad2.png | Bin 0 -> 133 bytes .../mods/testfood/textures/testfood_good.png | Bin 0 -> 129 bytes .../mods/testfood/textures/testfood_good2.png | Bin 0 -> 145 bytes games/minimal/mods/testformspec/callbacks.lua | 51 + .../minimal/mods/testformspec/dummy_items.lua | 14 + games/minimal/mods/testformspec/formspec.lua | 381 ++++ games/minimal/mods/testformspec/init.lua | 3 + games/minimal/mods/testformspec/mod.conf | 2 + .../textures/testformspec_animation.jpg} | Bin .../textures/testformspec_animation.png | Bin 0 -> 214 bytes .../testformspec/textures/testformspec_bg.png | Bin 0 -> 92 bytes .../textures/testformspec_bg_9slice.png | Bin 0 -> 146 bytes .../testformspec_bg_9slice_hovered.png | Bin 0 -> 146 bytes .../testformspec_bg_9slice_pressed.png | Bin 0 -> 146 bytes .../textures/testformspec_bg_hovered.png | Bin 0 -> 92 bytes .../textures/testformspec_bg_pressed.png | Bin 0 -> 91 bytes .../textures/testformspec_button_image.png | Bin 0 -> 146 bytes .../textures/testformspec_hovered.png | Bin 0 -> 195 bytes .../textures/testformspec_item.png | Bin 0 -> 182 bytes .../textures/testformspec_node.png | Bin 0 -> 113 bytes .../textures/testformspec_pressed.png | Bin 0 -> 165 bytes games/minimal/mods/testnodes/README.md | 11 + games/minimal/mods/testnodes/drawtypes.lua | 517 +++++ games/minimal/mods/testnodes/init.lua | 10 + games/minimal/mods/testnodes/light.lua | 48 + games/minimal/mods/testnodes/liquids.lua | 91 + games/minimal/mods/testnodes/meshes.lua | 145 ++ games/minimal/mods/testnodes/mod.conf | 2 + .../testnodes/models/testnodes_ocorner.obj | 23 + .../testnodes/models/testnodes_pyramid.obj | 24 + games/minimal/mods/testnodes/nodeboxes.lua | 80 + games/minimal/mods/testnodes/param2.lua | 168 ++ games/minimal/mods/testnodes/properties.lua | 270 +++ games/minimal/mods/testnodes/settingtypes.txt | 4 + games/minimal/mods/testnodes/textures.lua | 67 + .../mods/testnodes/textures/testnodes_1.png | Bin 0 -> 107 bytes .../mods/testnodes/textures/testnodes_1g.png | Bin 0 -> 104 bytes .../mods/testnodes/textures/testnodes_1w.png | Bin 0 -> 121 bytes .../mods/testnodes/textures/testnodes_1wg.png | Bin 0 -> 122 bytes .../mods/testnodes/textures/testnodes_2.png | Bin 0 -> 112 bytes .../mods/testnodes/textures/testnodes_2g.png | Bin 0 -> 110 bytes .../mods/testnodes/textures/testnodes_2w.png | Bin 0 -> 134 bytes .../mods/testnodes/textures/testnodes_2wg.png | Bin 0 -> 135 bytes .../mods/testnodes/textures/testnodes_3.png | Bin 0 -> 105 bytes .../mods/testnodes/textures/testnodes_3g.png | Bin 0 -> 103 bytes .../mods/testnodes/textures/testnodes_3w.png | Bin 0 -> 112 bytes .../mods/testnodes/textures/testnodes_3wg.png | Bin 0 -> 112 bytes .../mods/testnodes/textures/testnodes_4.png | Bin 0 -> 97 bytes .../mods/testnodes/textures/testnodes_4g.png | Bin 0 -> 95 bytes .../mods/testnodes/textures/testnodes_4w.png | Bin 0 -> 128 bytes .../mods/testnodes/textures/testnodes_4wg.png | Bin 0 -> 128 bytes .../mods/testnodes/textures/testnodes_5.png | Bin 0 -> 98 bytes .../mods/testnodes/textures/testnodes_5g.png | Bin 0 -> 98 bytes .../mods/testnodes/textures/testnodes_5w.png | Bin 0 -> 117 bytes .../mods/testnodes/textures/testnodes_5wg.png | Bin 0 -> 117 bytes .../mods/testnodes/textures/testnodes_6.png | Bin 0 -> 100 bytes .../mods/testnodes/textures/testnodes_6g.png | Bin 0 -> 98 bytes .../mods/testnodes/textures/testnodes_6w.png | Bin 0 -> 117 bytes .../mods/testnodes/textures/testnodes_6wg.png | Bin 0 -> 117 bytes .../testnodes/textures/testnodes_airlike.png | Bin 0 -> 92 bytes .../testnodes/textures/testnodes_allfaces.png | Bin 0 -> 150 bytes .../textures/testnodes_allfaces_optional.png | Bin 0 -> 150 bytes .../testnodes/textures/testnodes_alpha.png | Bin 0 -> 96 bytes .../testnodes/textures/testnodes_alpha128.png | Bin 0 -> 136 bytes .../testnodes/textures/testnodes_alpha191.png | Bin 0 -> 132 bytes .../testnodes/textures/testnodes_alpha64.png | Bin 0 -> 134 bytes .../testnodes/textures/testnodes_anim.png | Bin 0 -> 274 bytes .../textures/testnodes_attached_bottom.png | Bin 0 -> 86 bytes .../textures/testnodes_attached_side.png | Bin 0 -> 98 bytes .../textures/testnodes_attached_top.png | Bin 0 -> 87 bytes .../textures/testnodes_attachedw_bottom.png | Bin 0 -> 130 bytes .../textures/testnodes_attachedw_side.png | Bin 0 -> 122 bytes .../textures/testnodes_attachedw_top.png | Bin 0 -> 109 bytes .../testnodes/textures/testnodes_bouncy.png | Bin 0 -> 106 bytes .../textures/testnodes_buildable_to.png | Bin 0 -> 89 bytes .../testnodes_climbable_nojump_side.png | Bin 0 -> 164 bytes .../textures/testnodes_climbable_side.png | Bin 0 -> 150 bytes .../testnodes/textures/testnodes_damage.png | Bin 0 -> 108 bytes .../textures/testnodes_damage_neg.png | Bin 0 -> 121 bytes .../testnodes/textures/testnodes_drowning.png | Bin 0 -> 127 bytes .../textures/testnodes_fall_damage_minus.png | Bin 0 -> 116 bytes .../textures/testnodes_fall_damage_plus.png | Bin 0 -> 117 bytes .../textures/testnodes_fencelike.png | Bin 0 -> 90 bytes .../testnodes/textures/testnodes_firelike.png | Bin 0 -> 149 bytes .../textures/testnodes_glasslike.png | Bin 0 -> 117 bytes .../textures/testnodes_glasslike_detail.png | Bin 0 -> 167 bytes .../textures/testnodes_glasslike_framed.png | Bin 0 -> 88 bytes .../textures/testnodes_glasslike_framed2.png | Bin 0 -> 118 bytes .../testnodes_glasslike_framed_optional.png | Bin 0 -> 128 bytes .../textures/testnodes_glasslikeliquid.png | Bin 0 -> 122 bytes .../testnodes/textures/testnodes_light.png | Bin 0 -> 117 bytes .../testnodes/textures/testnodes_light_1.png | Bin 0 -> 158 bytes .../testnodes/textures/testnodes_light_10.png | Bin 0 -> 147 bytes .../testnodes/textures/testnodes_light_11.png | Bin 0 -> 149 bytes .../testnodes/textures/testnodes_light_12.png | Bin 0 -> 138 bytes .../testnodes/textures/testnodes_light_13.png | Bin 0 -> 137 bytes .../testnodes/textures/testnodes_light_14.png | Bin 0 -> 132 bytes .../testnodes/textures/testnodes_light_2.png | Bin 0 -> 152 bytes .../testnodes/textures/testnodes_light_3.png | Bin 0 -> 150 bytes .../testnodes/textures/testnodes_light_4.png | Bin 0 -> 157 bytes .../testnodes/textures/testnodes_light_5.png | Bin 0 -> 150 bytes .../testnodes/textures/testnodes_light_6.png | Bin 0 -> 154 bytes .../testnodes/textures/testnodes_light_7.png | Bin 0 -> 146 bytes .../testnodes/textures/testnodes_light_8.png | Bin 0 -> 139 bytes .../testnodes/textures/testnodes_light_9.png | Bin 0 -> 149 bytes .../textures/testnodes_line_crossing.png | Bin 0 -> 130 bytes .../textures/testnodes_line_curved.png | Bin 0 -> 123 bytes .../textures/testnodes_line_straight.png | Bin 0 -> 115 bytes .../textures/testnodes_line_t_junction.png | Bin 0 -> 128 bytes .../testnodes/textures/testnodes_liquid.png | Bin 0 -> 95 bytes .../textures/testnodes_liquidflowing.png | Bin 0 -> 132 bytes .../textures/testnodes_liquidflowing_r0.png | Bin 0 -> 162 bytes .../textures/testnodes_liquidflowing_r1.png | Bin 0 -> 160 bytes .../textures/testnodes_liquidflowing_r2.png | Bin 0 -> 154 bytes .../textures/testnodes_liquidflowing_r3.png | Bin 0 -> 155 bytes .../textures/testnodes_liquidflowing_r4.png | Bin 0 -> 154 bytes .../textures/testnodes_liquidflowing_r5.png | Bin 0 -> 155 bytes .../textures/testnodes_liquidflowing_r6.png | Bin 0 -> 155 bytes .../textures/testnodes_liquidflowing_r7.png | Bin 0 -> 157 bytes .../textures/testnodes_liquidflowing_r8.png | Bin 0 -> 152 bytes .../textures/testnodes_liquidsource.png | Bin 0 -> 128 bytes .../textures/testnodes_liquidsource_r0.png | Bin 0 -> 149 bytes .../textures/testnodes_liquidsource_r1.png | Bin 0 -> 152 bytes .../textures/testnodes_liquidsource_r2.png | Bin 0 -> 152 bytes .../textures/testnodes_liquidsource_r3.png | Bin 0 -> 152 bytes .../textures/testnodes_liquidsource_r4.png | Bin 0 -> 155 bytes .../textures/testnodes_liquidsource_r5.png | Bin 0 -> 150 bytes .../textures/testnodes_liquidsource_r6.png | Bin 0 -> 148 bytes .../textures/testnodes_liquidsource_r7.png | Bin 0 -> 154 bytes .../textures/testnodes_liquidsource_r8.png | Bin 0 -> 148 bytes .../textures/testnodes_mesh_stripes.png | Bin 0 -> 150 bytes .../textures/testnodes_mesh_stripes2.png | Bin 0 -> 144 bytes .../textures/testnodes_mesh_stripes3.png | Bin 0 -> 85 bytes .../textures/testnodes_mesh_stripes4.png | Bin 0 -> 93 bytes .../testnodes/textures/testnodes_node.png | Bin 0 -> 89 bytes .../textures/testnodes_node_falling.png | Bin 0 -> 112 bytes .../testnodes/textures/testnodes_nodebox.png | Bin 0 -> 112 bytes .../textures/testnodes_nojump_side.png | Bin 0 -> 94 bytes .../textures/testnodes_nojump_top.png | Bin 0 -> 121 bytes .../testnodes/textures/testnodes_normal.png | Bin 0 -> 92 bytes .../testnodes/textures/testnodes_normal1.png | Bin 0 -> 114 bytes .../testnodes/textures/testnodes_normal2.png | Bin 0 -> 122 bytes .../testnodes/textures/testnodes_normal3.png | Bin 0 -> 114 bytes .../testnodes/textures/testnodes_normal4.png | Bin 0 -> 106 bytes .../testnodes/textures/testnodes_normal5.png | Bin 0 -> 109 bytes .../testnodes/textures/testnodes_normal6.png | Bin 0 -> 111 bytes .../textures/testnodes_palette_facedir.png | Bin 0 -> 87 bytes .../textures/testnodes_palette_full.png | Bin 0 -> 568 bytes .../testnodes_palette_wallmounted.png | Bin 0 -> 136 bytes .../textures/testnodes_plantlike.png | Bin 0 -> 183 bytes .../testnodes_plantlike_degrotate.png | Bin 0 -> 176 bytes .../textures/testnodes_plantlike_leveled.png | Bin 0 -> 163 bytes .../testnodes_plantlike_meshoptions.png | Bin 0 -> 164 bytes .../textures/testnodes_plantlike_rooted.png | Bin 0 -> 182 bytes .../testnodes_plantlike_rooted_base.png | Bin 0 -> 101 bytes ...s_plantlike_rooted_base_side_degrotate.png | Bin 0 -> 145 bytes ...des_plantlike_rooted_base_side_leveled.png | Bin 0 -> 127 bytes ...plantlike_rooted_base_side_meshoptions.png | Bin 0 -> 128 bytes ...odes_plantlike_rooted_base_side_waving.png | Bin 0 -> 126 bytes .../testnodes_plantlike_rooted_degrotate.png | Bin 0 -> 176 bytes .../testnodes_plantlike_rooted_leveled.png | Bin 0 -> 162 bytes ...testnodes_plantlike_rooted_meshoptions.png | Bin 0 -> 162 bytes .../testnodes_plantlike_rooted_waving.png | Bin 0 -> 125 bytes .../textures/testnodes_plantlike_waving.png | Bin 0 -> 127 bytes .../textures/testnodes_rail2_crossing.png | Bin 0 -> 246 bytes .../textures/testnodes_rail2_curved.png | Bin 0 -> 253 bytes .../textures/testnodes_rail2_straight.png | Bin 0 -> 246 bytes .../textures/testnodes_rail2_t_junction.png | Bin 0 -> 254 bytes .../textures/testnodes_rail_crossing.png | Bin 0 -> 151 bytes .../textures/testnodes_rail_curved.png | Bin 0 -> 164 bytes .../textures/testnodes_rail_straight.png | Bin 0 -> 133 bytes .../textures/testnodes_rail_t_junction.png | Bin 0 -> 202 bytes .../testnodes/textures/testnodes_signlike.png | Bin 0 -> 150 bytes .../testnodes/textures/testnodes_slippery.png | Bin 0 -> 111 bytes .../textures/testnodes_street_crossing.png | Bin 0 -> 137 bytes .../textures/testnodes_street_curved.png | Bin 0 -> 115 bytes .../textures/testnodes_street_straight.png | Bin 0 -> 101 bytes .../textures/testnodes_street_t_junction.png | Bin 0 -> 126 bytes .../textures/testnodes_sunlight_filter.png | Bin 0 -> 113 bytes .../textures/testnodes_torchlike_ceiling.png | Bin 0 -> 157 bytes .../textures/testnodes_torchlike_floor.png | Bin 0 -> 141 bytes .../textures/testnodes_torchlike_wall.png | Bin 0 -> 158 bytes games/minimal/mods/testpathfinder/README.md | 15 + games/minimal/mods/testpathfinder/init.lua | 132 ++ games/minimal/mods/testpathfinder/mod.conf | 2 + .../testpathfinder_testpathfinder.png | Bin 0 -> 159 bytes .../textures/testpathfinder_waypoint.png | Bin 0 -> 99 bytes .../textures/testpathfinder_waypoint_end.png | Bin 0 -> 147 bytes .../testpathfinder_waypoint_start.png | Bin 0 -> 139 bytes games/minimal/mods/testtools/README.md | 99 + games/minimal/mods/testtools/init.lua | 691 +++++++ games/minimal/mods/testtools/mod.conf | 2 + .../textures/testtools_entity_rotator.png | Bin 0 -> 151 bytes .../textures/testtools_entity_scaler.png | Bin 0 -> 182 bytes .../textures/testtools_entity_spawner.png | Bin 0 -> 189 bytes .../textures/testtools_falling_node_tool.png | Bin 0 -> 140 bytes .../textures/testtools_node_setter.png | Bin 0 -> 146 bytes .../textures/testtools_object_attacher.png | Bin 0 -> 173 bytes .../textures/testtools_object_editor.png | Bin 0 -> 180 bytes .../textures/testtools_object_mover.png | Bin 0 -> 175 bytes .../textures/testtools_param2tool.png | Bin 0 -> 127 bytes .../testtools/textures/testtools_remover.png | Bin 0 -> 129 bytes games/minimal/mods/tiled/init.lua | 33 + games/minimal/mods/tiled/mod.conf | 3 + .../mods/tiled/textures/tiled_tiled.png | Bin 0 -> 410 bytes games/minimal/mods/unittests/crafting.lua | 120 ++ .../mods/unittests/crafting_prepare.lua | 88 + games/minimal/mods/unittests/init.lua | 16 + games/minimal/mods/unittests/mod.conf | 2 + .../mods/{test => unittests}/player.lua | 51 +- games/minimal/mods/unittests/random.lua | 10 + .../textures/unittests_coal_lump.png | Bin 0 -> 160 bytes .../textures/unittests_iron_lump.png | Bin 0 -> 154 bytes .../textures/unittests_repairable_tool.png | Bin 0 -> 160 bytes .../textures/unittests_steel_ingot.png | Bin 0 -> 159 bytes .../unittests/textures/unittests_stick.png | Bin 0 -> 147 bytes .../unittests/textures/unittests_torch.png | Bin 0 -> 155 bytes .../textures/unittests_unrepairable_tool.png | Bin 0 -> 157 bytes games/minimal/mods/util_commands/init.lua | 137 ++ games/minimal/mods/util_commands/mod.conf | 2 + games/minimal/screenshot.png | Bin 0 -> 133364 bytes games/minimal/settingtypes.txt | 37 + 465 files changed, 5141 insertions(+), 3486 deletions(-) create mode 100644 games/minimal/LICENSE.txt create mode 100644 games/minimal/README.md create mode 100644 games/minimal/menu/header.png create mode 100644 games/minimal/mods/basenodes/init.lua create mode 100644 games/minimal/mods/basenodes/mod.conf create mode 100644 games/minimal/mods/basenodes/textures/basenodes_dirt_with_grass_bottom.png create mode 100644 games/minimal/mods/basenodes/textures/basenodes_dirt_with_snow.png create mode 100644 games/minimal/mods/basenodes/textures/basenodes_dirt_with_snow_bottom.png create mode 100644 games/minimal/mods/basenodes/textures/basenodes_snow_sheet.png create mode 100644 games/minimal/mods/basenodes/textures/default_apple.png create mode 100644 games/minimal/mods/basenodes/textures/default_cobble.png create mode 100644 games/minimal/mods/basenodes/textures/default_desert_sand.png create mode 100644 games/minimal/mods/basenodes/textures/default_desert_stone.png create mode 100644 games/minimal/mods/basenodes/textures/default_dirt.png create mode 100644 games/minimal/mods/basenodes/textures/default_grass.png create mode 100644 games/minimal/mods/basenodes/textures/default_grass_side.png create mode 100644 games/minimal/mods/basenodes/textures/default_gravel.png create mode 100644 games/minimal/mods/basenodes/textures/default_ice.png create mode 100644 games/minimal/mods/basenodes/textures/default_junglegrass.png create mode 100644 games/minimal/mods/basenodes/textures/default_jungleleaves.png create mode 100644 games/minimal/mods/basenodes/textures/default_jungletree.png create mode 100644 games/minimal/mods/basenodes/textures/default_jungletree_top.png rename games/minimal/mods/{default => basenodes}/textures/default_lava.png (100%) create mode 100644 games/minimal/mods/basenodes/textures/default_lava_flowing.png create mode 100644 games/minimal/mods/basenodes/textures/default_leaves.png create mode 100644 games/minimal/mods/basenodes/textures/default_mossycobble.png create mode 100644 games/minimal/mods/basenodes/textures/default_pine_needles.png create mode 100644 games/minimal/mods/basenodes/textures/default_pine_tree.png create mode 100644 games/minimal/mods/basenodes/textures/default_pine_tree_top.png create mode 100644 games/minimal/mods/basenodes/textures/default_river_water.png create mode 100644 games/minimal/mods/basenodes/textures/default_river_water_flowing.png create mode 100644 games/minimal/mods/basenodes/textures/default_sand.png create mode 100644 games/minimal/mods/basenodes/textures/default_snow.png create mode 100644 games/minimal/mods/basenodes/textures/default_snow_side.png create mode 100644 games/minimal/mods/basenodes/textures/default_stone.png create mode 100644 games/minimal/mods/basenodes/textures/default_tree.png create mode 100644 games/minimal/mods/basenodes/textures/default_tree_top.png rename games/minimal/mods/{default => basenodes}/textures/default_water.png (100%) create mode 100644 games/minimal/mods/basenodes/textures/default_water_flowing.png create mode 100644 games/minimal/mods/basetools/init.lua create mode 100644 games/minimal/mods/basetools/mod.conf create mode 100644 games/minimal/mods/basetools/textures/basetools_dirtpick.png create mode 100644 games/minimal/mods/basetools/textures/basetools_firesword.png create mode 100644 games/minimal/mods/basetools/textures/basetools_icesword.png rename games/minimal/mods/{default/textures/default_tool_mesepick.png => basetools/textures/basetools_mesepick.png} (100%) create mode 100644 games/minimal/mods/basetools/textures/basetools_steelaxe.png create mode 100644 games/minimal/mods/basetools/textures/basetools_steeldagger.png create mode 100644 games/minimal/mods/basetools/textures/basetools_steelpick.png create mode 100644 games/minimal/mods/basetools/textures/basetools_steelpick_l1.png create mode 100644 games/minimal/mods/basetools/textures/basetools_steelpick_l2.png create mode 100644 games/minimal/mods/basetools/textures/basetools_steelshears.png create mode 100644 games/minimal/mods/basetools/textures/basetools_steelshovel.png create mode 100644 games/minimal/mods/basetools/textures/basetools_steelsword.png create mode 100644 games/minimal/mods/basetools/textures/basetools_stoneaxe.png rename games/minimal/mods/{default/textures/default_tool_stonepick.png => basetools/textures/basetools_stonepick.png} (100%) create mode 100644 games/minimal/mods/basetools/textures/basetools_stoneshears.png create mode 100644 games/minimal/mods/basetools/textures/basetools_stoneshovel.png create mode 100644 games/minimal/mods/basetools/textures/basetools_stonesword.png create mode 100644 games/minimal/mods/basetools/textures/basetools_woodaxe.png rename games/minimal/mods/{default/textures/default_tool_woodpick.png => basetools/textures/basetools_woodpick.png} (100%) create mode 100644 games/minimal/mods/basetools/textures/basetools_woodshears.png create mode 100644 games/minimal/mods/basetools/textures/basetools_woodshovel.png create mode 100644 games/minimal/mods/basetools/textures/basetools_woodsword.png create mode 100644 games/minimal/mods/chest/init.lua create mode 100644 games/minimal/mods/chest/mod.conf create mode 100644 games/minimal/mods/chest/textures/chest_chest.png create mode 100644 games/minimal/mods/chest_of_everything/init.lua create mode 100644 games/minimal/mods/chest_of_everything/mod.conf create mode 100644 games/minimal/mods/chest_of_everything/textures/chest_of_everything_chest.png delete mode 100644 games/minimal/mods/default/init.lua delete mode 100644 games/minimal/mods/default/mapgen.lua delete mode 100644 games/minimal/mods/default/mod.conf delete mode 100644 games/minimal/mods/default/sounds/default_grass_footstep.1.ogg delete mode 100644 games/minimal/mods/default/textures/default_apple.png delete mode 100644 games/minimal/mods/default/textures/default_book.png delete mode 100644 games/minimal/mods/default/textures/default_bookshelf.png delete mode 100644 games/minimal/mods/default/textures/default_brick.png delete mode 100644 games/minimal/mods/default/textures/default_cactus_side.png delete mode 100644 games/minimal/mods/default/textures/default_cactus_top.png delete mode 100644 games/minimal/mods/default/textures/default_chest.png delete mode 100644 games/minimal/mods/default/textures/default_clay.png delete mode 100644 games/minimal/mods/default/textures/default_clay_brick.png delete mode 100644 games/minimal/mods/default/textures/default_clay_lump.png delete mode 100644 games/minimal/mods/default/textures/default_cloud.png delete mode 100644 games/minimal/mods/default/textures/default_coal_lump.png delete mode 100644 games/minimal/mods/default/textures/default_cobble.png delete mode 100644 games/minimal/mods/default/textures/default_dirt.png delete mode 100644 games/minimal/mods/default/textures/default_fence.png delete mode 100644 games/minimal/mods/default/textures/default_furnace_fire_bg.png delete mode 100644 games/minimal/mods/default/textures/default_furnace_fire_fg.png delete mode 100644 games/minimal/mods/default/textures/default_furnace_front.png delete mode 100644 games/minimal/mods/default/textures/default_furnace_front_active.png delete mode 100644 games/minimal/mods/default/textures/default_furnace_side.png delete mode 100644 games/minimal/mods/default/textures/default_glass.png delete mode 100644 games/minimal/mods/default/textures/default_grass.png delete mode 100644 games/minimal/mods/default/textures/default_grass_footsteps.png delete mode 100644 games/minimal/mods/default/textures/default_grass_side.png delete mode 100644 games/minimal/mods/default/textures/default_gravel.png delete mode 100644 games/minimal/mods/default/textures/default_iron_lump.png delete mode 100644 games/minimal/mods/default/textures/default_junglegrass.png delete mode 100644 games/minimal/mods/default/textures/default_ladder.png delete mode 100644 games/minimal/mods/default/textures/default_lava_flowing_animated.png delete mode 100644 games/minimal/mods/default/textures/default_lava_source_animated.png delete mode 100644 games/minimal/mods/default/textures/default_leaves.png delete mode 100644 games/minimal/mods/default/textures/default_mese.png delete mode 100644 games/minimal/mods/default/textures/default_mineral_coal.png delete mode 100644 games/minimal/mods/default/textures/default_mineral_iron.png delete mode 100644 games/minimal/mods/default/textures/default_mossycobble.png delete mode 100644 games/minimal/mods/default/textures/default_nc_back.png delete mode 100644 games/minimal/mods/default/textures/default_nc_front.png delete mode 100644 games/minimal/mods/default/textures/default_nc_rb.png delete mode 100644 games/minimal/mods/default/textures/default_nc_side.png delete mode 100644 games/minimal/mods/default/textures/default_paper.png delete mode 100644 games/minimal/mods/default/textures/default_papyrus.png delete mode 100644 games/minimal/mods/default/textures/default_rail.png delete mode 100644 games/minimal/mods/default/textures/default_rail_crossing.png delete mode 100644 games/minimal/mods/default/textures/default_rail_curved.png delete mode 100644 games/minimal/mods/default/textures/default_rail_t_junction.png delete mode 100644 games/minimal/mods/default/textures/default_river_water.png delete mode 100644 games/minimal/mods/default/textures/default_sand.png delete mode 100644 games/minimal/mods/default/textures/default_sandstone.png delete mode 100644 games/minimal/mods/default/textures/default_sapling.png delete mode 100644 games/minimal/mods/default/textures/default_scorched_stuff.png delete mode 100644 games/minimal/mods/default/textures/default_sign_wall.png delete mode 100644 games/minimal/mods/default/textures/default_steel_block.png delete mode 100644 games/minimal/mods/default/textures/default_steel_ingot.png delete mode 100644 games/minimal/mods/default/textures/default_stick.png delete mode 100644 games/minimal/mods/default/textures/default_stone.png delete mode 100644 games/minimal/mods/default/textures/default_tnt_bottom.png delete mode 100644 games/minimal/mods/default/textures/default_tnt_side.png delete mode 100644 games/minimal/mods/default/textures/default_tnt_top.png delete mode 100644 games/minimal/mods/default/textures/default_tool_steelaxe.png delete mode 100644 games/minimal/mods/default/textures/default_tool_steelpick.png delete mode 100644 games/minimal/mods/default/textures/default_tool_steelshovel.png delete mode 100644 games/minimal/mods/default/textures/default_tool_steelsword.png delete mode 100644 games/minimal/mods/default/textures/default_tool_stoneaxe.png delete mode 100644 games/minimal/mods/default/textures/default_tool_stoneshovel.png delete mode 100644 games/minimal/mods/default/textures/default_tool_stonesword.png delete mode 100644 games/minimal/mods/default/textures/default_tool_woodaxe.png delete mode 100644 games/minimal/mods/default/textures/default_tool_woodshovel.png delete mode 100644 games/minimal/mods/default/textures/default_tool_woodsword.png delete mode 100644 games/minimal/mods/default/textures/default_torch.png delete mode 100644 games/minimal/mods/default/textures/default_torch_on_ceiling.png delete mode 100644 games/minimal/mods/default/textures/default_torch_on_floor.png delete mode 100644 games/minimal/mods/default/textures/default_tree.png delete mode 100644 games/minimal/mods/default/textures/default_tree_top.png delete mode 100644 games/minimal/mods/default/textures/default_wood.png delete mode 100644 games/minimal/mods/default/textures/treeprop.png create mode 100644 games/minimal/mods/dignodes/init.lua create mode 100644 games/minimal/mods/dignodes/mod.conf create mode 100644 games/minimal/mods/dignodes/textures/dignodes_choppy.png create mode 100644 games/minimal/mods/dignodes/textures/dignodes_cracky.png create mode 100644 games/minimal/mods/dignodes/textures/dignodes_crumbly.png create mode 100644 games/minimal/mods/dignodes/textures/dignodes_dig_immediate.png create mode 100644 games/minimal/mods/dignodes/textures/dignodes_none.png create mode 100644 games/minimal/mods/dignodes/textures/dignodes_rating1.png create mode 100644 games/minimal/mods/dignodes/textures/dignodes_rating2.png create mode 100644 games/minimal/mods/dignodes/textures/dignodes_rating3.png create mode 100644 games/minimal/mods/experimental/commands.lua create mode 100644 games/minimal/mods/experimental/detached.lua create mode 100644 games/minimal/mods/experimental/items.lua delete mode 100644 games/minimal/mods/experimental/modchannels.lua create mode 100644 games/minimal/mods/experimental/textures/experimental_callback_node.png delete mode 100644 games/minimal/mods/experimental/textures/experimental_dummyball.png create mode 100644 games/minimal/mods/experimental/textures/experimental_particle_sheet.png create mode 100644 games/minimal/mods/experimental/textures/experimental_particle_vertical.png delete mode 100644 games/minimal/mods/experimental/textures/experimental_tiled.png create mode 100644 games/minimal/mods/initial_message/init.lua create mode 100644 games/minimal/mods/initial_message/mod.conf delete mode 100644 games/minimal/mods/legacy/init.lua delete mode 100644 games/minimal/mods/legacy/mod.conf delete mode 100644 games/minimal/mods/legacy/textures/apple_iron.png delete mode 100644 games/minimal/mods/legacy/textures/cooked_rat.png delete mode 100644 games/minimal/mods/legacy/textures/dungeon_master.png delete mode 100644 games/minimal/mods/legacy/textures/fireball.png delete mode 100644 games/minimal/mods/legacy/textures/firefly.png delete mode 100644 games/minimal/mods/legacy/textures/oerkki1.png delete mode 100644 games/minimal/mods/legacy/textures/oerkki1_damaged.png delete mode 100644 games/minimal/mods/legacy/textures/rat.png create mode 100644 games/minimal/mods/mapgen/init.lua create mode 100644 games/minimal/mods/mapgen/mod.conf create mode 100644 games/minimal/mods/modchannels/init.lua create mode 100644 games/minimal/mods/modchannels/mod.conf create mode 100644 games/minimal/mods/soundstuff/init.lua create mode 100644 games/minimal/mods/soundstuff/mod.conf create mode 100644 games/minimal/mods/soundstuff/sounds/soundstuff_mono.ogg create mode 100644 games/minimal/mods/soundstuff/textures/soundstuff_eat.png create mode 100644 games/minimal/mods/soundstuff/textures/soundstuff_node_blank.png create mode 100644 games/minimal/mods/soundstuff/textures/soundstuff_node_climbable.png create mode 100644 games/minimal/mods/soundstuff/textures/soundstuff_node_dig.png create mode 100644 games/minimal/mods/soundstuff/textures/soundstuff_node_dug.png create mode 100644 games/minimal/mods/soundstuff/textures/soundstuff_node_fall.png create mode 100644 games/minimal/mods/soundstuff/textures/soundstuff_node_footstep.png create mode 100644 games/minimal/mods/soundstuff/textures/soundstuff_node_place.png create mode 100644 games/minimal/mods/soundstuff/textures/soundstuff_node_place_failed.png create mode 100644 games/minimal/mods/soundstuff/textures/soundstuff_node_sound.png delete mode 100644 games/minimal/mods/test/crafting.lua delete mode 100644 games/minimal/mods/test/formspec.lua delete mode 100644 games/minimal/mods/test/init.lua delete mode 100644 games/minimal/mods/test/mod.conf delete mode 100644 games/minimal/mods/test/textures/test_animation.png delete mode 100644 games/minimal/mods/test/textures/test_bg.png delete mode 100644 games/minimal/mods/test/textures/test_bg_9slice.png delete mode 100644 games/minimal/mods/test/textures/test_bg_9slice_hovered.png delete mode 100644 games/minimal/mods/test/textures/test_bg_9slice_pressed.png delete mode 100644 games/minimal/mods/test/textures/test_bg_hovered.png delete mode 100644 games/minimal/mods/test/textures/test_bg_pressed.png create mode 100644 games/minimal/mods/testentities/armor.lua create mode 100644 games/minimal/mods/testentities/callbacks.lua create mode 100644 games/minimal/mods/testentities/init.lua create mode 100644 games/minimal/mods/testentities/mod.conf create mode 100644 games/minimal/mods/testentities/textures/testentities_armorball.png create mode 100644 games/minimal/mods/testentities/textures/testentities_callback.png create mode 100644 games/minimal/mods/testentities/textures/testentities_callback_step.png create mode 100644 games/minimal/mods/testentities/textures/testentities_cube1.png create mode 100644 games/minimal/mods/testentities/textures/testentities_cube2.png create mode 100644 games/minimal/mods/testentities/textures/testentities_cube3.png create mode 100644 games/minimal/mods/testentities/textures/testentities_cube4.png create mode 100644 games/minimal/mods/testentities/textures/testentities_cube5.png create mode 100644 games/minimal/mods/testentities/textures/testentities_cube6.png create mode 100644 games/minimal/mods/testentities/textures/testentities_dungeon_master.png create mode 100644 games/minimal/mods/testentities/textures/testentities_sprite.png create mode 100644 games/minimal/mods/testentities/textures/testentities_upright_sprite1.png create mode 100644 games/minimal/mods/testentities/textures/testentities_upright_sprite2.png create mode 100644 games/minimal/mods/testentities/visuals.lua create mode 100644 games/minimal/mods/testfood/init.lua create mode 100644 games/minimal/mods/testfood/mod.conf create mode 100644 games/minimal/mods/testfood/textures/testfood_bad.png create mode 100644 games/minimal/mods/testfood/textures/testfood_bad2.png create mode 100644 games/minimal/mods/testfood/textures/testfood_good.png create mode 100644 games/minimal/mods/testfood/textures/testfood_good2.png create mode 100644 games/minimal/mods/testformspec/callbacks.lua create mode 100644 games/minimal/mods/testformspec/dummy_items.lua create mode 100644 games/minimal/mods/testformspec/formspec.lua create mode 100644 games/minimal/mods/testformspec/init.lua create mode 100644 games/minimal/mods/testformspec/mod.conf rename games/minimal/mods/{test/textures/test_animation.jpg => testformspec/textures/testformspec_animation.jpg} (100%) create mode 100644 games/minimal/mods/testformspec/textures/testformspec_animation.png create mode 100644 games/minimal/mods/testformspec/textures/testformspec_bg.png create mode 100644 games/minimal/mods/testformspec/textures/testformspec_bg_9slice.png create mode 100644 games/minimal/mods/testformspec/textures/testformspec_bg_9slice_hovered.png create mode 100644 games/minimal/mods/testformspec/textures/testformspec_bg_9slice_pressed.png create mode 100644 games/minimal/mods/testformspec/textures/testformspec_bg_hovered.png create mode 100644 games/minimal/mods/testformspec/textures/testformspec_bg_pressed.png create mode 100644 games/minimal/mods/testformspec/textures/testformspec_button_image.png create mode 100644 games/minimal/mods/testformspec/textures/testformspec_hovered.png create mode 100644 games/minimal/mods/testformspec/textures/testformspec_item.png create mode 100644 games/minimal/mods/testformspec/textures/testformspec_node.png create mode 100644 games/minimal/mods/testformspec/textures/testformspec_pressed.png create mode 100644 games/minimal/mods/testnodes/README.md create mode 100644 games/minimal/mods/testnodes/drawtypes.lua create mode 100644 games/minimal/mods/testnodes/init.lua create mode 100644 games/minimal/mods/testnodes/light.lua create mode 100644 games/minimal/mods/testnodes/liquids.lua create mode 100644 games/minimal/mods/testnodes/meshes.lua create mode 100644 games/minimal/mods/testnodes/mod.conf create mode 100644 games/minimal/mods/testnodes/models/testnodes_ocorner.obj create mode 100644 games/minimal/mods/testnodes/models/testnodes_pyramid.obj create mode 100644 games/minimal/mods/testnodes/nodeboxes.lua create mode 100644 games/minimal/mods/testnodes/param2.lua create mode 100644 games/minimal/mods/testnodes/properties.lua create mode 100644 games/minimal/mods/testnodes/settingtypes.txt create mode 100644 games/minimal/mods/testnodes/textures.lua create mode 100644 games/minimal/mods/testnodes/textures/testnodes_1.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_1g.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_1w.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_1wg.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_2.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_2g.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_2w.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_2wg.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_3.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_3g.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_3w.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_3wg.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_4.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_4g.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_4w.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_4wg.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_5.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_5g.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_5w.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_5wg.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_6.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_6g.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_6w.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_6wg.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_airlike.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_allfaces.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_allfaces_optional.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_alpha.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_alpha128.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_alpha191.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_alpha64.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_anim.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_attached_bottom.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_attached_side.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_attached_top.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_attachedw_bottom.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_attachedw_side.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_attachedw_top.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_bouncy.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_buildable_to.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_climbable_nojump_side.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_climbable_side.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_damage.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_damage_neg.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_drowning.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_fall_damage_minus.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_fall_damage_plus.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_fencelike.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_firelike.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_glasslike.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_glasslike_detail.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_glasslike_framed.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_glasslike_framed2.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_glasslike_framed_optional.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_glasslikeliquid.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_1.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_10.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_11.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_12.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_13.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_14.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_2.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_3.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_4.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_5.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_6.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_7.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_8.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_light_9.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_line_crossing.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_line_curved.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_line_straight.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_line_t_junction.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquid.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidflowing.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r0.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r1.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r2.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r3.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r4.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r5.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r6.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r7.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r8.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidsource.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidsource_r0.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidsource_r1.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidsource_r2.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidsource_r3.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidsource_r4.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidsource_r5.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidsource_r6.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidsource_r7.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_liquidsource_r8.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_mesh_stripes.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_mesh_stripes2.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_mesh_stripes3.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_mesh_stripes4.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_node.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_node_falling.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_nodebox.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_nojump_side.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_nojump_top.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_normal.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_normal1.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_normal2.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_normal3.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_normal4.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_normal5.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_normal6.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_palette_facedir.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_palette_full.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_palette_wallmounted.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_degrotate.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_leveled.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_meshoptions.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_degrotate.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_leveled.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_meshoptions.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_waving.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_degrotate.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_leveled.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_meshoptions.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_waving.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_plantlike_waving.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_rail2_crossing.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_rail2_curved.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_rail2_straight.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_rail2_t_junction.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_rail_crossing.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_rail_curved.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_rail_straight.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_rail_t_junction.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_signlike.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_slippery.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_street_crossing.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_street_curved.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_street_straight.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_street_t_junction.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_sunlight_filter.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_torchlike_ceiling.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_torchlike_floor.png create mode 100644 games/minimal/mods/testnodes/textures/testnodes_torchlike_wall.png create mode 100644 games/minimal/mods/testpathfinder/README.md create mode 100644 games/minimal/mods/testpathfinder/init.lua create mode 100644 games/minimal/mods/testpathfinder/mod.conf create mode 100644 games/minimal/mods/testpathfinder/textures/testpathfinder_testpathfinder.png create mode 100644 games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint.png create mode 100644 games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint_end.png create mode 100644 games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint_start.png create mode 100644 games/minimal/mods/testtools/README.md create mode 100644 games/minimal/mods/testtools/init.lua create mode 100644 games/minimal/mods/testtools/mod.conf create mode 100644 games/minimal/mods/testtools/textures/testtools_entity_rotator.png create mode 100644 games/minimal/mods/testtools/textures/testtools_entity_scaler.png create mode 100644 games/minimal/mods/testtools/textures/testtools_entity_spawner.png create mode 100644 games/minimal/mods/testtools/textures/testtools_falling_node_tool.png create mode 100644 games/minimal/mods/testtools/textures/testtools_node_setter.png create mode 100644 games/minimal/mods/testtools/textures/testtools_object_attacher.png create mode 100644 games/minimal/mods/testtools/textures/testtools_object_editor.png create mode 100644 games/minimal/mods/testtools/textures/testtools_object_mover.png create mode 100644 games/minimal/mods/testtools/textures/testtools_param2tool.png create mode 100644 games/minimal/mods/testtools/textures/testtools_remover.png create mode 100644 games/minimal/mods/tiled/init.lua create mode 100644 games/minimal/mods/tiled/mod.conf create mode 100644 games/minimal/mods/tiled/textures/tiled_tiled.png create mode 100644 games/minimal/mods/unittests/crafting.lua create mode 100644 games/minimal/mods/unittests/crafting_prepare.lua create mode 100644 games/minimal/mods/unittests/init.lua create mode 100644 games/minimal/mods/unittests/mod.conf rename games/minimal/mods/{test => unittests}/player.lua (69%) create mode 100644 games/minimal/mods/unittests/random.lua create mode 100644 games/minimal/mods/unittests/textures/unittests_coal_lump.png create mode 100644 games/minimal/mods/unittests/textures/unittests_iron_lump.png create mode 100644 games/minimal/mods/unittests/textures/unittests_repairable_tool.png create mode 100644 games/minimal/mods/unittests/textures/unittests_steel_ingot.png create mode 100644 games/minimal/mods/unittests/textures/unittests_stick.png create mode 100644 games/minimal/mods/unittests/textures/unittests_torch.png create mode 100644 games/minimal/mods/unittests/textures/unittests_unrepairable_tool.png create mode 100644 games/minimal/mods/util_commands/init.lua create mode 100644 games/minimal/mods/util_commands/mod.conf create mode 100644 games/minimal/screenshot.png create mode 100644 games/minimal/settingtypes.txt diff --git a/games/minimal/LICENSE.txt b/games/minimal/LICENSE.txt new file mode 100644 index 000000000..108c66abf --- /dev/null +++ b/games/minimal/LICENSE.txt @@ -0,0 +1,4 @@ +License information for Developer Test +-------------------------------------- + +The same license as for Minetest applies. diff --git a/games/minimal/README.md b/games/minimal/README.md new file mode 100644 index 000000000..a94530498 --- /dev/null +++ b/games/minimal/README.md @@ -0,0 +1,52 @@ +# Minimal development test + +This is a basic testing environment that contains a bunch of things to test the engine, but it could also be used as a minimal testbed for testing out mods. + +## Features + +* Basic nodes for mapgen +* Basic, minimal map generator +* Lots of example nodes for testing drawtypes, param2, light level, and many other node properties +* Example entities +* Other example items +* Formspec test (via `/test_formspec` command) +* Automated unit tests (disabled by default) +* Tools for manipulating nodes and entities, like the "Param2 Tool" + +## Getting started + +Basically, just create a world and start. A few important things to note: + +* Items are gotten from the “Chest of Everything” (`chest_of_everything:chest`) +* When you lost your initial items, type in `/stuff` command to get them back +* By default, Creative Mode activates infinite node placement. This behavior can be changed with the `devtest_infplace` setting +* Use the `/infplace` command to toggle infinite node placement in-game +* Use the Param2 Tool to change the param2 of nodes; it's useful to experiment with the various drawtype test nodes +* Check out the game settings and server commands for additional tests and features +* Creative Mode does nothing (apart from default engine behavior) + +Confused by a certain node or item? Check out for inline code comments. + +### Example tests + +* You can use this to test what happens if a player is simultaneously in 2 nodes with `damage_per_second` but with a different value. +* Or use the Falling Node Tool on various test nodes to see how they behave when falling. +* You could also use this as a testbed for dependency-free mods, e.g. to test out how your formspecs behave without theming. + +## Random notes + +* Experimental/strange/unstructured tests can be found in the `experimental` mod +* Textures of drawtype test nodes have a red dot at the top left corner. This is to see whether the textures are oriented properly + +## Design philosophy + +This should loosely follow the following principles: + +* Engine testing: The main focus of this is to aid testing of *engine* features, such as mapgen or node drawtypes +* Mod testing: The secondary focus is to help modders as well, either as a minimal testbed for mods or even as a code example +* Minimal interference: Under default settings, it shall not interfere with APIs except on explicit user wish. Non-trivial tests and features need to be enabled by a setting first +* Convenience: Have various tools to make usage easier and more convenient +* Reproducing engine bugs: When an engine bug was found, consider creating a test case +* Clarity: Textures and names need to be designed to keep different things clearly visually apart at a glance +* Low loading time: It must load blazing-fast so stuff can be tested quickly + diff --git a/games/minimal/game.conf b/games/minimal/game.conf index 99bfaf0a4..ae76cf7ad 100644 --- a/games/minimal/game.conf +++ b/games/minimal/game.conf @@ -1,2 +1,2 @@ name = Minimal development test - +description = Testing environment to help with testing the engine features of Minetest. It can also be helpful in mod development. diff --git a/games/minimal/menu/background.png b/games/minimal/menu/background.png index ea5fbdce54e58a08cfbdf97b88162836a2cccd76..415bb3d146a2ff6a8bca17c90c68cfc6638b2183 100644 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKQJ-_N$KcnwI)^4$>`tsu9V)uSI+p0PC2sT_0 Z!H_UjT<6cfE-V40+tbz0Wt~$(69B>FGWY-h literal 392 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ksKQJ-_$t8*|VnB+y*vT`5gM;JtL;nXrE@y#9 zWHAE+-w_aIoT|+y4HRSx@Ck8s3^4!y|G$Zm=W(DhlAbP(AsP4HUa|H&>>$$m(D-A6 zW>cxVPQ#X$I$Gi);YrK51;dmWMR`@Z73PK?Se(e5b41kE+MtQ`0H21>bC+FCP7Njd zeqG;_+t7guUPxbwDZ6%I?wX1%X_)Ajn(`v2zt aHu~4d>MZC8d*cQSHU>{uKbLh*2~7YzVxFu3 diff --git a/games/minimal/menu/header.png b/games/minimal/menu/header.png new file mode 100644 index 0000000000000000000000000000000000000000..db864d6b7805ca41d711f4f8e72c4df134441e71 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^EkMk}$P6TBX0`_cDYgKg5Z7nVp8fy--_XVTCQyX2 zB*-t=*Q5KXH;_~1>Eakt!I-STzk!9rz+!`efd#`&CK(f8`GBbgf9Kn+?LYXS zQ-1fkqo1Xe`qwkK{(E=-j6&vtGdIeNjUKIC$j2-kAS-{kpS^}hUV`7i;7&e6=O6YY zJ7>0)zqxpL_OKtw`e*y&-@bo!r~b3s*VS)#+~mx-oSE^@T@`1W{+e8%D;PXo{an^L HB{Ts5E96Qf literal 0 HcmV?d00001 diff --git a/games/minimal/menu/icon.png b/games/minimal/menu/icon.png index 8ef6750232b7b0c55777ac407e59528321a91cc9..f854b9c319242b2f5a3d5cb8d4c89a6ffe448859 100644 GIT binary patch delta 201 zcmV;)05<>H0oehN7=Ho-0000gY!MUy000b7OjJbx004l1fH`6v|NsB$+k@!<0004W zQchCo=?vrkCrLClQ^-HTL4e)#<^4|c)`UI_<;CD2}#zHVg?Pvk<#N-Ji>_7?V zEC~(RSn3e<0U&~o0`(ILqeB-b*xj$WpKEj6>F3!2aYPDipMDOY00000NkvXXu0mjf DtNl*f delta 202 zcmV;*05$*F0onnO7=H)@0001B+zGV+000b7OjJbx002QyH-LbE|NsAnQ+%rc0004W zQchCTG6 zn%Pd2pOd{0#8ZF}0QUm6Cq2UtUIHKn5P^aUL2(7(0Pau?bwdCPgX+Kny$xsI0RhmV zEpXm}1wA*gpyvh_^xVJ#<<~&DKzQFLeImw4|8d{l3dZXPm%^ilaR2}S07*qoM6N<$ Ef)V9TumAu6 diff --git a/games/minimal/mods/basenodes/init.lua b/games/minimal/mods/basenodes/init.lua new file mode 100644 index 000000000..8156c4bec --- /dev/null +++ b/games/minimal/mods/basenodes/init.lua @@ -0,0 +1,334 @@ +local WATER_ALPHA = 160 +local WATER_VISC = 1 +local LAVA_VISC = 7 + +-- +-- Node definitions +-- + +-- Register nodes + +minetest.register_node("basenodes:stone", { + description = "Stone", + tiles = {"default_stone.png"}, + groups = {cracky=3}, +}) + +minetest.register_node("basenodes:desert_stone", { + description = "Desert Stone", + tiles = {"default_desert_stone.png"}, + groups = {cracky=3}, +}) + +minetest.register_node("basenodes:dirt_with_grass", { + description = "Dirt with Grass", + tiles ={"default_grass.png", + -- a little dot on the bottom to distinguish it from dirt + "default_dirt.png^basenodes_dirt_with_grass_bottom.png", + {name = "default_dirt.png^default_grass_side.png", + tileable_vertical = false}}, + groups = {crumbly=3, soil=1}, +}) + +minetest.register_node("basenodes:dirt_with_snow", { + description = "Dirt with Snow", + tiles ={"basenodes_dirt_with_snow.png", + -- a little dot on the bottom to distinguish it from dirt + "default_dirt.png^basenodes_dirt_with_snow_bottom.png", + {name = "default_dirt.png^default_snow_side.png", + tileable_vertical = false}}, + groups = {crumbly=3, soil=1}, +}) + +minetest.register_node("basenodes:dirt", { + description = "Dirt", + tiles ={"default_dirt.png"}, + groups = {crumbly=3, soil=1}, +}) + +minetest.register_node("basenodes:sand", { + description = "Sand", + tiles ={"default_sand.png"}, + groups = {crumbly=3}, +}) + +minetest.register_node("basenodes:desert_sand", { + description = "Desert Sand", + tiles ={"default_desert_sand.png"}, + groups = {crumbly=3}, +}) + +minetest.register_node("basenodes:gravel", { + description = "Gravel", + tiles ={"default_gravel.png"}, + groups = {crumbly=2}, +}) + +minetest.register_node("basenodes:junglegrass", { + description = "Jungle Grass", + drawtype = "plantlike", + tiles ={"default_junglegrass.png"}, + inventory_image = "default_junglegrass.png", + wield_image = "default_junglegrass.png", + paramtype = "light", + walkable = false, + groups = {snappy=3}, +}) + +minetest.register_node("basenodes:tree", { + description = "Normal Tree Trunk", + tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"}, + is_ground_content = false, + groups = {choppy=2,oddly_breakable_by_hand=1}, +}) + +minetest.register_node("basenodes:leaves", { + description = "Normal Leaves", + drawtype = "allfaces_optional", + tiles = {"default_leaves.png"}, + paramtype = "light", + is_ground_content = false, + groups = {snappy=3}, +}) + +minetest.register_node("basenodes:jungletree", { + description = "Jungle Tree Trunk", + tiles = {"default_jungletree_top.png", "default_jungletree_top.png", "default_jungletree.png"}, + is_ground_content = false, + groups = {choppy=2,oddly_breakable_by_hand=1}, +}) + +minetest.register_node("basenodes:jungleleaves", { + description = "Jungle Leaves", + drawtype = "allfaces_optional", + tiles = {"default_jungleleaves.png"}, + paramtype = "light", + is_ground_content = false, + groups = {snappy=3}, +}) + +minetest.register_node("basenodes:pine_tree", { + description = "Pine Tree Trunk", + tiles = {"default_pine_tree_top.png", "default_pine_tree_top.png", "default_pine_tree.png"}, + is_ground_content = false, + groups = {choppy=2,oddly_breakable_by_hand=1}, +}) + +minetest.register_node("basenodes:pine_needles", { + description = "Pine Needles", + drawtype = "allfaces_optional", + tiles = {"default_pine_needles.png"}, + paramtype = "light", + is_ground_content = false, + groups = {snappy=3}, +}) + +minetest.register_node("basenodes:water_source", { + description = "Water Source", + drawtype = "liquid", + tiles = {"default_water.png"}, + special_tiles = { + {name = "default_water.png", backface_culling = false}, + {name = "default_water.png", backface_culling = true}, + }, + alpha = WATER_ALPHA, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drowning = 1, + liquidtype = "source", + liquid_alternative_flowing = "basenodes:water_flowing", + liquid_alternative_source = "basenodes:water_source", + liquid_viscosity = WATER_VISC, + post_effect_color = {a = 64, r = 100, g = 100, b = 200}, + groups = {water = 3, liquid = 3}, +}) + +minetest.register_node("basenodes:water_flowing", { + description = "Flowing Water", + drawtype = "flowingliquid", + tiles = {"default_water_flowing.png"}, + special_tiles = { + {name = "default_water_flowing.png", backface_culling = false}, + {name = "default_water_flowing.png", backface_culling = false}, + }, + alpha = WATER_ALPHA, + paramtype = "light", + paramtype2 = "flowingliquid", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drowning = 1, + liquidtype = "flowing", + liquid_alternative_flowing = "basenodes:water_flowing", + liquid_alternative_source = "basenodes:water_source", + liquid_viscosity = WATER_VISC, + post_effect_color = {a = 64, r = 100, g = 100, b = 200}, + groups = {water = 3, liquid = 3}, +}) + +minetest.register_node("basenodes:river_water_source", { + description = "River Water Source", + drawtype = "liquid", + tiles = { "default_river_water.png" }, + special_tiles = { + {name = "default_river_water.png", backface_culling = false}, + {name = "default_river_water.png", backface_culling = true}, + }, + alpha = WATER_ALPHA, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drowning = 1, + liquidtype = "source", + liquid_alternative_flowing = "basenodes:river_water_flowing", + liquid_alternative_source = "basenodes:river_water_source", + liquid_viscosity = 1, + liquid_renewable = false, + liquid_range = 2, + post_effect_color = {a = 103, r = 30, g = 76, b = 90}, + groups = {water = 3, liquid = 3, }, +}) + +minetest.register_node("basenodes:river_water_flowing", { + description = "Flowing River Water", + drawtype = "flowingliquid", + tiles = {"default_river_water_flowing.png"}, + special_tiles = { + {name = "default_river_water_flowing.png", backface_culling = false}, + {name = "default_river_water_flowing.png", backface_culling = false}, + }, + alpha = WATER_ALPHA, + paramtype = "light", + paramtype2 = "flowingliquid", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drowning = 1, + liquidtype = "flowing", + liquid_alternative_flowing = "basenodes:river_water_flowing", + liquid_alternative_source = "basenodes:river_water_source", + liquid_viscosity = 1, + liquid_renewable = false, + liquid_range = 2, + post_effect_color = {a = 103, r = 30, g = 76, b = 90}, + groups = {water = 3, liquid = 3, }, +}) + +minetest.register_node("basenodes:lava_flowing", { + description = "Flowing Lava", + drawtype = "flowingliquid", + tiles = {"default_lava_flowing.png"}, + special_tiles = { + {name="default_lava_flowing.png", backface_culling = false}, + {name="default_lava_flowing.png", backface_culling = false}, + }, + paramtype = "light", + light_source = minetest.LIGHT_MAX, + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drowning = 1, + damage_per_second = 4, + liquidtype = "flowing", + liquid_alternative_flowing = "basenodes:lava_flowing", + liquid_alternative_source = "basenodes:lava_source", + liquid_viscosity = LAVA_VISC, + post_effect_color = {a=192, r=255, g=64, b=0}, + groups = {lava=3, liquid=1}, +}) + +minetest.register_node("basenodes:lava_source", { + description = "Lava Source", + drawtype = "liquid", + tiles = { "default_lava.png" }, + special_tiles = { + {name = "default_lava.png", backface_culling = false}, + {name = "default_lava.png", backface_culling = true}, + }, + paramtype = "light", + light_source = minetest.LIGHT_MAX, + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drowning = 1, + damage_per_second = 4, + liquidtype = "source", + liquid_alternative_flowing = "basenodes:lava_flowing", + liquid_alternative_source = "basenodes:lava_source", + liquid_viscosity = LAVA_VISC, + post_effect_color = {a=192, r=255, g=64, b=0}, + groups = {lava=3, liquid=1}, +}) + +minetest.register_node("basenodes:cobble", { + description = "Cobblestone", + tiles ={"default_cobble.png"}, + is_ground_content = false, + groups = {cracky=3}, +}) + +minetest.register_node("basenodes:mossycobble", { + description = "Mossy Cobblestone", + tiles ={"default_mossycobble.png"}, + is_ground_content = false, + groups = {cracky=3}, +}) + +minetest.register_node("basenodes:apple", { + description = "Apple", + drawtype = "plantlike", + tiles ={"default_apple.png"}, + inventory_image = "default_apple.png", + paramtype = "light", + is_ground_content = false, + sunlight_propagates = true, + walkable = false, + groups = {dig_immediate=3}, + + -- Make eatable because why not? + on_use = minetest.item_eat(2), +}) + +minetest.register_node("basenodes:ice", { + description = "Ice", + tiles ={"default_ice.png"}, + groups = {cracky=3}, +}) + +-- The snow nodes intentionally have different tints to make them more +-- distinguishable +minetest.register_node("basenodes:snow", { + description = "Snow Sheet", + tiles = {"basenodes_snow_sheet.png"}, + groups = {crumbly=3}, + walkable = false, + paramtype = "light", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, + }, +}) + +minetest.register_node("basenodes:snowblock", { + description = "Snow Block", + tiles ={"default_snow.png"}, + groups = {crumbly=3}, +}) + + diff --git a/games/minimal/mods/basenodes/mod.conf b/games/minimal/mods/basenodes/mod.conf new file mode 100644 index 000000000..25024dc63 --- /dev/null +++ b/games/minimal/mods/basenodes/mod.conf @@ -0,0 +1,2 @@ +name = basenodes +description = Contains basic nodes for mapgen diff --git a/games/minimal/mods/basenodes/textures/basenodes_dirt_with_grass_bottom.png b/games/minimal/mods/basenodes/textures/basenodes_dirt_with_grass_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..5e8fc41a951f6d48cb260110ef67048a5232361c GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=4@sJoxwR!~g&Pv->O> zW_r%v7@j-#e=ksiwIs+d7)UcP9Li?f2&4i$T^vIy7){SyOE=Xm%DI@@Q_jol-E6SNMo~3SdG0E+&(98jni_FYfi1rHKjTg&i92D>cP$6n O!QkoY=d#Wzp$P!-!ae^0 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basenodes/textures/basenodes_dirt_with_snow_bottom.png b/games/minimal/mods/basenodes/textures/basenodes_dirt_with_snow_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..447c94e9860cd8d7a8510ecf768141c4da33f952 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`6`n4RAr*{C2iX7ZscdNaU;CTk z#T=dx1{NoYU;pFx3RD@K%2{p@w4?X!p19BJ8@=*3zbn`x(x~FIsZ0N@n3! b-WmGsS2s=H8>;FIbOVE@tDnm{r-UW|q%=ig literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basenodes/textures/basenodes_snow_sheet.png b/games/minimal/mods/basenodes/textures/basenodes_snow_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..455332093d1a834e621b648ac62cdf69976c17f0 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|u1~+d`v3p`v6q*{Dq3d) z1tUCN978x{Sq~a=H7JNQJhXRL@ASK%a6{M1sk?-&|DnJ`i5u%eZ0>3Pw!5Qx$mE@M znjP!crJL#&%iK~xwS1;GJg1R)3n!CpmSW%S6I{Qs+|0-i?i*2naK z7Z&kkSSJ)Y65B_u_jaOd#Y*7eW6>22rXM_?J;DiV3KW!nHdFwMZ$X4zlh=q#lZ4*o zDk;`mf(uac6wkYE6aF>7EK2GB%!&t}&LQ_100000NkvXXu0mjfG{T9{ literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basenodes/textures/default_desert_stone.png b/games/minimal/mods/basenodes/textures/default_desert_stone.png new file mode 100644 index 0000000000000000000000000000000000000000..5126fb61ce84f5c023753a39ed47107c1e69e233 GIT binary patch literal 584 zcmV-O0=NB%P)M=+sNIGj;8$$w_Zdtta= zL483iqEtDzUqH29K#NE*lT0*#LM_5>QG7rvt64mmPd2(>LB3=~o>Di*dSJ$PTfk~f zs#rXTMlii&M5tFgkxMhQT|b*pHpO*Xa5^W&bXbN(FR@%c%7SUgePh6BOU8Iz%!O^x zk9o3OKf7T2VISv`3_D$$dDmQFR2Of%AzfPX?P zbUZ26o{C4ZE5HB%0QE^kK~#7F4a(DDMFA85uybvj&$eyb+JBKY-vK~Sz;J@3Xolr@ zK?F%g6;;y>)3P1c(|rg+I^suTVLTB{x?Cy^nPfJX&lO~{h#;jBQwF1gnq;+B|8L1i zgRB5WH(R0HRNHB(Lza;)C|Iu_3<4@MjEu(igopZc(wRl-!@1c`Q45cRrLtPjHrw8= z#zuyneFkXbAg1#ExQ837MX#`fX(E4IN76@(tgORMhJ#bJkU3XYG1*R~BW;d?@v2@+ zkQX8mki)HU6(N_u-HC_$6ww!SyKfOni`9X7G!O8(O*lH~0`d)iG#_U>hjyHaBx-*H WxFrOtm=sh10000+xj5kBG+jwP?dy=OpTdxIW%S%svYi-AiUwq95neHg?hCz7VnWHWv=)Dt@+7{ zG9yk$tjix{Qdekl_Ycmh6ftmSTdZf+$_P<()8l^eEE301l)&j zPgzWHUtPRR0~_FG^)aeC*V2YeNTaW_wd>dGb*RAH#b}es_^G>U)5gg@K~1JsE{-0v z0A`D8y1L&TY&%$cYrBfdipqnT$G789yi|&^JElE7R3ocRv4*+<>nTzHM=5G!^)%aqz(1wGAfXN%v*Yjt8^_?`gG1 z&);$RzU%0jO?}+_=xVRBAXv!ga z$z&xWeSVb4&(XO?R53R~8Jb?gL!H)|C1iMQ#?79<0v$FGc_eXs-)NrylE3^4-Qh4C z@{|Sc%w?TE+llJ3I7#|;@Tx2&98IsgJB9e|duk4Gx9tuPwp3AEIj^`(<;T;rzBO|k zb>zf#QH)Q*`sE2a9@=S~OL6{o%oB#Wg`}wk66w_9%mFtYMOh=53$us73?bCje;Rml UYvInCO8@`>07*qoM6N<$f@__Gg8%>k literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basenodes/textures/default_grass.png b/games/minimal/mods/basenodes/textures/default_grass.png new file mode 100644 index 0000000000000000000000000000000000000000..3d6397186fbaaceb56eea5c2c314546f09016a67 GIT binary patch literal 697 zcmV;q0!ICbP)l^t)Bw|+Aa?;hI|w<&kB=MGOsmJbTy3SC zm`gVDuG)4Mj$oW6m{?*n+K8RKani|YHZwx(>Z-{0LhemX(Kl5eL~)eoe(c~;07xMo z+tHK(WmjcuFyt0We7-CMbn(TT!90Va5UZPB$^kwX4^<(wWp(5D_*4yMq}+XelIL&c z)El0c4MwDsL+mmKsk1ji{J88FjtwSocTqeKR zMBn^$zMqFx(G!XS?k$%MgsKyAYs5S$mr%kXfmS<$-6#*j5PkT0rlE=BjNnPCmf6-Y zo1^4>)U#;X!!#i_yT5Dx`==P^7I6c&#iXQGs?$Bd8e`~~(faGJzxuk|&%Jzi|N4)O z%dIr^+y!9{#@IsGcJvr(Q`tU#eC#5hx(kMFSyp}5-6ng)jcfzEZkQ0^_`Ofl>nphw z+oRJcaNWS?lW8r0u6~oFWz;O=9X`WB)+)|pFt@nvWgHSO#gqcAtaV+BN!Xk~2Og!K zGL}u9vMw*rQ^U~B^$ITURl4xgFs#?&X|tO2&`aP@@9ZR#^Z2qs2$=@FlkZ>szIK^` zrpIyoDr^WAiQm;Iap<%)o|iWzTNeG#zx*eg>F<9ZUNG5Fg1-3fSgHxzBSOUUXp~aQ za94rJj5hE%cfi>7TCIx~QiQ36E2DvFol=*t$3hJG fj_32BDC_?LK=*Q2k?)<+00000NkvXXu0mjfB~n)> literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basenodes/textures/default_grass_side.png b/games/minimal/mods/basenodes/textures/default_grass_side.png new file mode 100644 index 0000000000000000000000000000000000000000..04770b6f659cab9fb6e146a093c9d2447bbfa274 GIT binary patch literal 796 zcmV+%1LOROP)9;n+h7p>B+Crpq|D58fu5lEZimbKn4c+**;X~vp`T%QbrgsAONU7ds;3&y zwW*tqw?BA^p_}l9OEu3tKHrlB9xrWQG5$5z7b$Y{YRn{OP!5M=Pl&^tFE8*N#qI4g zT{-f2TaY~-sp}Cpw0W+t$d3&|Es^Wp24xGX=K;@hdGr0(X-wm!CoB`6ou%wvGz+7V zGHogImSnkRx!)771JqD~bfj@k3_2rm%usehD~T^GHnGn`S|LMaASFx_q$Ym6XsPQS zd7s{po5U;x%`k9#m(%M3#}B!`t9k2#JxSLzlqn%(n~F?L*7T5W@&p z7dh2wVz*o1YLBV=Xju$JVf5S3%Op|MBHCf)$G?#2%vi z8Rwq1hQNt<^YtC|G+6vTu14xsv0ne5@Fc7@F->8y2^_|wCW`iy znae}k^8FA0QkNrt{d0rigWanetZ%=2jk+6A-hgGsEz15MZQ&UjmX`L;&i0s?`>n0`v$OxNultsk_^hn=w6y=3nfuPp_mq_N z&CT}G()^j3{IRk9m6i6?)cy%!8J++D0Io?yK~#7F70Sh-#V`~@!4t{8K|f|@=)b@Z zvmU4<;go}nZA{&`4%$wAM;<`9kVhWVk|&9Qp=CUcnd;p9Co~ThId@A;$uL_b$_yrJ zHrpKr*gN77YmS^0RJ(J+7sFvT%-Sp5;yx~ssb|4Mpv37p+fb<7N`|2Aq1e&l7St~= zg_uneQ$#Zx&s^YjY4pwn%}1%Ns?!CxAqATBa2jr?_0C@r3`PQGFBJI~H3kTo{elut P00000NkvXXu0mjf&JVwF literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basenodes/textures/default_junglegrass.png b/games/minimal/mods/basenodes/textures/default_junglegrass.png new file mode 100644 index 0000000000000000000000000000000000000000..d64e33abce8cb5324f338f95d39842c1b6f5616d GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?bWysG_@nDba)38gGlrUha zxTxy|lwvFi@(X5gcy=QV$jR_@aSY**Wj)Bq*rFiddhmD=V~OGcaqbgY42-|icS#mB zT1M~*Oei^B!aVO$OIw}RTsE($wDiLfrd4bqHuD;uR26Szi{G6zHQ{+s3G3+qP{R>+klHA7}B_R4<;!pnCxKfxpafM_aW;@6uPtbV{#uNOwTM zWV{Fl^P2QKwN3j0dxjia3=C>=9Usa7VNIuX+6Z(yl547fvneFlsQu-Y_5jPw8O|@E zUXR6g!%OYaaXr+XXf&vaJ36U_y25|NIQc8^A{W&g&?g;Hu4RV~0$a>HhHOmMRqX?I zs2&$jbPNHFa)aA7A$zQt;)15e~Ia;0mP!?2Uu}-^F*WWg$ zY~N-+39{D?0MfkB8SP8o0B5zLY#p>w`_lt(&tk25H9DAWy-t^3xkCde1AxuqrtWA* zrXSSD@>dqioF^l!W1QBSZ|C3+ZPn89QG3NW+QX%*ZTan?|ZFIgX+c?zpQ-o z)4#4`^}5Y;K6Qgivu3+y<)!D33}{sx>u`MqWvW01DyAflz5$ zK#0=yJU?(1HRrh?M8|R8)k^AxbwbG`O?3l7u490ly2(rIna0WC(9~Tni_39>rehAJ zYg^5VJ3xpCB@jTbz2CcaI}S`-Fv-~xmiSh`eR6O*yna9?=yzLBUwMZM_Tg*y(~+PQ zEmN)EYYkUe)%36`2?dzyS(X-(6NJ(B-l^^m#wVvGFIo-Hv2i;L3PDS>V;gYJxPsOX zzx>3KG@Wr|>SmIH%i(l7JlH!pCjdv5T?8dLnkI8LF7r)AGq=JhxOI<(>?t#RWKhfY^rZhZx9d)BcmoBr_YZ&|(!ed~Ho zw{P~o*#46ZM|iNL5TG&3Br>*E|2!M>X5epZ%;q!MYJ|1AKDg&B7Cd9}!QBDEpvWdr zDguC(u;t#)Rx|Pdprg@6&hu7GEQby+im+{mhW_qLFZ;eJvP=Q_KaD<9=P>kPF#rGn M07*qoM6N<$f(y}N3;+NC literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basenodes/textures/default_jungletree_top.png b/games/minimal/mods/basenodes/textures/default_jungletree_top.png new file mode 100644 index 0000000000000000000000000000000000000000..e80de8a69ff4537e1d01388ca82186cc1a4b760b GIT binary patch literal 714 zcmV;*0yX`KP)x@d^Rd?TN)h-bdRysL@mQK#Ru-qg0|rE$+Eq(Ix{Wg`zry?2yA`cu(zsTwn2S* zsGd??6Z<8#EsX=o2|kMmeI3~`zzxucD*Xn;-VE)pIsU)P^8fzw(x46HiQm^}{R$BJ zvz?4Cw;X*_pf&mnR!tbKHkMkO#A?evzsybiJ-Cc%J6G+vwNXaSH*W=w{a~gT(>lr< z9G8>M|LNE`a$Sa7iLU|ABo{`9*KC8QJ}$2*RE@3TwqC+$z4 z;()V~Dv!8cHk4HwazPeMWx|>nxwB%P6xRjMk3RBn@U|qxj7%}qe`Oi|P0<}${>O(` zx{AWTUmv9|JLzs?FHjQy-3!k=5&ivp6NJKPc9}<5>6J8^Fhyk%-vBqzQ=Tlrl~DUK z02U;>I{I@KqHxiM-|=(z7NrMUrnLnN71w?ByCf|N)}CqOwgOj-#WW`b%mrd{>sltI wb=r}#vXo!01b+PJRUSN7_y6YSA6nN008DC23aufI_5c6?07*qoM6N<$f-JjNZvX%Q literal 0 HcmV?d00001 diff --git a/games/minimal/mods/default/textures/default_lava.png b/games/minimal/mods/basenodes/textures/default_lava.png similarity index 100% rename from games/minimal/mods/default/textures/default_lava.png rename to games/minimal/mods/basenodes/textures/default_lava.png diff --git a/games/minimal/mods/basenodes/textures/default_lava_flowing.png b/games/minimal/mods/basenodes/textures/default_lava_flowing.png new file mode 100644 index 0000000000000000000000000000000000000000..07066a6e3911b347a77d3ecd74d93b3221f1fc96 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|N}eu`Ar*|tGZYSgI6vdze@TUA o4YRkV6PC=flXCOY=xq~Xh;|nhP@5CO22{=9>FVdQ&MBb@0JAq2wEzGB literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basenodes/textures/default_leaves.png b/games/minimal/mods/basenodes/textures/default_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..c0475d4d247346bbf4a20522b143cd281828cef4 GIT binary patch literal 883 zcmV-(1C0EMP)1uOZdd1lB%%XO z1$$iD^|3~^@f4=6=2Ed9q6ug_g1YznwfHPkb?ejRABCzl4mk8jhGrg^ioZ4(-rT6l zMpLncWJ=>61t(C|X1j*ZB@tURRJ_tqdKD^|b*p$ZO*LDA&HuG)=sMJFa?^R*Mp4{G zY{sViF68Ss6rFIYdACzVGfu2!thwGq>n_MEbrOH(hVgS~^ad=vg`7SV?sBMWL%t$Y z4nkw7e4SlIEg33`L(NXu_Cu)(tFjfD@F@NkQ6G;g@jP9{8w@q=O4i(K)PKvs8Xz*9 zqT(r!LKAj{CT;3Go=*EolwX&oz#_CP^+Cykn`K|D&A+0=7ejp)4T94sJZ7q7+KVsh z)|$_0syu`Wsx#?2>Y;otO|2U}${$7~p1E}TpEeHvX>#H3LI!Wb(1}coJVO=pUKO{c zGI}sb>rp2o*I?;8)N}+j9JDJug=pMwGIR?qel&IL_jIj&pULR)Z1o;bqU9heYfD$C z#jWrRG#!BKDYWFdUmd%0=s)9y*sPP{HHKDwLNhnK3eSJ7v>k$`?aA`TTuN_2fewSl zoem9O^DucEHviwv&?Priu0tdDAkb=IUXNmfp0Ahd)O5vs z&jGi(_BknAaEZ#Mh(>PNS@zbYt}~VrE0Ps%_7Wa;Y4DV(x*nf84<^%SEi1On6c|AD z+YHS=^N!AnXI!XpOs zZuD#5vYqHGn!V^#xXnr7QoADkF6CCZ6q`d;t4xaKZ1RO2vN)q=qYZzvsjLP>Mltw` zQds*Yz}ja~vYNkTz!iewqj_5XBwG~|S@PA`$!hyXdUlcJ%xX)WMxbkdrpyc!9ftfG zr+keL`FgO(GHBWi+0}-kon8x`o6*ar%2uPXt0_vYMdb;P{sqYCHbknK2}l3{002ov JPDHLkV1mTLr>+11 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basenodes/textures/default_mossycobble.png b/games/minimal/mods/basenodes/textures/default_mossycobble.png new file mode 100644 index 0000000000000000000000000000000000000000..69585e37b7d32e78afde08bac7ad714bf9eaeb1b GIT binary patch literal 574 zcmV-E0>S->P)+qrL8R4Ub%<42)TfF+;Lvsf&)-ERB+ zKHTH+xKgRCRx6{?Xfl~*vl)!JTn-5Uold7%EV5`c+G@3^UMiIu4u|LS88{RQRjbwG z@i?E)!H+{mhQH-GMK{QaJ^n13QYjk205CFy(r}*ip^&8dc884 z4CN3f&Th9u003woj|U?wYG5e~8)F?U$IpIa+gN*ltZjs~-LMQBw}0d5n>)$fYWz9Ypz?Ny zWJ7_dNc7Lk5qod`9sj>X#r+0a_ctlt%Wye%zn$cU{eB;zP>8Wva7joguvSuxm6AnT zBZ|4XInpu~OxI*`4Bj97mQ7CU6q3UT8v-eD9r2w!*Z=yB;@Jil1oa3Bl8Ai2$XJLe zWOfq>hr`@q=krM{E-sQ9H&A)DNyz51)O@fBt)HO8b^)a)8{Am6bm&Qwq__$(p^av7 zqDo6kOFSw6G5GQycNEhaq^Qbxa&nS-Z}wpPQ{;L(>mo78P}q@x#{Ko*dMh1kk~ch9 zIp?>Y>(4jg{#PRR?;^yMN*F4#H@j4OwT*+XCq{-xTkJdLWfcU0Z)O-EoK(@hzr&e* zXzdum8aAjg6kLl@Y@(2BlV_Ui3s)gB$4}Y*pYrQyAc$v9@w|DL!B~&Dj zRw(m#nX!>~FmzB6#$rlCnUe$kB}PS4)gQ#Y(_&aTxyfv ij-qtA#{yVIm%anv#9dWKp^SV00000(+G4G4IFYm2a&8 z=Nv`;`2DxP-u<)D?#Bfwm#gqHP2lv`>l8(AA-CGNqeA6gcQ#SKKZ`}@)BVrZUd?N(StpLU>f6A9@ZE(CiF2McN5^7|K_lJJ@EfeSsYktrH#J79+O#= z(ht*iwger1{{CfP3#k*)ZkFB!N-bxpV?cQ4HIH?NFEJQ0KD0dYnJzNK8c=B2+&o$M z`tCz3-unT8%LSB$ou0yB;X@;?5=YFYi8TwpVyNmMsm4F&7PnmfSN=xY`vS<_(QaeQ3o) zYUT3nf1j<~RxJlM$Cu_4>RSkCEOrvLGkjF)qm%o4Qb zUX$uP&#!xQ;tan->llR(ZhhFze&`^Vc+{oIZTID-Y`GF9(4n6x;=VXr0cf~~6GOrJ WEdIP%9kM_NFnGH9xvX+55Jk6%V+=E68ENvE*=&mP&F!#M4h(n@7LUUm0$nHngV!dnxY))xaC1K_*{D}-|AST6 zy}WDZ;H}-a2FUs|)kvZN{FesZ%OswVMkqK%@Z?g?OawO!ps2e3TphoxPG2`@#)Cr) z&f%snzMXS24)lm$6N`4RlT;Ao(tM;m-lc}%ENbD_k=S!`8)?Ni#d(ra#Z*%fi%{ZlNq&fjq{4hkZ= zX-PGCJ$YK*@x?LC8=P}{|GhbXTZbgf4>9;JmsDTh5+6Eyi5y%9lZJA>ma6M);6NteSMB(klaM1{7u9TFmHCq~kzIFF ms`*c&pqaINDKt>3-^fpLin5Z$9Ygj200005!<}#v)Vg w$kWUx^*~2SQY0flth8BOmIqR%9V3I4yVK6V2o*+ zMoL*q+3pS^<$PJ!TI(2^Mykrb7TLrl^&!@5LWwp+tZqS7DR%uBX zx{rjEOadiEFd;SfZOTT6^0v$gIKhG#~v150269L^)HwB#C7xZcA!PBBNN##%xJ#o9z7cD;+b+xO sy`QEDiE$nRyu7^NncyuSk4NFVdQ&MBb@0H{zsTmS$7 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basenodes/textures/default_snow_side.png b/games/minimal/mods/basenodes/textures/default_snow_side.png new file mode 100644 index 0000000000000000000000000000000000000000..f34d10991fcb11806073b212d444804e45052b9d GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-uK&J$`2YX^pEnPH0={84 zje!(PNswPKP>{hvYvmUp-`vy1F{FYqSzyMNB-ZAR02dbK$w9}t+CsBpgC%9AuZ=h= vAfa~Q$bltl8zv;q|F?cW&;P~-4km`ikGj$qmTwIK8o}V{>gTe~DWM4f=`S=) literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basenodes/textures/default_stone.png b/games/minimal/mods/basenodes/textures/default_stone.png new file mode 100644 index 0000000000000000000000000000000000000000..763b4396a9a4a38f079cfc8748791ae4d6955a3b GIT binary patch literal 313 zcmV-90mlA`P)j2QOYrA5t_Pxy)aKB zDfnb%G4+#W1MMeihHeE&B%jGI(l27Wv6$x>H$dYOg_ZN_UrUN<3P)nY)7S|D3{WnVWw+u@f023w!Se!lZxP3Pr!Agw@Mz zYI~ko@-=H}9k6h=|`)pdtr~ zPOBSHJ{~zhrS9+9u2Ns$tCBo~e0*qw-wuQ{H9JI_1HPWuJ4|hFtu4?*Ru{%Sxk8Fe zEI8yj{yMv0V}BY-EW;QUlf+|NsRE|J%MXg`Rlg!{8u?B`fiRqcVl;9wgtG4rHNmH8 zX!!cf3cJBD&ag`i`Pt?8@J>@>T@budsZ-wQ2A{prdJ@l5siZiPo%IA3@BWQBY<&1( zg6wba(_ga{iVQI-n4p#mNu<)WC1T&z ztpJx$8m)~8{_`o(YRvrC>C!gr40fk6)?`{tjnL*iz1YWBlmO}(Hme02B62j_A^S9$ z^2aYHh@v;+LtUH9hO3)_G1W}jiai`@1ur+6aWRFAAt!7vUinh`|6-}rn_AvK))fg4 zq*~S#M~7wvou*7UyGkkyFfW@YX;0vx)|=NcPrICH zNl%kc-jCi%n&h3xCa4-C$C*!0WvMfU_T5fxjt~+h4Lwpy-V?$&A4`$5-!SqszChY5 zeL16ZuyFO)qdH_l0ufO~ScmRiOI>FCUd4 tKpxn*C7L5BhA4fg&_B=H{eeLg{{!$!dKC+%@o@kE002ovPDHLkV1gz|HE#d_ literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basenodes/textures/default_tree_top.png b/games/minimal/mods/basenodes/textures/default_tree_top.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a4fa7042a17a55d7d3cdab9e3e078d66f4246b GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Wu7jMAr*|t1_4u)I2}zzeykL9 z;ox=fThW`;u#u&XC8X^FgZQD=4H*p+W^^>L*_bg1mhomBb3Ty~9y&+L;H+8#^RgiQ zXwI5CgAn1vB|>GqGdR}q#@h(+h3yEKwqB^NI^fczc}n*4N(5K%2RTPQa?ViTWMsHj Xu}=4>SHT3J3m80I{an^LB{Ts5I=nSk literal 0 HcmV?d00001 diff --git a/games/minimal/mods/default/textures/default_water.png b/games/minimal/mods/basenodes/textures/default_water.png similarity index 100% rename from games/minimal/mods/default/textures/default_water.png rename to games/minimal/mods/basenodes/textures/default_water.png diff --git a/games/minimal/mods/basenodes/textures/default_water_flowing.png b/games/minimal/mods/basenodes/textures/default_water_flowing.png new file mode 100644 index 0000000000000000000000000000000000000000..7cdafd51d7f2542ccb43892fb53fa3c9b14cd233 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|R-P`7Ar*|t20UvRlz2}w+`bW( zBvEpKAzkpKf>(23fT|PoE)6y2%WQwDI4Wlq@lI(IdTYw_a|??LL-&LC>}C7o+JL4o Nc)I$ztaD0e0ss%}Admn6 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basetools/init.lua b/games/minimal/mods/basetools/init.lua new file mode 100644 index 000000000..d9d9afb07 --- /dev/null +++ b/games/minimal/mods/basetools/init.lua @@ -0,0 +1,295 @@ +-- +-- Tool definitions +-- + +--[[ TOOLS SUMMARY: + +Tool types: + +* Hand: basic tool/weapon (just for convenience, not optimized for testing) +* Pickaxe: dig cracky +* Axe: dig choppy +* Shovel: dig crumbly +* Shears: dig snappy +* Sword: deal damage +* Dagger: deal damage, but faster + +Tool materials: + +* Dirt: dig nodes of rating 3, one use only +* Wood: dig nodes of rating 3 +* Stone: dig nodes of rating 3 or 2 +* Steel: dig nodes of rating 3, 2 or 1 +* Mese: dig "everything" instantly +]] + +-- The hand +minetest.register_item(":", { + type = "none", + wield_image = "wieldhand.png", + wield_scale = {x=1,y=1,z=2.5}, + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level = 0, + groupcaps = { + crumbly = {times={[3]=1.50}, uses=0, maxlevel=0}, + snappy = {times={[3]=1.50}, uses=0, maxlevel=0}, + oddly_breakable_by_hand = {times={[1]=7.00,[2]=4.00,[3]=2.00}, uses=0, maxlevel=0}, + }, + damage_groups = {fleshy=1}, + } +}) + +-- Mese Pickaxe: special tool that digs "everything" instantly +minetest.register_tool("basetools:pick_mese", { + description = "Mese Pickaxe", + inventory_image = "basetools_mesepick.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=3, + groupcaps={ + cracky={times={[1]=0.0, [2]=0.0, [3]=0.0}, maxlevel=255}, + crumbly={times={[1]=0.0, [2]=0.0, [3]=0.0}, maxlevel=255}, + snappy={times={[1]=0.0, [2]=0.0, [3]=0.0}, maxlevel=255}, + choppy={times={[1]=0.0, [2]=0.0, [3]=0.0}, maxlevel=255}, + dig_immediate={times={[1]=0.0, [2]=0.0, [3]=0.0}, maxlevel=255}, + }, + }, +}) + + +-- +-- Pickaxes: Dig cracky +-- + +-- This should break after only 1 use +minetest.register_tool("basetools:pick_dirt", { + description = "Dirt Pickaxe", + inventory_image = "basetools_dirtpick.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + cracky={times={[3]=2.00}, uses=1, maxlevel=0} + }, + }, +}) + +minetest.register_tool("basetools:pick_wood", { + description = "Wooden Pickaxe", + inventory_image = "basetools_woodpick.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + cracky={times={[3]=2.00}, uses=30, maxlevel=0} + }, + }, +}) +minetest.register_tool("basetools:pick_stone", { + description = "Stone Pickaxe", + inventory_image = "basetools_stonepick.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + cracky={times={[2]=1.20, [3]=0.80}, uses=60, maxlevel=0} + }, + }, +}) +minetest.register_tool("basetools:pick_steel", { + description = "Steel Pickaxe", + inventory_image = "basetools_steelpick.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + cracky={times={[1]=4.00, [2]=1.60, [3]=1.00}, uses=90, maxlevel=0} + }, + }, +}) +minetest.register_tool("basetools:pick_steel_l1", { + description = "Steel Pickaxe Level 1", + inventory_image = "basetools_steelpick_l1.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + cracky={times={[1]=4.00, [2]=1.60, [3]=1.00}, uses=90, maxlevel=1} + }, + }, +}) +minetest.register_tool("basetools:pick_steel_l2", { + description = "Steel Pickaxe Level 2", + inventory_image = "basetools_steelpick_l2.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + cracky={times={[1]=4.00, [2]=1.60, [3]=1.00}, uses=90, maxlevel=2} + }, + }, +}) + +-- +-- Shovels (dig crumbly) +-- + +minetest.register_tool("basetools:shovel_wood", { + description = "Wooden Shovel", + inventory_image = "basetools_woodshovel.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + crumbly={times={[3]=0.50}, uses=30, maxlevel=0} + }, + }, +}) +minetest.register_tool("basetools:shovel_stone", { + description = "Stone Shovel", + inventory_image = "basetools_stoneshovel.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + crumbly={times={[2]=0.50, [3]=0.30}, uses=60, maxlevel=0} + }, + }, +}) +minetest.register_tool("basetools:shovel_steel", { + description = "Steel Shovel", + inventory_image = "basetools_steelshovel.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + crumbly={times={[1]=1.00, [2]=0.70, [3]=0.60}, uses=90, maxlevel=0} + }, + }, +}) + +-- +-- Axes (dig choppy) +-- + +minetest.register_tool("basetools:axe_wood", { + description = "Wooden Axe", + inventory_image = "basetools_woodaxe.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + choppy={times={[3]=0.80}, uses=30, maxlevel=0}, + }, + }, +}) +minetest.register_tool("basetools:axe_stone", { + description = "Stone Axe", + inventory_image = "basetools_stoneaxe.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + choppy={times={[2]=1.00, [3]=0.60}, uses=60, maxlevel=0}, + }, + }, +}) +minetest.register_tool("basetools:axe_steel", { + description = "Steel Axe", + inventory_image = "basetools_steelaxe.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + choppy={times={[1]=2.00, [2]=0.80, [3]=0.40}, uses=90, maxlevel=0}, + }, + }, +}) + +-- +-- Shears (dig snappy) +-- + +minetest.register_tool("basetools:shears_wood", { + description = "Wooden Shears", + inventory_image = "basetools_woodshears.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + snappy={times={[3]=1.00}, uses=30, maxlevel=0}, + }, + }, +}) +minetest.register_tool("basetools:shears_stone", { + description = "Stone Shears", + inventory_image = "basetools_stoneshears.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + snappy={times={[2]=1.00, [3]=0.50}, uses=60, maxlevel=0}, + }, + }, +}) +minetest.register_tool("basetools:shears_steel", { + description = "Steel Shears", + inventory_image = "basetools_steelshears.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + snappy={times={[1]=1.00, [2]=0.50, [3]=0.25}, uses=90, maxlevel=0}, + }, + }, +}) + +-- +-- Swords (deal damage) +-- + +minetest.register_tool("basetools:sword_wood", { + description = "Wooden Sword", + inventory_image = "basetools_woodsword.png", + tool_capabilities = { + full_punch_interval = 1.0, + damage_groups = {fleshy=2}, + } +}) +minetest.register_tool("basetools:sword_stone", { + description = "Stone Sword", + inventory_image = "basetools_stonesword.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=0, + damage_groups = {fleshy=4}, + } +}) +minetest.register_tool("basetools:sword_steel", { + description = "Steel Sword", + inventory_image = "basetools_steelsword.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=1, + damage_groups = {fleshy=6}, + } +}) + +-- Fire/Ice sword: Deal damage to non-fleshy damage groups +minetest.register_tool("basetools:sword_fire", { + description = "Fire Sword", + inventory_image = "basetools_firesword.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=0, + damage_groups = {icy=6}, + } +}) +minetest.register_tool("basetools:sword_ice", { + description = "Ice Sword", + inventory_image = "basetools_icesword.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=0, + damage_groups = {firy=6}, + } +}) + +-- +-- Dagger: Low damage, fast punch interval +-- +minetest.register_tool("basetools:dagger_steel", { + description = "Steel Dagger", + inventory_image = "basetools_steeldagger.png", + tool_capabilities = { + full_punch_interval = 0.5, + max_drop_level=0, + damage_groups = {fleshy=2}, + } +}) diff --git a/games/minimal/mods/basetools/mod.conf b/games/minimal/mods/basetools/mod.conf new file mode 100644 index 000000000..f0d9f657d --- /dev/null +++ b/games/minimal/mods/basetools/mod.conf @@ -0,0 +1,2 @@ +name = basetools +description = Contains basic digging tools diff --git a/games/minimal/mods/basetools/textures/basetools_dirtpick.png b/games/minimal/mods/basetools/textures/basetools_dirtpick.png new file mode 100644 index 0000000000000000000000000000000000000000..20a021d725d50c3f630d3b2318767adaed5d7e62 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!3_UF&^$uA7AW$<)5S5Q zf-(7rzfwb%2EX7+9z)IZNgAG$lvXe@-s(zrx@#fTwMctY(^?ys57`b4lT7~K>-_mu z^N;4iBH>qOKtc@SiOTucIJc$=p0snxn!vtD!~Ntlr{o1@hoq8}MH)5KoD8*m?%j)+ z(ZHsyy^bZHlf(LawATJ>%hkL&m$zMUdfLX3nKJQ_#Kdnr{%@rAG^u|55^;fLbx?2C zr4iO3saB3I&nqd=RF;15#FCC4~aJ3+Hpuh|GbTvgWN*L;OV;$M@!c);@Ett zC2PaQNqr@kRm?t${y62{7%IG4QP-(|$rE0NzIm-n?}=^T0s5K2)78&qol`;+0FTsp ARR910 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basetools/textures/basetools_firesword.png b/games/minimal/mods/basetools/textures/basetools_firesword.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2809ab7eeb841f086b1ab0c0f6a5304fcf3cca GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv3GfMV-Bu#|Uyb2^Pv!qq&;JcM zKw(W0)&f5bCne5UTNMuvkGi@#xxUv6ff8&bL4Lsu|ABxZyqdolDB|qt;uuoFnC!sZ z#3V2)Q1X<3kyrzlM3QKNNCTIFl@p7Tb8rJwf?KOH^9;dzH<<)a&N#)9=90_ZAR)F@ eOTB--363jD+%%oX7~>T4B^%M#Xu2fPZ!6K3dUpy z<|ZbAS%H$L1dPNQxFnK96GR%g46K}3oScIjm=fGtm6>M<-n+>pcyh)mjx?8C?gk05 gts*BHG};Up9AtU)Gb-(KfyOa-y85}Sb4q9e0ID!Ln*aa+ literal 0 HcmV?d00001 diff --git a/games/minimal/mods/default/textures/default_tool_mesepick.png b/games/minimal/mods/basetools/textures/basetools_mesepick.png similarity index 100% rename from games/minimal/mods/default/textures/default_tool_mesepick.png rename to games/minimal/mods/basetools/textures/basetools_mesepick.png diff --git a/games/minimal/mods/basetools/textures/basetools_steelaxe.png b/games/minimal/mods/basetools/textures/basetools_steelaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..aac594d8456b40b630c546574845f044f95b9591 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!9W@a@|Lkr1X32BE{-7; zjL8xfAKu(Fz7!&FQNZ9Kv{s78;{tPt*QR-v#m^i}7$jXXJGO=v20c>oH5Ka&ylTS4 X@IBwOF+60_8<1I^u6{1-oD!M(LF2>af}lq&H<+IY xnaQoNx)#=|Ve9a6*Dk9CavalNC@d0WV0d~^bDqqt={G=Dc)I$ztaD0e0syW5FT?-< literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basetools/textures/basetools_steelpick.png b/games/minimal/mods/basetools/textures/basetools_steelpick.png new file mode 100644 index 0000000000000000000000000000000000000000..bc02aac3e45d02f0335309aecbebadbc068d1f3a GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!9W@a@|Lkr1X3ZME{-7; zjC1=AayA6;9IYzlE#%dI_wYc|>??{>_}k<@OIP_+^s4zQ+I&ygwWn@YWZJ3+cecOJ z2q{>@ZGEbbQTf!m-mRQdcx#sCxUKPhoO|F~f_GezXxfy;x^kf)dpuqJT-G@yGywpe CKwqUoc&j zEwam4d^(SIcw*tx2o& zS8e?@>9>tQp{hvDhpqXH#@S68g4c>mx>FFVdQ&MBb@0EeMQ@c;k- literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basetools/textures/basetools_steelpick_l2.png b/games/minimal/mods/basetools/textures/basetools_steelpick_l2.png new file mode 100644 index 0000000000000000000000000000000000000000..011df458460115f5b804abbfdb5c3fdb37c16604 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!9W@a@|Lkr1X5|9E{-7; zjJ!gIGHW`BRKyy3P&_BmVP Wq-pLGd8F@wZ1!~Zb6Mw<&;$U7h(Tij literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basetools/textures/basetools_steelshears.png b/games/minimal/mods/basetools/textures/basetools_steelshears.png new file mode 100644 index 0000000000000000000000000000000000000000..04c86c3706021dc7b3ed35b19aead2c14823af3b GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?bWsqg`@bEZ%=Jp=fS?83{1OTuSC13ym literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basetools/textures/basetools_steelsword.png b/games/minimal/mods/basetools/textures/basetools_steelsword.png new file mode 100644 index 0000000000000000000000000000000000000000..9909365c32b5646276532b73a63be841f650e478 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!9W@a@|Lkr1X2;6E{-7; zjL8c)KQu5Vg}%SPzy44Qrvn@3Dn%)_-B}S90%5%uHe_B_yA-oX^AOjS<^W#-ksp~B znuSbXCoHhK7RI`+y&+j))x&>^5AN>TWwk)=(j_tGUIvCo*8&VG?><}%vdh!e&t;uc GLK6T5Up65C literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basetools/textures/basetools_stoneaxe.png b/games/minimal/mods/basetools/textures/basetools_stoneaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..a374c547d7570d417f66b234b1b14811f9c9eb32 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!9W@a@|Lkr1XAXnE{-7; zjL8xf7cO3Oob~F@pBe?vEm;N%j{E_dC#!^ngdS9NToTA${bBRNmU`05Zzc)z4*}Q$iB}-NGee literal 0 HcmV?d00001 diff --git a/games/minimal/mods/default/textures/default_tool_stonepick.png b/games/minimal/mods/basetools/textures/basetools_stonepick.png similarity index 100% rename from games/minimal/mods/default/textures/default_tool_stonepick.png rename to games/minimal/mods/basetools/textures/basetools_stonepick.png diff --git a/games/minimal/mods/basetools/textures/basetools_stoneshears.png b/games/minimal/mods/basetools/textures/basetools_stoneshears.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4bd3b748ea593cacf41fee29e53f94ea595823 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`%ROBjLn;`TPHJRxaujg=&K<_o zBvR`%;{~%>g8<7nW~P>e`r4xDrw!7i4^4b`yZFX)QO&3NcLK6Yw_Ll@q$|3>=2*ZX zhDbJz@Anv=?rgRYIDO|a1Aiw+fzjf`2YS}5&z4&LOn*>x%V&qHQNgFz+d@wriR&!V zN?4zq`ntvFe{r)+UFY-F8Z92r_VL-se-_|VcacBvzPe`446cU5h3i!`AFsN2xaI-3 YYU{bX+m9}C1Ui|))78&qol`;+03(N5%m4rY literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basetools/textures/basetools_stoneshovel.png b/games/minimal/mods/basetools/textures/basetools_stoneshovel.png new file mode 100644 index 0000000000000000000000000000000000000000..3c1bb48cb58e1a8f3f75ac8aa05ad0a6d7377d01 GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!9W@a@|Lkr1X9+XE{-7; zjL8d(I$9Z%LZ>SL31t%jmJ_RX@7~RMGhsDTAbYrPMDt`J^$Ct$Sq2Lhz6!j`!4TvN Yv`1;D4ww9KRbh~Ep00i_>zopr0GYZW*8l(j literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basetools/textures/basetools_stonesword.png b/games/minimal/mods/basetools/textures/basetools_stonesword.png new file mode 100644 index 0000000000000000000000000000000000000000..6f3e94cda2f7dc43247258e43ebb8e0558701343 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!9W@a@|Lkr1X3ZME{-7; zjL8c)KQu5Vgm{1&C6?nXBkq10`lF2<4|zhDN3XE)M-oCr@B$B+uf zWCzBcCMJQl37jnlB_18)Nb8)Y?$IF8V|-d7+L7mADyP#kg|-r=#YK`HY0}J(XR;VH z2Y!=cj&Q4zj&SHHESI{mh5KfvK=RH@3(S_OF4)Duz-`9Ak@2}$1<(!#Pgg&ebxsLQ E0P9gca{vGU literal 0 HcmV?d00001 diff --git a/games/minimal/mods/basetools/textures/basetools_woodshovel.png b/games/minimal/mods/basetools/textures/basetools_woodshovel.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc52f8a1607e0ed86566e19301d168eb0dada77 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!9W@a@|Lkr1X5O>E{-7; zjL8d(3W6TBC?tg*zqRUs;Ko&gQXEVvS6S<%SV9h8b@W)&)Ba1QB>v?;oRX>c z;qs67OO9}wHN>1PU~Ze5*1{&B7X7(?h1w+3#Wy_s?UR{iq$%{ik-cPc{MIT3X{JLi lma^+4J$owj5B#+TS|IZ$bvJL;O>>~>44$rjF6*2UngEbEFBkv- literal 0 HcmV?d00001 diff --git a/games/minimal/mods/bucket/init.lua b/games/minimal/mods/bucket/init.lua index dcd59ed38..3189d4aa6 100644 --- a/games/minimal/mods/bucket/init.lua +++ b/games/minimal/mods/bucket/init.lua @@ -1,95 +1,26 @@ --- bucket (Minetest 0.4 mod) --- A bucket, which can pick up water and lava +-- Bucket: Punch liquid source or flowing liquid to collect it -minetest.register_alias("bucket", "bucket:bucket_empty") -minetest.register_alias("bucket_water", "bucket:bucket_water") -minetest.register_alias("bucket_lava", "bucket:bucket_lava") - -minetest.register_craft({ - output = 'bucket:bucket_empty 1', - recipe = { - {'default:steel_ingot', '', 'default:steel_ingot'}, - {'', 'default:steel_ingot', ''}, - } -}) - -bucket = {} -bucket.liquids = {} - --- Register a new liquid --- source = name of the source node --- flowing = name of the flowing node --- itemname = name of the new bucket item (or nil if liquid is not takeable) --- inventory_image = texture of the new bucket item (ignored if itemname == nil) --- This function can be called from any mod (that depends on bucket). -function bucket.register_liquid(source, flowing, itemname, inventory_image) - bucket.liquids[source] = { - source = source, - flowing = flowing, - itemname = itemname, - } - bucket.liquids[flowing] = bucket.liquids[source] - - if itemname ~= nil then - minetest.register_craftitem(itemname, { - inventory_image = inventory_image, - stack_max = 1, - liquids_pointable = true, - on_use = function(itemstack, user, pointed_thing) - -- Must be pointing to node - if pointed_thing.type ~= "node" then - return - end - -- Check if pointing to a liquid - n = minetest.get_node(pointed_thing.under) - if bucket.liquids[n.name] == nil then - -- Not a liquid - minetest.add_node(pointed_thing.above, {name=source}) - elseif n.name ~= source then - -- It's a liquid - minetest.add_node(pointed_thing.under, {name=source}) - end - return {name="bucket:bucket_empty"} - end - }) - end -end - -minetest.register_craftitem("bucket:bucket_empty", { +minetest.register_tool("bucket:bucket", { + description = "Bucket", inventory_image = "bucket.png", stack_max = 1, liquids_pointable = true, + groups = { disable_repair = 1 }, on_use = function(itemstack, user, pointed_thing) -- Must be pointing to node if pointed_thing.type ~= "node" then return end - -- Check if pointing to a liquid source - 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 + -- Check if pointing to a liquid + local n = minetest.get_node(pointed_thing.under) + local def = minetest.registered_nodes[n.name] + if def ~= nil and (def.liquidtype == "source" or def.liquidtype == "flowing") then minetest.add_node(pointed_thing.under, {name="air"}) - return {name=liquiddef.itemname} + local inv = user:get_inventory() + if inv then + inv:add_item("main", ItemStack(n.name)) + end end end, }) -bucket.register_liquid( - "default:water_source", - "default:water_flowing", - "bucket:bucket_water", - "bucket_water.png" -) - -bucket.register_liquid( - "default:lava_source", - "default:lava_flowing", - "bucket:bucket_lava", - "bucket_lava.png" -) - -minetest.register_craft({ - type = "fuel", - recipe = "bucket:bucket_lava", - burntime = 60, -}) diff --git a/games/minimal/mods/bucket/mod.conf b/games/minimal/mods/bucket/mod.conf index 2a6086775..d14deb4ea 100644 --- a/games/minimal/mods/bucket/mod.conf +++ b/games/minimal/mods/bucket/mod.conf @@ -1,3 +1,2 @@ name = bucket -description = Minimal bucket to place and pick up liquids -depends = default +description = Minimal bucket to pick up liquids diff --git a/games/minimal/mods/bucket/textures/bucket.png b/games/minimal/mods/bucket/textures/bucket.png index b775a9fd335d074debc8a63010330a052da00a38..6779528753716365ba2d722b3587280e82d3a0e0 100644 GIT binary patch delta 146 zcmV;D0B!%a0iyws8Gi-<001BJ|6u?C0BT7@K~#7F&63dx03i%RZ#7qN11E5YF48@^ zT#x)n;FR?K47|@gBlNj8d8SyLb23`O#oqfC7RlMIwGV1Vy8B}He>2N5h89Ew%TNST zfGk11tXKRKfYbc)EuhF$U*{DlF#7e_BP8k|4ie28U-i(tsQ{PZ!6Kid(&XCwUnRI1YR9zxXF?9w7Mf$o>eoB$J8$ zGubaBtYhfgGKQ2tP#{ca?fM&_S0$?bH zf?IW;tdd2tN0w_H#8cH5!2g^U?h-`tkrA(7CSukef$1WfKvltKi2uyIBfsvrnw$pVB1jSEZo$`_I0ShhId=O$ERWtwq002ovPDHLk FV1mL7KC1u# delta 166 zcmZ3%xSer=WIZzj1A~Sxe=v}e4)6(a1=2u}n3&kq)HHwo{9U_t{WoLy-!An3|NqY$ z{ucn{7)yfuf*Bm1-ADs+ygXeTLn?0do--6`FyLW!l;M8<-~QPFjmbvWGmp2fKfLJn zGZpUL|0c9eSG%oHD`F{jXOb2#$AqVEC*NU6eEzLNeg%Jxkp{!_^Ziu}hfEm#Y^@%i P206gf)z4*}Q$iB}{p~?3 diff --git a/games/minimal/mods/bucket/textures/bucket_water.png b/games/minimal/mods/bucket/textures/bucket_water.png index a3c9d72f74e06692c3eeb9534cc09e26cdb9f61c..e164b0a50fe3a0f9ce5b022636f3445f34254a7a 100644 GIT binary patch delta 151 zcmV;I0BHZT0jL3x8Gi-<001BJ|6u?C0B=b|K~#7FVi>gGKQ2tP#^k)cC>U7|uVxLa zy?|!Pzye?>2BNcOl`N7yvRvz-ocekPXgC7z<&ckv$kjIRSuiu?C}QvKtE#+Ucb}ag z0JZ|=EdWAbVABFP7N|sF68{3ACcUmL05tx3^vb`S8+*Ridk|H^H75W7002ovPDHLk FV1kozKZ^hW delta 163 zcmZ3%xP@_oWIZzj1A~Sxe=v}e4)6(a1=2vEVYN3gF)=xBZ&Op#{Q2{D?b`MK|NkYc zg&cr#j3q&S!3+-1ZlnP@?w&4=Ar-fJ`yBZWDDWJ1TX^$-y-l~?3iq1sr_S@d-7Y?3 zk}ms`aOe8A3EQMB`zuskqY?xp@A+-wLrXmdj6Xdfo3vz My85}Sb4q9e05+gIcK`qY diff --git a/games/minimal/mods/chest/init.lua b/games/minimal/mods/chest/init.lua new file mode 100644 index 000000000..c44522cb9 --- /dev/null +++ b/games/minimal/mods/chest/init.lua @@ -0,0 +1,27 @@ +minetest.register_node("chest:chest", { + description = "Chest", + tiles ={"chest_chest.png^[sheet:2x2:0,0", "chest_chest.png^[sheet:2x2:0,0", + "chest_chest.png^[sheet:2x2:1,0", "chest_chest.png^[sheet:2x2:1,0", + "chest_chest.png^[sheet:2x2:1,0", "chest_chest.png^[sheet:2x2:0,1"}, + paramtype2 = "facedir", + groups = {dig_immediate=2,choppy=3}, + is_ground_content = false, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", + "size[8,9]".. + "list[current_name;main;0,0;8,4;]".. + "list[current_player;main;0,5;8,4;]" .. + "listring[]") + meta:set_string("infotext", "Chest") + local inv = meta:get_inventory() + inv:set_size("main", 8*4) + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("main") + end, +}) + + diff --git a/games/minimal/mods/chest/mod.conf b/games/minimal/mods/chest/mod.conf new file mode 100644 index 000000000..0d7500164 --- /dev/null +++ b/games/minimal/mods/chest/mod.conf @@ -0,0 +1,2 @@ +name = chest +description = A simple chest to store items diff --git a/games/minimal/mods/chest/textures/chest_chest.png b/games/minimal/mods/chest/textures/chest_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..824b4d50255fa092bac1e8505350b224dd9aa4d5 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvi2$Dv*ME@}T*#e}aWM1P15pKz4&&yN42x#4 zIw`X_`7BK1kaXJ8GGoz9L5(go0VyDE(-Y{^Q;_ml{egjDyNWdTOR2DKpot8gu6{1- HoD!M<-`X*p literal 0 HcmV?d00001 diff --git a/games/minimal/mods/chest_of_everything/init.lua b/games/minimal/mods/chest_of_everything/init.lua new file mode 100644 index 000000000..7d61abebf --- /dev/null +++ b/games/minimal/mods/chest_of_everything/init.lua @@ -0,0 +1,135 @@ +local F = minetest.formspec_escape + +-- Create a detached inventory +local inv_everything = minetest.create_detached_inventory("everything", { + allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) + return 0 + end, + allow_put = function(inv, listname, index, stack, player) + return 0 + end, + allow_take = function(inv, listname, index, stack, player) + return -1 + end, +}) +local inv_trash = minetest.create_detached_inventory("trash", { + allow_take = function(inv, listname, index, stack, player) + return 0 + end, + allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) + return 0 + end, + on_put = function(inv, listname, index, stack, player) + inv:set_list("main", {}) + end, +}) +inv_trash:set_size("main", 1) + +local max_page = 1 + +local function get_chest_formspec(page) + local start = 0 + (page-1)*32 + return "size[8,9]".. + "list[detached:everything;main;0,0;8,4;"..start.."]".. + "list[current_player;main;0,5;8,4;]" .. + "label[6,4;Trash:]" .. + "list[detached:trash;main;7,4;1,1]" .. + "button[0,4;1,1;chest_of_everything_prev;"..F("<").."]".. + "button[1,4;1,1;chest_of_everything_next;"..F(">").."]".. + "label[2,4;"..F("Page: "..page).."]".. + "listring[detached:everything;main]".. + "listring[current_player;main]".. + "listring[detached:trash;main]" +end + +minetest.register_node("chest_of_everything:chest", { + description = "Chest of Everything", + tiles ={"chest_of_everything_chest.png^[sheet:2x2:0,0", "chest_of_everything_chest.png^[sheet:2x2:0,0", + "chest_of_everything_chest.png^[sheet:2x2:1,0", "chest_of_everything_chest.png^[sheet:2x2:1,0", + "chest_of_everything_chest.png^[sheet:2x2:1,0", "chest_of_everything_chest.png^[sheet:2x2:0,1"}, + paramtype2 = "facedir", + groups = {dig_immediate=2,choppy=3}, + is_ground_content = false, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", "Chest of Everything") + meta:set_int("page", 1) + meta:set_string("formspec", get_chest_formspec(1)) + end, + on_receive_fields = function(pos, formname, fields, sender) + if formname == "" then + local meta = minetest.get_meta(pos) + local page = meta:get_int("page") + if fields.chest_of_everything_prev then + page = page - 1 + elseif fields.chest_of_everything_next then + page = page + 1 + end + if page < 1 then + page = 1 + end + if page > max_page then + page = max_page + end + meta:set_int("page", page) + meta:set_string("formspec", get_chest_formspec(page)) + end + end, +}) + +minetest.register_on_mods_loaded(function() + local items = {} + for itemstring,_ in pairs(minetest.registered_items) do + if itemstring ~= "" and itemstring ~= "unknown" and itemstring ~= "ignore" then + table.insert(items, itemstring) + end + end + --[[ Sort items in this order: + * Chest of Everything + * Test tools + * Other tools + * Craftitems + * Other items + * Dummy items ]] + local function compare(item1, item2) + local def1 = minetest.registered_items[item1] + local def2 = minetest.registered_items[item2] + local tool1 = def1.type == "tool" + local tool2 = def2.type == "tool" + local testtool1 = minetest.get_item_group(item1, "testtool") == 1 + local testtool2 = minetest.get_item_group(item2, "testtool") == 1 + local dummy1 = minetest.get_item_group(item1, "dummy") == 1 + local dummy2 = minetest.get_item_group(item2, "dummy") == 1 + local craftitem1 = def1.type == "craft" + local craftitem2 = def2.type == "craft" + if item1 == "chest_of_everything:chest" then + return true + elseif item2 == "chest_of_everything:chest" then + return false + elseif dummy1 and not dummy2 then + return false + elseif not dummy1 and dummy2 then + return true + elseif testtool1 and not testtool2 then + return true + elseif not testtool1 and testtool2 then + return false + elseif tool1 and not tool2 then + return true + elseif not tool1 and tool2 then + return false + elseif craftitem1 and not craftitem2 then + return true + elseif not craftitem1 and craftitem2 then + return false + else + return item1 < item2 + end + end + table.sort(items, compare) + inv_everything:set_size("main", #items) + max_page = math.ceil(#items / 32) + for i=1, #items do + inv_everything:add_item("main", items[i]) + end +end) diff --git a/games/minimal/mods/chest_of_everything/mod.conf b/games/minimal/mods/chest_of_everything/mod.conf new file mode 100644 index 000000000..4a4425e05 --- /dev/null +++ b/games/minimal/mods/chest_of_everything/mod.conf @@ -0,0 +1,2 @@ +name = chest_of_everything +description = Adds the chest of everything from which you can take all items diff --git a/games/minimal/mods/chest_of_everything/textures/chest_of_everything_chest.png b/games/minimal/mods/chest_of_everything/textures/chest_of_everything_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..6b2fd58d51c9f6be98ad202ed0c1749d58703e0a GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvxd5LK*Za4OmoJuDTFS7rgyF-x z1rP7oKYNt;^kKy1bBcGaDI09!?gOgK_jGX#sbEY#z|hl_pun)WkXvC(0v89Trq-gY zKoKV+=5Y#WV2&Ni$kQv6`qL> z9n&@ym>6>%WewaLAJ-?AB>FT%OY0)*5pGTvBaR88atuw6 - --wall_bottom = = - --wall_side = = - }, - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3}, - legacy_wallmounted = true, - sounds = default.node_sound_wood_defaults(), -}) - -minetest.register_node("default:wood", { - description = "Wood", - tiles ={"default_wood.png"}, - is_ground_content = false, - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, - sounds = default.node_sound_wood_defaults(), -}) - -minetest.register_node("default:mese", { - description = "Mese", - tiles ={"default_mese.png"}, - groups = {cracky=1,level=2}, - sounds = default.node_sound_defaults(), -}) - -minetest.register_node("default:cloud", { - description = "Cloud", - tiles ={"default_cloud.png"}, - is_ground_content = false, - sounds = default.node_sound_defaults(), -}) - -minetest.register_node("default:water_flowing", { - description = "Water (flowing)", - drawtype = "flowingliquid", - tiles = {"default_water.png"}, - special_tiles = { - {name = "default_water.png", backface_culling = false}, - {name = "default_water.png", backface_culling = true}, - }, - alpha = WATER_ALPHA, - paramtype = "light", - paramtype2 = "flowingliquid", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drop = "", - drowning = 1, - liquidtype = "flowing", - liquid_alternative_flowing = "default:water_flowing", - liquid_alternative_source = "default:water_source", - liquid_viscosity = WATER_VISC, - post_effect_color = {a = 64, r = 100, g = 100, b = 200}, - groups = {water = 3, liquid = 3}, -}) - -minetest.register_node("default:water_source", { - description = "Water", - drawtype = "liquid", - tiles = {"default_water.png"}, - special_tiles = { - -- New-style water source material (mostly unused) - {name = "default_water.png", backface_culling = false}, - }, - alpha = WATER_ALPHA, - paramtype = "light", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drop = "", - drowning = 1, - liquidtype = "source", - liquid_alternative_flowing = "default:water_flowing", - liquid_alternative_source = "default:water_source", - liquid_viscosity = WATER_VISC, - post_effect_color = {a = 64, r = 100, g = 100, b = 200}, - groups = {water = 3, liquid = 3}, -}) - -minetest.register_node("default:river_water_source", { - description = "River Water Source", - drawtype = "liquid", - tiles = {"default_river_water.png"}, - special_tiles = { - -- New-style water source material (mostly unused) - {name = "default_river_water.png", backface_culling = false}, - }, - alpha = 160, - paramtype = "light", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drop = "", - drowning = 1, - liquidtype = "source", - liquid_alternative_flowing = "default:river_water_flowing", - liquid_alternative_source = "default:river_water_source", - liquid_viscosity = 1, - liquid_renewable = false, - liquid_range = 2, - post_effect_color = {a = 103, r = 30, g = 76, b = 90}, - groups = {water = 3, liquid = 3, puts_out_fire = 1, cools_lava = 1}, -}) - -minetest.register_node("default:river_water_flowing", { - description = "Flowing River Water", - drawtype = "flowingliquid", - tiles = {"default_river_water.png"}, - special_tiles = { - {name = "default_river_water.png", backface_culling = false}, - {name = "default_river_water.png", backface_culling = true}, - }, - alpha = 160, - paramtype = "light", - paramtype2 = "flowingliquid", - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drop = "", - drowning = 1, - liquidtype = "flowing", - liquid_alternative_flowing = "default:river_water_flowing", - liquid_alternative_source = "default:river_water_source", - liquid_viscosity = 1, - liquid_renewable = false, - liquid_range = 2, - post_effect_color = {a = 103, r = 30, g = 76, b = 90}, - groups = {water = 3, liquid = 3, puts_out_fire = 1, - not_in_creative_inventory = 1, cools_lava = 1}, -}) - -minetest.register_node("default:lava_flowing", { - description = "Lava (flowing)", - inventory_image = minetest.inventorycube("default_lava.png"), - drawtype = "flowingliquid", - tiles ={"default_lava.png"}, - special_tiles = { - { - image="default_lava_flowing_animated.png", - backface_culling=false, - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.3} - }, - { - image="default_lava_flowing_animated.png", - backface_culling=true, - animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.3} - }, - }, - paramtype = "light", - light_source = LIGHT_MAX - 1, - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drowning = 1, - liquidtype = "flowing", - liquid_alternative_flowing = "default:lava_flowing", - liquid_alternative_source = "default:lava_source", - liquid_viscosity = LAVA_VISC, - damage_per_second = 4*2, - post_effect_color = {a=192, r=255, g=64, b=0}, - groups = {lava=3, liquid=2, hot=3}, -}) - -minetest.register_node("default:lava_source", { - description = "Lava", - inventory_image = minetest.inventorycube("default_lava.png"), - drawtype = "liquid", - --tiles ={"default_lava.png"}, - tiles = { - { - name = "default_lava_source_animated.png", - animation = {type="sheet_2d", frames_w=3, frames_h=2, frame_length=0.5} - } - }, - special_tiles = { - -- New-style lava source material (mostly unused) - {name="default_lava.png", backface_culling=false}, - }, - paramtype = "light", - light_source = LIGHT_MAX - 1, - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - is_ground_content = false, - drowning = 1, - liquidtype = "source", - liquid_alternative_flowing = "default:lava_flowing", - liquid_alternative_source = "default:lava_source", - liquid_viscosity = LAVA_VISC, - damage_per_second = 4*2, - post_effect_color = {a=192, r=255, g=64, b=0}, - groups = {lava=3, liquid=2, hot=3}, -}) - -minetest.register_node("default:torch", { - description = "Torch", - drawtype = "torchlike", - tiles ={"default_torch_on_floor.png", "default_torch_on_ceiling.png", "default_torch.png"}, - inventory_image = "default_torch_on_floor.png", - wield_image = "default_torch_on_floor.png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - is_ground_content = false, - walkable = false, - light_source = LIGHT_MAX-1, - selection_box = { - type = "wallmounted", - wall_top = {-0.1, 0.5-0.6, -0.1, 0.1, 0.5, 0.1}, - 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,attached_node=1}, - legacy_wallmounted = true, - sounds = default.node_sound_defaults(), -}) - -minetest.register_node("default:sign_wall", { - description = "Sign", - drawtype = "signlike", - tiles ={"default_sign_wall.png"}, - inventory_image = "default_sign_wall.png", - wield_image = "default_sign_wall.png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - is_ground_content = false, - walkable = false, - selection_box = { - type = "wallmounted", - --wall_top = - --wall_bottom = - --wall_side = - }, - groups = {choppy=2,dig_immediate=2,attached_node=1}, - legacy_wallmounted = true, - sounds = default.node_sound_defaults(), - on_construct = function(pos) - --local n = minetest.get_node(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", "field[text;;${text}]") - meta:set_string("infotext", "\"\"") - end, - on_receive_fields = function(pos, formname, fields, sender) - --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields)) - local meta = minetest.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)) - meta:set_string("text", fields.text) - meta:set_string("infotext", '"'..fields.text..'"') - end, -}) - -minetest.register_node("default:chest", { - description = "Chest", - tiles ={"default_chest.png^[sheet:2x2:0,0", "default_chest.png^[sheet:2x2:0,0", - "default_chest.png^[sheet:2x2:1,0", "default_chest.png^[sheet:2x2:1,0", - "default_chest.png^[sheet:2x2:1,0", "default_chest.png^[sheet:2x2:0,1"}, - paramtype2 = "facedir", - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, - legacy_facedir_simple = true, - is_ground_content = false, - sounds = default.node_sound_wood_defaults(), - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", - "size[8,9]".. - "list[current_name;main;0,0;8,4;]".. - "list[current_player;main;0,5;8,4;]" .. - "listring[]") - meta:set_string("infotext", "Chest") - local inv = meta:get_inventory() - inv:set_size("main", 8*4) - end, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - return inv:is_empty("main") - end, -}) - -local function has_locked_chest_privilege(meta, player) - if player:get_player_name() ~= meta:get_string("owner") then - return false - end - return true -end - -minetest.register_node("default:chest_locked", { - description = "Locked Chest", - tiles ={"default_chest.png^[sheet:2x2:0,0", "default_chest.png^[sheet:2x2:0,0", - "default_chest.png^[sheet:2x2:1,0", "default_chest.png^[sheet:2x2:1,0", - "default_chest.png^[sheet:2x2:1,0", "default_chest.png^[sheet:2x2:1,1"}, - paramtype2 = "facedir", - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, - legacy_facedir_simple = true, - is_ground_content = false, - sounds = default.node_sound_wood_defaults(), - after_place_node = function(pos, placer) - local meta = minetest.get_meta(pos) - local pname = - placer and placer:get_player_name() or "" - meta:set_string("owner", pname) - meta:set_string("infotext", "Locked Chest (owned by ".. - meta:get_string("owner")..")") - end, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", - "size[8,9]".. - "list[current_name;main;0,0;8,4;]".. - "list[current_player;main;0,5;8,4;]" .. - "listring[]") - meta:set_string("infotext", "Locked Chest") - meta:set_string("owner", "") - local inv = meta:get_inventory() - inv:set_size("main", 8*4) - -- this is not really the intended usage but works for testing purposes: - meta:mark_as_private("owner") - end, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - return inv:is_empty("main") - end, - allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - local meta = minetest.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 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)) - 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)) - 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)) - end, -}) - -default.furnace_inactive_formspec = - "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;]".. - "list[current_name;dst;5,1;2,2;]".. - "list[current_player;main;0,5;8,4;]" .. - "listring[current_name;dst]" .. - "listring[current_player;main]" .. - "listring[current_name;src]" .. - "listring[current_player;main]" - -minetest.register_node("default:furnace", { - description = "Furnace", - tiles ={"default_furnace_side.png", "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "default_furnace_side.png", "default_furnace_front.png"}, - paramtype2 = "facedir", - groups = {cracky=2}, - legacy_facedir_simple = true, - is_ground_content = false, - sounds = default.node_sound_stone_defaults(), - on_construct = function(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() - inv:set_size("fuel", 1) - inv:set_size("src", 1) - inv:set_size("dst", 4) - end, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - if not inv:is_empty("fuel") then - return false - elseif not inv:is_empty("dst") then - return false - elseif not inv:is_empty("src") then - return false - end - return true - end, -}) - -minetest.register_node("default:furnace_active", { - description = "Furnace", - tiles ={"default_furnace_side.png", "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "default_furnace_side.png", "default_furnace_front_active.png"}, - paramtype2 = "facedir", - light_source = 8, - drop = "default:furnace", - groups = {cracky=2}, - legacy_facedir_simple = true, - is_ground_content = false, - sounds = default.node_sound_stone_defaults(), - on_construct = function(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() - inv:set_size("fuel", 1) - inv:set_size("src", 1) - inv:set_size("dst", 4) - end, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - if not inv:is_empty("fuel") then - return false - elseif not inv:is_empty("dst") then - return false - elseif not inv:is_empty("src") then - return false - end - return true - end, -}) - -function swap_node(pos,name) - local node = minetest.get_node(pos) - if node.name == name then - return - end - node.name = name - minetest.swap_node(pos, node) -end - -minetest.register_abm({ - nodenames = {"default:furnace","default:furnace_active"}, - interval = 1.0, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local meta = minetest.get_meta(pos) - for i, name in ipairs({ - "fuel_totaltime", - "fuel_time", - "src_totaltime", - "src_time" - }) do - if meta:get_string(name) == "" then - meta:set_float(name, 0.0) - end - end - - local inv = meta:get_inventory() - - local srclist = inv:get_list("src") - local cooked = nil - - if srclist then - cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) - end - - local was_active = false - - if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then - was_active = true - meta:set_float("fuel_time", meta:get_float("fuel_time") + 1) - meta:set_float("src_time", meta:get_float("src_time") + 1) - if cooked and cooked.item and meta:get_float("src_time") >= cooked.time then - -- check if there's room for output in "dst" list - if inv:room_for_item("dst",cooked.item) then - -- Put result in "dst" list - inv:add_item("dst", cooked.item) - -- take stuff from "src" list - srcstack = inv:get_stack("src", 1) - srcstack:take_item() - inv:set_stack("src", 1, srcstack) - else - print("Could not insert '"..cooked.item:to_string().."'") - end - meta:set_string("src_time", 0) - end - end - - if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then - local percent = math.floor(meta:get_float("fuel_time") / - meta:get_float("fuel_totaltime") * 100) - meta:set_string("infotext","Furnace active: "..percent.."%") - swap_node(pos,"default:furnace_active") - meta:set_string("formspec", - "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;]".. - "list[current_name;src;2,1;1,1;]".. - "list[current_name;dst;5,1;2,2;]".. - "list[current_player;main;0,5;8,4;]" .. - "listring[current_name;dst]" .. - "listring[current_player;main]" .. - "listring[current_name;src]" .. - "listring[current_player;main]") - return - end - - local fuel = nil - local cooked = nil - local fuellist = inv:get_list("fuel") - local srclist = inv:get_list("src") - - if srclist then - cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) - end - if fuellist then - fuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) - end - - if fuel.time <= 0 then - meta:set_string("infotext","Furnace out of fuel") - swap_node(pos,"default:furnace") - meta:set_string("formspec", default.furnace_inactive_formspec) - return - end - - if cooked.item:is_empty() then - if was_active then - meta:set_string("infotext","Furnace is empty") - swap_node(pos,"default:furnace") - meta:set_string("formspec", default.furnace_inactive_formspec) - end - return - end - - meta:set_string("fuel_totaltime", fuel.time) - meta:set_string("fuel_time", 0) - - local stack = inv:get_stack("fuel", 1) - stack:take_item() - inv:set_stack("fuel", 1, stack) - end, -}) - -minetest.register_node("default:cobble", { - description = "Cobble", - tiles ={"default_cobble.png"}, - is_ground_content = false, - groups = {cracky=3}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:mossycobble", { - description = "Mossy Cobble", - tiles ={"default_mossycobble.png"}, - is_ground_content = false, - groups = {cracky=3}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:steelblock", { - description = "Steel Block", - tiles ={"default_steel_block.png"}, - is_ground_content = false, - groups = {snappy=1,bendy=2}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node("default:nyancat", { - description = "Nyancat", - tiles ={"default_nc_side.png", "default_nc_side.png", "default_nc_side.png", - "default_nc_side.png", "default_nc_back.png", "default_nc_front.png"}, - inventory_image = "default_nc_front.png", - paramtype2 = "facedir", - groups = {cracky=2}, - legacy_facedir_simple = true, - is_ground_content = false, - sounds = default.node_sound_defaults(), -}) - -minetest.register_node("default:nyancat_rainbow", { - description = "Nyancat Rainbow", - tiles ={"default_nc_rb.png"}, - inventory_image = "default_nc_rb.png", - is_ground_content = false, - groups = {cracky=2}, - sounds = default.node_sound_defaults(), -}) - -minetest.register_node("default:sapling", { - description = "Sapling", - drawtype = "plantlike", - visual_scale = 1.0, - tiles ={"default_sapling.png"}, - inventory_image = "default_sapling.png", - wield_image = "default_sapling.png", - paramtype = "light", - walkable = false, - groups = {snappy=2,dig_immediate=3,attached_node=1}, - sounds = default.node_sound_defaults(), -}) - -minetest.register_node("default:apple", { - description = "Apple", - drawtype = "plantlike", - visual_scale = 1.0, - tiles ={"default_apple.png"}, - inventory_image = "default_apple.png", - paramtype = "light", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - groups = {fleshy=3,dig_immediate=3}, - on_use = minetest.item_eat(4), - sounds = default.node_sound_defaults(), -}) - --- --- Grow tree function --- - -local c_air = minetest.get_content_id("air") -local c_ignore = minetest.get_content_id("ignore") -local c_tree = minetest.get_content_id("default:tree") -local c_leaves = minetest.get_content_id("default:leaves") -local c_apple = minetest.get_content_id("default:apple") -function default.grow_tree(data, a, pos, is_apple_tree, seed) - --[[ - NOTE: Tree-placing code is currently duplicated in the engine - and in games that have saplings; both are deprecated but not - replaced yet - ]]-- - local pr = PseudoRandom(seed) - local th = pr:next(4, 5) - local x, y, z = pos.x, pos.y, pos.z - for yy = y, y+th-1 do - local vi = a:index(x, yy, z) - if a:contains(x, yy, z) and (data[vi] == c_air or yy == y) then - data[vi] = c_tree - end - end - y = y+th-1 -- (x, y, z) is now last piece of trunk - local leaves_a = VoxelArea:new{MinEdge={x=-2, y=-1, z=-2}, MaxEdge={x=2, y=2, z=2}} - local leaves_buffer = {} - - -- Force leaves near the trunk - local d = 1 - for xi = -d, d do - for yi = -d, d do - for zi = -d, d do - leaves_buffer[leaves_a:index(xi, yi, zi)] = true - end - end - end - - -- Add leaves randomly - for iii = 1, 8 do - local d = 1 - local xx = pr:next(leaves_a.MinEdge.x, leaves_a.MaxEdge.x - d) - local yy = pr:next(leaves_a.MinEdge.y, leaves_a.MaxEdge.y - d) - local zz = pr:next(leaves_a.MinEdge.z, leaves_a.MaxEdge.z - d) - - for xi = 0, d do - for yi = 0, d do - for zi = 0, d do - leaves_buffer[leaves_a:index(xx+xi, yy+yi, zz+zi)] = true - end - end - end - end - - -- Add the leaves - for xi = leaves_a.MinEdge.x, leaves_a.MaxEdge.x do - for yi = leaves_a.MinEdge.y, leaves_a.MaxEdge.y do - for zi = leaves_a.MinEdge.z, leaves_a.MaxEdge.z do - if a:contains(x+xi, y+yi, z+zi) then - local vi = a:index(x+xi, y+yi, z+zi) - if data[vi] == c_air or data[vi] == c_ignore then - if leaves_buffer[leaves_a:index(xi, yi, zi)] then - if is_apple_tree and pr:next(1, 100) <= 10 then - data[vi] = c_apple - else - data[vi] = c_leaves - end - end - end - end - end - end - end -end - --- --- ABMs --- - -minetest.register_abm({ - nodenames = {"default:sapling"}, - interval = 10, - chance = 50, - action = function(pos, node) - if minetest.get_item_group(minetest.get_node( - {x = pos.x, y = pos.y - 1, z = pos.z}).name, "soil") == 0 then - return - end - print("A sapling grows into a tree at "..minetest.pos_to_string(pos)) - local vm = minetest.get_voxel_manip() - local minp, maxp = vm:read_from_map({x=pos.x-16, y=pos.y, z=pos.z-16}, {x=pos.x+16, y=pos.y+16, z=pos.z+16}) - local a = VoxelArea:new{MinEdge=minp, MaxEdge=maxp} - local data = vm:get_data() - default.grow_tree(data, a, pos, math.random(1, 4) == 1, math.random(1,100000)) - vm:set_data(data) - vm:write_to_map(data) - vm:update_map() - end -}) - -minetest.register_abm({ - nodenames = {"default:dirt"}, - interval = 2, - chance = 200, - action = function(pos, node) - local above = {x=pos.x, y=pos.y+1, z=pos.z} - local name = minetest.get_node(above).name - local nodedef = minetest.registered_nodes[name] - if nodedef and (nodedef.sunlight_propagates or nodedef.paramtype == "light") - and nodedef.liquidtype == "none" - and (minetest.get_node_light(above) or 0) >= 13 then - if name == "default:snow" or name == "default:snowblock" then - minetest.set_node(pos, {name = "default:dirt_with_snow"}) - else - minetest.set_node(pos, {name = "default:dirt_with_grass"}) - end - end - end -}) - -minetest.register_abm({ - nodenames = {"default:dirt_with_grass"}, - interval = 2, - chance = 20, - action = function(pos, node) - local above = {x=pos.x, y=pos.y+1, z=pos.z} - local name = minetest.get_node(above).name - local nodedef = minetest.registered_nodes[name] - if name ~= "ignore" and nodedef - and not ((nodedef.sunlight_propagates or nodedef.paramtype == "light") - and nodedef.liquidtype == "none") then - minetest.set_node(pos, {name = "default:dirt"}) - end - end -}) - --- --- Crafting items --- - -minetest.register_craftitem("default:stick", { - description = "Stick", - inventory_image = "default_stick.png", -}) - -minetest.register_craftitem("default:paper", { - description = "Paper", - inventory_image = "default_paper.png", -}) - -minetest.register_craftitem("default:book", { - description = "Book", - inventory_image = "default_book.png", -}) - -minetest.register_craftitem("default:coal_lump", { - description = "Lump of coal", - inventory_image = "default_coal_lump.png", -}) - -minetest.register_craftitem("default:iron_lump", { - description = "Lump of iron", - inventory_image = "default_iron_lump.png", -}) - -minetest.register_craftitem("default:clay_lump", { - description = "Lump of clay", - inventory_image = "default_clay_lump.png", -}) - -minetest.register_craftitem("default:steel_ingot", { - description = "Steel ingot", - inventory_image = "default_steel_ingot.png", -}) - -minetest.register_craftitem("default:clay_brick", { - description = "Clay brick", - inventory_image = "default_steel_ingot.png", - inventory_image = "default_clay_brick.png", -}) - -minetest.register_craftitem("default:scorched_stuff", { - description = "Scorched stuff", - inventory_image = "default_scorched_stuff.png", -}) - --- --- Support old code --- - -function default.spawn_falling_node(p, nodename) - spawn_falling_node(p, nodename) -end - --- Horrible stuff 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) - 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 - --- --- Global callbacks --- - --- Global environment step function -function on_step(dtime) - -- print("on_step") -end -minetest.register_globalstep(on_step) - -function on_placenode(p, node) - --print("on_placenode") -end -minetest.register_on_placenode(on_placenode) - -function on_dignode(p, node) - --print("on_dignode") -end -minetest.register_on_dignode(on_dignode) - -function on_punchnode(p, node) -end -minetest.register_on_punchnode(on_punchnode) diff --git a/games/minimal/mods/default/mapgen.lua b/games/minimal/mods/default/mapgen.lua deleted file mode 100644 index 30a865366..000000000 --- a/games/minimal/mods/default/mapgen.lua +++ /dev/null @@ -1,137 +0,0 @@ --- --- Aliases for map generator outputs --- - - -minetest.register_alias("mapgen_stone", "default:stone") -minetest.register_alias("mapgen_dirt", "default:dirt") -minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass") -minetest.register_alias("mapgen_sand", "default:sand") -minetest.register_alias("mapgen_water_source", "default:water_source") -minetest.register_alias("mapgen_river_water_source", "default:river_water_source") -minetest.register_alias("mapgen_lava_source", "default:lava_source") -minetest.register_alias("mapgen_gravel", "default:gravel") - -minetest.register_alias("mapgen_tree", "default:tree") -minetest.register_alias("mapgen_leaves", "default:leaves") -minetest.register_alias("mapgen_apple", "default:apple") -minetest.register_alias("mapgen_junglegrass", "default:junglegrass") - -minetest.register_alias("mapgen_cobble", "default:cobble") -minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble") -minetest.register_alias("mapgen_mossycobble", "default:mossycobble") - - --- --- Ore generation --- - - --- Blob ore first to avoid other ores inside blobs - -minetest.register_ore({ - ore_type = "blob", - ore = "default:clay", - wherein = {"default:sand"}, - clust_scarcity = 24*24*24, - clust_size = 7, - y_min = -15, - y_max = 0, - noise_threshold = 0, - noise_params = { - offset=0.35, - scale=0.2, - spread={x=5, y=5, z=5}, - seed=-316, - octaves=1, - persist=0.5 - }, -}) - -minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_coal", - wherein = "default:stone", - clust_scarcity = 8*8*8, - clust_num_ores = 8, - clust_size = 3, - y_min = -31000, - y_max = 64, -}) - -minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_iron", - wherein = "default:stone", - clust_scarcity = 12*12*12, - clust_num_ores = 3, - clust_size = 2, - y_min = -15, - y_max = 2, -}) - -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, - y_min = -63, - y_max = -16, -}) - -minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_iron", - wherein = "default:stone", - clust_scarcity = 7*7*7, - clust_num_ores = 5, - clust_size = 3, - y_min = -31000, - y_max = -64, -}) - - --- --- Register biomes for biome API --- - - -minetest.clear_registered_biomes() -minetest.clear_registered_decorations() - -minetest.register_biome({ - name = "default:grassland", - --node_dust = "", - node_top = "default:dirt_with_grass", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 1, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - y_min = 5, - y_max = 31000, - heat_point = 50, - humidity_point = 50, -}) - -minetest.register_biome({ - name = "default:grassland_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 2, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - y_min = -31000, - y_max = 4, - heat_point = 50, - humidity_point = 50, -}) - diff --git a/games/minimal/mods/default/mod.conf b/games/minimal/mods/default/mod.conf deleted file mode 100644 index f6f7ea798..000000000 --- a/games/minimal/mods/default/mod.conf +++ /dev/null @@ -1,2 +0,0 @@ -name = default -description = Minimal default, adds basic nodes diff --git a/games/minimal/mods/default/sounds/default_grass_footstep.1.ogg b/games/minimal/mods/default/sounds/default_grass_footstep.1.ogg deleted file mode 100644 index ce625d92b7bb196dc2f7a3aa642b1c7b1fd96504..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7014 zcmahscUV);vM17u7>Y;<5;~zMy(tJNC80?|=m9CAh}0NVibg=Xh>@ZY6qR131w=rU z-fI9w1VyQe1qB3!cY^nK-+h0)@9wwRGdpc(XJ>aNR^Hwi-~jNiRveXppo4l}@SKpN zkkG&ocV7Y>0Xb7f{{TP`H)Q|Y0I{M={=3m7>6G}BggLIed;ih68UCt~2dVbHK|aT< zLcHM@eBEvLmBW#66(waAB^4!AxU7|bfNxL;o`4Uyh+qKO4}w1%q>Z_e?ghMCD4w9o z4I&KCHb{((uAiqT-p|bw9}uPrB2QacSQuH_V04l25Io3Cz{4;4_!8h=z8COt-++sO z;1mxJBD!Dj^?-W@`n&lCK$!m8C2n}y76Rx4fFwac&N!dI9|ILKJS#X4GaU5$Bxq>P z9R*V{cj}WOq>AO`8pb=xULQ`y0(5~mgUfs|i3Y4Vs1Ecr=G$d{#74eM>0D+u$<)-!&u+OjDzo4Y~zlj152wn6(@DV)_h< zgkt2hSw&;uYMzIIQ~=0*B%An1mK`co%?@+}094;~n=)eS?FTe`& znI`6$rhG6ZOFEFH_WMFYi9%oXeplHSHwA#R)|^Jcd@TENo&dm_tCg5fZ}?@R<1ouna_3L%0g9Xi%?AKu8^}6pK32s2!lNf6y-q>dPH&H%mVoq zDebuq?0+Gdsw=};a&%nq;PN>NcP9u*mtRTEx>*N8Oy#~QS!PurWcu_9I@^qnBhXdt z4=WwZFbXeyTGaeBBYU_5gseK3-%_CeX4&W4cQUwNeQ4}Ww>JpZ(M2D)F}J&r%Cf=c zk`kLxG{tabWXUHlO@~z~Js6FW`RnilfIh3(4L-E#KZAR`Sgb%uFQPCv3ME%u^e9=S zPobuNf6)0O6IQ@I^_TE4s;jqz8Xu=iWjUd)QFwRQ9>uS25{`DtkOegDBh-y1Ru zdZt>_HM_?n3MnD%az%gL38x)_)72ZR0ZMi89>gnsQM$u#Ic+XN332;wu@k2hqs zq}izCz^H=Nx|$WQt~H<0m>PEEFwR=j-&zAdrjEmC;IOv-b{YOoRN{0detI)<_CGp~ zWq*r20H8ybK#;`|^allrBDP!_>|U zWXxUqyF6Upz?HYt8QZjGuc5Ku))QEmL@Dd2QPHebjr zNhF`oBe4n;0$9Kw$HU>&!w`Kw0JsiCvm1Q_;Q33ovw|b|D2bs4bh5)~hX@ zbB70!Pw@b$l(a$QN6MX1q%0U8tq|~MD68ga1VCkgxgglU9W@I+DGOdBD?S{J*NB#` zHlU_%ZG*Mov!K~v9r!J1=~5P|78ZP146hOPFcy!g9DQPr(4;;gZF2T*e;ev*o{n;=^7;U+N_ zuMT6e8Q51eJT`;qdJ&7W!%a?N?KUD`O+?}*h;9OO&66}DHk9Z(;Xj*6#Mw*lTZO}d zR;h!UL96^hRd)Zf8T;xdkw)~#@fuCiH5*~maiHvMI)2|~Iu%1C;;8-}cm17?Sb{c# zRJU~8OeS$!AON>{b3o01`XUaeiL;yZ$7#koOh&reU|sF-uQY8PHo$vWMVu8d#?pwG z&>OBqylVr|)gb`4*hIZ~VW(GlwMF%}@kLjy3>p4+uF{{>etlZerk%} zYH!sJ3cs0-zwAG4=Y^B$Z}f*ft5m(}2IhiR5(A)5V#DX|hX(}!qEiX+2-e%~VDdxU zfT9xxqEoeHq&zH92&uZWsPo(&P`R!=&p{+xek~u$7m+sVh>)V5MJ1KjIb!^(V$qHq z`L*^aU*$Sm55MxxcxASG1hmRxUK-j_KEF0Y+a#Zmie?eZC!>?3@&)7<^E`*Gm*IIf z=!D`tJ`Y)`PBJ=KDqqMcQL$ctzy+#8CscuiBt#d##~`=ISx^Nh}ws?3lGuR-JrJa62TC&#h)I5rHRXD^-(d44D7f=>0aQX&hpk_d^5R((eII7XDsXZC@`NMv zgsZWGSuBkiyq$N*+ALx*X)25Gm{jy4EQaj3N{K#;^2<+4b4;pABcuJ4`N3R22WIGV z(FN`Afg7=9i~t$}aHe=T-1p8ZIp3Eeb>+TnNkQofRl?!EOkzn%3Dy6~eFXSztf+9> z$23-yuHN_E$0)3}fKnwT74m&8fh8s2OAD42U$aYA8bM6;XO7a<-fD$uYJhOtN+Vct zQ2keXgF&X9mMWMDwPL4H>33%k`0k#30Rf6yV`H=ue?1XksVa6N>JJ$AI}1 z5tD`nQxY=_01lYTGVGiE2z>L!%jzZ^J<7o$i4OUdgDG=AZ~ngn1VHn00q8>-J}3pQ zzkWPS_amYJ7R{;CmPQyx%1Y&fZly$%(WrC+8ig#bo1jN4-Fse8w69{Pklz3t^k}m3 z1{gnzosNVdT`=a8>L%V0z$q+z$bj_@y0mTq7Qu*w*DT>s|)SYy)M`@uy|qm&ourApl2DZx^?6Py~bKBQCW8JSL{7oz>(nMZ>c zGKavmUy|zVQ(46>{+$|vHRyh=I{dGy^&y>^UcW*B5)&7gYBb7Hg3xOG_ViGq*NIWD zLll%%O|=&kG#JI0o?=ZA9kpJ@f*%{O>|%Lpo|ejZ! zOH0ciYY~@{78h4kQf#Rcmyr;cIwn_JTT)zFR8X9s$7yZyKyU$bl;AFM#KL7SG9zQJ zQfu8ZPZoCie&4z#yAo&jW&O=5+Wfen;x?=BUA%v9 z!$6eMC3*8|Sk1>jgS4!TFK;%;yQ+oFi@}SZyl>UfN^D;b_b+6G;{$~oK|vHTEFJ?fKojD2{v@+d3g*SOz{#CTw-54qS*MxgU@;G&YK)6Yw%Ucw%ohUU%2UYJMQgkQ^S{Cm%E1&=ctcX`k9Uo(S2FAl91XwYSU7lY zw)|Kr@WXtv>_WXsu_~N&K?+$p%sV5azt@j;DCjqW{&7a%uSo|aM<%v2z7J{XcWf!@ zTzmWnw{7+`g(qC(YL~!K(c$0z%>d_E5-(Hrc>pDGoxB>#K|%jK{O28^E-sBcohEnw zuCw@W#x*W}Ml%k=Eflt}UJ)hFld5q|*LenLeH775y4~28aOSyb*T?7UzYnO5tr<{1 z1A1YY$gEa10nNlm<4&JLy`Rz2?4)#g3emiRu4MAnd5_s4o-#j$JIZLLI zFbT?!E=?7+b{xb$yA5>_oi+J<$}YRlXdt50I~&2Qf|!9nJ;z{v`1M{KChPw*Hs)jA1sJI39gYjS;u4iETa!k?5En#k1F=Qz(XuN78_D<3n2D@9Fp2!9+9Zu#{m zXXd-Cl-AxASq_Er_uo@}tebuz-g#_IQ$NGnC!Ce-J#1WouUyB4^)YO~wmd{db^XB~ zelG|h>mIl%;E{ZL4#G(@dVI1Td5Ht zu#q0m*kpSE-6;5cDH%BXb(WuZQCM$ax4Hkkab4!O37EyJYE&>oJUkO}G4h0~&vKI2 zC#OqqjC-bw$0}bk1%=FS`m!)_T6EpKaP7Ic4jd>+*n58Eu4ZldqRUCnZ7-Py|z$(B;y`|i^hU%AtjoUN(; zAn88kSpW9G`#&?^CN=jqg|A(E3pldQwBEIcabs^}{Ww+nyX?FO;p0Sh@N+`JQIZjM zHcir9EY)N5!gK&(`&wz)Bk%hAwxWG%JWk(j90$%;6$YtSz4HxHZWitTwH|o&!_;p_ z^*=UV!`o7XM!nCMH(IbmRc{z~HlWAzOt-ftb4;UyG^8^J*I>_5eB5_EZLarPa~I_l z@_PJ;mZN;?q+I7wd$G~3$B1Qa8Nd0gGpf;sX?kp%3mNw?H2Vee=kZ5p;s`u>V|XX&m}fV`9+t}O!O1unwm`6LSmf! z@N8|dNq^lpAaY$n(p;@HC-0kIkGMBSs!GD{6`)m`?YCuDy!m!w4{-EB!58y^_?_*q zs$Z|;LRUP8BG5SFpK?$z#L{0iLh`&Mu2;kr@-lJ9Y$@}&_?fM0qfDrSf=yiS<$p#n zfN#%Q8mf>1UlbC^a)}VzY{ZpD66{m6@Y~GxjzZ$+r=&G&sQ`FlwI@JsVV6I*F z0&$1*WwbVcJl}@VCD}4zcj9P=f7A&vIL17rtmhrY4yu zogjMU{0Knb-JRhr>wwM!B_oEQYn!aEbmc#EcN0{KeT!DG9~-%K0aDVXtk9Uyz|opy z6;)WAVDWD;z2iGK!@=6KNR+sKS1aJ*E0vaCtHsU8PaP?GMxJLQgl$i!y$uVgI;k1B zMns6%cE37TP+%+5prOq)V*T-{eyL$w=4bctI&V@1Ic4b6N}KKF?4~e5!|=fH!_c^v z$m@#8X#M98x;Tg@k2tGB#!Dj){4ffjFr3@_u44c|oo8kET8<1rM5`H@r#6R5xC$No zGD_U#+bWVgZ|gsc9LfIh6IGG&Yv*U#Q||St`FMP7Oo8r9dtk@$s8hJhx3L?XqTMC~ zXAbh#-4*R)tm^MkeYRU8_ORSajiYAtTiAtiCm!cd1)9`^VOsLhW45|8mDB5e*UanJ z%7e{uu*$Sf>IApf4o6D=sRni%G>HA%B97} z>823O0&h4yocmK+3@gjD%X(u5s{~A4TNpeO_(nuSh*2N=<*=zcrR!-Jti&vAH&R#e zMBvlC<%f>_Hm+}Xlu#dY-d;@n`em#%;y!6pZ+!07UUfxEi()`Hr2ot32+fi~#sp!Q zVaNT0p(9?O5R3Ug&YK;%bo1%A+VRTB_1KM8IWcq1TYu!8AZ6d1woaYRmMc*zlnlLJ zcqO@{Bu%tIS~cf|C&pq+yGo+J?2NU7@Y3*wuCfd(@`JYmSSL2dgRQ$^TAi>NcUmWN zGlYCTwvMOY{KFU}*>_BSH?C$zpm{AUEcE5;m#QxP=GzKLy?)+Fp_bu$kRRTyy-De> zyO1v4#z)$uZjt2f;ui^PGxpFaRT{z61InJZk1e~jv{TTCqzu; z)VOiPN&56+SBT%;jx)N?{qDoFk8pGw*WamAJW|9Q@t#kQTnRjh)aN!nefqrKV*foJ zO-qK>XVW7oS`z+KS5$c?ILF*E<8Z*QW2|Oys1BvH_2NU9GfyPgZN=Pg7lp|D4=ye|-2eap diff --git a/games/minimal/mods/default/textures/default_apple.png b/games/minimal/mods/default/textures/default_apple.png deleted file mode 100644 index 4473dca285e3fbb076b28ca0efe057a576befcac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`CY~;iAr-gYPE_P$aNs!H_FVS6 z?>xIAt}g{GYExHB_Fdh>Fk8*tpdmKX=Rem(sp-F&e{pk0B-meq<8{+LR^7#Xn1gcB-7>V=c|hU zfy5b0g8YIR9G=}s19I#=T^vIyZuOpa=VLJ7V0Jw9|G!MI&k^4HWh$p@)3zCH58B$| zdGcP8l@Qy9Nj~2hIE)=c4jozgG@X0$p*f20tNV^J{AzTVBLXyv!PC{xWt~$(696=t BHKzao diff --git a/games/minimal/mods/default/textures/default_bookshelf.png b/games/minimal/mods/default/textures/default_bookshelf.png deleted file mode 100644 index f225e3449cfd3d1ab84e61028a72135c4bb90939..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515 zcmV+e0{s1nP)EN1>jx7af^-+LdyMK7~~objmS7&^Z$QKXJ(cUeQ1B%&wAgrHWuso zu-|LcTkmhv(Wwk-viJ zzy}^3P%kdbaO3fZythH$T_lpYkJYO9XNMck)sDTCQe#h}Nu002ovPDHLk FV1jg0xVHcR diff --git a/games/minimal/mods/default/textures/default_brick.png b/games/minimal/mods/default/textures/default_brick.png deleted file mode 100644 index def1cf0b17ba8883fd4748b941cd76219218ca63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmV;)0XF`LP) z?&a(7=kWFH(~=o*0002oNkli)NHQy1JnnqC+kXrDR600000NkvXXu0mjfBBRm~ diff --git a/games/minimal/mods/default/textures/default_cactus_side.png b/games/minimal/mods/default/textures/default_cactus_side.png deleted file mode 100644 index 128a4d28a74a7bd8e4436b67e8f1e5a4cd41e65f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|u0Yx(jm2*k+uXo=>wp|5 zPZ!4!4q4WNj-m$?1e_1%w@(d{obziDOF^LD>=kc#ir6lvp1PZH^u+VWl7_Ezvf`DG p?>XmI+anXK%v?Ha=X%ZM^@hHRYwsQJKM6FA!PC{xWt~$(69BnDF8lxh diff --git a/games/minimal/mods/default/textures/default_cactus_top.png b/games/minimal/mods/default/textures/default_cactus_top.png deleted file mode 100644 index eda1a0bb6374dfc88b4475f304f2b0e034ef5c1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9E0Fe^#kP0dy#+v)o~Mgr z2!|}|!Hv8O3Opzopr05z~6ZU6uP diff --git a/games/minimal/mods/default/textures/default_chest.png b/games/minimal/mods/default/textures/default_chest.png deleted file mode 100644 index 9746a3fd9396e8d318be2674deeee14427c74586..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WI14-?iy0WWg+Z8+Vb&Z8pdfpR zr>`sfJx+0MH8sl}#uI=-%RF5iLp+Wr=VT--&`d~7NJy}7*iyvK7If9v(BQ&B_9aa0 zLRa|wFMba zSA!3-H#G@glyEu1xNgHSExC@}s|pSTK9tE&(0#fuX6DHQ2M!2WO!P99O4CR*o;B;| zgWIj4Tedb#oIAZuY)}0B^DAF+CSK6u+aP5dCC@YM7X!nQk18x*_VhLZUCiL=>gTe~ HDWM4fnuc4; diff --git a/games/minimal/mods/default/textures/default_clay.png b/games/minimal/mods/default/textures/default_clay.png deleted file mode 100644 index 070b69e486b4f521bc7829f8245cab562a6c07c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UA7>k44ofy`glX(f`a29w(7Bet# z3xhBt!>l}=`|MeE^Tsc%fa9~2au<$io>?|eOzV9wZi zj~zWlp04^~Aibw#j!VO)m=8f}EHii(Cm-wF-rc&?(C5J#)!n+mhdS2wq*bhJKc_yi zFlbSs`hk<%o>~>;O#YTWxA>GQR}%Icj^?C$KF1?q?hYaaBlUkdTZq@)9ULR^9LVg`mYU~&lq!)Y-4 zotEZ%P0gw_mX$zh=8_=4U?Bag?8rSJW#{SQ7*cU-=?PE10}4C`9Jp@&`~T>gmY|0F zhuk}PMfyvew5EJCG~;W_R4HD;rZUs{>GR7HX+2M3n8NQqDAf1iXEGA{xcei}BnD4c KKbLh*2~7aPBsWn2 diff --git a/games/minimal/mods/default/textures/default_clay_lump.png b/games/minimal/mods/default/textures/default_clay_lump.png deleted file mode 100644 index ceed6fa7565f91e9431ebf5ccd73a4ffa27d2cc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJPk>K|E0B(kj;^n-U$SJ$>}t&h zAfK@$$S;_|;n|HeAV<&B#WAGf*4`5bIT;Li4j(vjul{)wm*ZK6z4JrtZ^lW=aPh>x iDDP-qZfTWeQe|zD#L%kT(RCZBlfl!~&t;ucLK6U9+bH?~ diff --git a/games/minimal/mods/default/textures/default_cloud.png b/games/minimal/mods/default/textures/default_cloud.png deleted file mode 100644 index faf0ec13de983c2e28528138705425868155b239..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;bAV5X>;M1%mmiTn0pxOfx;Tb# c$R;ZY0yzc@j9kw>M1U*?Pgg&ebxsLQ0CUz5%m4rY diff --git a/games/minimal/mods/default/textures/default_coal_lump.png b/games/minimal/mods/default/textures/default_coal_lump.png deleted file mode 100644 index dae47e3425bd7007f94cc701ecb1dec022f5b8cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0UEvMa9$8GdDMP%Gu4n zKt5whkY6x^!?PP{K#q>5i(?2!baKK0{vZ4dPyhdC6xtug&>6m3LSjbPL5{Xi?ZzZ+ g=f;){jw3P*A@8`;V>9>61?pq)boFyt=akR{0I=I8KL7v# diff --git a/games/minimal/mods/default/textures/default_cobble.png b/games/minimal/mods/default/textures/default_cobble.png deleted file mode 100644 index 2a28d25a569acd27621d745c5d23f29585a8b265..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UA7>k`eLpYvsMb89sI14-?iy0XB zj({-ZRBb+KpaN-67sn6@Nk#$2_x~8Iy%pu$>izpy^tlcTZ^vmN8|P?tHt%GZ-PyN%ifBbi z`^?$>>b{Zf41IH}n^sQu@@m<%Q3<<~Enn^8GUd;RJS3?fp(61E!a zTWTgICc1=JYcgC`oVujoH((SVSdk?mAh)^HY`c+Tiw&pvV)=6HDuP7 z%>^r`y3Z_aY^zzp;A18&)l@3Gyg5Gfqp)iS+HbS#8F% S?;jf|Ks{akT-G@yGywqq=#m5g diff --git a/games/minimal/mods/default/textures/default_dirt.png b/games/minimal/mods/default/textures/default_dirt.png deleted file mode 100644 index 7cb9c89a637584b4e53c82a7c6eb1ec7109befae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1586 zcmZuw2~d+q6kb75sRsk0q?k5{zaXLY3W9(a3WY_b(ZE_-}~PC4=Mb- zCz@KD0stmLAJ5hNHZ$yTM*K|HggXOZ3=}K;y|~K;HygYd_n2W(N(mttV}uZdP!I$P z00964fB=912s~@VCrSY!0Aqj04-!kfDGG<2RUGpVzRQivgMAj}(tFLMbMMCqjgH1f~=b0x{+`qLjbS4M-_J z1vY{`BaC875Wx^5&KEO^D1ij?IuN6f5?&utYaJ`E5I?++&lCPA6vozrkn!cK!dARW;7ZAqYmil;Xk8x zOex()Ljl;>&otgTV{MB@b^GU|kY#+M@6QhfTqKscG$EO}~h?Y0SX~b!+=X-vW2P^CC zOE1gUWNA;A{T|`yqmErDI$N!&=)c?jWchZ_!nMl>&VLnMmSVE1;auPnn|(q-;%E9DAfn*VT5@WtYVs_RuFy`_69T&H;7zq$%~PLRE~nZ{ai_oo0qY?o}pv zkx_0ntu5BM^m2$(uI=?IY4OK7d;Vx^iKuUnpIhX(Q?OX->^C>e_eEm+nW#%geM*X3 zOHoAh%n6^m_38d?NK2AgJM`c5va@ghJwKDMqkkYKL6vbCr9@%nFQnfi|&H}rRuSHf>1##()ElxLbrMJId zpVWIcqWS5hyFCZ5_|9(3mo~82t0k>9i@%W^D{WTTtUK&jvi`KGJSuF}X1pZ4Lf6^< zV{gGVrQ1uJBfEk0s5W! A1poj5 diff --git a/games/minimal/mods/default/textures/default_fence.png b/games/minimal/mods/default/textures/default_fence.png deleted file mode 100644 index e3510c52a1085b10c272c40fc440b9c5eb939e8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfw*a3IS0K&Ez@VofYNW_(%*$XR z&1fRWZmq;)qrz>cqvWK->8vj3tRv#4&Fii&=4B$|t0&}ZBIau%{T z?5L6Kq@C=dk?O3P>SC1YuAk~fW4W-<;;!mh01z;nbNQ z)L9tWRg&19wmU3*{u(^5zWjUFq#)Pr!dkNL-=qbR+S6IsuKF}J zBr|0(te9arb>5qASquutO`@7FW<6wNk(sP-)38}Y_yMEF`TFmS-Sb73UOTOM73f3; MPgg&ebxsLQ02F(h`2YX_ diff --git a/games/minimal/mods/default/textures/default_furnace_fire_bg.png b/games/minimal/mods/default/textures/default_furnace_fire_bg.png deleted file mode 100644 index e3370f438fad0f8a5af6c70fcda355964da0191b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=2Qx9Mxicb&~A$(%dr@ zcvq&F+Xu0GFt`TA>Ica>hc z{qJ?9fBtor`E4%jD&z{_xy4yz?ZM8(arc$HmqzgVTN*DOfUNO!^>bP0l+XkK&pJaY diff --git a/games/minimal/mods/default/textures/default_furnace_fire_fg.png b/games/minimal/mods/default/textures/default_furnace_fire_fg.png deleted file mode 100644 index 7a126e325f3ca5cde22e76b3a89a10187e82d3e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 719 zcmV;=0x^k7{-tEA@4a-Q#LPYHf)ku4Vky{(u%x=p>(lSEXe4h5q(fJC`|~VK9o=ylo^T< zMkGNAWtR6qqbrsrWm6K=>E@Q!FZUlfh6WvYIPZDh^Zw5B;fViPCEo6mmhf3*rZ@@y z1!@X*w8*}H$jjBvs9!61u35F<#mF2jLMwBk%y+q%7iZ)yVqVre6+RAjfJ)gi+GFJu z1vs-$=CLTv)j&7Vutt)#*P-?x-^)rn;NwAUs3)8Zp=YBN+^ll9h}Sy;rStt@ndsi= zXd@1#crJQnDqG3OZUt`=R`4Rym7kd#EVY=g#e6OF2mCE!qCkn@TsY$eK};X?V<_DQ z)90;QsQcpFn9L4Bm*FFM<{~8@v@4+~6fwF-A(_7ll?-Gkm?*YJeZAR9+GkFz=4-k) zQ@L{Hio+z2i?J9=BQVy*+tLrFx??yW2HlZ-+U3SXzFca~R>wiPhHp7u7~0lb0oRp` zK2b7xA;bn4$#O$q6Am}GU~J#SaH#?wB}2_N%t!q&SB1m-1nAPzpDDnQ%vht34KRIJ zjxjHQxwbg^YFzl!nj|%OtHp3FobL}*@H7cyMI}ksMmm z-O(M|ir}4w-YfplodqAYP@!U`GYQ7`!>uTIrG?&HMlXkAx}?E$H=f2w2TFWhIqvO@ zxE(LxSsKPl72HcjR~wAEX{TMHV!0Qmy&VxttiRk$lS~JSPO|_2002ovPDHLkV1hsR BPGA54 diff --git a/games/minimal/mods/default/textures/default_furnace_front.png b/games/minimal/mods/default/textures/default_furnace_front.png deleted file mode 100644 index 4da398c0a9c8fb2548d3351d92c836c2f6edbc11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJe}GSjtFf_hczAejZf-+E!_=u$ zTOybK0ZMs$x;TbZ+)C|r9GkE|2 diff --git a/games/minimal/mods/default/textures/default_furnace_front_active.png b/games/minimal/mods/default/textures/default_furnace_front_active.png deleted file mode 100644 index 06c4ab3efec213f9bc4883c760b9b080ce9ca3dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283 zcmV+$0p$LPP)v(Kh(iM)|`C`Nj?T%NY62ANtx;{m~r#)Fvy=%fkQw z0B}h}K~#9!U5!@`LO~1zO<9`35PC27za+%cYI$#dqD-U=q6cL7Lk1*EgF^181PQUA z2@&iHfhy6EAhI?*vr?Lq?wBR1aA47-g9j!(+{o&j&CHyw%>3Gg&6<^MH#5&6UItDv Wu5UV@pLGItGkCiCxvXPx#32;bRa{vGf6951U69E94oEQKA00(qQO+^RW1RND5G>FJeVgLXD24YJ`L;(K) z{{a7>y{D4^00NFlL_t&-83n;ha@#fl08kP?68wv#=va-KSk5HgWG0#P0L`N7E_#d} zqql1h&~)53vSV8oCGjT`AP9iSd-m^td<;ULCPW*%KQhj0cyi6q-E6u zA6?%>T3c1sAMQuSCa|xbnyQ~|n@hQSZYCoM_4m(gb5oFD+Ls-In6oMM9S@4DcQM+P z;MqF zXJ^xEC45XU1sK?av|c1d6vyzx&&wH@G+kn(m>3+_p0rtK8#(K~8(!uacAdwE?(2V* z)B~gjoGT^RECioN3(W`t&q(|B_I7ORRS^^~R(JoLd}`-;;4iS_A%tv*TyK`~Y#KL2 zyB$wL;x8QJvbq^L|CU{1KXDD$pR!B5Txam}uRk)OkSig?K|qq65C`$bQbxK~K&fX*KF;D;4S+yI zYq3SIf6p_y7O^ M07*qoM6N<$f}(d>ga7~l diff --git a/games/minimal/mods/default/textures/default_grass_footsteps.png b/games/minimal/mods/default/textures/default_grass_footsteps.png deleted file mode 100644 index 8349033d62edcad0223b154d9ab04b9979eb66e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmV+e1N{7nP)rYZ~0ET~UwOX6bQETkMD=~ zefK;-?ZMgOEdM^ovBNb)sg5{z%8kqalm-t3+h?Qk>gZyU=GtPEYYVZ17jr&5@D`Yc z6{^4V^5{xAJ&!rNmMld&^lRkJ@}SX6x5foCQNo9B!^^ugJxtU>JdmkL-lkf#K~CXZ zwf$9-+UM&-gkYslAZO+8qGvMTzf_WrB%f&C_J&)qA8j z5W>{w!{wfEiRszvg7Q4Imn|`pfE8(d1K~`uCsPIxO%e~w4CUM-xe46P%a=*%GvU-b zeC7AJJwQaRBw)aX(S<4fvtY&oqS;n-UZw?>1Zn$n44ohMY5Fux@&F!~ zQ|-H#BQh&?&hbz_|A5{P+^b}R8*e+L299Y^mh0G|qgU<%AMLCaCxJFbSWLGjE3!a= zr7}Nuh1wK8+~-SA zY?G><*&6?&L5y+XJz ztque3lIcP;f4)QP#Ku1L+?6(B#nfSdOy67&$uEOLDvCEv*9SY!ZPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipQ0 z4j~36msoB900QnwL_t(I%O%KLa@$k@fZ_j0N3!mYX$gww9>;LFdjFcL?CG__Fh|_|lQFx9aKer}Z8&B%Q5-X#&j}I_ z*_}YxhA_Jm9XlO4Hg|U=S{lMfq9cb*S|9?c-`<2M1-rB$T{e_ui}AQyi9=eTg`n&@ zv0fiUqdQ@F9-GIKtD6~i*s$3gg)}Wum#vukBjK5ic>Q%GK^c?eom(vN-8L|3u!j0(~--oF^TUJ zg)TiOgf>|IQPBxatt#S$i!xfutR-2*pbBJBmn3Hv{>;R-LDdG&`HoXpF!ChAGk7`k zskOkdeD;SO@2)2dBa{2PXN;$ZmRTG!9gjI|3m(%g{m@dE;M)OLZ>AKgqilODThccc zi}?ljf2IV^fI%%ulK;asHSsi{&Lk7hrq3bt7vwvKr?lbs-0l&+0voo6-5dZ)H07*qoM6N<$ Ef()6G;s5{u diff --git a/games/minimal/mods/default/textures/default_gravel.png b/games/minimal/mods/default/textures/default_gravel.png deleted file mode 100644 index 4b47e2346ffe16711f750edcd35755174a6b88ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-uDY5k9*$;V{vMsR1(sEO zAwcnHPZ!4!4q3(khV}m$oM&5IV(3(HIK|-IC9;a4lBMevL&E!82N-_UIjv!^yg4J8 zAyY6+g(2EXg_S|WCRv?fc8K9^1~HEuH3rVI#72h19MR_tZ)#p^F&w#hWl{mR%y#|P Swl{&+FnGH9xvXK|E0CV#sj@BC^Y*0NH2p^} zfPBW1AirP+hi5m^fE+zf7srr_TYFC&NtLxp5<{zUN7rqjP6kg`KbLh*2~7Zj8YyJ} diff --git a/games/minimal/mods/default/textures/default_junglegrass.png b/games/minimal/mods/default/textures/default_junglegrass.png deleted file mode 100644 index 7066f7dd95418fb818b73a49ec7674afc72deac0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRm!VDxC`x5Md6n}tEh$~3YfJMcF-7Zx!vQNX* zNH-Ovq9n*Kn8D%MjWi&q$J50zghQ6~VE5Ek0}h9S*-nhvNsPZ1G}LG`EdCOI`5aJ< zm;&3I2Js261ROeLg`_uFr6?yHwfA_$5v$_TsrN~BXYAA0+zajZX$fT6$$Gt7cfKL% zV|b|0IhlJ`PadvW%eFtmZZ_*u`|Fy@H*;SGt0tIT)sJ8C{L1@Wk1fB8xcL^xUe4Q5 e_gA*)KXc+8(XX$|mM#X`$>8bg=d#Wzp$P!5x>AS$ diff --git a/games/minimal/mods/default/textures/default_ladder.png b/games/minimal/mods/default/textures/default_ladder.png deleted file mode 100644 index 46757b884e9510342fd1f4323d4ede538ce7ce2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfmH?j+S0J6@E}h~bmFXpuQL&qnSlUv+^`% z6&uYiHl9;rG^fOPZi(^yQsaeXCX32VmsFT8sWe+&ZN8$`d}WRK>N<<{jg}jlEjPDV zZELr_bnyiz(A|tBL4Lsu4$p3+0XbQoE{-7*;mHXJ7eta9m<)XloP&J=ub;RO5*{n2 zr*KY1<E!=RkZFZgeE{Zyc>44$rjF6*2UngGJZ BfA#Nklpde+`fooR#?gU?~ECfpRj|H2-c*q#J)` z@B8n~$Qvl?L!TTk5SC9!go|`>&~86Srl*!&!0WebB_Ubeyj%>m7s@w`(R68k$}(WV zfWyzv1SZnq7=W9S7$G6lwlzb4M{lk#L(t*E^9_t99RUo+LYo_;2 z^3-SmP{IsuFx*fv}pFELRny;Xi?N$OIqRu-{wdkae@%k&kEj1sucXdInmpHD}UkpgNZkIE*RNAriGNO(g+{v;zofN zrrF}+q5^c@+gdY{t17h*2S0eVdg+L>v0~4=%CNpo+#)>;d+Gr(-$e+&Td7iaHV0vIkwcMJgN@6Fb8 zD~O`onq6?v-1VPgX#l}r_aB(EMhM`xKe77TSYvdrkO0<}!WMTo!Ku{x*qp!Yk_~5G z+4qBMs>PunBy+P&PGuSZ?ih`^E#={iIHWT}+~-LAljhpIIZ`ecjk=vXCzIl66lF3E z!<&bbRVBe1&9NRAo?y?yzx+HSOV9Le6y@!%eRVmLNn0dcKz)5Ix!}f(b#>l1>@sZ6 z7*66|w(D1+ zr;`s4)pBp}buqSmtlSZTZjLM=T)e2_he_V+b_>YLI=Z%&YQE%6{)eIWiu%sY<;w>Q zYhk}7mk5dLudaA!x=YKE3!ImANsL4fZy9L1LGZC5!x&r#*tz2|HfL?HZ>W?SSr5{B zkY0bGq_ZT^&1aTer(C89w*X+x8~1myDYr^W6=ggC;I29#!)5iwi9|b2cs=w1F#Q|< zeU425n*JA8b@jn0n z006%G`w9TS9Q=mI@0Ef1elT2)@O<@WW|&OAX_`vwW1-qQnQ!?@%ky)v2)%xn>wIVG zaNG7%H_p}Zen+yHV2eCSfU5^mLQ!ox004QZlF}^zpy4NBAtX{Aobj?S1e%WJCLa2~ z!IR$sz*_!k`pIR0h9BS1w19r3U71Xj$fNz$5F{(uwl~)WAUGJka5$MW0>L$3DMlZ` z8l#WJE?|vWZQAUufnL8o#2OAn9B)hs->rBTmhAkg^k|Fu#asix-bTu$hI59KDZN?J zkf*|z2S$t1V5uz5t8?!=MK7LOUe08mBp27R-Hn1vEzh@zj*`wkd(Sda@AYLJ7haq> zM^j;o!pS?fDD?T+^!}Xz{vdA&wi~X`Df0Q3U|epUj*hfiq9k5fE(Aqdcy6Vl{$o9A z+#biP2GjeqRIyv9`)q^Tt? z?QW|TN0~}O*>8PfMC<--wbvi4%`H(eZ3vK3XPGeOj$s+JW+cKrcm}`$?(_jnceiJ2(KY1cP>{54{emTJqXE6ZfGy({Hi<*eyKlV&DnQ8SZC+nQfy(n8L7EqZeELlE-ZH?>Cc08% zy|qPQRe;mrgm~>0b-0ayOv^4Ye;&oqMup=XU4b@Inf^$XWkNzzY}XelnsP9IOM_v}}9_R)(>En+6wx6Ho& zFR~P;TM1hd97jBJYC$iaw3#hSDcUns1Bn*C;Dga}Xi$$IK7;*6E;N3Eg_c6b)STOPG4UqT120PN#zL5Yt z`C-*cDMyC^faC9BPgvm4vkIU{vG(;-MhsyfRqE|jCRWHDB?|z++buYOwEzHEVT}@4 z$dt;2c)5?{jY0|lpp^-ZuyVJ3bc?3=!9gSM9^+0O}6sUrz7oEHgqUVVH&C%33fuQsv^D zZlBoTHaJ8pDdH#+aN|nud)iKZ)D8QdwrR@z>~F3sv#-SiiabL2W*CLN=V(;;zKY`j z+i97aY=yY8V(lNV>##UOJj2{MZcVr)J}~2vM7_mD0MGl`={axyT})mULbSHi_!8iq;;ebrF9ln+}~d2&(C#XN2NyWTFbr$D-4DV8Q$4m0EDu85&` zT}|lWo4rFXH{)2&#oRbfV{Cv;0iFd>YLr}mG4A*0a;b7DI}2+Esxm*XG1_v^9_NZ- zwl~yySC^TPmzPo245Y}c%k>>IeFAI7tDV*|BUjSQcco(~@mYDRd=UNoGvqfwi zaINF$q7c?zaHZ#^p;XGT0GRa@TP0Ysj?H6C$a-At*1B~-L!(;J0y%v`?iv92z>ps+ zu$H{P>k7y^V1t#(MU_l}f@8m|2&rUu4gh%dY3%D3IDP~GlVI(+Qci^eG9e!A_$fkO zyW0W)Fde}XZ@sPouwW0rVO5g?634+Y$73W^I z2ij8Rc^>8fz^B$qJkjf^um=c)D8eGl(IBiH@siA1d8QlRe+EDa^uP#L+kgJ9_s~7y zHZXGOLG`24NbpQ{T_v~1=)ZltUtKu>d}%$}aiI9>?}Wk|#A)(#?l~g?;1hS@Jyig@ z*X#RHR1Jc$fx5iLl827YDK&Xk#F_2&Lg3a_Jo_|L@Aa0to-Wcfo1g#E&a%3^%hL`? z1Rf)bgaaoc<2Wi!ha46r3t?J?l`=5qH%8hc;VkYnC#KmRu_Jr(ltUU%&b5&e$9ZLX zNi7^xMdAyg{%$>6@3w3(yp*%6&v2WP(LuL9kq(`SPKLUg&!0KnPWow)Yh{%@l6X`| zd=@{nKX}y%pBKz#tJNGT-elWJx7+FGeHmn>fhbb~^q^~5W~s~Lz1l0kD62v4GO!-3 z$m4jalS{2t6<1)Q^y4-3-V4(g-{FIK4#m}r>f{zI002aJu0Sg534AxZY5>_=%aONv z{GHOe3YQLW^M$Yh08oNmb+SC~Ct@iQTN))Tko}BOf!AzaIY?=c+W7#d&OsilA?{d# zE2YWvIL~))Xexm$;Dtp1RiUy4B>>(%3cXpeorYq2U0Wz%p+Zz3Tg%+O5@2Zr6$1db zd<>!mKv($9m1zMArca2|3G%5IkpSHH4EfstoxY$j0EOwCFK}=H`1z7^DnWkj8tNJi z64C++zI`yDKLgO8`S!tp^U>gYUd>N4izqJPXvkkKPXM0auXm7LffJnrfGn7B4)NRX z5PKe2wR}=WIfX!gfUm8C0!IS?l*b%RE60F>nx6`gGa27G1^}$|;1a(3fd7Ms0Fa7b z@HfW+@-*FFB@n2f&tyzctNr?F)&$7S3^s~&L!EjRKB#^BZH`9(cV5eeK1Y|j`eaCX zV8Dl+Rn#_swc`a9I6gp|_xk|1j59mKnI*R!dm1PO!Ce!0TVM&609b+~cx2vHx-faZ zvBHnex_Ni8mnm6-Pmi)^09L>>1Q77pn=bHH*U?%#S|1K^L}9WHAa5Pzx{F~I%$M0v zWf@z>zje zo#oVt6W0U%L0?^(v^ybhoQNNIXONZb-3P?JVMVO_7jp1k4$bL_m3(5HjRUX?08oMvkC`M5 ztI~7WhddX5~b16+gA{HG%p9}M^G5;@^9B6AU$deeY{KUtp`kkC8EnH2fs$8aRT z4}Xq%0|3w(uzJD7drblH%+=rQXsay7>>uL5`zr2*t=N$+TvX$;D`7Ky1dFi9yRT^A(FMdV&=m^)z`?&pV2O^^AgGDM3=ZJ)~j;F#YiC9TktLbRr)B&bGOx^h>$+v}fvb@3Z7tDWtrJ|3Z= zJd%IZd%mUPOiKY^``vLZC|_O8dJpyj01|*GN&2`QAqGK#T+XaDqnFl7#?S*r-|(9MDP? zR=g7-nZ^+~;D83suy;oW063MsJF;j70TO^?39@Z?y#)Z=I11yu`H_D22mpSaX!e)+5s#E6xnCG3>cwib}{aC)ILPeqPJ&Sf-313=;HvsUN zYZJQAbveR6oWa6G!2a#W$9pf)_b-lI{6jnD(23rB|MQjrO;_OmOw|25I;GSm09 zgkjAeY=YhJEVuy6r$v37?@pF{&qQ$?6-2S8!{e5c91{H51t6gS30J@s{Ke@C5+y7U z_}-&!nn4^}0Fms%y>kNKgHd*a1W4O6t`ymG{LyiLupBS;Jtf5A)D#HiC*>>eY%%D@ z?*`v{Rh}QBb}s4iJk@3OhJ39U5kaHU&{3``ji%>$^2-wus-QIR!?SuZ}>S_?5!%7%@V ztYTYOK5KVZLt|yA^bqf@**hOeZ-8!PSiIG=Y zN{uiQF|-;xECAg7 ztD!RuARssLjSz_t?ZgTIt{W$>F+cAt%m@G=Y{VH3xUjNhB*;!`e{cc|fdb$L4*oEB z@LwcAD0@F`9yp5+O((yyiWDflAmzx25#qCJk&1x}x$Ls&qDx!kh5gr|Z%;Q95Q3}j zpghUx1l=nN7XZM!2_=9W3jU6E&Fcg3$yGf51X15LMWJ)wM~F|aLR?GzS%ij8!koc6 z-<~R&s%MiVw1lBo50dHWNXjU>aRp6>p%H=mrO8yAXPJKBU9#;?eFU2iTKiVUHDJ}ckvBF_0Yxg&C0pTcP0 zcY30m3*RaHvQUn=NObgNH)XFpbJZ2~rUWXwoWrgGScTq(lzi~Z0t_4S z{lf?;r7;+@e!Y~9Aqnbe5){BF?4aTyg+2XI4wgNAU)b@o1T3_g;Ck}hX?epM4a|-s zmMHsR?I-R`0J5$c%Jw&MAcy0xA}sQ`M<}!go_YZB3R*HhTYv?y+3e=79{^%cX=0`;d0N(_v=xB&1`hs)>L^OY`X3jp?B zm33bpeyv3&WoE=ORw9G~0Jw8CnFS;O062}ZK!Jk6zzC4QKOMCK04?Db{_bxo|M+zY z06aGE!_x#%&hx8lNKnIF*{KibLfp85lBRJf>((Wkx3tQYf`^*-oEV(VgoQmfF|xqf z41Ka^8UQps+ksomi4(mkzR_LVZ2uSr~_r_Q69Qw)n7PQ7Y5=-3VV7s)*91 zCH3dy#qQfH<&|D}9%mJ-?^2$fHFDj?+@8~CsFVWQnIg@?#ZJ1^mD+Xuwe$Hp(|eDX zmgv0;Zu9D!1NMzxI_3kFQcy1ixh!P_!O)PNOw`6cacYmZc=afZH?J5TWMzt~#KW2H z*rf35K^&)0^EUdPzHWDMWOAfHzq-JNGHqR>Q=tqMt)xajw#s-rT;br=#m? zrynYxT42=Y)(KI)u*n`pks;k$)m<@=o}OB4Tdi$rBI%V4Qh1H?JptS_L3PC83XL`G zsU>VtYKUuBdnl#zTp06-b=qHEkVyBL835&DZ}PyB_n*0MnIdH$j#7TfbwEJn)`}yM zTB_St1N5#WPjjp#Y2Ef^NZVioo8CSYIp9I_sj?DMKJ~8vz=6M~cn|;#fC&Nr6A1tq z`1(}MNGb395&&Rw$Sv@X-|+x!fwkZN9&#Ny#EyfPg$7xE&I$m4`_8~2ZoM-F0I;{- zmg;GMLWpkWet$_w7L5=9z$HV1F2f@NKnP%HI2S1rfRfIqb0O!Wx z{na{E`8Co_rTl<9wL1;^p{}rY#ViwY65wf6dH!u)ZVTC*7+=%KDg&bIj}F!Kmp8@J;cDSJkDa5ec)3&AdbrN@ zfXu6rW0yOvRuU#M301#y>#)?lyQ|Orq~30!1i!wX#=2o{)L4s&i> zz2(#8kpYP}a6=v7?zPlC%?%nX=^{{8+&!t+Uy-7U^_6+y;~K?HASSOGsF^&TR8@TNL{76a9hJ#!>3yD_v(oQKZ-15EG2C zSTTp~v$F*-QDS%=UQD z%aN-^mJRjhKes;Mq9q>Jlv9M$c0@y&pPc9yo~M!|&$E6jsmSFJSB`7@ds};C^DNHO zpXAy;*M?7bE%ar#B|y3A$y4*r!cm)p(qs3N&ZOLBvtIZ0&kaJv5^B~>UCQqE*OF>~x#;CZ#t z(OqxNN2b|9|4?%C;s$qG_(KStN0#*uC4pkPVH=B_YPB{pQX3t;eV1EN&*rDvz){vM zrRQpoz(MbtcsBa(38Sk}$S2)T%EGfOMF@4*@;V}cR(!%*)LAM#S5ekJ?eYx|wSd_u zrpq<}-5Jj;gjX94avm}Xv~+)GB7ehE3%EXu(3n@~v8P6+1W-shP0_r`u&0yubhJp3 z+Q3l+yf~KH^je9p0MhGl^sqWJHRT$v>e^Am?#rX{J@#E!uoC(FlET#so6uxEggR13 zkEEuh+~Y%2Ng!oUGhgMYo`EfL!b$?07dI$$a&rp5OdMh)^^R=O9i6a}DZ|X0F`-_& zw&SP!v$Zn7re$Oo&tr`SF^F83nMj9WxjY`}YNTrAAVzOttsf?~Sy*IfaV!zi77dD_+}DmNO$A(2bmBn&Q}Z%9=wrW+~u_@Busd{-Fx zHCX|CV<}lfV~qw8-V~5l#g%89LQ2*5MG*XDL7G#;60O)jl+@GdS!;mk`K?tVpAC{! zM~e)AM{@wkR0HG4r2DSh(>uLyj5`Q-&GswiiQ2<>)p9v7y1G~#aK7WF$s*!1G zARxUVqe~`~A)|irVI;r4Jw=nC{!%a->ci-?XUF z#_s@COK3`8FMz#@AZS8_H`8}Rj9&(lfxotBYhb{EW9Q&jb!rJgq! ze(s(b;s9cVa^6Kc_kD8E!S*%V*Z!|w{oO+;;1^X5IBb;8f7`xrr`^`4Eja%o*j_%^ zh+Fs%?fR#WD%DtduMBXgu6?%I@wvW9;s~jrXFvOUW$WLAcgi#s#ce9TnwXGyE^!pN zF0gii3m_76*+k^cxmQd#1Y&M0RrTv<1g)$BP%=mZLWG#Z`*xi$nET|KvjBlm+Iu00 zLjfuX$R%7qMxyEcLrLGB^>RH=Y)KB>D%uQx>)60_TY6ufn0T%v3L%h^TblhFlK;H3 z8*Kr=-sneDQ5)akdzG2vb@zuKw`Hq^`K)5kE@R+v&~qRw&nr(KL4xM{t203qhHC#v z7VsTsZJ`D_aQ*HEVT_RMum+|PQUX^!60w6g4Cn6rjlCXWK;&(HvWZaw!9HFbuE$XX z^zDWlMnd1~|D}~XBL`f!OlZ1J9Nx6mCQ(4|;sE=Owb{Dt>li-^iDUI-x>cvSy#N}K z4FR{7DJ;;_9jckUJR7~R%^jIybZBVaIkN$<>)bX%6riL*vJZUEuUCP-JkMNj|K?W# zWZb6JbevApEOupC716Yb1N1xxaKqTKEZ{GC`SHsPyT0q`7z$$WtCz2688Lvh`Vq%sqAD$@>{>egy^oTs5^C<*); zcON5e-gZ%H*NPzUyhgd~S=x{5ZlYGPth$i0Q7+%LsLE)S$f8o`p-E)wp=;&s=ZdhI z1jZ`*caIKst5(bOOcedySyiTLI4a`_)}?{x_8V(+Gxez{Kp4i$9}gK5BW^@mCPe%h z*qWvD9De9>H^eT@Q4Us+2CuH@Kc1SG^~WoEs!;GOt2Q!nSH}@<@M{hedkF3)-${24 z-q(;?@Po{@LrU*LZM>2&ip4OF6(P1dZ*X&~^U!`UiU?0?}-Wt2}N#zT_^o&TS-a)h^`1QoApLiqFu4UVklanJKd=S)X|2CywazS^* za^3Iw!OK0Dp6J1r)Kk<AKvtybg?7Y@aEGaMvMty=`m|Gvhd39LEVK zV>%sad;2nL*YbMBWz^=OkMLmU2Pg4>?|A`e2`_25g>>Wg-bPD4#=Jd8G#4H{O!#5} zsevGwQK1$^PE1!`$?Elu#u3&25)XZ!UyqS4@i)CJO~A@o_5?9BT-S;d6(PDo6^#7> z{dE$0C1xIH$nP?A_U6o4N;my{H1N1lJ@AP_-Ch->;%8 zLM%+BWoXEX%U5$`N~Lv+F$IN-PfAx|+X@6UJ+I-q>&`8yg0jn{oz!9767tGv)&Sd9 zpn>Q6p6{>8(xn1yT%7Wu)$_$=C=!TTE%y3lD4_U0p0_3^<@_^b5Od%A#Gnc~e;-u< z?0W&MF>w(^m7HO;y7AcJHf=i(12iI%UvAs6?*#xp573cFv|2&o(=BQ8+eb6)0bn&r z4Jp`re*_U%J1K=o*IS2`m0+f1YqA75A8oeDtp6I+hXGaa;4(J=1?nGi)I(R;xCB6) zPh)mcTK~txb0lqA~yKs^EUpD76Yphf@}(iH{R_4_+>SYu9)WoA&ebB0r?O6 z+YR%nmk8eCx7W&cW&r;;q6bSxBwN5L?UZ?Va!dJ z(i+$z2;y1%?0V#Rb7nCyD7v0cxxkG(ROOTz0eJX64cal>c5`T+4G^em#t51*$_{}Q z^1p6}2LC<7YKJfWX%oNR`rwNf8vKHvO%ST88>sJB%U^Xl;__b50lYnZI$p@L7FH(T zuwMVfid?tR)P6oyzWA^rx{7a10lZh{3#0tu#v1-iOa4Wdc=b2C|EEk-N0?*{8=VQvzl}S~-+8Jq=XRx+VZymYgm*NU6?_QGLDm5eS7j z&h%VbqJkRoAzm!0xQ}6bn4M(W_7&IJ%<3Ap0}!#l*EbXA8a3*;xxSN zGyPvYbqt{4`(MuB#1O}O4xKW^{yC3q&+NH()~6Q=Pkuxa(#__oPNYD+ch;Ki=a5tY z?zz^c-nQnJgY9U4vk&uavMSfU+kSJ+;&z#t!+-b+->w5_aLsDsg8jFZ&Gm*Gq%wYHnrKI*0>y1LeL}*d6aVAXf@TZoyjY&(r^+) zkt)D|M?M8BPw7gN(9QObQ>GC%ToX>+JUny4G!`Um&vPRj z*T|Y~C}m)pt?ZF&$o>l`Q1KWKQS}Fpr_7uYyKXhab&W#GJ#nHTbI|{((+kf^ZabVg z`Kx0X`^)504L1gmuww-mBq^qT8=qH{f|Oaq_<5a$X?KxMQBf4j>g&an%+F#fa2528 z-*z}d;76VZ_=&`8HM){+(`oqQ<0AeHTu}lzIKNf<0j#lB4s97U3Tb!BGNceQBO}1} zrHx`=Nfq$=DIspvtpnV4IFrlNKdz=sAq*jaUCZm-v7j~ma22>?IHTW|6+|Eg1zPn`upLFG&gv$ZL3&jXqo7EbQ@+NO zLyMbpA|FZ(phI%NurjJdaPm1u#iJ<5(5i^QbOBcXyJBKMcFEnnyS#V5-}}9H$>N|j z76Ll~0KfvS6@JF{>Bc$5oUQW)`7Z%51>*Hm5j*mulONr9cH)hLQc4KH7$bxrgdE3F z00;mW00aO8fMZb;t|$eB0E_`b07Ah1pA!X?0D=KV06_pb_R@r~iSRrj6k~!Ah7fTa zk1<7vK!}-*5QUI1147DHMwO?85==0{2qMTqj_?Fij0l1la)`q`MifB;Im{s*LCQQh z$U|;4p3-;FAR%J`5yo#ZnLck|85bim!=ES~&l5^9AuJFg#5^#ih!BV|vk|52eP%#P z*~;+~*z<&^m=Z)V#E9|5JVlg1f>|Djr;rksALJ>^+Za6_j43k~j|un|k`?z2Dx<=H zN8u+Z2gWPMj$>0X7MaI{B1|B{97KSl?`RDe(J^uZMCdya5EC9@3K6RT1{@lnuCYfj zPY}hBu*yMzSf1m%0fO=MVI%>?fFQu!c|a(@1R%`Xmhb>mMgcIO(b3>+GKu|#ASm>e z&aySDq8oxIgIoQ5davH_X{Vxs1N4Dg%1fkKdD5-Ei_C6DA=_fF?&8&Hrvq1|2d15I zll9=R%^ruurDa293)_C5t1C8atBmuxV+aj@q*iGZbDAPEy;sY7uLVAhu3j@#8yUNN z{+6Tv&WV1$v0~%*KeklrH;uUGww}Gh@6YL}ES1KDi7$nnyz_aAi}sI@{`{RY@**w- zSUpWDoE2~=wC0@Of|>0B>z6yl+2k7(5d*flD!_~PV9rotVl927gr|vF2sZ(jYK6QVkv6m&Rt-UC0%V{i7HHs1iiHGYC zCEOeS$oh+f_6QK2ZF3m{Zy<=d|F)!j+Z05Cq?&C|;+Nu``sj7=thTU#= z_#QcUK@%qIQC4?PD;a2Q*8OvM+fZJz{>F^7xvlBcUl&v9=T)j1JfS!wOXGZztWE=mgNcTN;jm_zaty8)*R?66h ztgmg%TfI_+z7xc*pd|4bTX+Dt9)B`#cMeqIZk!{PK$Td zSo-Q8eA{|hF6onBH3`q?S-~wAuWOg)Hz-${TJK&~8zF4^pd@dbAoM4}cUce0e2KYB x+_7x4%YHeE3-h) diff --git a/games/minimal/mods/default/textures/default_mese.png b/games/minimal/mods/default/textures/default_mese.png deleted file mode 100644 index 123f0f4b916efa30f7adfc89f43440ac28a9b86d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9E0F&GpP}P+K>(0t=IP=X z!Xcad=llVS_nOK5hL4#lkNJvAem88ou;0&Z!HP{T&aY3XS##*e?$(c+Ig+bc Z88%o5C7RxeFbA5z;OXk;vd$@?2>_2-DPaHr diff --git a/games/minimal/mods/default/textures/default_mineral_coal.png b/games/minimal/mods/default/textures/default_mineral_coal.png deleted file mode 100644 index 0f52062af1a21000deab8c6f02cde775efd724bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|u0UEvMMY0f@1bvj3y{ND z666=m;PC858jxe`>Eal|5uKdC(9B?<$#kU0myu@;A5X!77Y7bV%`$CmOceETx#Gy+ ju_?__)KS#fsfU5#wj*oSa_tNKKI)Txdc4dD5q^!);tjzSR?6j=>{OtU! z>;fRl&B;#B1%bTW-2A+}w7mR+yyD{g;)4A0DxhRRVSYhTL19T=VO4oier|C|L2-FW zNojsbd3i~7RcTFic}YQed2xANRe60wMP*GzOoG<$8WL-&qZe;7KJxe!v(WY(VSZdOM(-UV6GXhDb>2 z9%OcA4v=8IpnqFe_x8T6IoUVMPH)S-e{cWW*5VXV`(MJ3quI2X7(4DeJ~ivSW8d$-UJhwca*t8{-}~fw7`woPTQx~ulPnmzG+gKA z=e9ZLtj~#?W7mFbhqH3*o4YB0X4Ow|>uP!LYpeCPV*j3d0c{?c)&Ds*nWpK=-wQwM zE2BI2r0CXnvt~y-Rr5~%e7bkabf!sOnoKV@Wk}vLO}FQnVe8wrTS>*cli%~t>)%`x zzp|cwqfs~U$c!Tq<~Cca)|!O*r=8sxVgExy1Kf^$jIQ(BCG%a0OUzT zK~#9!1;L3Tf>98F(FxZwcCx0gFj+%VRJKZyQWSqtD#ZK0f^)x;R6+Slq=W5 zjKktEs0tKIAA~4ve^yl)h-w}*&UN|8CSBxO@=l#EaktaVzzFAm0H64(1DfB?tcM+XzO+UgH;z z>k5pq5MEs0#8ACi;Thu+l@*S+M07WBZqjNI6K(2SlfhWd@s@@6;91dS3@_4TZ#<}U iv^i(q@!?PHf5y{VEFYHcy`liLg2B_(&t;ucLK6T4Jwjao diff --git a/games/minimal/mods/default/textures/default_nc_front.png b/games/minimal/mods/default/textures/default_nc_front.png deleted file mode 100644 index c9dd6a330ed87cfb410787d9038410c2f1576c54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!dVo)eD;F1+5no(lVq#KKQc+P+ zLqo%XhQhRz>~c$0z6YH;*7ce-_ratU0m>^y61`@b-pM#*%d#WU@qGUWA-Ct5>ZuVeVv2^x zMWp!x>~A|X>xczPUU|_J>#|_3p46r7_3!te3ujK5#;SY*XcvR0tDnm{r-UW||3Xcd diff --git a/games/minimal/mods/default/textures/default_nc_rb.png b/games/minimal/mods/default/textures/default_nc_rb.png deleted file mode 100644 index 685a22ccf53ab659eafcab0dd95e7b031cbdb0af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VWHR6k#Aej4~f#JUc!~X_` z|N9yK|7U0b@fjEn)B{-#4j|z`fj9oKbJqfONqM?BhHykDCp0j*2`F+TaX3lplq6{w bD=;$jy=D@~d2jgysEWbU)z4*}Q$iB}HhUEaktajUieA{T=K2lMqe|My#(Ozd=Y*WW!$LQJH8H=}r1%Z{0aI;^@H ufdQq&Ne7LR^7#Xn64D>*tRhJJJl~ zFqQ=Q1v5B2yO9Ru7^^7fO;7`UHx3vIVCg!0O4^i!TW0$;vtpk zC7tOdljSXw%*4@7bW{;~xDa)m$?C|499R}?5$93)>7ELRdN zUm7f579w9BDqj&QUl|5O3RU3>)!_>D(TWYxN)0hejnPVN$=aQ%I^F5I6SDLtX6sMR zHJA!Sc?Q$+fyi)1q0!7Dqgg;yY&5&rcutAYoD$=?CC2khfyiWGnaQGZ)5VphODas4 zRGKZVGFx74zM|HAWsUjjI*av;pM0cX^Ve6_fC2v5J!efiQRF z^Y<60_D3;#bQKzlWJbDmefs}(M(6j(tE#PUGoNBh=yWrUU429-?$l$yee6jhj*ms+ R_5$6+;OXk;vd$@?2>?J@qEG+; diff --git a/games/minimal/mods/default/textures/default_rail_crossing.png b/games/minimal/mods/default/textures/default_rail_crossing.png deleted file mode 100644 index a988c4740786bc78673b5e98ffa36125dd158ada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfiU6MwS0Ei49-QGRmg6m+>n%~> zD^chtS?DiW?3Bvlb2T^%Z29VSx~CS4OQ zQwKy5GTmvq-5I()>ADlL^(SWQPsufymS;G7ojg#TBMYDuKvsX_eWsD$`|EX3J~LR@RxXsxx0xZ?S9dwrLaZy#u&)hlbA5-i0O**!f zYz-XjtPvN_He9;P<#|P%JAp5li+#cT8BOgwJmQ!C*y*#9yTK!;B66?98|{$WYkAxp za(^2~+c8}{C2DSX_vrPHHC9W_7}}B~)aJ$+WC!gF{$m}1D Z`5(?Tcjz9na diff --git a/games/minimal/mods/default/textures/default_rail_curved.png b/games/minimal/mods/default/textures/default_rail_curved.png deleted file mode 100644 index f87e826c9d652e7daacd1431ad99c7c9a1236f61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf(g2?jS0Ei49-QGNlkFpu;|oNx zxxO-aezN)gvIPM^Bv%+HTNEHy6ew35BwrFNUm7e|79w8}3PcLkkt(&3ighunbuntq zvC7Ty>MaTCEs5IgNgACgn!V|oy_tFwvh^os>rcu7B7>><1~UqcW)&IDE;gQ1Vm!CR zcz&tL{4(Q(<)(|uO%_#{E&-xSv*k7BD{9PF*O{-Wvslw$v1{)(#~WRWK!-Ax1o;Is zI6S+N2IMq&x;TbNNU|PeS7K&lU^x(}8`!6Du~i|f$M5_#gLjeuw02v*XWfFKj6PcIKRnNkPG$gdNYGEMnZfx%@Tv zx7qujYV(9|=bV+e>)YQ?M-!t=ZbV4_wOMxC+vGrn$NWFcS1P$PGlM?K0BvIMboFyt I=akR{09iJN!vFvP diff --git a/games/minimal/mods/default/textures/default_rail_t_junction.png b/games/minimal/mods/default/textures/default_rail_t_junction.png deleted file mode 100644 index fd25b5ba6a6b8f05f50feff56c064472867ef3c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf`~aU2S0Ei49-Qteo#7>u=`EAv zBa`DRlj|#!=O>#FMEv6ewF1C|4XLUlJ@|8Z1{9B3}^-L<*H*3e}M+wULT- zF{*VjYW2}d&GG6j3F^J+n*CXN6SMUvc@FMzf2J=ad-F zEis-~Vm!apWPX|P!gA9k6{gE;%vaQyudXv+Q)jWJ!D83mZSGeKcLSZsSQ6wH%;50s zMjDXQ>gnPbQgJKv{B=GiLmroll2yEWH|y*@9Q5q}eqQg+Ef4qo^q7{zpyVX7#>Xbc z{PtJ9yTRJclU_V~npk^9DPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^n~ z2NxX`Z75g(00K-&L_t(I%RQ6Za@9=rjVK^H*SR1X_|PlgSBOBsF%6JLyew>8fJ3~?D^@a?ZN-xDe&AJi{G0-JdBtjh*ngBw2$J;WXzc1Q>~zR}4uZ#&_+Ip3<24OVm9H#`y} z-YT!Bb@M{kF$@FVCzd?pw(?R9N1$Xbs{AqykoFw^QR2_%# zVVsCD@;(JbMwZoizRcL^JCT0a43sadX{1=>nA^rz75ag9DI(%L6=N+61{}u3OB+!D y_e~asjbp2b2%-Uirv}f}IYjyKbg$ zy_wIxm(RbN(7u|`znIX!nb5zQ(7&6|z?jg$o6y0T(Z8F~z?jj%nbE+T(ZQS1!JN^; zn9;(T(!rb3!kyB?o72Ia)54q6!k*K^ozugf)5D+C!<^K^p47vi)Wo0E#hcZ`pVh>l z*2JLJ#h=#3pw`Br*TtdN#-P{6qSwcs*TU z$fMcGq}j@%+Q_8Z$)MWFquR=)+sUQd%A?!Lq}$4++smii%BS4Rquk4;+{~xl%ctGU zr`^q{-pr`p&Zyqbsou`2-_EJu(5T_htK!hCbLlUOw!4Dqi$4-|{a zUr}z9o1PvGml1{`zL&jJ2(}_88N?7C0;-W4*H1(Kj%m4rY07*qoM6N<$g6YA$rvLx| diff --git a/games/minimal/mods/default/textures/default_sandstone.png b/games/minimal/mods/default/textures/default_sandstone.png deleted file mode 100644 index bd9cb8692f449d37711a3a31e313230d147327ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 744 zcmVP)Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RW1sfMI6;LOBPXGV{dPzhPwZeDuoD8b5T`&xsw!{L-+jhDO(W$AN~=Z+ISdBkI~+dO-cB>xe>*eZ zHR#Xn58wAs&(2Ow^X~4h+wYZSi5P@1rnGh(r_pHWx~{3}-}`%6Rxqh+hGB|4|9N{m znNAr>d0xO6`M!rSYno=BWiTKJf?*h0nsAt54#y)rn4xv;dY+;vmSu%eL@CX(?EL(E z4LGtaiDDGLvERRa0sP@;B#7c_xndZ~aa@ul6(Rk8pT*eoeZxHc{cEmjnq^&Jj^{B# zJjcO$%1}{iKsU>>7nYSA6NC_GTPz-|PnQW0IUKR3>tPV=cDuT+L76D<^?Su}EJ-59 zIEtcnyY0FzARxrx{eJ)T=4QLulBxo_JkJBd;cy6o0Ayg6?HI=F>gq&MHtY3azvp_TrJa0%6bQD#=plUL? z%!`8Wnxra%(3@Rd=XnlZ)s*6*D8UDj7k~z->f!Li#b{(Nmk1+OZ3ccYolZ8J4TwBZ zn@|`=6}e&CwkS%Va_y}B!0Ww>vF&AE>l_U2E30cM{V8$Tg z!yu)|F5}A}YsMk##VqH_F6Y4_7sw#5#j9c_sG%sRVIiOu$fd0!qFutEqb#SB%BZU; zp|2ulU?*vk$pbXXteC-EOTt=7#9m7RXsk<>kb9*__yUHwrTp2U26>L!`QduSVcL#= zZ$$y^W+@5s1G$A^^W?NyK&sl)#WAGfR&QT4-ys7Y7Q^*U-U}HoO)BJWdHy%wLrKI@ z#qLA@(~B8<7snefT=9eL&`l}kCASx^FzaS%;y-tGxhLnpsD*8>cx`qqv5`HXB-pU~ zox{f|k2%&b?${A}YQm2O$*m`rpW3$nd*sdJ>TKf;@8x3I%nlcGyk6fUKFgd-WjSY- P9LPDIu6{1-oD!Mf`*F3 zA%QI=Q@NY7!@>j(Z^>NQ$YXre$ys98vSogW4@#!a;$)D&!E^8Mv)g_k%RF8ET-G@y GGywqA!7o_g5!*P|voDN1c9k!Cc2 z5;Aj}bddAwI7^76d^(EJ79KM;?$QnlJ_8S%Htx5~TuOfc(o_>iQU@P55}$7h>5+17 zQl`@XnDhKxRd%r(Hfe!%ubzXTKzhPJe6WJpKqZ?#BWlz{W~7GbKrQpmCe)Ob?1Z2N zcINb4#LYh~ve#H@ECh|;D@sf9kzpo#JGDSQpl5&CKq1gdVyKbKOb@v!3rEowRN2PW zMjxl^P6{DA$+31V5FTz|by^_d>mokh%khH1NyNZI*2?qQ5HCePMcK|?(876K)B>KK zDwGumi|!5rE`gA{o_SXdF?SvEXaj5RY9gWzXL~LE7CmMEDdh{na=T=L_w*$I0000< KMNUMnLSTa9JG?Id diff --git a/games/minimal/mods/default/textures/default_steel_block.png b/games/minimal/mods/default/textures/default_steel_block.png deleted file mode 100644 index 9c0a0e2484f58f5bc7f64076add1e0b89fe3e57f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9>wyCYu3Witbg$MNpopob zi(?2!bn=h?^A|c!Sm-`+;o*r389SsTr6eV#EF`5=B%{=fN_K-@$ a|7VE2&o|w^!2K@J00vK2KbLh*2~7aM87Slc diff --git a/games/minimal/mods/default/textures/default_steel_ingot.png b/games/minimal/mods/default/textures/default_steel_ingot.png deleted file mode 100644 index ad133bc124e1c46e7e4aa398ad4bf5cdc475c869..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRt!3-oH7vA{>q<8{+LR^7#T3T8|L&Jds2hx4| zrU3bjB|(0{3=Yq3qyafbo-U3d6}Q%&aO7i9;5gzS{_lVKW45dvQq{B9txxsa<*hYo onQDKB+GCx>{)WA?bbef5%U{NDMBM4b7octiPgg&ebxsLQ0CjIK*#H0l diff --git a/games/minimal/mods/default/textures/default_stick.png b/games/minimal/mods/default/textures/default_stick.png deleted file mode 100644 index 055a6ac0439fbb9a7fe1c83a07918e3891665da9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJXMj(LE0A_l;*7ObF)d9v3gj@B z1o;IsI6S+N2IRPx#32;bRa{vGf6951U69E94oEQKA00(qQO+^RW1O*BeH5%f#UjP6A0%A)?L;(MX zkIcUS009X}L_t&-83n;xPl8|=0O0q(b=7KXYgRLcS j%pb3v+E%QlAr6Xvs}g@EPqJ$500000NkvXXu0mjfmq%)!Xi#-q?6kl@fL!N7P|$g$3GuLw|{!PC{xWt~$(69BaA732T_ diff --git a/games/minimal/mods/default/textures/default_tnt_side.png b/games/minimal/mods/default/textures/default_tnt_side.png deleted file mode 100644 index c259726d688808e83e0c50a192b2dca46d190070..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=4v83=IqnYcw?e|Nk$P z@8b>>()Dz44B?oWY!KAqz?LMT7jWRgp#z5=Jz!W8BNHPb6BBWOM~qE^S&1pwr%RL} XtxxQ1i$mXTphgByS3j3^P6A(=f(-@&EC&T0R{c;=ve!An{FgTe~DWM4f#X&A+ diff --git a/games/minimal/mods/default/textures/default_tool_steelaxe.png b/games/minimal/mods/default/textures/default_tool_steelaxe.png deleted file mode 100644 index fae19dd0dc51ec75da2d91dc8400aa543e608c6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!P=HT}E0A_l;*7ObnKNh3fddDg zJ$q)LXaE#sU@Qsp3ubV5b|VeQ(eQL}45_%a_kFVdQ I&MBb@03wh$mjD0& diff --git a/games/minimal/mods/default/textures/default_tool_steelshovel.png b/games/minimal/mods/default/textures/default_tool_steelshovel.png deleted file mode 100644 index d5b1bc6bc354e3b5f6a22fe4c5f73648b5372149..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!P=HT}E0A_l;*7Ob>F(}6aNxkZ zckiA|yXFBDWh@Eu3ubV5b|VeQ(eZR~45_$v^!P?b1_d4_1Dy~5PnYFL#+((inQ&+N n(me(%D)&4oz2Ycm-~Wd-ax+7N;FnL`Kz$6Ju6{1-oD!Mq#hB diff --git a/games/minimal/mods/default/textures/default_tool_stoneshovel.png b/games/minimal/mods/default/textures/default_tool_stoneshovel.png deleted file mode 100644 index 7bbd2d4070260fe3fa426774e5880f831860aed0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!P=HT}E0A_l;*7ObiH(gdDJkjh z?iO3oG#e<&SQ6wH%;50sMjDW# zOf2xzsH>~%>+4&uaqTlunz1CvFPOpM*^M+H$J*1yF{I+w)c%893bP0l+XkK+wU@D diff --git a/games/minimal/mods/default/textures/default_tool_woodaxe.png b/games/minimal/mods/default/textures/default_tool_woodaxe.png deleted file mode 100644 index 6e70f4a2156742b4a74f3e92b32f89b93587a226..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJPk>K|E0A_l;*7ObDe%)!;ykz$ z$Y(4G@(X5gcy=QVq}J2LF{I+w-cyP~3=AAhj#K{sk6abt6Bo^PXYuaLuYW beDNlO#%cza#FLE8Ks^keu6{1-oD!MK|E0A_l;*7ObDe%)!;ykz$ z$Y(4G@(X5gcy=QV$kFt4aSW-rb@YTH6N3TA;R7Q7{->MW_wgB!2(^ diff --git a/games/minimal/mods/default/textures/default_tool_woodsword.png b/games/minimal/mods/default/textures/default_tool_woodsword.png deleted file mode 100644 index 8099af1391695db1cb70f6df1f2a77bad3d150ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJe}GSjE0ER{VRcgCjI~uM@Y7H& z=s5-yVk`;r3ubV5b|VeQG4gbA45_#^_p~7&g8~ne!-7Bm&z5cBkxEst6e{3ZyXDd! oQ_H)%{w7++BrjZ*E$w2H%ILL#p~Za8Taf7tp00i_>zopr05XRtZvX%Q diff --git a/games/minimal/mods/default/textures/default_torch.png b/games/minimal/mods/default/textures/default_torch.png deleted file mode 100644 index 21d98bdbb059a806a574318ac46c7af6d4d65343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^3h)VW1=5}>47n-{lRO!2Gcf%B zud-P+Q3fc=SQ6wH%;50sMjDW#=jq}Y!V#UEaDb7?AYx$vo3^%(+7;1L9EA-=Ggubz oq%qG>N|ZP(aV+6Tf&v2r(+g&9j*qwh0Ch5Wy85}Sb4q9e0FebIf&c&j diff --git a/games/minimal/mods/default/textures/default_torch_on_ceiling.png b/games/minimal/mods/default/textures/default_torch_on_ceiling.png deleted file mode 100644 index dccd380b23a210f96fe4f84c9777bee87cef6476..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^3h)VW1=5}>47n-{lRO!2Gcf%B zud-P+Q3fc=SQ6wH%;50sMjDW#>gnPb!V#UEz`(>T(0GQ!q}6B!FOx!#Lih>}Z;dGj dxu!1E1FG7?v_4E}-&&vs22WQ%mvv4FO#l#uA{qby diff --git a/games/minimal/mods/default/textures/default_torch_on_floor.png b/games/minimal/mods/default/textures/default_torch_on_floor.png deleted file mode 100644 index c22010750b1e47653b60ca028faa0eade0d88046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^3h)VW1=5}>47n-{lRO!2Gcf%B zud-P+Q3fc=SQ6wH%;50sMjDW#=IP=X!V#UEpdiZPkQv4^@j}3iDcVy67crz7NFR`3 fdcotymcqs`y_G5RoJ#5rpbiF4S3j3^P6y!k`ihBm_+Q>vZZ|i3Pg-#K)3th=J@Gu_ug~fopYb(Jm>5^8WFbH z+RD+2F=h>0f+E#zW89Xe>MSTs^kvM9MTABLD_2f$IekgxN#hbiaL$Pc5dlEcG{G2W zj2J`4fH6&F&HE$-BY9t8-0tbyWln6paXdpqG&KF`18gM=n z5Q!dPDt#WpDlSH3g+E_BDY+2Dxk>~?6+uEE=Rl-v6hghP3=l${nw-a8aw$k~KHdzuE zNF0zfK&FW~S~Ep-hTIIfn3Dm-C6WMCJs_sx>~f7WLXx8(;Hq=LP}Mnm8i392k0Qwg zF^)`yOU4Bw&XCmDa>+<23QPe_uZ|U_=8T!fLQp`Idxynkks^E@SnP;lN9~>HjHJif zuKK1oziZOaw|KNFyr#z~!@oAM@XNHb(O-OK=HWDP=)q9_VatyiFIwpTePzKpL)%X+ zgWo6hpO4e+%nn^YIX>J`VKDo3cc_fY}u7$s!#RY-fWw>)}zvX%6-Ujyz2Buhp+%I$BTak_Bv&(xoo(Q z`e5WctA>^rLTliO@wU5}**&+S?alLx{0v1^!#%6cyZz-|yjAbt8yy}yHu(09xVuwL z%lF7XJ~{QAr)}Rv;+cVxu9Actoh@D;^i}_ew=%|lwBDcE*83sqyaHC*)0Q&b%ioMe z)S2$yq^t3D$sF_Odh^@Kzccaa43mZ~ha~Uz@{q&>r(*6;oqckne@py@*ubE?c#%*V zvaRtQzd+lQOTrGI_dsfj>9wfU@t(Ydr0q@Iw72u)1qt@xy1d|U`Y(I#cjxv+YMVFQ81cF7+LWt{@rPZe6+5eATGyrQ zD|h|+*!rvunQl5t4fYM_c6hPxUDTC*&N00!*8I~Lk@6L+?fKj) z{lx9KYIBo)Z?qgw%=^^g%xKi<)arq>)@Svl!&|fMGM?GK$T)Nm92QiyDK_UniaxM? diff --git a/games/minimal/mods/default/textures/default_tree_top.png b/games/minimal/mods/default/textures/default_tree_top.png deleted file mode 100644 index 3e6bd5262a4350898fc3b92045e48804b62349fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!T!2rAtDYjifufY5nwXcZM1ZkG zpuSY7jbgN`YL>53fuGtd*7{{Ym42Qsjv*DdV*8_o4k&OiuXT-nSO3sWk@xYxl$b}W zW7!4bA`UI*jAwETvN$eOe^`S@L9T1g>WQbL)4$ws5_EVe`!(vw>U00Rjg6c_6!`4! XsS0YT0k?X4T;=< zgAfiaO9^NQk$Q=u;U|GPOjyXvV`joK#S(!qp11qq=6H0sd+#}S=iJ}#{Lc9(%(!ux zjiU_!EMu<)hpT(JdFw3InO_j^2e1gjLL>Fcl`~t;TvB<`yog8$fry-Q#+asQ1Rwwq zfCDf9O=T^3A_5@*5jY3NK>NQS0umq)kOODHH1*Shw1x0e2tpK`BV%0CBqDJx7(-=q zPK*gnR&g;SEBuAxNhyd>2$jeM@ zI10v5V;nS^r!^>|v*ZRYXkG?GAvqG`ss{)fpIfeZMo&cyE2=e}yZ)>QMxs+u*uhSkSI!@fz+bK7oj z%-YiLeRz|rbwXmE=j2HD63Zmro%+OHw~AX&t^UwyiD&1D9y^cx_0wNB>PgdZOzgyP!H+a=F>Ok(dIuP%ifpObbIC!15Sz+1; znGw$=l${+se_>I|^z>gY?#1uLykz?#{Mz;LsPXFzzheQ;cxvgLh}^`N%llZ-p()db zkqGbR&36MAe_rVKc3(lSuWxb8&_69H|L$|JJASpetZLvsJ^Bgg~F}OPD%@6(q D@ROia diff --git a/games/minimal/mods/default/textures/treeprop.png b/games/minimal/mods/default/textures/treeprop.png deleted file mode 100644 index eb8a8e6c4f72f621425efa2fffd133d433c5daca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 757 zcmV^6ifgWKmZpW2p1&)86XH6AqN^#02>tr8$tjZPzW1S z030R@97+frO#mG>2pvcO9ZCZoO9CD|1s+8Q9!LZpOa~rO03KHWA1VzWMGYTN1tAs& zAxZ!tQUf7U2qZQUB}@q=RRJYg0wy3AC?OFjI1niz94Sx_DPRLCQ3@(y2rC>BD<+w04y63EFvB(BOWX{7A$1}Eh!i-X#g)I7BDIsFg_VDVG1y03NdH_GAZfbM@0004WQchC_6okj#+uBgEqo~+W zu~!sP#^s+F2+V_JJYFMlobq z8XN0QXGx9Sub_dHjbi)}N+UVb!kBvp>PE-Tq51>O1uV=@U|BbImd@il$w@?Gz#{AS z*W0=pTc&uG_BwR=1`e10|9XDH0T6hM~y8Cnhhr)Pb68{P&KT+00000NkvXXu0mjfNMz^| diff --git a/games/minimal/mods/dignodes/init.lua b/games/minimal/mods/dignodes/init.lua new file mode 100644 index 000000000..833150873 --- /dev/null +++ b/games/minimal/mods/dignodes/init.lua @@ -0,0 +1,37 @@ +local groups = { + "cracky", "dig_immediate" +} + +-- Register dig nodes with 1 digging group, a rating between 1-3 and a level between 0-2 +for g=1, #groups do + local gr = groups[g] + for r=1, 3 do + for l=0, 2 do + if not (gr=="dig_immediate" and (l>0 or r==1)) then + local d + if l > 0 then + d = string.format("Dig Test Node: %s=%d, level=%d", gr, r, l) + else + d = string.format("Dig Test Node: %s=%d", gr, r) + end + local tile = "dignodes_"..gr..".png^dignodes_rating"..r..".png" + if l==1 then + tile = tile .. "^[colorize:#FFFF00:127" + elseif l==2 then + tile = tile .. "^[colorize:#FF0000:127" + end + minetest.register_node("dignodes:"..gr.."_"..r.."_"..l, { + description = d, + tiles = { tile }, + groups = { [gr] = r, level = l }, + }) + end + end + end +end + +-- Node without any digging groups +minetest.register_node("dignodes:none", { + description = "Dig Test Node: groupless", + tiles = {"dignodes_none.png"}, +}) diff --git a/games/minimal/mods/dignodes/mod.conf b/games/minimal/mods/dignodes/mod.conf new file mode 100644 index 000000000..52a80d66e --- /dev/null +++ b/games/minimal/mods/dignodes/mod.conf @@ -0,0 +1,2 @@ +name = dignodes +description = Nodes with different digging groups diff --git a/games/minimal/mods/dignodes/textures/dignodes_choppy.png b/games/minimal/mods/dignodes/textures/dignodes_choppy.png new file mode 100644 index 0000000000000000000000000000000000000000..a73fc2424140e0f429b274ac72f7f20dfa0e2679 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYU0GAJvbOfp)~y$}Z0YFe z$j{HexOHnnLPD&qijxxOikg}*;naAb;!sZ)$B+uf{?+H-_Ooy2~ z^2AooymRMcczj*LcQX&olv<{isJt-dt?5!e&krrHOnmX$!?^6Y!qo}Sns|?KCpB+$ p%$dM@yoBY??1e0;22OJs8MJSTiT2c9ybH96!PC{xWt~$(695yGNCp4^ literal 0 HcmV?d00001 diff --git a/games/minimal/mods/dignodes/textures/dignodes_crumbly.png b/games/minimal/mods/dignodes/textures/dignodes_crumbly.png new file mode 100644 index 0000000000000000000000000000000000000000..23f2f7c71997d29bdc50006a6161e2ad72770b24 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|#hxyXAr*|hliV2_3$9y!AC4Vz5>8yM*x-;Mz`@J3*zti0#~ilC3koJmEo_YU%xdp3=hr;d UT_6>-4ro1tr>mdKI;Vst0NN`!F8}}l literal 0 HcmV?d00001 diff --git a/games/minimal/mods/dignodes/textures/dignodes_dig_immediate.png b/games/minimal/mods/dignodes/textures/dignodes_dig_immediate.png new file mode 100644 index 0000000000000000000000000000000000000000..a532ad90b20e7b7eb69c87721229852c5d5c3c4b GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|g`O^sAr*{kCpmH*P~c&yUHD_c zSNpe-#ou_py7u1CwQUh{lz5R?KC7cmSmMbWCXQb(mCUyK=`Bj-n(yYl^5}{$L2`~q zggO)_m^vlQBopV($|DsyIK;3sOgOJ^=RaVP&+-FI)sV}UvbN}TM$WeFg{r3|) z53rT`IKH%Y>|3PVqsw&DRQ|Gb;`)y69m$Bq+#}VJFug`b_-NxYQ>gTe~DWM4foq|u| literal 0 HcmV?d00001 diff --git a/games/minimal/mods/dignodes/textures/dignodes_rating1.png b/games/minimal/mods/dignodes/textures/dignodes_rating1.png new file mode 100644 index 0000000000000000000000000000000000000000..d2fee3a23269731a2c9e56a86e04df3c1b386e23 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`s-7;6Ar*|t61x&adYb+N!9thM q^&1$cFjz@9TwuA*b2x-EfMNDurIQCQ3tR$fVDNPHb6Mw<&;$T}$sKe6 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/dignodes/textures/dignodes_rating2.png b/games/minimal/mods/dignodes/textures/dignodes_rating2.png new file mode 100644 index 0000000000000000000000000000000000000000..15329b93fa9b94075774044d3ec7af828362d072 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`%APKcAr*|t60;ISdYb+NL1SVU n@1h&5CEF$4{ 30900 or pos.x - start_pos.x > 46 then + pos.x = start_pos.x + pos.z = pos.z + 2 + end + if pos.z > 30900 then + -- We ran out of space! Aborting + aborted = true + return false + end + return pos +end + +local function place_nodes(param) + local nodes = param.nodes + local name = param.name + local pos = param.pos + local start_pos = param.start_pos + table.sort(nodes) + minetest.chat_send_player(name, "Placing nodes …") + local nodes_placed = 0 + for n=1, #nodes do + local itemstring = nodes[n] + local def = minetest.registered_nodes[itemstring] + local p2_max = 0 + if param.param ~= "no_param2" then + -- Also test the param2 values of the nodes + -- ... but we only use permissible param2 values + if def.paramtype2 == "wallmounted" then + p2_max = 5 + elseif def.paramtype2 == "facedir" then + p2_max = 23 + elseif def.paramtype2 == "glasslikeliquidlevel" then + p2_max = 63 + elseif def.paramtype2 == "meshoptions" and def.drawtype == "plantlike" then + p2_max = 63 + elseif def.paramtype2 == "leveled" then + p2_max = 127 + elseif def.paramtype2 == "degrotate" and def.drawtype == "plantlike" then + p2_max = 179 + elseif def.paramtype2 == "colorfacedir" or + def.paramtype2 == "colorwallmounted" or + def.paramtype2 == "color" then + p2_max = 255 + end + end + for p2 = 0, p2_max do + -- Skip undefined param2 values + if not ((def.paramtype2 == "meshoptions" and p2 % 8 > 4) or + (def.paramtype2 == "colorwallmounted" and p2 % 8 > 5) or + (def.paramtype2 == "colorfacedir" and p2 % 32 > 23)) then + + minetest.set_node(pos, { name = itemstring, param2 = p2 }) + nodes_placed = nodes_placed + 1 + pos = advance_pos(pos, start_pos) + if not pos then + aborted = true + break + end + end + end + if aborted then + break + end + end + if aborted then + minetest.chat_send_player(name, "Not all nodes could be placed, please move further away from the world boundary. Nodes placed: "..nodes_placed) + end + minetest.chat_send_player(name, "Nodes placed: "..nodes_placed..".") +end + +local function after_emerge(blockpos, action, calls_remaining, param) + if calls_remaining == 0 then + place_nodes(param) + end +end + +minetest.register_chatcommand("test_place_nodes", { + params = "[ no_param2 ]", + description = "Test: Place all non-experimental nodes and optionally their permissible param2 variants", + func = function(name, param) + local player = minetest.get_player_by_name(name) + if not player then + return false, "No player." + end + local pos = vector.floor(player:get_pos()) + pos.x = math.ceil(pos.x + 3) + pos.z = math.ceil(pos.z + 3) + pos.y = math.ceil(pos.y + 1) + local start_pos = table.copy(pos) + if pos.x > 30800 then + return false, "Too close to world boundary (+X). Please move to X < 30800." + end + if pos.z > 30800 then + return false, "Too close to world boundary (+Z). Please move to Z < 30800." + end + + local aborted = false + local nodes = {} + local emerge_estimate = 0 + for itemstring, def in pairs(minetest.registered_nodes) do + if itemstring ~= "ignore" and string.sub(itemstring, 1, 13) ~= "experimental:" then + table.insert(nodes, itemstring) + if def.paramtype2 == 0 then + emerge_estimate = emerge_estimate + 1 + else + emerge_estimate = emerge_estimate + 255 + end + end + end + -- Emerge area to make sure that all nodes are being placed. + -- Note we will emerge much more than we need to (overestimation), + -- the estimation code could be improved performance-wise … + local length = 16 + math.ceil(emerge_estimate / 24) * 2 + minetest.emerge_area(start_pos, + { x = start_pos.x + 46, y = start_pos.y, z = start_pos.z + length }, + after_emerge, { nodes = nodes, name = name, pos = pos, start_pos = start_pos, param = param }) + return true, "Emerging area …" + end, +}) + diff --git a/games/minimal/mods/experimental/detached.lua b/games/minimal/mods/experimental/detached.lua new file mode 100644 index 000000000..673adfdd4 --- /dev/null +++ b/games/minimal/mods/experimental/detached.lua @@ -0,0 +1,29 @@ +-- 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:callback_node") +inv:add_item("main", "experimental:particle_spawner") + + diff --git a/games/minimal/mods/experimental/init.lua b/games/minimal/mods/experimental/init.lua index e8aeff2b3..b292f792e 100644 --- a/games/minimal/mods/experimental/init.lua +++ b/games/minimal/mods/experimental/init.lua @@ -2,821 +2,22 @@ -- Experimental things -- -dofile(minetest.get_modpath("experimental").."/modchannels.lua") - --- For testing random stuff - experimental = {} +dofile(minetest.get_modpath("experimental").."/detached.lua") +dofile(minetest.get_modpath("experimental").."/items.lua") +dofile(minetest.get_modpath("experimental").."/commands.lua") + function experimental.print_to_everything(msg) minetest.log("action", msg) minetest.chat_send_all(msg) end ---[[ -experimental.player_visual_index = 0 -function switch_player_visual() - for _, obj in pairs(minetest.get_connected_players()) do - if experimental.player_visual_index == 0 then - obj:set_properties({visual="upright_sprite"}) - else - obj:set_properties({visual="cube"}) - end - end - experimental.player_visual_index = (experimental.player_visual_index + 1) % 2 - minetest.after(1.0, switch_player_visual) -end -minetest.after(1.0, switch_player_visual) -]] +minetest.log("info", "[experimental] modname="..dump(minetest.get_current_modname())) +minetest.log("info", "[experimental] modpath="..dump(minetest.get_modpath("experimental"))) +minetest.log("info", "[experimental] worldpath="..dump(minetest.get_worldpath())) -minetest.register_node("experimental:soundblock", { - tiles = {"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_node.png", - "default_tnt_side.png", "default_tnt_side.png"), - groups = {dig_immediate=3}, -}) -minetest.register_alias("sb", "experimental:soundblock") - -minetest.register_abm({ - nodenames = {"experimental:soundblock"}, - interval = 1, - chance = 1, - action = function(p0, node, _, _) - minetest.sound_play("default_grass_footstep", {pos=p0, gain=0.5}) - end, -}) - ---[[ -stepsound = -1 -function test_sound() - print("test_sound") - stepsound = minetest.sound_play("default_grass_footstep", {gain=1.0}) - minetest.after(2.0, test_sound) - --minetest.after(0.1, test_sound_stop) -end -function test_sound_stop() - print("test_sound_stop") - minetest.sound_stop(stepsound) - minetest.after(2.0, test_sound) -end -test_sound() ---]] - -function on_step(dtime) - -- print("experimental on_step") - --[[ - 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 - print(name.." at "..dump(obj:getpos())) - print(name.." dir: "..dump(obj:get_look_dir())) - print(name.." pitch: "..dump(obj:get_look_pitch())) - print(name.." yaw: "..dump(obj:get_look_yaw())) - else - print("Some object at "..dump(obj:getpos())) - end - end - --]] - --[[ - if experimental.t1 == nil then - experimental.t1 = 0 - end - experimental.t1 = experimental.t1 + dtime - if experimental.t1 >= 2 then - experimental.t1 = experimental.t1 - 2 - minetest.log("verbose", "time of day is "..minetest.get_timeofday()) - if experimental.day then - minetest.log("verbose", "forcing day->night") - experimental.day = false - minetest.set_timeofday(0.0) - else - minetest.log("verbose", "forcing night->day") - experimental.day = true - minetest.set_timeofday(0.5) - end - minetest.log("verbose", "time of day is "..minetest.get_timeofday()) - end - --]] -end -minetest.register_globalstep(on_step) - --- --- Random stuff --- - --- --- TNT (not functional) --- - -minetest.register_craft({ - output = 'experimental:tnt', - recipe = { - {'default:wood'}, - {'default:coal_lump'}, - {'default:wood'} - } -}) - -minetest.register_node("experimental:tnt", { - tiles = {"default_tnt_top.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("default_tnt_top.png", - "default_tnt_side.png", "default_tnt_side.png"), - drop = '', -- Get nothing - material = { - diggability = "not", - }, -}) - -minetest.register_on_punchnode(function(p, node) - if node.name == "experimental:tnt" then - minetest.remove_node(p) - minetest.add_entity(p, "experimental:tnt") - minetest.check_for_falling(p) - end +minetest.register_on_mods_loaded(function() + minetest.log("action", "[experimental] on_mods_loaded()") end) - -local TNT = { - -- Static definition - physical = true, -- Collides with things - -- weight = 5, - collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, - visual = "cube", - textures = {"default_tnt_top.png", "default_tnt_bottom.png", - "default_tnt_side.png", "default_tnt_side.png", - "default_tnt_side.png", "default_tnt_side.png"}, - -- Initial value for our timer - timer = 0, - -- Number of punches required to defuse - health = 1, - blinktimer = 0, - blinkstatus = true, -} - --- Called when a TNT object is created -function TNT:on_activate(staticdata) - print("TNT:on_activate()") - self.object:setvelocity({x=0, y=4, z=0}) - self.object:setacceleration({x=0, y=-10, z=0}) - self.object:settexturemod("^[brighten") - self.object:set_armor_groups({immortal=1}) -end - --- Called periodically -function TNT:on_step(dtime) - --print("TNT:on_step()") - self.timer = self.timer + dtime - self.blinktimer = self.blinktimer + dtime - if self.blinktimer > 0.5 then - self.blinktimer = self.blinktimer - 0.5 - if self.blinkstatus then - self.object:settexturemod("") - else - self.object:settexturemod("^[brighten") - end - self.blinkstatus = not self.blinkstatus - end -end - --- Called when object is punched -function TNT:on_punch(hitter) - print("TNT:on_punch()") - self.health = self.health - 1 - if self.health <= 0 then - self.object:remove() - hitter:get_inventory():add_item("main", "experimental:tnt") - --hitter:set_hp(hitter:get_hp() - 1) - end -end - --- Called when object is right-clicked -function TNT:on_rightclick(clicker) - --pos = self.object:getpos() - --pos = {x=pos.x, y=pos.y+0.1, z=pos.z} - --self.object:moveto(pos, false) -end - ---print("TNT dump: "..dump(TNT)) ---print("Registering TNT"); -minetest.register_entity("experimental:tnt", TNT) - --- Add TNT's old name also -minetest.register_alias("TNT", "experimental:tnt") - --- --- The dummyball! --- - -minetest.register_entity("experimental:dummyball", { - initial_properties = { - hp_max = 20, - physical = false, - collisionbox = {-0.4,-0.4,-0.4, 0.4,0.4,0.4}, - visual = "sprite", - visual_size = {x=1, y=1}, - textures = {"experimental_dummyball.png"}, - spritediv = {x=1, y=3}, - initial_sprite_basepos = {x=0, y=0}, - }, - - phase = 0, - phasetimer = 0, - - on_activate = function(self, staticdata) - minetest.log("action", "Dummyball activated!") - end, - - on_step = function(self, dtime) - self.phasetimer = self.phasetimer + dtime - if self.phasetimer > 2.0 then - self.phasetimer = self.phasetimer - 2.0 - self.phase = self.phase + 1 - if self.phase >= 3 then - self.phase = 0 - end - self.object:setsprite({x=0, y=self.phase}) - phasearmor = { - [0]={cracky=3}, - [1]={crumbly=3}, - [2]={fleshy=3} - } - self.object:set_armor_groups(phasearmor[self.phase]) - end - end, - - on_punch = function(self, hitter) - end, -}) - -minetest.register_on_chat_message(function(name, message) - local cmd = "/dummyball" - if message:sub(0, #cmd) == cmd then - count = tonumber(message:sub(#cmd+1)) or 1 - 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 - if count >= 2 and not minetest.get_player_privs(name)["server"] then - minetest.chat_send_player(name, "you don't have " .. - "permission to spawn multiple " .. - "dummyballs (server)") - return true -- Handled chat message - end - 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 entityname = "experimental:dummyball" - local p = player:getpos() - p.y = p.y + 1 - for i = 1,count do - minetest.add_entity(p, entityname) - end - minetest.chat_send_player(name, '"'..entityname - ..'" spawned '..tostring(count)..' time(s).'); - return true -- Handled chat message - end -end) - --- --- A test entity for testing animated and yaw-modulated sprites --- - -minetest.register_entity("experimental:testentity", { - -- Static definition - physical = true, -- Collides with things - -- weight = 5, - collisionbox = {-0.7,-1.35,-0.7, 0.7,1.0,0.7}, - --collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, - visual = "sprite", - visual_size = {x=2, y=3}, - textures = {"dungeon_master.png^[makealpha:128,0,0^[makealpha:128,128,0"}, - spritediv = {x=6, y=5}, - initial_sprite_basepos = {x=0, y=0}, - - on_activate = function(self, staticdata) - print("testentity.on_activate") - self.object:setsprite({x=0,y=0}, 1, 0, true) - --self.object:setsprite({x=0,y=0}, 4, 0.3, true) - - -- Set gravity - self.object:setacceleration({x=0, y=-10, z=0}) - -- Jump a bit upwards - self.object:setvelocity({x=0, y=10, z=0}) - end, - - on_punch = function(self, hitter) - self.object:remove() - hitter:add_to_inventory('craft testobject1 1') - end, - on_death = function(self, killer) - print("testentity.on_death") - end -}) - --- --- More random stuff --- - -minetest.register_on_respawnplayer(function(player) - print("on_respawnplayer") - -- player:setpos({x=0, y=30, z=0}) - -- return true -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.add_node(cp, {name="sand"}) -end) - --- Example setting get ---print("setting max_users = " .. dump(minetest.setting_get("max_users"))) ---print("setting asdf = " .. dump(minetest.setting_get("asdf"))) - -minetest.register_on_chat_message(function(name, message) - --[[print("on_chat_message: name="..dump(name).." message="..dump(message)) - local cmd = "/testcommand" - if message:sub(0, #cmd) == cmd then - print(cmd.." invoked") - return true - end - local cmd = "/help" - if message:sub(0, #cmd) == cmd then - print("script-overridden help command") - minetest.chat_send_all("script-overridden help command") - return true - end]] -end) - --- Grow papyrus on TNT every 10 seconds ---[[minetest.register_abm({ - nodenames = {"TNT"}, - interval = 10.0, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - print("TNT ABM action") - pos.y = pos.y + 1 - minetest.add_node(pos, {name="papyrus"}) - end, -})]] - --- Replace texts of alls signs with "foo" every 10 seconds ---[[minetest.register_abm({ - nodenames = {"sign_wall"}, - interval = 10.0, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - print("ABM: Sign text changed") - local meta = minetest.get_meta(pos) - meta:set_text("foo") - end, -})]] - ---[[local ncpos = nil -local ncq = 1 -local ncstuff = { - {2, 1, 0, 3}, {3, 0, 1, 2}, {4, -1, 0, 1}, {5, -1, 0, 1}, {6, 0, -1, 0}, - {7, 0, -1, 0}, {8, 1, 0, 3}, {9, 1, 0, 3}, {10, 1, 0, 3}, {11, 0, 1, 2}, - {12, 0, 1, 2}, {13, 0, 1, 2}, {14, -1, 0, 1}, {15, -1, 0, 1}, {16, -1, 0, 1}, - {17, -1, 0, 1}, {18, 0, -1, 0}, {19, 0, -1, 0}, {20, 0, -1, 0}, {21, 0, -1, 0}, - {22, 1, 0, 3}, {23, 1, 0, 3}, {24, 1, 0, 3}, {25, 1, 0, 3}, {10, 0, 1, 2} -} -local ncold = {} -local nctime = nil - -minetest.register_abm({ - nodenames = {"dirt_with_grass"}, - interval = 100000.0, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - if ncpos ~= nil then - return - end - - if pos.x % 16 ~= 8 or pos.z % 16 ~= 8 then - return - end - - pos.y = pos.y + 1 - n = minetest.get_node(pos) - print(dump(n)) - if n.name ~= "air" then - return - end - - pos.y = pos.y + 2 - ncpos = pos - nctime = os.clock() - minetest.add_node(ncpos, {name="nyancat"}) - end -}) - -minetest.register_abm({ - nodenames = {"nyancat"}, - interval = 1.0, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - if ncpos == nil then - return - end - if pos.x == ncpos.x and pos.y == ncpos.y and pos.z == ncpos.z then - clock = os.clock() - if clock - nctime < 0.1 then - return - end - nctime = clock - - s0 = ncstuff[ncq] - ncq = s0[1] - s1 = ncstuff[ncq] - p0 = pos - p1 = {x = p0.x + s0[2], y = p0.y, z = p0.z + s0[3]} - p2 = {x = p1.x + s1[2], y = p1.y, z = p1.z + s1[3]} - table.insert(ncold, 1, p0) - while #ncold >= 10 do - minetest.add_node(ncold[#ncold], {name="air"}) - table.remove(ncold, #ncold) - end - 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 (construct/destruct/timer)", - tiles = {"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.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.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.get_meta(pos) - if meta:get_string("mine") == "test" then - experimental.print_to_everything("correct metadata found") - else - experimental.print_to_everything("incorrect metadata found") - end - end, - - on_destruct = function(pos) - experimental.print_to_everything("experimental:tester_node_1:on_destruct("..minetest.pos_to_string(pos)..")") - end, - - after_destruct = function(pos) - experimental.print_to_everything("experimental:tester_node_1:after_destruct("..minetest.pos_to_string(pos)..")") - end, - - 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_node("experimental:tiled", { - description = "Tiled stone", - tiles = {{ - name = "experimental_tiled.png", - align_style = "world", - scale = 8, - }}, - groups = {cracky=2}, -}) - -stairs.register_stair_and_slab("tiled_n", "experimental:tiled", - {cracky=2}, - {{name="experimental_tiled.png", align_style="node", scale=8}}, - "Tiled stair (node-aligned)", - "Tiled slab (node-aligned)") - -stairs.register_stair_and_slab("tiled", "experimantal:tiled", - {cracky=2}, - {{name="experimental_tiled.png", align_style="world", scale=8}}, - "Tiled stair", - "Tiled slab") - -minetest.register_craft({ - output = 'experimental:tiled 4', - recipe = { - {'default:cobble', '', 'default:cobble'}, - {'', '', ''}, - {'default:cobble', '', 'default:cobble'}, - } -}) - -minetest.register_craft({ - output = 'stairs:stair_tiled', - recipe = {{'stairs:stair_tiled_n'}} -}) - -minetest.register_craft({ - output = 'stairs:stair_tiled_n', - recipe = {{'stairs:stair_tiled'}} -}) - -minetest.register_craft({ - output = 'stairs:slab_tiled', - recipe = {{'stairs:slab_tiled_n'}} -}) - -minetest.register_craft({ - output = 'stairs:slab_tiled_n', - recipe = {{'stairs:slab_tiled'}} -}) - -minetest.register_craftitem("experimental:tester_tool_1", { - description = "Tester Tool 1", - inventory_image = "experimental_tester_tool_1.png", - on_use = function(itemstack, user, pointed_thing) - --print(dump(pointed_thing)) - if pointed_thing.type == "node" then - local node = minetest.get_node(pointed_thing.under) - if node.name == "experimental:tester_node_1" or node.name == "default:chest" then - local p = pointed_thing.under - minetest.log("action", "Tester tool used at "..minetest.pos_to_string(p)) - if node.name == "experimental:tester_node_1" then - minetest.dig_node(p) - else - minetest.get_meta(p):mark_as_private({"infotext", "formspec"}) - minetest.chat_send_player(user:get_player_name(), "Verify that chest is unusable now.") - end - else - local p = pointed_thing.above - minetest.log("action", "Tester tool used at "..minetest.pos_to_string(p)) - minetest.place_node(p, {name="experimental:tester_node_1"}) - end - end - end, -}) - -minetest.register_craft({ - output = 'experimental:tester_tool_1', - recipe = { - {'group:crumbly'}, - {'group:crumbly'}, - } -}) - -minetest.register_craftitem("experimental:tester_tool_2", { - description = "Tester Tool 2", - inventory_image = "experimental_tester_tool_1.png^[invert:g", - on_use = function(itemstack, user, pointed_thing) - local pos = minetest.get_pointed_thing_position(pointed_thing, true) - if pos == nil then return end - pos = vector.add(pos, {x=0, y=0.5, z=0}) - local tex, anim - if math.random(0, 1) == 0 then - tex = "default_lava_source_animated.png" - anim = {type="sheet_2d", frames_w=3, frames_h=2, frame_length=0.5} - else - tex = "default_lava_flowing_animated.png" - anim = {type="vertical_frames", aspect_w=16, aspect_h=16, length=3.3} - end - - minetest.add_particle({ - pos = pos, - velocity = {x=0, y=0, z=0}, - acceleration = {x=0, y=0.04, z=0}, - expirationtime = 6, - collisiondetection = true, - texture = tex, - animation = anim, - size = 4, - glow = math.random(0, 5), - }) - end, -}) - --- Test the disable_repair=1 group -minetest.register_tool("experimental:unrepairable_tool", { - description = "Unrepairable Tool", - wield_image = "default_stone.png", - inventory_image = "default_stone.png", - tool_capabilities = { - groupcaps = { - cracky = { - times = {3, 2, 1}, - } - } - }, - groups = { disable_repair = 1 } -}) - -minetest.register_tool("experimental:repairable_tool", { - description = "Repairable Tool", - wield_image = "default_dirt.png", - inventory_image = "default_dirt.png", - tool_capabilities = { - groupcaps = { - cracky = { - times = {3, 2, 1}, - } - } - }, -}) - -minetest.register_craft({ - output = 'experimental:tester_tool_2', - recipe = { - {'group:crumbly','group:crumbly'}, - } -}) - ---[[minetest.register_on_joinplayer(function(player) - minetest.after(3, function() - 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;]".. - "list[current_player;craftpreview;7,1;1,1;]") - 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_chatcommand("test_bulk_set_node", { - params = "", - description = "Test 2: bulk set a node", - func = function(name, param) - local player = minetest.get_player_by_name(name) - if not player then - return - end - local pos_list = {} - local ppos = player:get_pos() - local i = 1 - for x=2,10 do - for y=2,10 do - for z=2,10 do - pos_list[i] = {x=ppos.x + x,y = ppos.y + y,z = ppos.z + z} - i = i + 1 - end - end - end - minetest.bulk_set_node(pos_list, {name = "default:stone"}) - minetest.chat_send_player(name, "Done."); - end, -}) - -minetest.register_chatcommand("bench_bulk_set_node", { - params = "", - description = "Test 3: bulk set a node (bench)", - func = function(name, param) - local player = minetest.get_player_by_name(name) - if not player then - return - end - local pos_list = {} - local ppos = player:get_pos() - local i = 1 - for x=2,100 do - for y=2,100 do - for z=2,100 do - pos_list[i] = {x=ppos.x + x,y = ppos.y + y,z = ppos.z + z} - i = i + 1 - end - end - end - - minetest.chat_send_player(name, "Benching bulk set node. Warming up..."); - - -- warm up with default:stone to prevent having different callbacks - -- due to different node topology - minetest.bulk_set_node(pos_list, {name = "default:stone"}) - - minetest.chat_send_player(name, "Warming up finished, now benching..."); - - local start_time = os.clock() - for i=1,#pos_list do - minetest.set_node(pos_list[i], {name = "default:stone"}) - end - local middle_time = os.clock() - minetest.bulk_set_node(pos_list, {name = "default:stone"}) - local end_time = os.clock() - minetest.chat_send_player(name, - string.format("Bench results: set_node loop[%.2fms], bulk_set_node[%.2fms]", - (middle_time - start_time) * 1000, - (end_time - middle_time) * 1000 - ) - ); - end, -}) - -local formspec_test_active = false - -minetest.register_on_player_receive_fields(function(player, formname, fields) - if formspec_test_active then - experimental.print_to_everything("Inventory fields 1: player="..player:get_player_name()..", fields="..dump(fields)) - end -end) -minetest.register_on_player_receive_fields(function(player, formname, fields) - if formspec_test_active then - experimental.print_to_everything("Inventory fields 2: player="..player:get_player_name()..", fields="..dump(fields)) - return true -- Disable the first callback - end -end) -minetest.register_on_player_receive_fields(function(player, formname, fields) - if formspec_test_active then - experimental.print_to_everything("Inventory fields 3: player="..player:get_player_name()..", fields="..dump(fields)) - end -end) - -minetest.register_chatcommand("test_formspec", { - param = "", - description = "Test 4: Toggle formspec test", - func = function(name, param) - formspec_test_active = not formspec_test_active - if formspec_test_active then - minetest.chat_send_player(name, "Formspec test enabled!") - else - minetest.chat_send_player(name, "Formspec test disabled!") - end - end -}) - -minetest.log("info", "experimental modname="..dump(minetest.get_current_modname())) -minetest.log("info", "experimental modpath="..dump(minetest.get_modpath("experimental"))) -minetest.log("info", "experimental worldpath="..dump(minetest.get_worldpath())) - - -core.register_on_mods_loaded(function() - core.log("action", "Yeah experimental loaded mods.") -end) - --- END diff --git a/games/minimal/mods/experimental/items.lua b/games/minimal/mods/experimental/items.lua new file mode 100644 index 000000000..51b063ba2 --- /dev/null +++ b/games/minimal/mods/experimental/items.lua @@ -0,0 +1,103 @@ +minetest.register_node("experimental:callback_node", { + description = "Callback Test Node (construct/destruct/timer)", + tiles = {"experimental_callback_node.png"}, + groups = {dig_immediate=3}, + -- This was known to cause a bug in minetest.item_place_node() when used + -- via minetest.place_node(), causing a placer with no position + paramtype2 = "facedir", + drop = "", + + on_construct = function(pos) + experimental.print_to_everything("experimental:callback_node:on_construct("..minetest.pos_to_string(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:callback_node:after_place_node("..minetest.pos_to_string(pos)..")") + local meta = minetest.get_meta(pos) + if meta:get_string("mine") == "test" then + experimental.print_to_everything("correct metadata found") + else + experimental.print_to_everything("incorrect metadata found") + end + end, + + on_destruct = function(pos) + experimental.print_to_everything("experimental:callback_node:on_destruct("..minetest.pos_to_string(pos)..")") + end, + + after_destruct = function(pos) + experimental.print_to_everything("experimental:callback_node:after_destruct("..minetest.pos_to_string(pos)..")") + end, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + experimental.print_to_everything("experimental:callback_node: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_tool("experimental:privatizer", { + description = "Node Meta Privatizer", + inventory_image = "experimental_tester_tool_1.png", + groups = { testtool = 1, disable_repair = 1 }, + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type == "node" then + local node = minetest.get_node(pointed_thing.under) + if node.name == "chest:chest" then + local p = pointed_thing.under + minetest.log("action", "Privatizer used at "..minetest.pos_to_string(p)) + minetest.get_meta(p):mark_as_private({"infotext", "formspec"}) + if user and user:is_player() then + minetest.chat_send_player(user:get_player_name(), "Chest metadata (infotext, formspec) set private!") + end + return + end + end + if user and user:is_player() then + minetest.chat_send_player(user:get_player_name(), "Privatizer can only be used on chest!") + end + end, +}) + +minetest.register_tool("experimental:particle_spawner", { + description = "Particle Spawner", + inventory_image = "experimental_tester_tool_1.png^[invert:g", + groups = { testtool = 1, disable_repair = 1 }, + on_use = function(itemstack, user, pointed_thing) + local pos = minetest.get_pointed_thing_position(pointed_thing, true) + if pos == nil then + if user then + pos = user:get_pos() + end + end + pos = vector.add(pos, {x=0, y=0.5, z=0}) + local tex, anim + if math.random(0, 1) == 0 then + tex = "experimental_particle_sheet.png" + anim = {type="sheet_2d", frames_w=3, frames_h=2, frame_length=0.5} + else + tex = "experimental_particle_vertical.png" + anim = {type="vertical_frames", aspect_w=16, aspect_h=16, length=3.3} + end + + minetest.add_particle({ + pos = pos, + velocity = {x=0, y=0, z=0}, + acceleration = {x=0, y=0.04, z=0}, + expirationtime = 6, + collisiondetection = true, + texture = tex, + animation = anim, + size = 4, + glow = math.random(0, 5), + }) + end, +}) + diff --git a/games/minimal/mods/experimental/mod.conf b/games/minimal/mods/experimental/mod.conf index 018e761b3..cf0f9cb42 100644 --- a/games/minimal/mods/experimental/mod.conf +++ b/games/minimal/mods/experimental/mod.conf @@ -1,3 +1,2 @@ name = experimental -description = Minimal mod to test features -depends = default, stairs +description = Chaotic mod containing unstructured tests for testing out engine features. The features in this mod should be moved to other mods. diff --git a/games/minimal/mods/experimental/modchannels.lua b/games/minimal/mods/experimental/modchannels.lua deleted file mode 100644 index 8fce6cfc4..000000000 --- a/games/minimal/mods/experimental/modchannels.lua +++ /dev/null @@ -1,16 +0,0 @@ --- --- Mod channels experimental handlers --- -local mod_channel = core.mod_channel_join("experimental_preview") - -core.register_on_modchannel_message(function(channel, sender, message) - print("[minimal][modchannels] Server received message `" .. message - .. "` on channel `" .. channel .. "` from sender `" .. sender .. "`") - - if mod_channel:is_writeable() then - mod_channel:send_all("experimental answers to preview") - mod_channel:leave() - end -end) - -print("[minimal][modchannels] Code loaded!") diff --git a/games/minimal/mods/experimental/textures/experimental_callback_node.png b/games/minimal/mods/experimental/textures/experimental_callback_node.png new file mode 100644 index 0000000000000000000000000000000000000000..e9d87434c04e6c7c9791b0ef469c41615a66b0ce GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|L7py-Ar*{kC$cg!C=qVQd1x)a`c3r4)d*rJPS<<4&7U~Qf}LExhL{fqAdxIgi& nQV!K9U-7;3{}vC`84-*cuP;7kyuM&E&~ye*S3j3^P61b1|3VF=2%x#VB|(0{KpFwwdQ^A-d3QZs978H@m3F=LJE9=MdNuUMv|DRigARPJ z_doyF!t?J%Pmgyz&)>GifABvp@m%73_x$A|zc@>ZBM!W*5ZM0hapQlv2Rc0E-Ob#4 zuL`y>U*MhN@Mj+9kDn};MVx-{IOb)3U<o>Tw; diff --git a/games/minimal/mods/experimental/textures/experimental_particle_sheet.png b/games/minimal/mods/experimental/textures/experimental_particle_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..6d70394e48d6a2451598c9cd9cdb1947d0559f0c GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9#0(@gcM10cDb4_&5Z8bI{{8>|{~{aP0fk0G zpkR}yi(^OyWAAxJHfBSC)`unybCx_4v5jIiSRTRn(eGyci8U)OZPAhd>$41eISp(qEPCD+FS%uIwXWmMpZL3}N-F($_eJCV-!!dzR;RPR zYmj$VKk`Y=V1d}@#!C&CO%&okw5sR&A6Xpk)bRPaoxFnAoTCNvCYb_V!{F)a=d#Wz Gp$PzOI!(R+ literal 0 HcmV?d00001 diff --git a/games/minimal/mods/experimental/textures/experimental_particle_vertical.png b/games/minimal/mods/experimental/textures/experimental_particle_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..0320b7545a55e89c7438a91c6fbf6a1b6590cc0c GIT binary patch literal 308 zcmV-40n7f0P)J+U(t5a@$ z(mz?V(v#q+82$ZHlD`kJh;e6F(!mBC#7p@03sKK`q=DTM^GS5zGi4M^vCbn>W0000UV24n5pL=;joQ6Va6f@h3l*{^cGfnEwN`{ Y&}CaLy4v^aU!dU(p00i_>zopr05vF1qPTwk} qg&o!xyG3+#qq;+(2^}I6PhbT-G@yGywn-bT6j> diff --git a/games/minimal/mods/experimental/textures/experimental_tiled.png b/games/minimal/mods/experimental/textures/experimental_tiled.png deleted file mode 100644 index 67397b902aa2ba191ae9307db56ac123cf599440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1041 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrV7}q$;uunK>+RgYvd0QMuBm+1 zUe`pfJz1j}Ir+JA>8l@4Qe-YD818znK6joSGplF9{X%uYNS4-6F~OP7cb=-Tnj2@g z|LWhm}gLmtQ&$J~VFK7IBby$LHs-xVOA1%36Q<)%6Ka{rr>vWHW@w zGDoxX^Cz5ResjBx{l&}c97<1lrkxE_uxaQveDY54g<@6HCx-Vmci1`B{gIzv@IgM{ z(Sf8Wl*^{$kWI_XC6S+iwpTS>zV%d~ulh#!u5G56k9* z%wO{4z?fO@%AFoRp9~jQM0u4I1UeM)~B#+#J^4}jA_!hCt9oWF45dP>d z!@<9MbZvIb-`>jp9q8HbpX-2bzsE0dho4^{;sXPRoWdq~xr8JCw0}Qjbi4KTATx)J zL-ECS_6?u2Stb^-HM76CYiHBY{GyTFK!@?f)CY`BK!p(evzjr5;cm6ckK>;}CX*kO z|H=yr>{S(ZL@?+u9APRbxpeUUb%^s`6v`*muKTn0+VcxG{oB7@KX<>Fv1YNiX3^Z| zyRJQ8^!YnIXkPsK;u%@`23PL#`9}6RCjR;Tz*qO#Dp4N(gkLTN@<%=}>@}WH$ab6E z(8l5Yx8CC$&NJ*RW#uiMzT~S_^Y{OE?-a^6{AS>vT2xtAJa7F)Kaaz|`_IJRT=M_t zUBeA&k8D#}@rDGW*m5o{-1>hHV||M`&7g6HT} ZdFe;Cv61Z?{{yo+gQu&X%Q~loCIBTB^G*N& diff --git a/games/minimal/mods/give_initial_stuff/init.lua b/games/minimal/mods/give_initial_stuff/init.lua index 29b835c7d..491a531e4 100644 --- a/games/minimal/mods/give_initial_stuff/init.lua +++ b/games/minimal/mods/give_initial_stuff/init.lua @@ -1,16 +1,37 @@ +local give_if_not_gotten_already = function(inv, list, item) + if not inv:contains_item(list, item) then + inv:add_item(list, item) + end +end + +local give_initial_stuff = function(player) + local inv = player:get_inventory() + give_if_not_gotten_already(inv, "main", "basetools:pick_mese") + give_if_not_gotten_already(inv, "main", "basetools:axe_steel") + give_if_not_gotten_already(inv, "main", "basetools:shovel_steel") + give_if_not_gotten_already(inv, "main", "bucket:bucket") + give_if_not_gotten_already(inv, "main", "testnodes:light14") + give_if_not_gotten_already(inv, "main", "chest_of_everything:chest") + minetest.log("action", "[give_initial_stuff] Giving initial stuff to "..player:get_player_name()) +end + minetest.register_on_newplayer(function(player) - print("[minimal] giving initial stuff to player") - player:get_inventory():add_item('main', 'default:pick_stone') - player:get_inventory():add_item('main', 'default:torch 99') - player:get_inventory():add_item('main', 'default:cobble 99') - player:get_inventory():add_item('main', 'default:wood 99') - player:get_inventory():add_item('main', 'default:axe_steel') - player:get_inventory():add_item('main', 'default:shovel_steel') - player:get_inventory():add_item('main', 'default:pick_wood') - player:get_inventory():add_item('main', 'default:pick_steel') - player:get_inventory():add_item('main', 'default:pick_mese') - player:get_inventory():add_item('main', 'default:mese 99') - player:get_inventory():add_item('main', 'default:water_source 99') - player:get_inventory():add_item('main', 'experimental:tester_tool_1') + if minetest.settings:get_bool("give_initial_stuff", true) then + give_initial_stuff(player) + end end) +minetest.register_chatcommand("stuff", { + params = "", + privs = { give = true }, + description = "Give yourself initial items", + func = function(name, param) + local player = minetest.get_player_by_name(name) + if not player or not player:is_player() then + return false, "No player." + end + give_initial_stuff(player) + return true + end, +}) + diff --git a/games/minimal/mods/give_initial_stuff/mod.conf b/games/minimal/mods/give_initial_stuff/mod.conf index bd293f418..1ba49f52a 100644 --- a/games/minimal/mods/give_initial_stuff/mod.conf +++ b/games/minimal/mods/give_initial_stuff/mod.conf @@ -1,3 +1,3 @@ name = give_initial_stuff description = Gives items to players on join -depends = default +depends = basetools, bucket, chest_of_everything, testnodes diff --git a/games/minimal/mods/initial_message/init.lua b/games/minimal/mods/initial_message/init.lua new file mode 100644 index 000000000..f92f4d3cf --- /dev/null +++ b/games/minimal/mods/initial_message/init.lua @@ -0,0 +1,9 @@ +minetest.register_on_joinplayer(function(player) + local cb = function(player) + if not player or not player:is_player() then + return + end + minetest.chat_send_player(player:get_player_name(), "This is the \"Minimal development Test\" [minimal], meant only for testing and development. Use Minetest Game for the real thing.") + end + minetest.after(2.0, cb, player) +end) diff --git a/games/minimal/mods/initial_message/mod.conf b/games/minimal/mods/initial_message/mod.conf new file mode 100644 index 000000000..32aa2ac4e --- /dev/null +++ b/games/minimal/mods/initial_message/mod.conf @@ -0,0 +1,2 @@ +name = initial_message +description = Show message to joining players explaining what this testing game is about diff --git a/games/minimal/mods/legacy/init.lua b/games/minimal/mods/legacy/init.lua deleted file mode 100644 index 98ad69be0..000000000 --- a/games/minimal/mods/legacy/init.lua +++ /dev/null @@ -1,128 +0,0 @@ --- legacy (Minetest 0.4 mod) --- Provides as much backwards-compatibility as feasible - --- --- Aliases to support loading 0.3 and old 0.4 worlds and inventories --- - -minetest.register_alias("stone", "default:stone") -minetest.register_alias("stone_with_coal", "default:stone_with_coal") -minetest.register_alias("stone_with_iron", "default:stone_with_iron") -minetest.register_alias("dirt_with_grass", "default:dirt_with_grass") -minetest.register_alias("dirt_with_grass_footsteps", "default:dirt_with_grass_footsteps") -minetest.register_alias("dirt", "default:dirt") -minetest.register_alias("sand", "default:sand") -minetest.register_alias("gravel", "default:gravel") -minetest.register_alias("sandstone", "default:sandstone") -minetest.register_alias("clay", "default:clay") -minetest.register_alias("brick", "default:brick") -minetest.register_alias("tree", "default:tree") -minetest.register_alias("jungletree", "default:jungletree") -minetest.register_alias("junglegrass", "default:junglegrass") -minetest.register_alias("leaves", "default:leaves") -minetest.register_alias("cactus", "default:cactus") -minetest.register_alias("papyrus", "default:papyrus") -minetest.register_alias("bookshelf", "default:bookshelf") -minetest.register_alias("glass", "default:glass") -minetest.register_alias("wooden_fence", "default:fence_wood") -minetest.register_alias("rail", "default:rail") -minetest.register_alias("ladder", "default:ladder") -minetest.register_alias("wood", "default:wood") -minetest.register_alias("mese", "default:mese") -minetest.register_alias("cloud", "default:cloud") -minetest.register_alias("water_flowing", "default:water_flowing") -minetest.register_alias("water_source", "default:water_source") -minetest.register_alias("lava_flowing", "default:lava_flowing") -minetest.register_alias("lava_source", "default:lava_source") -minetest.register_alias("torch", "default:torch") -minetest.register_alias("sign_wall", "default:sign_wall") -minetest.register_alias("furnace", "default:furnace") -minetest.register_alias("chest", "default:chest") -minetest.register_alias("locked_chest", "default:chest_locked") -minetest.register_alias("cobble", "default:cobble") -minetest.register_alias("mossycobble", "default:mossycobble") -minetest.register_alias("steelblock", "default:steelblock") -minetest.register_alias("nyancat", "default:nyancat") -minetest.register_alias("nyancat_rainbow", "default:nyancat_rainbow") -minetest.register_alias("sapling", "default:sapling") -minetest.register_alias("apple", "default:apple") - -minetest.register_alias("WPick", "default:pick_wood") -minetest.register_alias("STPick", "default:pick_stone") -minetest.register_alias("SteelPick", "default:pick_steel") -minetest.register_alias("MesePick", "default:pick_mese") -minetest.register_alias("WShovel", "default:shovel_wood") -minetest.register_alias("STShovel", "default:shovel_stone") -minetest.register_alias("SteelShovel", "default:shovel_steel") -minetest.register_alias("WAxe", "default:axe_wood") -minetest.register_alias("STAxe", "default:axe_stone") -minetest.register_alias("SteelAxe", "default:axe_steel") -minetest.register_alias("WSword", "default:sword_wood") -minetest.register_alias("STSword", "default:sword_stone") -minetest.register_alias("SteelSword", "default:sword_steel") - -minetest.register_alias("Stick", "default:stick") -minetest.register_alias("paper", "default:paper") -minetest.register_alias("book", "default:book") -minetest.register_alias("lump_of_coal", "default:coal_lump") -minetest.register_alias("lump_of_iron", "default:iron_lump") -minetest.register_alias("lump_of_clay", "default:clay_lump") -minetest.register_alias("steel_ingot", "default:steel_ingot") -minetest.register_alias("clay_brick", "default:clay_brick") -minetest.register_alias("scorched_stuff", "default:scorched_stuff") - --- --- Old items --- - -minetest.register_craftitem(":rat", { - description = "Rat", - inventory_image = "rat.png", - on_drop = function(item, dropper, 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 - item:take_item() - return item - end - end -}) - -minetest.register_craftitem(":cooked_rat", { - description = "Cooked rat", - inventory_image = "cooked_rat.png", - on_use = minetest.item_eat(6), -}) - -minetest.register_craftitem(":firefly", { - description = "Firefly", - inventory_image = "firefly.png", - on_drop = function(item, dropper, 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 - item:take_item() - return item - end - end -}) - -minetest.register_craft({ - type = "cooking", - output = "cooked_rat", - recipe = "rat", -}) - -minetest.register_craft({ - type = "cooking", - output = "scorched_stuff", - recipe = "cooked_rat", -}) - --- END diff --git a/games/minimal/mods/legacy/mod.conf b/games/minimal/mods/legacy/mod.conf deleted file mode 100644 index 12102e1ee..000000000 --- a/games/minimal/mods/legacy/mod.conf +++ /dev/null @@ -1,3 +0,0 @@ -name = legacy -description = Aliases allowing support for 0.3.x worlds -depends = default diff --git a/games/minimal/mods/legacy/textures/apple_iron.png b/games/minimal/mods/legacy/textures/apple_iron.png deleted file mode 100644 index db59458565a7ec35db083e15c671ed756e06710f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`cAhSdAr-gYPBi3VP~c&Hoc?Fo z{L^#vLwBY2H7m&7nb90nGcQeVisd5?J`HoJ$vKNX`0wf{tlTTW;df&H2F7ypu!sLX StcU}e#Ng@b=d#Wzp$P!ZJtran diff --git a/games/minimal/mods/legacy/textures/cooked_rat.png b/games/minimal/mods/legacy/textures/cooked_rat.png deleted file mode 100644 index 776dc4ee0111507fc57b6d2206e281ec81d2a1dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJXMj(LE0Fe8V`y+-$j_()2{M)h z`2{mLJiCzwOEt~$Kb%hA2z6cw!v2t+;*G>AYH z+<=xK7HSbeR78aExm3UfaRUWG+$mf&RX{e$O*?aE?%aQO<~`?mXU@z!?>zH7&zw}z ziX}z{)&>AzGAAn zGK=h(u@BC2WG^eswF6@ln~|=xp5V}Fth(V3MGcoA#*VmB`eGK5%17MUC=|<%nL)|Y zw@NGnscNIsXbLj$Pd*RO0**g#ejS;)t|$}es^xcvj`87m?hLZaqw>!*y+?~tkL|;< zGVk-f-hA@#F(autyw_(?7u+#&Ir(6u?~B{73%+!Mz}1?pl$_L4+5U*aei{MaFG_b} zuJ?g;Pcz!w1Btvk0&lom#OCt2%deUdxOC4;HrOAuU#>uYgB0bo4$sk*whWtHHB<#;$OJ=Hu@HGE{+cCwLhu z{b3vjPF2QP5gG4D&vB+rXdc{|#{`VWErm#6n<%5vHM+!e0gvmj`3zE?GBTk`AQCrA zCY{#gr^rwe^C^RSpdIh-|Fj*K*4-AtOSI1)njqPFrv={zWiQ7+2?!awb03QwbGK`z zH`_Uu!cL2FcGOeM(3Gk*z5%bN zyBOYnMURX`^cvSirsPa=8L-b`Z)+^aJQLncPeuy8J6K+Btl!v@?a~{jqKBJd4opYp zh75v5?B~+$@$%JfYf-tlxW8$EHRv&grn5Jss>m4TbnaGU58UYtjMJhYFcm`*P9QMP zAQAY`9RExK?}S7H3fp%TI{>D*<2tl)Q5N~(V>(3$Qr%D1PlF2jqh`9nBP3Ow7oRT& zTGYUPISe%B$&uXT0{`o5tb9^p+YS%RJ$r8z^m+HqA>Tefwes5KVq;V?+u2gI z=ySq&C{AdHoRJ|Kbh}o&KY8DEJ@J1$LH5TM%*L9xy;?Tk;TkQkU-(~+7>4Ltr7wBQ zBGf?B!b;gL0!CMvm7C57`X~|uJ~>@ht85lD&ztK;M%9XPiSwZi3}s=xOU@tG@UqM* z5ZTA?H9LDL0(IA8ZKt-jobPT$7>- zMzh_0#wjN$yofE}{G)yuQeIk2THpeVXdhVsEa{Xv2IaW&a24qk4<}#zTtC&TiGe&| zyJ78keRW_PnvULoC1~YhhYLqIY;o#OW&*pe zFKUcC?29{IvB9L@I8scEBJYY_HI-j1n_q87XAoD2OM^5hNBd%eb+Vi^R>duIdXq2X z`v#EoX%8)1hNj+KSpBQt11$0*Rbzj1Y@h}dQ&Ondal`!ER9%BJ+ zw_kh(3-*GxMdlRFm6|Kc&uP;TIO_B->8Q;o&syaqur;tWW(GkmL20j(c!P_k3Vl8f8u0acT4w?`Eyjbu43f{q2g}s zDslIpk9+fj#8Pr1P{l1)7~3w2WiJnt7kH*|_~8SG`coQy?{rr7?e0&ppy*v$y{xA_ z!V$g0ono=iUMA4l7Cx~Fa-Mz8Z8j0O+Gi!at_v0WSmu|5Cy)Wxfx9q3tf=p0 zom(qbyy^ZIei*$T^^x=bj@%?hc@mpTFg;_BnL%zpK?rFU!L#3R2E;Q7|vQgKe zVc}r7X$$-X*BSUej-;1Wi-^=@0T^eHlf1qmZS;PVu(%Nnu%Y>|nw^W0jg#_19P=Vs zZ5VD#PLWxw7L|X`)%Qf~_F7hqS}ihE+O;NvBuYbf?PE9_GfAfc#nLCttZm!)`)#rhC8a&?9rh96u*>w@hWix z?AajaIrC|CXVs#)*tL%(u7YACO;9hZVBueJy{w3uI<<0fnd_roR{sP0fAUV(4GU}4 zqB7UMHFDn4(N5jsSslZ|_|0-&huUAPFez~jLlq%n$E#CYtR}A}PAo3(uX{CRux423 zN9NsD27)hYgij+qtPZU=+5}y~0jLgTnmKc`tX{NO-SVtEsaCoia3>q1Kh6qgKy|Rf zQn~Izl0LuX!?Jn0xvfv=2d&&*Ng={O5_S9k2Qj;5-Bh!_~LY>hiyc!7L#bkv5tTo^ZO z+BK4!#yXy~WiF%2wzKtPSy|cP@S~Ut%W+Q4TTR}!BR4MDC>tW%2YRPSg6}1oi4(@M z=g;ICRAs!Xak#pc@XZg-DJ!b?DWC)`L=*Y${>hm#C0 zR!&!bD)m&I;^69=_a~sYx&gx_Hw2i)!3K=~?52(P*G)8I%=@F~i(l4@#LR7sCx74` zt%)0#XMJq1N>bnQr=kZ#gva`Wz*(h#$EJDtPMk6(-%MQl{@_j-lvW7PzTR<%oT)zy zdP*OUC*H<7R2ge<&QasL&ZC| z+&wbt%-y(jY))#&&O>y5r!ZHH-Hg3YVoa+IXL?yfTbyXtZ;}^eYc`iK zyWi(UKt*=?{q+Y!fE(r(dE}k1L(2PMVYQ<{`xPu{SU45!kn`f$f6H(OQ*(A$IN*JA zg`BtGyiQs!qv`!A+0>iWEmjY@`&0hOu-{s(dj8Y?9c=$^MULX7Vph-dYLS!fCl0>f LuJAr9lqCHdyOPwF diff --git a/games/minimal/mods/legacy/textures/fireball.png b/games/minimal/mods/legacy/textures/fireball.png deleted file mode 100644 index 124469ce4325ff525a55db2c2de41da83f0ec1a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmV+y0qFjTP)e%^ zfB?Y%0RNl-|KtGw^NGA(n|c5M0KiE^K~#9!eUd>Az#s?&U2*>Z!qVB6%zG+V zZFG53I9YJ@uLCiHpCq0zF06WOdhi#M%tMa-T;@9!nPmev#5#jq=IQF^vd$@?2>?yj BLr?$! diff --git a/games/minimal/mods/legacy/textures/rat.png b/games/minimal/mods/legacy/textures/rat.png deleted file mode 100644 index 04cf9b86589557248bac317a9ec0c3beb613e77a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!3-piujpS2r1%4TLR^8giV6sMdNTa~?>RqI zG#eJPxMY|NcLl#J0;kWI@t5<^HQv8HA-j44$rjF6*2UngA*1D1!h1 diff --git a/games/minimal/mods/mapgen/init.lua b/games/minimal/mods/mapgen/init.lua new file mode 100644 index 000000000..13a186a50 --- /dev/null +++ b/games/minimal/mods/mapgen/init.lua @@ -0,0 +1,81 @@ +-- +-- Aliases for map generator outputs +-- + +-- ESSENTIAL node aliases +-- Basic nodes +minetest.register_alias("mapgen_stone", "basenodes:stone") +minetest.register_alias("mapgen_water_source", "basenodes:water_source") +minetest.register_alias("mapgen_river_water_source", "basenodes:river_water_source") + +-- Additional essential aliases for v6 +minetest.register_alias("mapgen_lava_source", "basenodes:lava_source") +minetest.register_alias("mapgen_dirt", "basenodes:dirt") +minetest.register_alias("mapgen_dirt_with_grass", "basenodes:dirt_with_grass") +minetest.register_alias("mapgen_sand", "basenodes:sand") +minetest.register_alias("mapgen_tree", "basenodes:tree") +minetest.register_alias("mapgen_leaves", "basenodes:leaves") +minetest.register_alias("mapgen_apple", "basenodes:apple") + +-- Essential alias for dungeons +minetest.register_alias("mapgen_cobble", "basenodes:cobble") + +-- Optional aliases for v6 (they all have fallback values in the engine) +if minetest.settings:get_bool("devtest_v6_mapgen_aliases", false) then + minetest.register_alias("mapgen_gravel", "basenodes:gravel") + minetest.register_alias("mapgen_desert_stone", "basenodes:desert_stone") + minetest.register_alias("mapgen_desert_sand", "basenodes:desert_sand") + minetest.register_alias("mapgen_dirt_with_snow", "basenodes:dirt_with_snow") + minetest.register_alias("mapgen_snowblock", "basenodes:snowblock") + minetest.register_alias("mapgen_snow", "basenodes:snow") + minetest.register_alias("mapgen_ice", "basenodes:ice") + minetest.register_alias("mapgen_junglegrass", "basenodes:junglegrass") + minetest.register_alias("mapgen_jungletree", "basenodes:jungletree") + minetest.register_alias("mapgen_jungleleaves", "basenodes:jungleleaves") + minetest.register_alias("mapgen_pine_tree", "basenodes:pine_tree") + minetest.register_alias("mapgen_pine_needles", "basenodes:pine_needles") +end +-- Optional alias for mossycobble (should fall back to cobble) +if minetest.settings:get_bool("devtest_dungeon_mossycobble", false) then + minetest.register_alias("mapgen_mossycobble", "basenodes:mossycobble") +end +-- Optional aliases for dungeon stairs (should fall back to full nodes) +if minetest.settings:get_bool("devtest_dungeon_stairs", false) then + minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble") + if minetest.settings:get_bool("devtest_v6_mapgen_aliases", false) then + minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone") + end +end + +-- +-- Register biomes for biome API +-- + +minetest.clear_registered_biomes() +minetest.clear_registered_decorations() + +if minetest.settings:get_bool("devtest_register_biomes", true) then + minetest.register_biome({ + name = "mapgen:grassland", + node_top = "basenodes:dirt_with_grass", + depth_top = 1, + node_filler = "basenodes:dirt", + depth_filler = 1, + y_min = 5, + y_max = 31000, + heat_point = 50, + humidity_point = 50, + }) + + minetest.register_biome({ + name = "mapgen:grassland_ocean", + node_top = "basenodes:sand", + depth_top = 1, + node_filler = "basenodes:sand", + depth_filler = 2, + y_min = -31000, + y_max = 4, + heat_point = 50, + humidity_point = 50, + }) +end diff --git a/games/minimal/mods/mapgen/mod.conf b/games/minimal/mods/mapgen/mod.conf new file mode 100644 index 000000000..15750ccbe --- /dev/null +++ b/games/minimal/mods/mapgen/mod.conf @@ -0,0 +1,3 @@ +name = mapgen +description = Minimal map generator +depends = basenodes diff --git a/games/minimal/mods/modchannels/init.lua b/games/minimal/mods/modchannels/init.lua new file mode 100644 index 000000000..ee925f09b --- /dev/null +++ b/games/minimal/mods/modchannels/init.lua @@ -0,0 +1,14 @@ +-- +-- Mod channels experimental handlers +-- +local mod_channel = minetest.mod_channel_join("experimental_preview") + +minetest.register_on_modchannel_message(function(channel, sender, message) + minetest.log("action", "[modchannels] Server received message `" .. message + .. "` on channel `" .. channel .. "` from sender `" .. sender .. "`") + + if mod_channel:is_writeable() then + mod_channel:send_all("experimental answers to preview") + mod_channel:leave() + end +end) diff --git a/games/minimal/mods/modchannels/mod.conf b/games/minimal/mods/modchannels/mod.conf new file mode 100644 index 000000000..7c13aadfb --- /dev/null +++ b/games/minimal/mods/modchannels/mod.conf @@ -0,0 +1,2 @@ +name = modchannels +description = Add experimental mod channel handlers diff --git a/games/minimal/mods/soundstuff/init.lua b/games/minimal/mods/soundstuff/init.lua new file mode 100644 index 000000000..22012ba14 --- /dev/null +++ b/games/minimal/mods/soundstuff/init.lua @@ -0,0 +1,170 @@ +local simple_nodes = { + footstep = { "Footstep Sound Node", "soundstuff_node_footstep.png" }, + dig = { "Dig Sound Node", "soundstuff_node_dig.png" }, + dug = { "Dug Sound Node", "soundstuff_node_dug.png" }, + place = { "Place Sound Node", "soundstuff_node_place.png" }, + place_failed = { "Place Failed Sound Node", "soundstuff_node_place_failed.png" }, +} + +for k,v in pairs(simple_nodes) do + minetest.register_node("soundstuff:"..k, { + description = v[1], + tiles = {"soundstuff_node_sound.png","soundstuff_node_sound.png",v[2]}, + groups = {dig_immediate=2}, + sounds = { + [k] = { name = "soundstuff_mono", gain = 1.0 }, + } + }) +end + +minetest.register_node("soundstuff:place_failed_attached", { + description = "Attached Place Failed Sound Node", + tiles = {"soundstuff_node_sound.png", "soundstuff_node_sound.png", "soundstuff_node_place_failed.png"}, + groups = {dig_immediate=2, attached_node=1}, + drawtype = "nodebox", + paramtype = "light", + node_box = { type = "fixed", fixed = { + { -7/16, -7/16, -7/16, 7/16, 7/16, 7/16 }, + { -0.5, -0.5, -0.5, 0.5, -7/16, 0.5 }, + }}, + sounds = { + place_failed = { name = "soundstuff_mono", gain = 1.0 }, + }, +}) + +minetest.register_node("soundstuff:fall", { + description = "Fall Sound Node", + tiles = {"soundstuff_node_sound.png", "soundstuff_node_sound.png", "soundstuff_node_fall.png"}, + groups = {dig_immediate=2, falling_node=1}, + sounds = { + fall = { name = "soundstuff_mono", gain = 1.0 }, + } +}) + +minetest.register_node("soundstuff:fall_attached", { + description = "Attached Fall Sound Node", + tiles = {"soundstuff_node_sound.png", "soundstuff_node_sound.png", "soundstuff_node_fall.png"}, + groups = {dig_immediate=2, attached_node=1}, + drawtype = "nodebox", + paramtype = "light", + node_box = { type = "fixed", fixed = { + { -7/16, -7/16, -7/16, 7/16, 7/16, 7/16 }, + { -0.5, -0.5, -0.5, 0.5, -7/16, 0.5 }, + }}, + sounds = { + fall = { name = "soundstuff_mono", gain = 1.0 }, + } +}) + +minetest.register_node("soundstuff:footstep_liquid", { + description = "Liquid Footstep Sound Node", + drawtype = "liquid", + tiles = { + "soundstuff_node_sound.png^[colorize:#0000FF:127", + }, + special_tiles = { + {name = "soundstuff_node_sound.png^[colorize:#0000FF:127", backface_culling = false}, + {name = "soundstuff_node_sound.png^[colorize:#0000FF:127", backface_culling = true}, + }, + liquids_pointable = true, + liquidtype = "source", + liquid_alternative_flowing = "soundstuff:footstep_liquid", + liquid_alternative_source = "soundstuff:footstep_liquid", + liquid_renewable = false, + liquid_range = 0, + liquid_viscosity = 0, + alpha = 190, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + post_effect_color = {a = 64, r = 0, g = 0, b = 200}, + sounds = { + footstep = { name = "soundstuff_mono", gain = 1.0 }, + } +}) + +minetest.register_node("soundstuff:footstep_climbable", { + description = "Climbable Footstep Sound Node", + drawtype = "allfaces", + tiles = { + "soundstuff_node_climbable.png", + }, + alpha = 120, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + climbable = true, + is_ground_content = false, + groups = { dig_immediate = 2 }, + sounds = { + footstep = { name = "soundstuff_mono", gain = 1.0 }, + } +}) + + + +minetest.register_craftitem("soundstuff:eat", { + description = "Eat Sound Item", + inventory_image = "soundstuff_eat.png", + on_use = minetest.item_eat(0), + sound = { + eat = { name = "soundstuff_mono", gain = 1.0 }, + } +}) + +minetest.register_tool("soundstuff:breaks", { + description = "Break Sound Tool", + inventory_image = "soundstuff_node_dug.png", + sound = { + breaks = { name = "soundstuff_mono", gain = 1.0 }, + }, + tool_capabilities = { + max_drop_level=0, + groupcaps={ + cracky={times={[2]=2.00, [3]=1.20}, uses=1, maxlevel=0}, + choppy={times={[2]=2.00, [3]=1.20}, uses=1, maxlevel=0}, + snappy={times={[2]=2.00, [3]=1.20}, uses=1, maxlevel=0}, + crumbly={times={[2]=2.00, [3]=1.20}, uses=1, maxlevel=0}, + }, + }, +}) + +-- Plays sound repeatedly +minetest.register_node("soundstuff:positional", { + description = "Positional Sound Node", + on_construct = function(pos) + local timer = minetest.get_node_timer(pos) + timer:start(0) + end, + on_timer = function(pos, elapsed) + local node = minetest.get_node(pos) + local dist = node.param2 + if dist == 0 then + dist = nil + end + minetest.sound_play("soundstuff_mono", { pos = pos, max_hear_distance = dist }) + local timer = minetest.get_node_timer(pos) + timer:start(0.7) + end, + on_rightclick = function(pos, node, clicker) + node.param2 = (node.param2 + 1) % 64 + minetest.set_node(pos, node) + if clicker and clicker:is_player() then + local dist = node.param2 + local diststr + if dist == 0 then + diststr = "" + else + diststr = tostring(dist) + end + minetest.chat_send_player(clicker:get_player_name(), "max_hear_distance = " .. diststr) + end + end, + + groups = { dig_immediate = 2 }, + tiles = { "soundstuff_node_sound.png" }, +}) + diff --git a/games/minimal/mods/soundstuff/mod.conf b/games/minimal/mods/soundstuff/mod.conf new file mode 100644 index 000000000..2c631e2da --- /dev/null +++ b/games/minimal/mods/soundstuff/mod.conf @@ -0,0 +1,2 @@ +name = soundstuff +description = Example items and nodes for testing sound effects diff --git a/games/minimal/mods/soundstuff/sounds/soundstuff_mono.ogg b/games/minimal/mods/soundstuff/sounds/soundstuff_mono.ogg new file mode 100644 index 0000000000000000000000000000000000000000..43428d5664cbb98fe197b7b04330bf0abfd23abf GIT binary patch literal 4362 zcmahsdt6f4)<^S!<}J)eWLP*O31%eKEX{3#5C1N>UyA^1r=4XUh zgr$vCPH2OLr88R7_{c}58JekCS!xfnY)1P{bEj_~tnS>u?p~Y2+UvFVUVE*5)(J^S z;6jGbr#5o^gc*uPl@B+P*7sWk_lQVaN8k2)%JaAi>R*;^FE}Sxq2q+_{H9adjmUwh8tK zQVGID!Hyk5GCGHW@vM=rm_88(kT(Q53USVUDxs|eYsU;-G=gV#CcRq347NOkcMFbb zCkhK4%1fC!F{FcCg$RTy9A@mbmgF)p4ichQlvM2G1+W}CplwHKSmx&ki=GI$42->G z#MQ$>{LJG$Uc#bBVF7KNAeqm+rVy*?K-iHM5GppIkK-jbT}Ziy8eOm1N{ncv{6kM& zZ`~8mW#%ZvfwcE_k_5(H+u1oB83Bc26UHr^#E$`1U_!rUEoo<5u#-5`F-s)`>Q)=5 z5Q0k2l5)?I%&~UW=Flw&!g_~Ux9rBZ9>ce4@N+T$h&Be!fG|KVAh$fA;Aw!=FAKNUsijh`qagTZKuE>zqX<`f~uwIAEFU+IZlzlMmq7^Uj)8 z(ub8JrP1>gYz^IB8KBLOp31GIk12(nt)ogxC&11sqb(FbZcN!&8f`v{IcYMw6wWAZ zcjxoXO3P+|Evw8ZR2rMiC zG!PUrh3~es|4)C5zhg-ZTLAis9yeMKmxYJ~eR5Is)y$atS^SyIA<*B8wnWJV(f`$F zw+=F$0D^sXBjjeBu!BDCD8qi-U6!~gYG)szUvb5jv8X+6=u!qp(5Qj z{IE62VXFl_G(LAVABjkglqbj3hz5!U12dV!f9rfx{T3HMkf-!(vh*vmbi|{;G0;2l zmNVpSf@Wmy6H>v5htx4pO583@$dF$+sd#?!wDS*o5eSQlpe^^@-rS14xfk{pjOR!b zPs%S;D3-UKdsSEU@_+TY`T%!?pfpGSR7ZckcQq~zbsyu!-kObo6h5`67 zNz|<@2U5y}SIx|u(8gl3KqeH+Ifg!&pd8qh{DWoqP8CVUtw6HXO z7$S%UmecvseMn?)Ca|pIa{6r$M2__91c+P|n}!TU@ca9a=-$kM-mKW(%$pZ}s7q<9 zs=8RM{!qR0L*2wnSzu2vx*(lz7{ZCvCUZr}F;=WT8$>5(aYevNW~@li-{;#cVj)EW zbjl(De~%#YDo{yA(ldwC`21oKKWbadOjeIb#4i#IM+%~61pJm>(eO-gPYtI}C+a~& z!@Z(sCzA)>12qvM&x!?deOZq)Qic|u4nsskGJY&jTbL5N=0QWsx=YFN1M90VeQn|2 z@S_WVV0B#s=Y(ize6i2tHQCgjE6Kp#P#QnBSTvOQvMw|n;YSMkXOPJ0Ot6T@)0x9K zq;CeeJX7(0>7kJ>*n{%3<*nkWY7YC0OK*8Q|QEqgu4c@sPY z83vQ)WM!){&=VsFCsFzYGjgoO;3^1C2NSuk%$rB1=iqe<@aNGfe8JFh}z7n4Nu%V*qD9+%RcR5CrIgYH}+23IJ! z=y)#VrYO1-QCz?_bx=v!!9*3#$5~S(ivx`NydAYoCxj$bla#%KsEUdSrq|$v1?c2X z`pH#V7)~k@!oZYZ9@`n1VzVh=Rlw9dCL5UIvcan2mXmc+>~A%|R1l>%6wU*TAT|Y< zO3^&)WhAaBUl30sHrvKmRch^g$g`8{Y~w5I(aDL;Qua}F@}srjI^3vvrr@b-o9-ti z*Z!^$c2#J3+~8VtRkg;^!q@fUF0k{aPY&l3*SDqE{uxwr@OSi^X;aB%(B;0K=viK&r(F9A-xPD;`3*G!)PFYL4bP!EkKE$ z&g==-Q);qesYoQC$OXeud{m}J6oZS~SJ4y@4Lk5enfp)k9$$u1tmR4-4h=~b)+aci5Trr*c2x36f9 z5_ZBWzPL9|O&c2&V{cxuj<2enezb3rT*FJc?e(4@3DxL$!Z&C!nMau! z6u$ul=B9l5*b>Q`Ure_^&>ry|$oJ4uceP`QO@YZmbhj8Yh=7d)2do5n2(}HR@!;i5 zBEovwJSK*?^)pQ+%b%4qQ^};CyXAYcg-Z_T zQ-6+Y*G|d{yLZXfB^eJ5AwT6nNp0L-p`rooLo{oE|jkZSL_IgyXOuIClSi-J=QE^ZUQ zA;nbWJn`K3*Lu~`>+j!>O>#XawPuP3tSivZ(3{wgPhyADrl$OS`}R#_S_&oKNK|=k zc~Zwv=0R5N^Ul= z>TIv2V5;D!tKGX#)O6BD+aGSpW3S)0zFSdQq#HP8B3O0#i9_qfC6{;5*{>&F?fIro zx}rX>%9GssL|0t7aM`Nkvc7Zm-_9u8X)m8Wd6jki_SD;ZHs}4!=2so5KlX0f!K!y2 z0U7JQNq=~8LIwQ^Rvt2nt8sU8ec3F;uLml*WoqV;(-jZj zRsDR%X{^)gw>q|c?7WZww{4e7TYSQ)IU*{nOHC6_uaTA{{IUJ@(@pmVn|cOY<7WD& z|1yeE`%@pC^jK|oc*%T^k}ZFZOQX^U)2EIy*7}Y7c<=-Bm0}{a?aH$`C6VzQbsrUW z$7cE^rtet$Y^5-)C;i37bJ&`C;iV@LmnZBs%M#Nbs?Uhzx9WmcK@UBXD-Hgdb7RkO zulyzc|F=?G)(RCa+m=lZEZsUWDeG~eebt0&K=&JpzTJN2&fb!t)S_d4`+n!` zKRxl)+T{%!c;}553VNF6UvgIvqQ~|(wfve(%}(ZZ)Ax!W zhtAhB-IlbtTR#%2o=p}jo7(lz^sUEZqv#@62H?}C8R?VQ`wsB(s0N0XP z?&ay~Hz>GWUsb=VzIgY^LS>KJ@<4`5=1j M!p@q3e-TpXA^SOo;uGX@Ltnj8@PDaCe=KY^iK!d1|H`xX}|CWgSmSLqiYWpo0~VDNPH Kb6Mw<&;$U~cp97l literal 0 HcmV?d00001 diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_blank.png b/games/minimal/mods/soundstuff/textures/soundstuff_node_blank.png new file mode 100644 index 0000000000000000000000000000000000000000..4dffacc4ca3cd9579c07f170de41ca4ffa9ddca9 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ql2i3Ar*|t5mN3_Ou?!yiyE&P ftV#@F&g5WFo+e!wloI_U<-ohR2cURcd^*{+uyV17paQ5hSnT8=WGyWiq( h~DYuCG^|OMwP5c)I$ztaD0e0s!p6CRYFe literal 0 HcmV?d00001 diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_dug.png b/games/minimal/mods/soundstuff/textures/soundstuff_node_dug.png new file mode 100644 index 0000000000000000000000000000000000000000..bab5fbe516cf878f5bd81987458df8556cd85cd0 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|-kvUwAr*{MFEX+*D2lLLuzfi% zY5kV(Z@A+hE|qjP(7*C|f8_IzvD+P0na$YJgKswWHu|zMurVxiz7X3Ke#wgM5Bpu- f22BR82_+0X+h1}qocrMoG?u~B)z4*}Q$iB}Yyv5Q literal 0 HcmV?d00001 diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_fall.png b/games/minimal/mods/soundstuff/textures/soundstuff_node_fall.png new file mode 100644 index 0000000000000000000000000000000000000000..17b14f1e4aa456f652b0f55b50acc82f12c65577 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|+MX_sAr*|t5mN3_Ou?!yN?KVA x%x|RJOdl{*D81>#fouk5pTb>BRWAuJq}si+s7Z?|1De9% M>FVdQ&MBb@05g;ud;kCd literal 0 HcmV?d00001 diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_place_failed.png b/games/minimal/mods/soundstuff/textures/soundstuff_node_place_failed.png new file mode 100644 index 0000000000000000000000000000000000000000..780ba946d28da2347913ddd350da00a47d698946 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u1n(>mX-iH41DYiHcbzA z09kgPE{-7;jL8hl7cX28;7}B^`^we);_FL?yq_@&g3(+e(Ndh_GGsPzX2q mt2bdrovel+TS(6ZZYBmRR*@G@JFAjGhI+dCxvX?{wo$!WzlT+uX3Wo)ZR~)367)-35?oSt;v;k-g NgQu&X%Q~loCIDhg9Gn0E literal 0 HcmV?d00001 diff --git a/games/minimal/mods/stairs/init.lua b/games/minimal/mods/stairs/init.lua index 74b7890ee..2701cabab 100644 --- a/games/minimal/mods/stairs/init.lua +++ b/games/minimal/mods/stairs/init.lua @@ -18,15 +18,6 @@ function stairs.register_stair(subname, recipeitem, groups, images, description) }, }, }) - - minetest.register_craft({ - output = 'stairs:stair_' .. subname .. ' 4', - recipe = { - {recipeitem, "", ""}, - {recipeitem, recipeitem, ""}, - {recipeitem, recipeitem, recipeitem}, - }, - }) end -- Node will be called stairs:slab_ @@ -47,13 +38,6 @@ function stairs.register_slab(subname, recipeitem, groups, images, description) fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, }, }) - - minetest.register_craft({ - output = 'stairs:slab_' .. subname .. ' 3', - recipe = { - {recipeitem, recipeitem, recipeitem}, - }, - }) end -- Nodes will be called stairs:{stair,slab}_ @@ -62,32 +46,20 @@ function stairs.register_stair_and_slab(subname, recipeitem, groups, images, des stairs.register_slab(subname, recipeitem, groups, images, desc_slab) end -stairs.register_stair_and_slab("wood", "default:wood", - {snappy=2,choppy=2,oddly_breakable_by_hand=2}, - {"default_wood.png"}, - "Wooden stair", - "Wooden slab") - -stairs.register_stair_and_slab("stone", "default:stone", +stairs.register_stair_and_slab("stone", "basenodes:stone", {cracky=3}, {"default_stone.png"}, - "Stone stair", - "Stone slab") + "Stone Stair", + "Stone Slab") -stairs.register_stair_and_slab("cobble", "default:cobble", +stairs.register_stair_and_slab("desert_stone", "basenodes:desert_stone", + {cracky=3}, + {"default_desert_stone.png"}, + "Desert Stone Stair", + "Desert Stone Slab") + +stairs.register_stair_and_slab("cobble", "basenodes:cobble", {cracky=3}, {"default_cobble.png"}, - "Cobble stair", - "Cobble slab") - -stairs.register_stair_and_slab("brick", "default:brick", - {cracky=3}, - {"default_brick.png"}, - "Brick stair", - "Brick slab") - -stairs.register_stair_and_slab("sandstone", "default:sandstone", - {crumbly=2,cracky=2}, - {"default_sandstone.png"}, - "Sandstone stair", - "Sandstone slab") + "Cobblestone Stair", + "Cobblestone Slab") diff --git a/games/minimal/mods/stairs/mod.conf b/games/minimal/mods/stairs/mod.conf index 32bda004a..724bff881 100644 --- a/games/minimal/mods/stairs/mod.conf +++ b/games/minimal/mods/stairs/mod.conf @@ -1,3 +1,3 @@ name = stairs description = Adds stairs and slabs -depends = default +depends = basenodes diff --git a/games/minimal/mods/test/crafting.lua b/games/minimal/mods/test/crafting.lua deleted file mode 100644 index 8964bd25a..000000000 --- a/games/minimal/mods/test/crafting.lua +++ /dev/null @@ -1,71 +0,0 @@ -local function test_clear_craft() - minetest.log("info", "Testing clear_craft") - -- Clearing by output - minetest.register_craft({ - output = "foo", - recipe = {{"bar"}} - }) - minetest.register_craft({ - output = "foo 4", - recipe = {{"foo", "bar"}} - }) - assert(#minetest.get_all_craft_recipes("foo") == 2) - minetest.clear_craft({output="foo"}) - assert(minetest.get_all_craft_recipes("foo") == nil) - -- Clearing by input - minetest.register_craft({ - output = "foo 4", - recipe = {{"foo", "bar"}} - }) - assert(#minetest.get_all_craft_recipes("foo") == 1) - minetest.clear_craft({recipe={{"foo", "bar"}}}) - assert(minetest.get_all_craft_recipes("foo") == nil) -end -test_clear_craft() - -local function test_get_craft_result() - minetest.log("info", "test_get_craft_result()") - -- normal - local input = { - method = "normal", - width = 2, - items = {"", "default:coal_lump", "", "default:stick"} - } - minetest.log("info", "torch crafting input: "..dump(input)) - local output, decremented_input = minetest.get_craft_result(input) - minetest.log("info", "torch crafting output: "..dump(output)) - minetest.log("info", "torch crafting decremented input: "..dump(decremented_input)) - assert(output.item) - 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 - local input = { - method = "fuel", - width = 1, - items = {"default:coal_lump"} - } - minetest.log("info", "coal fuel input: "..dump(input)) - local output, decremented_input = minetest.get_craft_result(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 - local input = { - method = "cooking", - width = 1, - items = {"default:cobble"} - } - minetest.log("info", "cobble cooking input: "..dump(output)) - local output, decremented_input = minetest.get_craft_result(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) - 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 -test_get_craft_result() diff --git a/games/minimal/mods/test/formspec.lua b/games/minimal/mods/test/formspec.lua deleted file mode 100644 index a5d3074cd..000000000 --- a/games/minimal/mods/test/formspec.lua +++ /dev/null @@ -1,298 +0,0 @@ -local color = minetest.colorize - -local hypertext = minetest.formspec_escape([[ - -
Furnace
- are crafted and used by the player for the purpose of cooking food and smelting various items. - - Solid block - Itself - No - Inactive:No Active:Yes (8) - No - No - Yes - Yes (99) - default:furnace default:furnace_active - Usage - The furnace menu can be accessed by using the furnace. - The furnace has 3 inventories: An input slot, a fuel slot and 4 output slots. The fire in the furnace will automatically start when there is a smeltable item in the input slot and a fuel in the fuel slot. - As long as the fire is on, the furnace will smelt any smeltable item in the input slot, one by one, until it is empty. When the fire goes off, it will smelt the next item until there are no smeltable items and no fuel items left. - The current stage of cooking can be seen by pointing the furnace or by viewing the furnace menu. In the furnace menu, the flame symbol roughly shows the remaining burning time. The arrow symbol shows the progress of the current smelting process. - Renewing - Furnaces can be crafted from e.g. cobblestone, a renewable resource. - Crafting - Sorry no way to display crafting yet in formspec pages. - Fuel - See Smelting for a list of furnace fuels. - Recipes - See the Smelting page. -]]) - - -local clip_fs = [[ - style_type[label,button,image_button,item_image_button, - tabheader,scrollbar,table,animated_image - ,field,textarea,checkbox,dropdown;noclip=%c] - - label[0,0;A clipping test] - button[0,1;3,0.8;x;A clipping test] - image_button[0,2;3,0.8;bubble.png;x2;A clipping test] - item_image_button[0,3;3,0.8;default:sword_steel;x3;A clipping test] - tabheader[0,4.7;3,0.63;x4;Clip,Test,Text,Tabs;1;false;false] - field[0,5;3,0.8;x5;Title;] - textarea[0,6;3,1;x6;Title;] - checkbox[0,7.5;x7;This is a test;true] - dropdown[0,8;3,0.8;x8;Select An Item,One,Two,Three,Four,Five;1] - scrollbar[0,9;3,0.8;horizontal;x9;3] - tablecolumns[text;text] - table[0,10;3,1;x10;one,two,three,four;1] - animated_image[-0.5,11;4.5,1;;test_animation.png;4;100] -]] - - -local style_fs = [[ - style[one_btn1;bgcolor=red;textcolor=yellow;bgcolor_hovered=orange; - bgcolor_pressed=purple] - button[0,0;2.5,0.8;one_btn1;Button] - - style[one_btn2;border=false;textcolor=cyan] ]].. - "button[0,1.05;2.5,0.8;one_btn2;Text " .. color("#FF0", "Yellow") .. [[] - - style[one_btn3;bgimg=bubble.png;bgimg_hovered=default_apple.png; - bgimg_pressed=heart.png] - button[0,2.1;1,1;one_btn3;Bor] - - style[one_btn4;bgimg=bubble.png;bgimg_hovered=default_apple.png; - bgimg_pressed=heart.png;border=false] - button[1.25,2.1;1,1;one_btn4;Bub] - - style[one_btn5;bgimg=bubble.png;bgimg_hovered=default_apple.png; - bgimg_pressed=heart.png;border=false;alpha=false] - button[0,3.35;1,1;one_btn5;Alph] - - style[one_btn6;border=true] - image_button[0,4.6;1,1;bubble.png;one_btn6;Border] - - style[one_btn7;border=false] - image_button[1.25,4.6;1,1;bubble.png;one_btn7;NoBor] - - style[one_btn8;border=false] - image_button[0,5.85;1,1;bubble.png;one_btn8;Border;false;true;heart.png] - - style[one_btn9;border=true] - image_button[1.25,5.85;1,1;bubble.png;one_btn9;NoBor;false;false;heart.png] - - style[one_btn10;alpha=false] - image_button[0,7.1;1,1;bubble.png;one_btn10;NoAlpha] - - style[one_btn11;alpha=true] - image_button[1.25,7.1;1,1;bubble.png;one_btn11;Alpha] - - style[one_btn12;border=true] - item_image_button[0,8.35;1,1;default:sword_steel;one_btn12;Border] - - style[one_btn13;border=false] - item_image_button[1.25,8.35;1,1;default:sword_steel;one_btn13;NoBor] - - style[one_btn14;border=false;bgimg=test_bg.png;fgimg=bubble.png;padding=8] - style[one_btn14:hovered;bgimg=test_bg_hovered.png;fgimg=default_apple.png;textcolor=red] - style[one_btn14:pressed;bgimg=test_bg_pressed.png;fgimg=heart.png;textcolor=green] - style[one_btn14:hovered+pressed;textcolor=blue] - image_button[0,9.6;1,1;bubble.png;one_btn14;Bg] - - style[one_btn15;border=false;bgimg=test_bg.png;bgimg_hovered=test_bg_hovered.png;bgimg_pressed=test_bg_pressed.png] - item_image_button[1.25,9.6;1,1;default:sword_steel;one_btn15;Bg] - - style[one_btn16;border=false;bgimg=test_bg_9slice.png;bgimg_hovered=test_bg_9slice_hovered.png;bgimg_pressed=test_bg_9slice_pressed.png;bgimg_middle=4,6] - style[one_btn16:pressed;content_offset=0,1] - button[2.5,9.6;2,1;one_btn16;9-Slice Bg] - - - - container[2.75,0] - - style[one_tb1;textcolor=Yellow] - tabheader[0,3;2.5,0.63;one_tb1;Yellow,Text,Tabs;1;false;false] - - style[one_f1;textcolor=yellow] - field[0,4.25;2.5,0.8;one_f1;Field One;Yellow Text] - - style[one_f2;border=false;textcolor=cyan] - field[0,5.75;2.5,0.8;one_f2;Field Two;Borderless Cyan Text] - - style[one_f3;textcolor=yellow] - textarea[0,7.025;2.5,0.8;one_f3;Label;]] .. - minetest.formspec_escape("Yellow Text\nLine two") .. [[ ] - - style[one_f4;border=false;textcolor=cyan] - textarea[0,8.324999999999999;2.5,0.8;one_f4;Label;]] .. - minetest.formspec_escape("Borderless Cyan Text\nLine two") .. [[ ] - - container_end[] -]] - ---style_type[label;textcolor=green] ---label[0,0;Green] ---style_type[label;textcolor=blue] ---label[0,1;Blue] ---style_type[label;textcolor=;border=true] ---label[1.2,0;Border] ---style_type[label;border=true;bgcolor=red] ---label[1.2,1;Background] ---style_type[label;border=;bgcolor=] ---label[0.75,2;Reset] - - -local pages = { - [[ - formspec_version[3] - size[12,12] - image_button[0,0;1,1;logo.png;;1x1] - image_button[1,0;2,2;logo.png;;2x2] - button[0,2;1,1;;1x1] - button[1,2;2,2;;2x2] - item_image[0,4;1,1;air] - item_image[1,4;2,2;air] - item_image_button[0,6;1,1;test:node;;1x1] - item_image_button[1,6;2,2;test:node;;2x2] - field[3,.5;3,.5;name;Field;text] - pwdfield[6,.5;3,1;name;Password Field] - field[3,1;3,1;;Read-Only Field;text] - textarea[3,2;3,.5;name;Textarea;text] - textarea[6,2;3,2;name;Textarea;text\nmore text] - textarea[3,3;3,1;;Read-Only Textarea;text\nmore text] - textlist[3,4;3,2;name;Textlist,Perfect Coordinates;1;false] - tableoptions[highlight=#ABCDEF75;background=#00000055;border=false] - table[6,4;3,2;name;Table,Cool Stuff,Foo,Bar;2] - dropdown[3,6;3,1;name;This,is,a,dropdown;1] - dropdown[6,6;3,2;name;I,am,a,bigger,dropdown;5] - image[0,8;3,2;ignore.png] - box[3,7;3,1;#00A3FF] - checkbox[3,8;name;Check me!;false] - checkbox[3,9;name;Uncheck me now!;true] - scrollbar[0,11.5;11.5,.5;horizontal;name;500] - scrollbar[11.5,0;.5,11.5;vertical;name;0] - list[current_player;main;6,8;3,2;1] - button[9,0;2.5,1;name;] - button[9,1;2.5,1;name;] - button[9,2;2.5,1;name;] ]].. - "label[9,0.5;This is a label.\nLine\nLine\nLine\nEnd]".. - [[button[9,3;1,1;name;] - vertlabel[9,4;VERT] - label[10,3;HORIZ] - tabheader[6.5,0;6,0.65;name;Tab 1,Tab 2,Tab 3,Secrets;1;false;false] - ]], - - "formspec_version[3]size[12,12]" .. - ("label[0.375,0.375;Styled - %s %s]"):format( - color("#F00", "red text"), - color("#77FF00CC", "green text")) .. - "label[6.375,0.375;Unstyled]" .. - "box[0,0.75;12,0.1;#999]" .. - "box[6,0.85;0.1,11.15;#999]" .. - "container[0.375,1.225]" .. - style_fs .. - "container_end[]container[6.375,1.225]" .. - style_fs:gsub("one_", "two_"):gsub("style%[[^%]]+%]", ""):gsub("style_type%[[^%]]+%]", "") .. - "container_end[]", - - "formspec_version[3]size[12,13]" .. - "label[0.1,0.5;Clip]" .. - "container[-2.5,1]" .. clip_fs:gsub("%%c", "false") .. "container_end[]" .. - "label[11,0.5;Noclip]" .. - "container[11.5,1]" .. clip_fs:gsub("%%c", "true") .. "container_end[]", - - [[ - formspec_version[3] - size[12,12] - animated_image[0.5,0.5;1,1;;test_animation.png;4;100] - animated_image[0.5,1.75;1,1;;test_animation.jpg;4;100] - animated_image[1.75,0.5;1,1;;test_animation.png;100;100] - animated_image[3,0.5;1,1;ani_img_1;test_animation.png;4;1000] - button[4.25,0.5;1,1;ani_btn_1;Current -Number] - animated_image[3,1.75;1,1;ani_img_2;test_animation.png;4;1000;2] - button[4.25,1.75;1,1;ani_btn_2;Current -Number] - animated_image[3,3;1,1;;test_animation.png;4;0] - animated_image[3,4.25;1,1;;test_animation.png;4;0;3] - animated_image[5.5,0.5;5,2;;test_animation.png;4;100] - animated_image[5.5,2.75;5,2;;test_animation.jpg;4;100] - ]], - - "formspec_version[3]".. - "size[12,12]".. - "button[8.5,1;1,1;bla;Bla]".. - "box[1,1;8,6;#00aa]".. - "scroll_container[1,1;8,6;scrbar;vertical]".. - "button[0,1;1,1;lorem;Lorem]".. - "button[0,10;1,1;ipsum;Ipsum]".. - "pwdfield[2,2;1,1;lorem2;Lorem]".. - "list[current_player;main;4,4;1,5;]".. - "box[2,5;3,2;#ffff00]".. - "image[1,10;3,2;bubble.png]".. - "image[3,1;bubble.png]".. - "item_image[2,6;3,2;default:mese]".. - "label[2,15;bla Bli\nfoo bar]".. - "item_image_button[2,3;1,1;default:dirt_with_grass;itemimagebutton;ItemImageButton]".. - "tooltip[0,11;3,2;Buz;#f00;#000]".. - "box[0,11;3,2;#00ff00]".. - "hypertext[3,13;3,3;;" .. hypertext .. "]" .. - "container[0,18]".. - "box[1,2;3,2;#0a0a]".. - "scroll_container[1,2;3,2;scrbar2;horizontal;0.06]".. - "button[0,0;6,1;butnest;Nest]".. - "label[10,0.5;nest]".. - "scroll_container_end[]".. - "scrollbar[1,0;3.5,0.3;horizontal;scrbar2;0]".. - "container_end[]".. - "dropdown[0,6;2;hmdrpdwn;apple,bulb;1]".. - "image_button[0,4;2,2;bubble.png;bubblebutton;bbbbtt;false;true;heart.png]".. - "box[1,22.5;4,1;#a00a]".. - "scroll_container_end[]".. - "scrollbaroptions[max=170]".. -- lowest seen pos is: 0.1*170+6=23 (factor*max+height) - "scrollbar[7.5,0;0.3,4;vertical;scrbar;20]".. - "scrollbar[8,0;0.3,4;vertical;scrbarhmmm;0]".. - "dropdown[0,6;2;hmdrpdwnnn;apple,bulb;1]", -} - -local function show_test_formspec(pname, page_id) - page_id = page_id or 2 - - local fs = pages[page_id] .. "tabheader[0,0;8,0.65;maintabs;Real Coord,Styles,Noclip,MiscEle,Scroll Container;" .. page_id .. ";false;false]" - - minetest.show_formspec(pname, "test:formspec", fs) -end - -minetest.register_on_player_receive_fields(function(player, formname, fields) - if formname ~= "test:formspec" then - return false - end - - if fields.maintabs then - show_test_formspec(player:get_player_name(), tonumber(fields.maintabs)) - return true - end - - if fields.ani_img_1 and fields.ani_btn_1 then - minetest.chat_send_all(fields.ani_img_1) - elseif fields.ani_img_2 and fields.ani_btn_2 then - minetest.chat_send_all(fields.ani_img_2) - end -end) - -minetest.register_node("test:node", { - tiles = { "air.png" } -}) - -minetest.register_chatcommand("formspec", { - func = function(name) - if not minetest.get_player_by_name(name) then - return false, "You need to be online!" - end - - show_test_formspec(name) - return true, "Opened formspec" - end, -}) diff --git a/games/minimal/mods/test/init.lua b/games/minimal/mods/test/init.lua deleted file mode 100644 index 4e2a51086..000000000 --- a/games/minimal/mods/test/init.lua +++ /dev/null @@ -1,15 +0,0 @@ --- --- Minimal Development Test --- Mod: test --- - - --- Try out PseudoRandom -pseudo = PseudoRandom(13) -assert(pseudo:next() == 22290) -assert(pseudo:next() == 13854) - -local modpath = minetest.get_modpath("test") -dofile(modpath .. "/player.lua") -dofile(modpath .. "/formspec.lua") -dofile(modpath .. "/crafting.lua") diff --git a/games/minimal/mods/test/mod.conf b/games/minimal/mods/test/mod.conf deleted file mode 100644 index ae6387e09..000000000 --- a/games/minimal/mods/test/mod.conf +++ /dev/null @@ -1,3 +0,0 @@ -name = test -description = Adds unit tests for the engine -optional_depends = default diff --git a/games/minimal/mods/test/textures/test_animation.png b/games/minimal/mods/test/textures/test_animation.png deleted file mode 100644 index 1752362ff0db7d622f92f7a9ab42c6ed0fc699a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3161 zcmZWr2~d;Cx^4CVq7hJ{FGzrl!pIJ4*hB;C(k?)v-m`M#>|EH@WhIhnmO z0023AJL{9eFH+c!A;g3|_P$gJ0Fq4?JWj`)B*tSRqs|A1og-ml5+g|%QbJfT011ON zUSYY0727uiniB|#<651>D+x#PKe#%$6}2Y4pHT{oZ>`j`t8lXSH{9GDHA;Oq{#fp1 zw3BK^+|I{OUE_`$#HrZXp^MGO~7A-q4Xvu-!16yU#TonbNRLJF9%pGup!}Xy)lk z!$_RZY=c!D|M0P;2;A#W#o^2tE$Zg%-Yjvyk+_ynjZZq<&v_qj!Qpt-OUewzkmHacK7PAN|&tLI154QDH^A=X+iPCwe z!(0##(6I&O=jMmidJDE6&YzAyF*wjHa*29g66NSNhR7R`OtPM2H;(CB-Vy!Cd|c)B zltb*Nb|qhd@)1u~5DtbaS;qWa?INtYj5ok9c8Mg6K@RvfJv>77iip{+`Y_2MhJ zQF4d+JfgMbrh1Y;?DjraG49zi^QKGGX@~jpn`qtk?Iqox(`-?clIykwzc$+UxUz^Z z3xZkWC;4-nl#1nw;kK&a=CdxBa}yUl<=XXG`>PuicJuF|E|@A_Wdr%atYBNth^f1a zkts*rs$;tbp<~KZF^zWdbZ3v>;2;0{y}U@IwXK(*QdYckYEyPR$L^ckTvfzqd0%#u z&q->D%ri|B?7a=Wibv@d=MFr2mHawVMD1(V`JE^3nA`r+ti$j6Si4W($__^x3R|mA zua&;57;t-ANTf-}z|ASu&&3FnS6!x4b|g&)4SwI3#6yqj16SENtzlXkD8tuh3Xt!z z_C6g)?SFv-JK|)QA2_7s?YlACaOqA*&1|k7p(_uoWftGyJB)lCS%*2~^^|pJX;>1S z^E;-_*4pHm`&VT>J@SwDh$fmasNz^AdVHS-R$U5Ju%=#e>d8;m z=91M%`|RX%?~N6+>U-Y*6quNtwW_>W;P1ums;JndsdeOj6aL|Ztg6;tWszt8WCfrh zE{8ofHT*+?f6m%MLDPg_aoKTDG&kM%P^<#hGML99;%`3ptiMG%tjPb8K_ic!_A#>Bfd_m z`Io78ID+QcL0yadE_UytDHDI`#E)*0?$mCJg_+|FLAdt&m@oW?%l#>&DgAEm+t(|j z4%Lkmax#iFmraUvIu0N5mCMEFi{yBSG-s~TJo!D!RWE|oV?2Bs+tmV<8RFT&IL{2_ z`q(T_lUa9#WrL3=c47Yf8tSL~^7Z$?-f7!UcJVX0xpwm;&O@iK-#mAIncf+ao!YWP z<9bGtN0((9myVUZy%1rXjl_7zUDGVO z5#Dc{_XGJQXZ>fst+DjQ#qiC1f0aALsWn3_>sww`=Cx1X&?Mu0z~q3W%Fvg1%fhnR zHtEIaq9bi1lQj)$S3;HLTl%dJFZ|^5%E_;4SJ_5@i9mY%b(DSFh~6CIwDhVDBT`9X zZI+;T1o`0p?v^u@>PmwE%jMTq&ymZ;oH;BXfplDs@fgY>msdiwU=8*E5@I555>*dB8&0 zn3^z+Z=jbO{VuC+=#=j9l(g7>6=x#jTE~rBHot2a6*Y9bUI$yUKZ0iv_jWT%%ehET z;mmLF(O_)M>Z$f%pC*gqVXj4UN`u)ig*y;!{SwiGJ7pQTpmG=OOh)Dnk9x#z2cLU*sT+HFpE8QJ&8ydysc)=!VUudYg~!XPeQ!Wo-rw%BDsM;Yw^Gu&KfYtq%$_)BiOhP|^W zF%Q1M$%XuUeoZFT3-M<=2u5DduQ<>xyC;EJm$b5SL1~;YGP#L1cNht}xny0@#NwA9v?_0>eXqN{o)dhqG+j6vDUwq2Z)hQXLeU!4^XpN*WUrJeQ?cn z+}|&WGM;d!%KWyF2A|DG@Sk@)DpJf5xvksuU0+l@j(URM)OMBJN)cVTLp@kCUiXGN z<=P#tt(`2s6d|V6ukAb{rW1eZ*#TbztnFftqKw4Y_Z+UK)Y7QvA5{_O`6@@I-tR=0e~q0 z!oNWxfPyX1{~w$Jc!f53W+u-u}AA*5)30}ViP-kRCMLM=!n5`)3$>FL?n*x>Pa5{VQW8%w9t3kwS?D=S-C zT6jF(=;-MD{5*uv82|zR6aeS|umETRKmfqx-{(N1p^*`EcZXy$WH2C`4Y^!rEWm33 zvJs%00hT>zA^-siOj7 zAGS<^5DnLj;JQ2fMuzKjxXy;_Tp$!AbSDu2CIF=Xv;fcpz|58)G(_W|5gxizAejN_ zrI6hYxxmsA5D0)m0dzWGu|QK35D38Jr10+qxE>4F84$AIdJBX+2#18bVl06c0pKXW zh7R0Wz_$s62|(oGZz`Ewor(A!C%oo)>W8%qRu}%*=qhGawNViKJ~zvLZVX z-ISuirQtf6&VoGRP-*N34s)ix^jlB6a6J?z{r^REa`OKrg*8SdlZCY;?DsX~4+*hI z%t@D1;Ml}~@Hq`c0vv6vL8gSVoe)Sz+7Y4w&{5xNA_+fR#0g2M7<*?MsgI)aKuojT zWoceWrP^Ctdf<4C9zNTj>LEA>K5RA*t__riDiqm3toOB0o5Lb*BYQQD91~Q~d`d)7 zS{UV)mm=|wJB+2LpC&I|-rZ?yXl-e#7jCGt`RZ1mUA{!#|76e=S49dtwegQhL$=Cf zBkrxa49B-b-C*SO+bDp*{Jaf8@Qx4KG);IfI(9_6^ZClx5TO)cZ{uQJd)%M)Z#mS` Aod5s; diff --git a/games/minimal/mods/test/textures/test_bg.png b/games/minimal/mods/test/textures/test_bg.png deleted file mode 100644 index f0f3929265734de57382ff9decb2363e670692c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 972 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR3mE?5sDH|z(I2hM}Y3->|fgZH~;y_*eW xNqD+AhDc0JPH@XUIx7GG diff --git a/games/minimal/mods/test/textures/test_bg_9slice.png b/games/minimal/mods/test/textures/test_bg_9slice.png deleted file mode 100644 index f9fe6870b690bbf7d4f1b8f3ff24c56975848fc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1017 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0U}gyL332`Z|9_x=Xl{1=-05vV zsZlT*0wXE}lGfk<3G^^yNswPKgTu2MX+REtiEBhjaDG}zd16s2gL_e8T7}VqMZsA> zDUakLzjPqYWMB^>9sEILKs<;{$On-H^&qmLA4E==4X-Da34fIc)x4byV*dNxu=U`h(&L5f&x#(2Zjwc!p43FSb`27I&-9h*}%|Q^a0Ca uE;mu0KvtH|tm|SJnXUvn7d1&e~SfKndGMSkf(n#sT(L^}9`$bfhdnUD`63+h2+LqCX|FdsxNSPvpM><5tt z&V$Gc_d(=?_q%4jn+;@{d%8G=So9_*EMQ7F$b8_F&lw9wVGmYrV_{{!14np58-#nb tBti{bL?B|mLR^y)((7vSmo1zO6dwhn zAuvKhAU8L6)v8th|Nj?XX*C__XZ{k`h?3y^w370~qErU=qQtZcqXmnCvw%__$whwY zK$^+G9z;6$gUEn*5Sfq3mE?5sDH|z(I2hM}Y3->|fgZH~;y_*eW xNqD+AhDc0JPH@v8IZ*%r diff --git a/games/minimal/mods/test/textures/test_bg_pressed.png b/games/minimal/mods/test/textures/test_bg_pressed.png deleted file mode 100644 index 76aafb8c13d322982670af732140c5d029a04afc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 971 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR?*)y%OVsdRq&C;-g?R z1V%^*SAkx7fL= 5 then + self._phase = 0 + end + self.object:set_sprite({x=0, y=self._phase}) + self.object:set_armor_groups(phasearmor[self._phase]) + end, +}) diff --git a/games/minimal/mods/testentities/callbacks.lua b/games/minimal/mods/testentities/callbacks.lua new file mode 100644 index 000000000..711079f87 --- /dev/null +++ b/games/minimal/mods/testentities/callbacks.lua @@ -0,0 +1,75 @@ +-- Entities that test their callbacks + +local message = function(msg) + minetest.log("action", msg) + minetest.chat_send_all(msg) +end + +local get_object_name = function(obj) + local name = "" + if obj then + if obj:is_player() then + name = obj:get_player_name() + else + name = "" + end + end + return name +end + +local spos = function(self) + return minetest.pos_to_string(vector.round(self.object:get_pos())) +end + +-- Callback test entity (all callbacks except on_step) +minetest.register_entity("testentities:callback", { + initial_properties = { + visual = "upright_sprite", + textures = { "testentities_callback.png" }, + }, + + on_activate = function(self, staticdata, dtime_s) + message("Callback entity: on_activate! pos="..spos(self).."; dtime_s="..dtime_s) + end, + on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage) + local name = get_object_name(puncher) + message( + "Callback entity: on_punch! ".. + "pos="..spos(self).."; puncher="..name.."; ".. + "time_from_last_punch="..time_from_last_punch.."; ".. + "tool_capabilities="..tostring(dump(tool_capabilities)).."; ".. + "dir="..tostring(dump(dir)).."; damage="..damage) + end, + on_rightclick = function(self, clicker) + local name = get_object_name(clicker) + message("Callback entity: on_rightclick! pos="..spos(self).."; clicker="..name) + end, + on_death = function(self, killer) + local name = get_object_name(killer) + message("Callback entity: on_death! pos="..spos(self).."; killer="..name) + end, + on_attach_child = function(self, child) + local name = get_object_name(child) + message("Callback entity: on_attach_child! pos="..spos(self).."; child="..name) + end, + on_detach_child = function(self, child) + local name = get_object_name(child) + message("Callback entity: on_detach_child! pos="..spos(self).."; child="..name) + end, + on_detach = function(self, parent) + local name = get_object_name(parent) + message("Callback entity: on_detach! pos="..spos(self).."; parent="..name) + end, + get_staticdata = function(self) + message("Callback entity: get_staticdata! pos="..spos(self)) + end, +}) + +-- Only test on_step callback +minetest.register_entity("testentities:callback_step", { + visual = "upright_sprite", + textures = { "testentities_callback_step.png" }, + on_step = function(self, dtime) + message("on_step callback entity: on_step! pos="..spos(self).."; dtime="..dtime) + end, +}) diff --git a/games/minimal/mods/testentities/init.lua b/games/minimal/mods/testentities/init.lua new file mode 100644 index 000000000..df8c72ea7 --- /dev/null +++ b/games/minimal/mods/testentities/init.lua @@ -0,0 +1,3 @@ +dofile(minetest.get_modpath("testentities").."/visuals.lua") +dofile(minetest.get_modpath("testentities").."/armor.lua") +dofile(minetest.get_modpath("testentities").."/callbacks.lua") diff --git a/games/minimal/mods/testentities/mod.conf b/games/minimal/mods/testentities/mod.conf new file mode 100644 index 000000000..7a8cb5a3e --- /dev/null +++ b/games/minimal/mods/testentities/mod.conf @@ -0,0 +1,2 @@ +name = testentities +description = Example entities for testing diff --git a/games/minimal/mods/testentities/textures/testentities_armorball.png b/games/minimal/mods/testentities/textures/testentities_armorball.png new file mode 100644 index 0000000000000000000000000000000000000000..88147bd1f77c3cb377158ee2df87f547f0b795f7 GIT binary patch literal 561 zcmeAS@N?(olHy`uVBq!ia0vp^0ze$V!3-qTOIhuK)U*Jf5LY1m|NsB}uU<{Pa|ejx zPo1({y*lc|i7(Ik-rWdzc~D z)&2GfuU9)DyN>fi+kJ)i*RuIbK2PC29`Z3sSLNG1(|fk&>o@bdsvle}Ej2mHkIP@F zXITPM^3NGsI~Fpm`XbB9p5V*!$)@-1cIg>6G*($yoch*X^T7GUkIqL&jf;<@x9HCi ze$~#loIgWHe#PX;oo<)8l8xT#e^DSE978YL!Pb}!l#P~ovkh~LEKNQZRO z`Z<5*)^LX{TmOG)tl0{I<^4{AQzeA|Upc<9#wO#9?7>ePqcx|0xxMtq`Px5>@dxv# T+inlK0}4V5ZQFn?f^SOhrLo^ z*ejWZyO@6JcQbsHS6;d9ao&OXr@!7m$o|J;^1Oqqm^F^9+bfX&;}+0522WQ%mvv4F FO#s?uIivsp literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testentities/textures/testentities_callback_step.png b/games/minimal/mods/testentities/textures/testentities_callback_step.png new file mode 100644 index 0000000000000000000000000000000000000000..b67506a9723c6f93c7fb917c0904b6429e2e307f GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|xt=bLAr*{CKh7WcFkgfr=Uc|6og>=LF~Ut?57cJu4Z6^?Ro=N3ZAr PTFl_->gTe~DWM4f&5=HQ literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testentities/textures/testentities_cube1.png b/games/minimal/mods/testentities/textures/testentities_cube1.png new file mode 100644 index 0000000000000000000000000000000000000000..c667e425f451aae2c5d859d1f32428bb4c361f5b GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|o}Mm_Ar*|tKh7VR;Ks$U^4#n^ zcNM3MAN*_zY)vj4hi-E4o)D_=DB(5P#&|R2keNWI#$|@>vo^4$Ty@E8Sgm%G&B!#s dc8UiJgUY{7d9@u?!9YV9JYD@<);T3K0RXmoCei=^ literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testentities/textures/testentities_cube2.png b/games/minimal/mods/testentities/textures/testentities_cube2.png new file mode 100644 index 0000000000000000000000000000000000000000..481823420c1030ae7be3944b1ed0115b7ddb9198 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|?w&4=Ar*|tKh7VR;Ks$Ua$U?b zCl#lRAN*_zY)vj4hi-E4o)D_=DB(5P#&|R2keNWI#-)Y=o{druZe^q~$7n7!3y||t bVPcpXyJ-2*J?6)NMlyK1`njxgN@xNAZIdR( literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testentities/textures/testentities_cube3.png b/games/minimal/mods/testentities/textures/testentities_cube3.png new file mode 100644 index 0000000000000000000000000000000000000000..03b5daa15f10cc7bbc998db2dc75f7c7cd40addf GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|&YmugAr*|tKh7VR;Ks$UGVks? zUlpf}AN*_zY)vj4hi-E4o)D_=DB(5P#&|R2keNWI#-)Y=o{druZn5p>ozgDU$-ofc Wuzj|l*+LJXaSWcWelF{r5}E+!G9@Jd literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testentities/textures/testentities_cube4.png b/games/minimal/mods/testentities/textures/testentities_cube4.png new file mode 100644 index 0000000000000000000000000000000000000000..639204896232e73ba5cb54c9a4a2ed4b632009a9 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|uAVNAAr*|tKh7VR;Ks$Ua$bp1 zheykW5Ar+?JS?38Et>_UCa8Xx@Iophhk4V=mRtp)z$J_i!)|3ZFkbrO(8so_U8s|R ZLB8&^_UCa8Xx@Iophhk4V=mRtp)z$J_iC4@{a++f>b=9Rm^W{L+3 ZgQD%tPs(eR@_+_1c)I$ztaD0e0su&ACPM%K literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testentities/textures/testentities_cube6.png b/games/minimal/mods/testentities/textures/testentities_cube6.png new file mode 100644 index 0000000000000000000000000000000000000000..5f81a64d91be219377841be129da41e48db7856a GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|uAVNAAr*|tKh7VR;Ks$UGVYtn zG>?`GALMx)cvw0GS~d$xO;G(X;e}L24)dm!Ex8IpflC-4N(h-;ILa1ea)9BgbEgXf ZLrCXGRoR`_<^c_4@O1TaS?83{1OQxYCh!0N literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testentities/textures/testentities_dungeon_master.png b/games/minimal/mods/testentities/textures/testentities_dungeon_master.png new file mode 100644 index 0000000000000000000000000000000000000000..1e31077464eaf2b7e39a24f21687e15b723fb5f1 GIT binary patch literal 2855 zcmYM0dpMMN8^?doGY4akb7M-(N~IVhlu_u>n$~PW>aC5nGi`;H7 z>f*JW*s|n!+_K*~8=k!!-+8+2XQ2R~%K{*nZOS$U7AwKhMDo%#up|Z85{O&^Yw`>4 z13-Stc5&Vx2@Ut0NG}OkAv%%LqvkpSNdjvz3FK$JgTWnC7L}xW7?I9a^tJocl=mv; z(xvaTqOR-@A39RMEpA@HkgF-SLy}$~-zJ1sJU0&e0Ov$ohJ}JOHCy!ot|h2dbL;li z2uOl-JWWia4ys|oMMCpVF>gh}HxZ)2ykR|Be3GN zUvPwYbtcQ}T_@^+Dr3{7x>m0K)|iNZ;kzCrJ3x=%q{B}d+D_x&M_WO4#2`Xs%!Qxe zMMG}TGd!O@w-uMf(j;M_nlVI!vg0MjHhguIAaR0{ws0%JE5b2J475q|L%V`JyB(zq zY^Vmjy~bzcNqo%!x3~D8AOnbw z4#CBm7>>UYSbW>uy7#M^TlHql1POgH8Cx0)#Z2hr1K)v=MB?74%zxjs3?<%`dK@+w2iU?fhsZnUef$@rG5vH3a zW9bJNm^L9b_*GfxJ6p#1V7)(kzfe4J(+s0I+u=rx(@P4HL&&Ex`t{(<_rCwnc@2K z>Rr$<&J%Wc>yA8WFwl|Z=d_##Ztqe`)?ucjn-E}x>}#fSNwgVMl}SY4M(hNRhD*|x z#}O~6y3Tb{`D_AB1y6fv1lCE^4b3GL@Zw|q@J9J(n0Xl;GunflBG|6KUI;Jj;ku1~ zb42%`oq!skc~_sNk_-0C)fJ(Z(`0#pwN=2BAxWYls2|0gps~$8L<6YP9GTJDL}P#4 z$oGZ(($hRZC<49OQSFa8;tb8v;>NqM9<5H(TIkew(7HG#T^y)89?Dk-cGY`O=|#-( z44AHf!-+`4IkFirHQgl9M-HH*Ml7plF7e1TXviv5!}@kRuc4#6PNo>Wpg)(uH3>n#`M}(sHd6~wg5varB(*t0x(tm-J-GwE8*S$DTCH>=wQCA1wbgwe>((N5TgGTG!(;kJ^{q>?&6ZnXo*TTmkDU%0J zp+Gj+7A`Q9=f`U=UH4VMOCJ_k^$V;GQ$+&fK1R=D*n9S+(nKCo`52qrx4;s!e}!ms zn%^h`?U&22$?q3f&@9Yc9FE)T&G5FcijA)~gRK$buY$pa1y)5D#_miU@Z=49>t0)k}lKn5SSwY2uNu12e_QL;*5G627fdXByJMYov!!0)o`|>^l5g zb5H>oD0^{LaS~xY=fh19F6-Qanl3Z6KKTWF*-^#z^FhgVrO8-Ked9%{72Vj@U1xbA z?Ppto732*SvgO@z+OGW@ggy)_->&7uOGOWV8Kn%yY}N+ruPa|t-d<2G2GY3p-|HKL zt2wtyv*E68lG7n>&z6v}&QC@hrt6T>q;eqc(wWkHL2vnMEDHA}2Y7q`_7_K5@t%?X z`#j#Y?{~p{*bRh2g&py2TW-6+<8$gRg2fl}9)bC|yrx{K8kp^gyA+XHh{l)mL_Y>U z=NpP**Ss;DxnQr5nqHrx{F?cW;`%z|V_s_r5}lSU$SVK-V%RXzMzK5zeikq;?<9(HUf_gOYs&|D}|1TGq^~k`m6-Lcy6jvq=`1A5Qsdx3@R8MV=OWDVsONVsbf0q4trKUCjNQqYnk=?|kY1 zc3nfWgK`5V?L4(`b7G|yV=%?~hPNk~YH6EXSGu(!Q@zK>fAiqDq`U6A zG~KFe_^E5ed5e&qmU_D*@eaI2OB8P6Kk@Syz{ApvWTI<0?&MgpC1auy*YVKOsy~JZ;+!1&`B~4yZVbKLxTva? zX~!x4Wgu>GV!8at1eNUfMkf?=RFIu`$2bo1X40lWIkaosMjrM7inH)WAk2k#pya_c zZC#1EJtxjXY~0+JU?~Jz#*C9ijGa*fpmIe}=D3^`+V78Up9%KoscZ)tTv5&I_f7FX z20;^d6tg6Y*EMZh-S@_YIgY?=Tu$kodbnHK}vG20;Bs89o=w$ z@~PX0bwoy1u90e8io1{w@lcvH*FX28eFUS%PL4L#KBA6y4eW@)+7de{_FS;@JGJbP z#R0J>(KKgKRY>@H#o|UmEunwHr7KZ({ME|lo**7nSYYSY+NNn2#F19gv)d*POK~=S zoQT+#x#mRbxl8$Z2r1Fsp_D*7rrxLcoZ#sb+w!OnlkHf+k8KGN_EJunTX#}Yi*b>M zIT=-rub1&U%E`zYeeASw6TiW6hLzAvN&J_?8w@f6;AJZDGyswQKh82}pdJcIUo-3$ SI=%Pbvdd<^*rYXOIFC-3T0Z5s*$(hcR?*%)At9K{0f{vSbu|`r`}?Je8^vp+gncp4Po$f L^>bP0l+XkKkyj%p literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testentities/textures/testentities_upright_sprite2.png b/games/minimal/mods/testentities/textures/testentities_upright_sprite2.png new file mode 100644 index 0000000000000000000000000000000000000000..a79a760e341eb96412b298df8fc072249bfda002 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|cAhSdAr*{U`y1I93^-VSKd#&L ze@ElB1AENowm+D|^ICY_Iu?aJe0(8^J2sRH3$0an=dAEjv|%HY!T;t>;$kh_PP!Z9 SM3{jlF?hQAxvX|*ddEN^0$*sz9iy0HGj z^aF!HJmC}$G?T&8)z4*}Q$iB}^Die( literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testfood/textures/testfood_good2.png b/games/minimal/mods/testfood/textures/testfood_good2.png new file mode 100644 index 0000000000000000000000000000000000000000..e43dda209b1361c4d465ced4d962d551181b87dd GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`5uPrNAr*|t3(S8oA5M{8P}KR* zzC-PDS_`8APk4j0a*o?^fyzT%9J?8UnGUK8u+0$KF=xeJ{;R41cFPzI%=E+^3=_o# rUb8kedVJ1UVxf3ZS2MY4Y824M&x?Hck4y^#+QH!I>gTe~DWM4fIj$@2 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testformspec/callbacks.lua b/games/minimal/mods/testformspec/callbacks.lua new file mode 100644 index 000000000..559380580 --- /dev/null +++ b/games/minimal/mods/testformspec/callbacks.lua @@ -0,0 +1,51 @@ +local callback_test = 0 + +local out = function(player, formname, fields, number) + local snum = "" + if number then + snum = " "..number + end + local msg = "Formspec callback"..snum..": player="..player:get_player_name()..", formname=\""..tostring(formname).."\", fields="..dump(fields) + minetest.chat_send_player(player:get_player_name(), msg) + minetest.log("action", msg) +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if callback_test == 1 then + out(player, formname, fields) + elseif callback_test == 2 then + out(player, formname, fields, 1) + end +end) +minetest.register_on_player_receive_fields(function(player, formname, fields) + if callback_test == 2 then + out(player, formname, fields, 2) + return true -- Disable the first callback + end +end) +minetest.register_on_player_receive_fields(function(player, formname, fields) + if callback_test == 2 then + out(player, formname, fields, 3) + end +end) + +minetest.register_chatcommand("test_formspec_callbacks", { + params = "[ 0 | 1 | 2 ]", + description = "Test: Change formspec callbacks testing mode", + func = function(name, param) + local mode = tonumber(param) + if not mode then + callback_test = (callback_test + 1 % 3) + else + callback_test = mode + end + if callback_test == 1 then + minetest.chat_send_player(name, "Formspec callback test mode 1 enabled: Logging only") + elseif callback_test == 2 then + minetest.chat_send_player(name, "Formspec callback test mode 2 enabled: Three callbacks, disable pre-registered callbacks") + else + callback_test = 0 + minetest.chat_send_player(name, "Formspec callback test disabled!") + end + end +}) diff --git a/games/minimal/mods/testformspec/dummy_items.lua b/games/minimal/mods/testformspec/dummy_items.lua new file mode 100644 index 000000000..2037ae9cf --- /dev/null +++ b/games/minimal/mods/testformspec/dummy_items.lua @@ -0,0 +1,14 @@ +-- This code adds dummy items that are supposed to be used in formspecs +-- for testing item_image formspec elements. + +minetest.register_node("testformspec:node", { + description = "Formspec Test Node", + tiles = { "testformspec_node.png" }, + groups = { dig_immediate = 3, dummy = 1 }, +}) + +minetest.register_craftitem("testformspec:item", { + description = "Formspec Test Item", + inventory_image = "testformspec_item.png", + groups = { dummy = 1 }, +}) diff --git a/games/minimal/mods/testformspec/formspec.lua b/games/minimal/mods/testformspec/formspec.lua new file mode 100644 index 000000000..08c1b6dc0 --- /dev/null +++ b/games/minimal/mods/testformspec/formspec.lua @@ -0,0 +1,381 @@ +local color = minetest.colorize + +local clip_fs = [[ + style_type[label,button,image_button,item_image_button, + tabheader,scrollbar,table,animated_image + ,field,textarea,checkbox,dropdown;noclip=%c] + + label[0,0;A clipping test] + button[0,1;3,0.8;clip_button;A clipping test] + image_button[0,2;3,0.8;testformspec_button_image.png;clip_image_button;A clipping test] + item_image_button[0,3;3,0.8;testformspec:item;clip_item_image_button;A clipping test] + tabheader[0,4.7;3,0.63;clip_tabheader;Clip,Test,Text,Tabs;1;false;false] + field[0,5;3,0.8;clip_field;Title;] + textarea[0,6;3,1;clip_textarea;Title;] + checkbox[0,7.5;clip_checkbox;This is a test;true] + dropdown[0,8;3,0.8;clip_dropdown;Select An Item,One,Two,Three,Four,Five;1] + scrollbar[0,9;3,0.8;horizontal;clip_scrollbar;3] + tablecolumns[text;text] + table[0,10;3,1;clip_table;one,two,three,four;1] + animated_image[-0.5,11;4.5,1;clip_animated_image;testformspec_animation.png;4;100] +]] + +local tabheaders_fs = [[ + tabheader[0,0;10,0.63;tabs_opaque;Opaque,Without,Border;1;false;false] + tabheader[0,1;10,0.63;tabs_opaque_border;Opaque,With,Border;1;false;true] + tabheader[0,2;10,0.63;tabs_transparent;Transparent,Without,Border;1;true;false] + tabheader[0,3;10,0.63;tabs_transparent_border;Transparent,With,Border;1;true;true] + tabheader[0,4;tabs_default;Default,Tabs;1] + tabheader[0,6;10,0.5;tabs_size1;Height=0.5;1;false;false] + tabheader[2,6;10,0.75;tabs_size1;Height=0.75;1;false;false] + tabheader[4,6;10,1;tabs_size2;Height=1;1;false;false] + tabheader[6,6;10,1.25;tabs_size2;Height=1.25;1;false;false] + tabheader[8,6;10,1.5;tabs_size2;Height=1.5;1;false;false] +]] + +local hypertext_basic = [[ +Normal test +This is a normal text. + +style test + + . + + +Tag test +normal +mono +bold +italic +underlined +big +bigger +left +
center
+right +justify. Here comes a blind text: Lorem testum dolor sit amet consecutor celeron fiftifahivus e shadoninia e smalus jokus anrus relsocutoti rubenwardus. Erasputinus hara holisti dominus wusi. Grumarinsti erltusmuate ol fortitusti fla flo, blani burki e sfani fahif. Ultae ratii, e megus gigae don anonimus. Grinus dimondus krockus e nore. Endus finalus nowus comus endus o blindus tekstus. + +Custom tag test + + + + + +color=green +Action: color=green +Action: hovercolor=yellow +size=24 +font=mono +color=green font=mono size=24 + +action test +action + +img test +Normal: + +width=48 height=48: + +float=left: + +float=right: + + +item test +Normal: + +width=48 height=48 + +angle=30,0,0: + +angle=0,30,0: + +angle=0,0,30: + +rotate=yes: + +rotate=100,0,0: + +rotate=0,100,0: + +rotate=0,0,100: + +rotate=50,75,100: + +angle=-30,-45,90 rotate=100,150,-50: +]] + +local hypertext_global = [[ + +This is a test of the global tag. The parameters are: +background=gray margin=20 valign=bottom halign=right color=pink hovercolor=purple size=12 font=mono +action]] + +local hypertext_fs = "hypertext[0,0;11,9;hypertext;"..minetest.formspec_escape(hypertext_basic).."]".. + "hypertext[0,9.5;11,2.5;hypertext;"..minetest.formspec_escape(hypertext_global).."]" + +local style_fs = [[ + style[one_btn1;bgcolor=red;textcolor=yellow;bgcolor_hovered=orange; + bgcolor_pressed=purple] + button[0,0;2.5,0.8;one_btn1;Button] + + style[one_btn2;border=false;textcolor=cyan] ]].. + "button[0,1.05;2.5,0.8;one_btn2;Text " .. color("#FF0", "Yellow") .. [[] + + style[one_btn3;bgimg=testformspec_button_image.png;bgimg_hovered=testformspec_hovered.png; + bgimg_pressed=testformspec_pressed.png] + button[0,2.1;1,1;one_btn3;Border] + + style[one_btn4;bgimg=testformspec_button_image.png;bgimg_hovered=testformspec_hovered.png; + bgimg_pressed=testformspec_pressed.png;border=false] + button[1.25,2.1;1,1;one_btn4;NoBor] + + style[one_btn5;bgimg=testformspec_button_image.png;bgimg_hovered=testformspec_hovered.png; + bgimg_pressed=testformspec_pressed.png;border=false;alpha=false] + button[0,3.35;1,1;one_btn5;Alph] + + style[one_btn6;border=true] + image_button[0,4.6;1,1;testformspec_button_image.png;one_btn6;Border] + + style[one_btn7;border=false] + image_button[1.25,4.6;1,1;testformspec_button_image.png;one_btn7;NoBor] + + style[one_btn8;border=false] + image_button[0,5.85;1,1;testformspec_button_image.png;one_btn8;Border;false;true;testformspec_pressed.png] + + style[one_btn9;border=true] + image_button[1.25,5.85;1,1;testformspec_button_image.png;one_btn9;NoBor;false;false;testformspec_pressed.png] + + style[one_btn10;alpha=false] + image_button[0,7.1;1,1;testformspec_button_image.png;one_btn10;NoAlpha] + + style[one_btn11;alpha=true] + image_button[1.25,7.1;1,1;testformspec_button_image.png;one_btn11;Alpha] + + style[one_btn12;border=true] + item_image_button[0,8.35;1,1;testformspec:item;one_btn12;Border] + + style[one_btn13;border=false] + item_image_button[1.25,8.35;1,1;testformspec:item;one_btn13;NoBor] + + style[one_btn14;border=false;bgimg=testformspec_bg.png;fgimg=testformspec_button_image.png] + style[one_btn14:hovered;bgimg=testformspec_bg_hovered.png;fgimg=testformspec_hovered.png;textcolor=yellow] + style[one_btn14:pressed;bgimg=testformspec_bg_pressed.png;fgimg=testformspec_pressed.png;textcolor=blue] + style[one_btn14:hovered+pressed;textcolor=purple] + image_button[0,9.6;1,1;testformspec_button_image.png;one_btn14;Bg] + + style[one_btn15;border=false;bgimg=testformspec_bg.png;bgimg_hovered=testformspec_bg_hovered.png;bgimg_pressed=testformspec_bg_pressed.png] + item_image_button[1.25,9.6;1,1;testformspec:item;one_btn15;Bg] + + style[one_btn16;border=false;bgimg=testformspec_bg_9slice.png;bgimg_hovered=testformspec_bg_9slice_hovered.png;bgimg_pressed=testformspec_bg_9slice_pressed.png;bgimg_middle=4,6] + button[2.5,9.6;2,1;one_btn16;9-Slice Bg] + + + + container[2.75,0] + + style[one_tb1;textcolor=Yellow] + tabheader[0,3;2.5,0.63;one_tb1;Yellow,Text,Tabs;1;false;false] + + style[one_f1;textcolor=yellow] + field[0,4.25;2.5,0.8;one_f1;Field One;Yellow Text] + + style[one_f2;border=false;textcolor=cyan] + field[0,5.75;2.5,0.8;one_f2;Field Two;Borderless Cyan Text] + + style[one_f3;textcolor=yellow] + textarea[0,7.025;2.5,0.8;one_f3;Label;]] .. + minetest.formspec_escape("Yellow Text\nLine two") .. [[ ] + + style[one_f4;border=false;textcolor=cyan] + textarea[0,8.324999999999999;2.5,0.8;one_f4;Label;]] .. + minetest.formspec_escape("Borderless Cyan Text\nLine two") .. [[ ] + + container_end[] +]] + +local scroll_fs = + "button[8.5,1;4,1;outside;Outside of container]".. + "box[1,1;8,6;#00aa]".. + "scroll_container[1,1;8,6;scrbar;vertical]".. + "button[0,1;1,1;lorem;Lorem]".. + "button[0,10;1,1;ipsum;Ipsum]".. + "pwdfield[2,2;1,1;lorem2;Lorem]".. + "list[current_player;main;4,4;1,5;]".. + "box[2,5;3,2;#ffff00]".. + "image[1,10;3,2;testformspec_item.png]".. + "image[3,1;testformspec_item.png]".. + "item_image[2,6;3,2;testformspec:node]".. + "label[2,15;bla Bli\nfoo bar]".. + "item_image_button[2,3;1,1;testformspec:node;itemimagebutton;ItemImageButton]".. + "tooltip[0,11;3,2;Buz;#f00;#000]".. + "box[0,11;3,2;#00ff00]".. + "hypertext[3,13;3,3;;" .. hypertext_basic .. "]" .. + "container[0,18]".. + "box[1,2;3,2;#0a0a]".. + "scroll_container[1,2;3,2;scrbar2;horizontal;0.06]".. + "button[0,0;6,1;butnest;Nest]".. + "label[10,0.5;nest]".. + "scroll_container_end[]".. + "scrollbar[1,0;3.5,0.3;horizontal;scrbar2;0]".. + "container_end[]".. + "dropdown[0,6;2;hmdrpdwn;apple,bulb;1]".. + "image_button[0,4;2,2;testformspec_button_image.png;imagebutton;bbbbtt;false;true;testformspec_pressed.png]".. + "box[1,22.5;4,1;#a00a]".. + "scroll_container_end[]".. + "scrollbaroptions[max=170]".. -- lowest seen pos is: 0.1*170+6=23 (factor*max+height) + "scrollbar[7.5,0;0.3,4;vertical;scrbar;0]".. + "scrollbar[8,0;0.3,4;vertical;scrbarhmmm;0]".. + "dropdown[0,6;2;hmdrpdwnnn;Outside,of,container;1]" + +--style_type[label;textcolor=green] +--label[0,0;Green] +--style_type[label;textcolor=blue] +--label[0,1;Blue] +--style_type[label;textcolor=;border=true] +--label[1.2,0;Border] +--style_type[label;border=true;bgcolor=red] +--label[1.2,1;Background] +--style_type[label;border=;bgcolor=] +--label[0.75,2;Reset] + + +local pages = { + -- Real Coordinates + [[ + formspec_version[3] + size[12,13] + image_button[0,0;1,1;logo.png;rc_image_button_1x1;1x1] + image_button[1,0;2,2;logo.png;rc_image_button_2x2;2x2] + button[0,2;1,1;rc_button_1x1;1x1] + button[1,2;2,2;rc_button_2x2;2x2] + item_image[0,4;1,1;air] + item_image[1,4;2,2;air] + item_image_button[0,6;1,1;testformspec:node;rc_item_image_button_1x1;1x1] + item_image_button[1,6;2,2;testformspec:node;rc_item_image_button_2x2;2x2] + field[3,.5;3,.5;rc_field;Field;text] + pwdfield[6,.5;3,1;rc_pwdfield;Password Field] + field[3,1;3,1;;Read-Only Field;text] + textarea[3,2;3,.5;rc_textarea_small;Textarea;text] + textarea[6,2;3,2;rc_textarea_big;Textarea;text\nmore text] + textarea[3,3;3,1;;Read-Only Textarea;text\nmore text] + textlist[3,4;3,2;rc_textlist;Textlist,Perfect Coordinates;1;false] + tableoptions[highlight=#ABCDEF75;background=#00000055;border=false] + table[6,4;3,2;rc_table;Table,Cool Stuff,Foo,Bar;2] + dropdown[3,6;3,1;rc_dropdown_small;This,is,a,dropdown;1] + dropdown[6,6;3,2;rc_dropdown_big;I,am,a,bigger,dropdown;5] + image[0,8;3,2;ignore.png] + box[3,7;3,1;#00A3FF] + checkbox[3,8;rc_checkbox_1;Check me!;false] + checkbox[3,9;rc_checkbox_2;Uncheck me now!;true] + scrollbar[0,11.5;11.5,.5;horizontal;rc_scrollbar_horizontal;500] + scrollbar[11.5,0;.5,11.5;vertical;rc_scrollbar_vertical;0] + list[current_player;main;6,8;3,2;1] + button[9,0;2.5,1;rc_empty_button_1;] + button[9,1;2.5,1;rc_empty_button_2;] + button[9,2;2.5,1;rc_empty_button_3;] ]].. + "label[9,0.5;This is a label.\nLine\nLine\nLine\nEnd]".. + [[button[9,3;1,1;rc_empty_button_4;] + vertlabel[9,4;VERT] + label[10,3;HORIZ] + tabheader[8,0;6,0.65;rc_tabheader;Tab 1,Tab 2,Tab 3,Secrets;1;false;false] + ]], + -- Style + + "formspec_version[3]size[12,13]" .. + ("label[0.375,0.375;Styled - %s %s]"):format( + color("#F00", "red text"), + color("#77FF00CC", "green text")) .. + "label[6.375,0.375;Unstyled]" .. + "box[0,0.75;12,0.1;#999]" .. + "box[6,0.85;0.1,11.15;#999]" .. + "container[0.375,1.225]" .. + style_fs .. + "container_end[]container[6.375,1.225]" .. + style_fs:gsub("one_", "two_"):gsub("style%[[^%]]+%]", ""):gsub("style_type%[[^%]]+%]", "") .. + "container_end[]", + + -- Noclip + "formspec_version[3]size[12,13]" .. + "label[0.1,0.5;Clip]" .. + "container[-2.5,1]" .. clip_fs:gsub("%%c", "false") .. "container_end[]" .. + "label[11,0.5;Noclip]" .. + "container[11.5,1]" .. clip_fs:gsub("%%c", "true") .. "container_end[]", + + -- Hypertext + "size[12,13]real_coordinates[true]" .. + "container[0.5,0.5]" .. hypertext_fs .. "container_end[]", + + -- Tabheaders + "size[12,13]real_coordinates[true]" .. + "container[0.5,1.5]" .. tabheaders_fs .. "container_end[]", + + -- Animation + [[ + formspec_version[3] + size[12,13] + animated_image[0.5,0.5;1,1;;testformspec_animation.png;4;100] + animated_image[0.5,1.75;1,1;;testformspec_animation.jpg;4;100] + animated_image[1.75,0.5;1,1;;testformspec_animation.png;100;100] + animated_image[3,0.5;1,1;ani_img_1;testformspec_animation.png;4;1000] + button[4.25,0.5;1,1;ani_btn_1;Current +Number] + animated_image[3,1.75;1,1;ani_img_2;testformspec_animation.png;4;1000;2] + button[4.25,1.75;1,1;ani_btn_2;Current +Number] + animated_image[3,3;1,1;;testformspec_animation.png;4;0] + animated_image[3,4.25;1,1;;testformspec_animation.png;4;0;3] + animated_image[5.5,0.5;5,2;;testformspec_animation.png;4;100] + animated_image[5.5,2.75;5,2;;testformspec_animation.jpg;4;100] + ]], + + -- Scroll containers + "formspec_version[3]size[12,13]" .. + scroll_fs, +} + +local function show_test_formspec(pname, page_id) + page_id = page_id or 2 + + local fs = pages[page_id] .. "tabheader[0,0;8,0.65;maintabs;Real Coord,Styles,Noclip,Hypertext,Tabs,Anim,ScrollC;" .. page_id .. ";false;false]" + + minetest.show_formspec(pname, "testformspec:formspec", fs) +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "testformspec:formspec" then + return false + end + + + if fields.maintabs then + show_test_formspec(player:get_player_name(), tonumber(fields.maintabs)) + return true + end + + if fields.ani_img_1 and fields.ani_btn_1 then + minetest.chat_send_player(player:get_player_name(), "ani_img_1 = " .. tostring(fields.ani_img_1)) + return true + elseif fields.ani_img_2 and fields.ani_btn_2 then + minetest.chat_send_player(player:get_player_name(), "ani_img_2 = " .. tostring(fields.ani_img_2)) + return true + end + + if fields.hypertext then + minetest.chat_send_player(player:get_player_name(), "Hypertext action received: " .. tostring(fields.hypertext)) + return true + end +end) + +minetest.register_chatcommand("test_formspec", { + params = "", + description = "Open the test formspec", + func = function(name) + if not minetest.get_player_by_name(name) then + return false, "You need to be online!" + end + + show_test_formspec(name) + return true + end, +}) diff --git a/games/minimal/mods/testformspec/init.lua b/games/minimal/mods/testformspec/init.lua new file mode 100644 index 000000000..23b565f08 --- /dev/null +++ b/games/minimal/mods/testformspec/init.lua @@ -0,0 +1,3 @@ +dofile(minetest.get_modpath("testformspec").."/dummy_items.lua") +dofile(minetest.get_modpath("testformspec").."/formspec.lua") +dofile(minetest.get_modpath("testformspec").."/callbacks.lua") diff --git a/games/minimal/mods/testformspec/mod.conf b/games/minimal/mods/testformspec/mod.conf new file mode 100644 index 000000000..00eac307a --- /dev/null +++ b/games/minimal/mods/testformspec/mod.conf @@ -0,0 +1,2 @@ +name = testformspec +description = Contains an example formspec to test all the features of formspecs diff --git a/games/minimal/mods/test/textures/test_animation.jpg b/games/minimal/mods/testformspec/textures/testformspec_animation.jpg similarity index 100% rename from games/minimal/mods/test/textures/test_animation.jpg rename to games/minimal/mods/testformspec/textures/testformspec_animation.jpg diff --git a/games/minimal/mods/testformspec/textures/testformspec_animation.png b/games/minimal/mods/testformspec/textures/testformspec_animation.png new file mode 100644 index 0000000000000000000000000000000000000000..b972e5dbbb6e6bfa4af0f88c5fd0b334f318672c GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^0zmA*#0(_!gymU*6lZ`>h${obivR!r19|LCauq;| zu_VYZn8D%MjWi&q+SA1`q=K=xmyzvofPl;YL-Q7J7R|DCy3l%0!P58QJq5?&Q|G*O zG@aP{pX{HR>#oC6&&52$k^c|ZU+(w8FW$YKlXvCWo>Oozp)WsLIcn0|rbC({Qm-GXhFf1U%K!QkoY K=d#Wzp$P!m%}>Pu literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testformspec/textures/testformspec_bg.png b/games/minimal/mods/testformspec/textures/testformspec_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..cd1e50900354b48dfeadd44e74fb2926399e96b4 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|%APKcAr*|tGpzUaR!o^Kd!Auo phfCwXh0MznLk_QC<8ZZMVsJcTmus{sG#03w!PC{xWt~$(69C7B7{CAk literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testformspec/textures/testformspec_bg_9slice.png b/games/minimal/mods/testformspec/textures/testformspec_bg_9slice.png new file mode 100644 index 0000000000000000000000000000000000000000..34433ac82a89114e0be99fd1f2a9bd1bfdfd0a2e GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv{s5m4*Z=?j1DUzm@pGrQ1^S1s zuk85)zhDN3XE)M-979hR$B+ufWCbRUMGS0gZmG#C2`UE;WISnNnc~Rg<_;P7vKN@ literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testformspec/textures/testformspec_bg_pressed.png b/games/minimal/mods/testformspec/textures/testformspec_bg_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb5fc21ecd7d0ac75f0bb293d91269c4fdc33f0 GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|N}eu`Ar*|t1*PAV1Z?cV1 zTwv#+upOL-IAS#EHn8 zH+$IF7>^&1JaHn5ot=@9k>THa1{M}ZOG{=xpi;(?AirP+hi5m^fE-&-7srqa#$*R( zCnkYeCtVm136u#oa9JdZCI~ff8L%A;QE?76=rDK8ICp5Nz~yZ+2~6IGmCkFELmW2C ZGkh^&|C2f?B?f2^gQu&X%Q~loCIB4yG;06= literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testformspec/textures/testformspec_node.png b/games/minimal/mods/testformspec/textures/testformspec_node.png new file mode 100644 index 0000000000000000000000000000000000000000..c107f28a31020c89606f4e8b7882bac829aed00e GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|7M?DSAr*|t7cN}bQ5V}>F^RDw z-S@RB+tsVn7``^-G!$?wdb6gcgI6U(BGIhp7Q;gU7Y=C;uZIjfSQ2M{&S*XgG=ss@ L)z4*}Q$iB}*NP+k literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testformspec/textures/testformspec_pressed.png b/games/minimal/mods/testformspec/textures/testformspec_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..45c504f275aa726991eb2b327792aa2855187d37 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ii4<#Ar*|t761Ngx=Q%u{MrA_ zUf{o?;D2|s2mH5_+x{E%t9Bkz*s5Tw!FE8UMeg&XLkX2DTqAfJG!L~qW_1`hG&Vlm zzhsFD$K+H7C*>yJdS;DpOh+3#PBYwcRrXzO%0!~fKjbhR!6hQvczTZG*f#{unS N@O1TaS?83{1OQtbI&%O3 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/README.md b/games/minimal/mods/testnodes/README.md new file mode 100644 index 000000000..13ed972c0 --- /dev/null +++ b/games/minimal/mods/testnodes/README.md @@ -0,0 +1,11 @@ +# Test Nodes + +This mod contains a bunch of basic nodes to test development stuff. +Most nodes are kept as minimal as possible in order to show off one particular feature of the engine, to make testing stuff easier. + +This mod includes tests for: + +* drawtypes +* paramtype2's +* node properties such as damage, drowning, falling, etc. +* other random stuff diff --git a/games/minimal/mods/testnodes/drawtypes.lua b/games/minimal/mods/testnodes/drawtypes.lua new file mode 100644 index 000000000..35fda960f --- /dev/null +++ b/games/minimal/mods/testnodes/drawtypes.lua @@ -0,0 +1,517 @@ +--[[ Drawtype Test: This file tests out and provides examples for +all drawtypes in Minetest. It is attempted to keep the node +definitions as simple and minimal as possible to keep +side-effects to a minimum. + +How to read the node definitions: +There are two parts which are separated by 2 newlines: +The first part contains the things that are more or less essential +for defining the drawtype (except description, which is +at the top for readability). +The second part (after the 2 newlines) contains stuff that are +unrelated to the drawtype, stuff that is mostly there to make +testing this node easier and more convenient. +]] + +local S = minetest.get_translator("testnodes") + +-- If set to true, will show an inventory image for nodes that have no inventory image as of Minetest 5.1.0. +-- This is due to . +-- This is only added to make the items more visible to avoid confusion, but you will no longer see +-- the default inventory images for these items. When you want to test the default inventory image of drawtypes, +-- this should be turned off. +-- TODO: Remove support for fallback inventory image as soon #9209 is fixed. +local SHOW_FALLBACK_IMAGE = minetest.settings:get_bool("testnodes_show_fallback_image", false) + +local fallback_image = function(img) + if SHOW_FALLBACK_IMAGE then + return img + else + return nil + end +end + +-- A regular cube +minetest.register_node("testnodes:normal", { + description = S("Normal Drawtype Test Node"), + drawtype = "normal", + tiles = { "testnodes_normal.png" }, + + groups = { dig_immediate = 3 }, +}) + +-- Standard glasslike node +minetest.register_node("testnodes:glasslike", { + description = S("Glasslike Drawtype Test Node"), + drawtype = "glasslike", + paramtype = "light", + tiles = { "testnodes_glasslike.png" }, + + groups = { dig_immediate = 3 }, +}) + +-- Glasslike framed with the two textures (normal and "detail") +minetest.register_node("testnodes:glasslike_framed", { + description = S("Glasslike Framed Drawtype Test Node"), + drawtype = "glasslike_framed", + paramtype = "light", + tiles = { + "testnodes_glasslike_framed.png", + "testnodes_glasslike_detail.png", + }, + + + sunlight_propagates = true, + groups = { dig_immediate = 3 }, +}) + +-- Like the one above, but without the "detail" texture (texture 2). +-- This node was added to see how the engine behaves when the "detail" texture +-- is missing. +minetest.register_node("testnodes:glasslike_framed_no_detail", { + description = S("Glasslike Framed without Detail Drawtype Test Node"), + drawtype = "glasslike_framed", + paramtype = "light", + tiles = { "testnodes_glasslike_framed2.png" }, + + + sunlight_propagates = true, + groups = { dig_immediate = 3 }, +}) + + +minetest.register_node("testnodes:glasslike_framed_optional", { + description = S("Glasslike Framed Optional Drawtype Test Node"), + drawtype = "glasslike_framed_optional", + paramtype = "light", + tiles = { + "testnodes_glasslike_framed_optional.png", + "testnodes_glasslike_detail.png", + }, + + + sunlight_propagates = true, + groups = { dig_immediate = 3 }, +}) + + + +minetest.register_node("testnodes:allfaces", { + description = S("Allfaces Drawtype Test Node"), + drawtype = "allfaces", + paramtype = "light", + tiles = { "testnodes_allfaces.png" }, + + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:allfaces_optional", { + description = S("Allfaces Optional Drawtype Test Node"), + drawtype = "allfaces_optional", + paramtype = "light", + tiles = { "testnodes_allfaces_optional.png" }, + + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:allfaces_optional_waving", { + description = S("Waving Allfaces Optional Drawtype Test Node"), + drawtype = "allfaces_optional", + paramtype = "light", + tiles = { "testnodes_allfaces_optional.png^[brighten" }, + waving = 2, + + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:firelike", { + description = S("Firelike Drawtype Test Node"), + drawtype = "firelike", + paramtype = "light", + tiles = { "testnodes_firelike.png" }, + + + walkable = false, + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:fencelike", { + description = S("Fencelike Drawtype Test Node"), + drawtype = "fencelike", + paramtype = "light", + tiles = { "testnodes_fencelike.png" }, + + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:torchlike", { + description = S("Wallmounted Torchlike Drawtype Test Node"), + drawtype = "torchlike", + paramtype = "light", + paramtype2 = "wallmounted", + tiles = { + "testnodes_torchlike_floor.png", + "testnodes_torchlike_ceiling.png", + "testnodes_torchlike_wall.png", + }, + + + walkable = false, + sunlight_propagates = true, + groups = { dig_immediate = 3 }, + inventory_image = fallback_image("testnodes_torchlike_floor.png"), +}) + +minetest.register_node("testnodes:signlike", { + description = S("Wallmounted Signlike Drawtype Test Node"), + drawtype = "signlike", + paramtype = "light", + paramtype2 = "wallmounted", + tiles = { "testnodes_signlike.png" }, + + + walkable = false, + groups = { dig_immediate = 3 }, + sunlight_propagates = true, + inventory_image = fallback_image("testnodes_signlike.png"), +}) + +minetest.register_node("testnodes:plantlike", { + description = S("Plantlike Drawtype Test Node"), + drawtype = "plantlike", + paramtype = "light", + tiles = { "testnodes_plantlike.png" }, + + + walkable = false, + sunlight_propagates = true, + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:plantlike_waving", { + description = S("Waving Plantlike Drawtype Test Node"), + drawtype = "plantlike", + paramtype = "light", + tiles = { "testnodes_plantlike_waving.png" }, + waving = 1, + + + walkable = false, + sunlight_propagates = true, + groups = { dig_immediate = 3 }, +}) + + + +-- param2 will rotate +minetest.register_node("testnodes:plantlike_degrotate", { + description = S("Degrotate Plantlike Drawtype Test Node"), + drawtype = "plantlike", + paramtype = "light", + paramtype2 = "degrotate", + tiles = { "testnodes_plantlike_degrotate.png" }, + + + walkable = false, + sunlight_propagates = true, + groups = { dig_immediate = 3 }, +}) + +-- param2 will change height +minetest.register_node("testnodes:plantlike_leveled", { + description = S("Leveled Plantlike Drawtype Test Node"), + drawtype = "plantlike", + paramtype = "light", + paramtype2 = "leveled", + tiles = { + { name = "testnodes_plantlike_leveled.png", tileable_vertical = true }, + }, + + + -- We set a default param2 here only for convenience, to make the "plant" visible after placement + place_param2 = 8, + walkable = false, + sunlight_propagates = true, + groups = { dig_immediate = 3 }, +}) + +-- param2 changes shape +minetest.register_node("testnodes:plantlike_meshoptions", { + description = S("Meshoptions Plantlike Drawtype Test Node"), + drawtype = "plantlike", + paramtype = "light", + paramtype2 = "meshoptions", + tiles = { "testnodes_plantlike_meshoptions.png" }, + + + walkable = false, + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:plantlike_rooted", { + description = S("Rooted Plantlike Drawtype Test Node"), + drawtype = "plantlike_rooted", + paramtype = "light", + tiles = { "testnodes_plantlike_rooted_base.png" }, + special_tiles = { "testnodes_plantlike_rooted.png" }, + + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:plantlike_rooted_waving", { + description = S("Waving Rooted Plantlike Drawtype Test Node"), + drawtype = "plantlike_rooted", + paramtype = "light", + tiles = { + "testnodes_plantlike_rooted_base.png", + "testnodes_plantlike_rooted_base.png", + "testnodes_plantlike_rooted_base_side_waving.png", + }, + special_tiles = { "testnodes_plantlike_rooted_waving.png" }, + waving = 1, + + groups = { dig_immediate = 3 }, +}) + +-- param2 changes height +minetest.register_node("testnodes:plantlike_rooted_leveled", { + description = S("Leveled Rooted Plantlike Drawtype Test Node"), + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "leveled", + tiles = { + "testnodes_plantlike_rooted_base.png", + "testnodes_plantlike_rooted_base.png", + "testnodes_plantlike_rooted_base_side_leveled.png", + }, + special_tiles = { + { name = "testnodes_plantlike_rooted_leveled.png", tileable_vertical = true }, + }, + + + -- We set a default param2 here only for convenience, to make the "plant" visible after placement + place_param2 = 8, + groups = { dig_immediate = 3 }, +}) + +-- param2 changes shape +minetest.register_node("testnodes:plantlike_rooted_meshoptions", { + description = S("Meshoptions Rooted Plantlike Drawtype Test Node"), + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + tiles = { + "testnodes_plantlike_rooted_base.png", + "testnodes_plantlike_rooted_base.png", + "testnodes_plantlike_rooted_base_side_meshoptions.png", + }, + special_tiles = { + "testnodes_plantlike_rooted_meshoptions.png", + }, + + groups = { dig_immediate = 3 }, +}) + +-- param2 changes rotation +minetest.register_node("testnodes:plantlike_rooted_degrotate", { + description = S("Degrotate Rooted Plantlike Drawtype Test Node"), + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "degrotate", + tiles = { + "testnodes_plantlike_rooted_base.png", + "testnodes_plantlike_rooted_base.png", + "testnodes_plantlike_rooted_base_side_degrotate.png", + }, + special_tiles = { + "testnodes_plantlike_rooted_degrotate.png", + }, + + groups = { dig_immediate = 3 }, +}) + +-- Demonstrative liquid nodes, source and flowing form. This is only the +-- drawtype, no physical liquid properties are used +minetest.register_node("testnodes:liquid", { + description = S("Source Liquid Drawtype Test Node"), + drawtype = "liquid", + paramtype = "light", + tiles = { + "testnodes_liquidsource.png", + }, + special_tiles = { + {name="testnodes_liquidsource.png", backface_culling=false}, + {name="testnodes_liquidsource.png", backface_culling=true}, + }, + use_texture_alpha = true, + + + walkable = false, + liquid_alternative_flowing = "testnodes:liquid_flowing", + liquid_alternative_source = "testnodes:liquid", + groups = { dig_immediate = 3 }, +}) +minetest.register_node("testnodes:liquid_flowing", { + description = S("Flowing Liquid Drawtype Test Node"), + drawtype = "flowingliquid", + paramtype = "light", + paramtype2 = "flowingliquid", + tiles = { + "testnodes_liquidflowing.png", + }, + special_tiles = { + {name="testnodes_liquidflowing.png", backface_culling=false}, + {name="testnodes_liquidflowing.png", backface_culling=false}, + }, + use_texture_alpha = true, + + + walkable = false, + liquid_alternative_flowing = "testnodes:liquid_flowing", + liquid_alternative_source = "testnodes:liquid", + groups = { dig_immediate = 3 }, +}) +minetest.register_node("testnodes:liquid_waving", { + description = S("Waving Source Liquid Drawtype Test Node"), + drawtype = "liquid", + paramtype = "light", + tiles = { + "testnodes_liquidsource.png^[brighten", + }, + special_tiles = { + {name="testnodes_liquidsource.png^[brighten", backface_culling=false}, + {name="testnodes_liquidsource.png^[brighten", backface_culling=true}, + }, + use_texture_alpha = true, + waving = 3, + + + walkable = false, + liquid_alternative_flowing = "testnodes:liquid_flowing", + liquid_alternative_source = "testnodes:liquid", + groups = { dig_immediate = 3 }, +}) +minetest.register_node("testnodes:liquid_flowing_waving", { + description = S("Waving Flowing Liquid Drawtype Test Node"), + drawtype = "flowingliquid", + paramtype = "light", + paramtype2 = "flowingliquid", + tiles = { + "testnodes_liquidflowing.png^[brighten", + }, + special_tiles = { + {name="testnodes_liquidflowing.png^[brighten", backface_culling=false}, + {name="testnodes_liquidflowing.png^[brighten", backface_culling=false}, + }, + use_texture_alpha = true, + waving = 3, + + + walkable = false, + liquid_alternative_flowing = "testnodes:liquid_flowing", + liquid_alternative_source = "testnodes:liquid", + groups = { dig_immediate = 3 }, +}) + + + +-- Invisible node +minetest.register_node("testnodes:airlike", { + description = S("Airlike Drawtype Test Node"), + drawtype = "airlike", + paramtype = "light", + + + walkable = false, + groups = { dig_immediate = 3 }, + sunlight_propagates = true, + inventory_image = fallback_image("testnodes_airlike.png"), +}) + +-- param2 changes liquid height +minetest.register_node("testnodes:glassliquid", { + description = S("Glasslike Liquid Level Drawtype Test Node"), + drawtype = "glasslike_framed", + paramtype = "light", + paramtype2 = "glasslikeliquidlevel", + tiles = { + "testnodes_glasslikeliquid.png", + }, + special_tiles = { + "testnodes_liquid.png", + }, + + groups = { dig_immediate = 3 }, +}) + +-- Adding many raillike examples, primarily to demonstrate the behavior of +-- "raillike groups". Nodes of the same type (rail, groupless, line, street) +-- should connect to nodes of the same "rail type" (=same shape, different +-- color) only. +local rails = { + { "rail", {"testnodes_rail_straight.png", "testnodes_rail_curved.png", "testnodes_rail_t_junction.png", "testnodes_rail_crossing.png"} }, + { "line", {"testnodes_line_straight.png", "testnodes_line_curved.png", "testnodes_line_t_junction.png", "testnodes_line_crossing.png"}, }, + { "street", {"testnodes_street_straight.png", "testnodes_street_curved.png", "testnodes_street_t_junction.png", "testnodes_street_crossing.png"}, }, + -- the "groupless" nodes are nodes in which the "connect_to_raillike" group is not set + { "groupless", {"testnodes_rail2_straight.png", "testnodes_rail2_curved.png", "testnodes_rail2_t_junction.png", "testnodes_rail2_crossing.png"} }, +} +local colors = { "", "cyan", "red" } + +for r=1, #rails do + local id = rails[r][1] + local tiles = rails[r][2] + local raillike_group + if id ~= "groupless" then + raillike_group = minetest.raillike_group(id) + end + for c=1, #colors do + local color + if colors[c] ~= "" then + color = colors[c] + end + minetest.register_node("testnodes:raillike_"..id..c, { + description = S("Raillike Drawtype Test Node: @1 @2", id, c), + drawtype = "raillike", + paramtype = "light", + tiles = tiles, + groups = { connect_to_raillike = raillike_group, dig_immediate = 3 }, + + + color = color, + selection_box = { + type = "fixed", + fixed = {{-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}}, + }, + sunlight_propagates = true, + walkable = false, + }) + end +end + + + +-- Add visual_scale variants of previous nodes for half and double size +local scale = function(subname, desc_double, desc_half) + local original = "testnodes:"..subname + local def = table.copy(minetest.registered_items[original]) + def.visual_scale = 2.0 + def.description = desc_double + minetest.register_node("testnodes:"..subname.."_double", def) + def = table.copy(minetest.registered_items[original]) + def.visual_scale = 0.5 + def.description = desc_half + minetest.register_node("testnodes:"..subname.."_half", def) +end + +scale("plantlike", + S("Double-sized Plantlike Drawtype Test Node"), + S("Half-sized Plantlike Drawtype Test Node")) +scale("torchlike", + S("Double-sized Wallmounted Torchlike Drawtype Test Node"), + S("Half-sized Wallmounted Torchlike Drawtype Test Node")) +scale("signlike", + S("Double-sized Wallmounted Signlike Drawtype Test Node"), + S("Half-sized Wallmounted Signlike Drawtype Test Node")) +scale("firelike", + S("Double-sized Firelike Drawtype Test Node"), + S("Half-sized Firelike Drawtype Test Node")) diff --git a/games/minimal/mods/testnodes/init.lua b/games/minimal/mods/testnodes/init.lua new file mode 100644 index 000000000..92e2c5630 --- /dev/null +++ b/games/minimal/mods/testnodes/init.lua @@ -0,0 +1,10 @@ +local path = minetest.get_modpath(minetest.get_current_modname()) + +dofile(path.."/drawtypes.lua") +dofile(path.."/meshes.lua") +dofile(path.."/nodeboxes.lua") +dofile(path.."/param2.lua") +dofile(path.."/properties.lua") +dofile(path.."/liquids.lua") +dofile(path.."/light.lua") +dofile(path.."/textures.lua") diff --git a/games/minimal/mods/testnodes/light.lua b/games/minimal/mods/testnodes/light.lua new file mode 100644 index 000000000..94409e83f --- /dev/null +++ b/games/minimal/mods/testnodes/light.lua @@ -0,0 +1,48 @@ +-- Test Nodes: Light test + +local S = minetest.get_translator("testnodes") + +-- All possible light levels +for i=1, minetest.LIGHT_MAX do + minetest.register_node("testnodes:light"..i, { + description = S("Light Source (@1)", i), + paramtype = "light", + light_source = i, + + + tiles ={"testnodes_light_"..i..".png"}, + drawtype = "glasslike", + walkable = false, + sunlight_propagates = true, + is_ground_content = false, + groups = {dig_immediate=3}, + }) +end + +-- Lets light through, but not sunlight, leading to a +-- reduction in light level when light passes through +minetest.register_node("testnodes:sunlight_filter", { + description = S("Sunlight Filter"), + paramtype = "light", + + + drawtype = "glasslike", + tiles = { + "testnodes_sunlight_filter.png", + }, + groups = { dig_immediate = 3 }, +}) + +-- Lets light and sunlight through without obstruction +minetest.register_node("testnodes:sunlight_propagator", { + description = S("Sunlight Propagator"), + paramtype = "light", + sunlight_propagates = true, + + + drawtype = "glasslike", + tiles = { + "testnodes_sunlight_filter.png^[brighten", + }, + groups = { dig_immediate = 3 }, +}) diff --git a/games/minimal/mods/testnodes/liquids.lua b/games/minimal/mods/testnodes/liquids.lua new file mode 100644 index 000000000..e316782ad --- /dev/null +++ b/games/minimal/mods/testnodes/liquids.lua @@ -0,0 +1,91 @@ +-- Add liquids for ranges and viscosity levels 0-8 + +for d=0, 8 do + minetest.register_node("testnodes:rliquid_"..d, { + description = "Test Liquid Source, Range "..d, + drawtype = "liquid", + tiles = {"testnodes_liquidsource_r"..d..".png"}, + special_tiles = { + {name = "testnodes_liquidsource_r"..d..".png", backface_culling = false}, + {name = "testnodes_liquidsource_r"..d..".png", backface_culling = true}, + }, + alpha = 192, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + liquidtype = "source", + liquid_alternative_flowing = "testnodes:rliquid_flowing_"..d, + liquid_alternative_source = "testnodes:rliquid_"..d, + liquid_range = d, + }) + + minetest.register_node("testnodes:rliquid_flowing_"..d, { + description = "Flowing Test Liquid, Range "..d, + drawtype = "flowingliquid", + tiles = {"testnodes_liquidflowing_r"..d..".png"}, + special_tiles = { + {name = "testnodes_liquidflowing_r"..d..".png", backface_culling = false}, + {name = "testnodes_liquidflowing_r"..d..".png", backface_culling = false}, + }, + alpha = 192, + paramtype = "light", + paramtype2 = "flowingliquid", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + liquidtype = "flowing", + liquid_alternative_flowing = "testnodes:rliquid_flowing_"..d, + liquid_alternative_source = "testnodes:rliquid_"..d, + liquid_range = d, + }) + + local mod = "^[colorize:#000000:127" + minetest.register_node("testnodes:vliquid_"..d, { + description = "Test Liquid Source, Viscosity "..d, + drawtype = "liquid", + tiles = {"testnodes_liquidsource_r"..d..".png"..mod}, + special_tiles = { + {name = "testnodes_liquidsource_r"..d..".png"..mod, backface_culling = false}, + {name = "testnodes_liquidsource_r"..d..".png"..mod, backface_culling = true}, + }, + alpha = 192, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + liquidtype = "source", + liquid_alternative_flowing = "testnodes:vliquid_flowing_"..d, + liquid_alternative_source = "testnodes:vliquid_"..d, + liquid_viscosity = d, + }) + + minetest.register_node("testnodes:vliquid_flowing_"..d, { + description = "Flowing Test Liquid, Viscosity "..d, + drawtype = "flowingliquid", + tiles = {"testnodes_liquidflowing_r"..d..".png"..mod}, + special_tiles = { + {name = "testnodes_liquidflowing_r"..d..".png"..mod, backface_culling = false}, + {name = "testnodes_liquidflowing_r"..d..".png"..mod, backface_culling = false}, + }, + alpha = 192, + paramtype = "light", + paramtype2 = "flowingliquid", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + liquidtype = "flowing", + liquid_alternative_flowing = "testnodes:vliquid_flowing_"..d, + liquid_alternative_source = "testnodes:vliquid_"..d, + liquid_viscosity = d, + }) + +end diff --git a/games/minimal/mods/testnodes/meshes.lua b/games/minimal/mods/testnodes/meshes.lua new file mode 100644 index 000000000..900abc180 --- /dev/null +++ b/games/minimal/mods/testnodes/meshes.lua @@ -0,0 +1,145 @@ +-- Meshes + +local S = minetest.get_translator("testnodes") + +local ocorner_cbox = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, + {-0.5, -0.25, -0.25, 0.25, 0, 0.5}, + {-0.5, 0, 0, 0, 0.25, 0.5}, + {-0.5, 0.25, 0.25, -0.25, 0.5, 0.5} + } +} + +local tall_pyr_cbox = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }, + { -0.375, -0.25, -0.375, 0.375, 0, 0.375}, + { -0.25, 0, -0.25, 0.25, 0.25, 0.25}, + { -0.125, 0.25, -0.125, 0.125, 0.5, 0.125} + } +} + +-- Normal mesh +minetest.register_node("testnodes:mesh", { + description = S("Mesh Test Node"), + drawtype = "mesh", + mesh = "testnodes_pyramid.obj", + tiles = {"testnodes_mesh_stripes2.png"}, + paramtype = "light", + collision_box = tall_pyr_cbox, + + groups = {dig_immediate=3}, +}) + +-- Facedir mesh: outer corner slope +minetest.register_node("testnodes:mesh_facedir", { + description = S("Facedir Mesh Test Node"), + drawtype = "mesh", + mesh = "testnodes_ocorner.obj", + tiles = {"testnodes_mesh_stripes.png"}, + paramtype = "light", + paramtype2 = "facedir", + collision_box = ocorner_cbox, + + groups = {dig_immediate=3}, +}) + +minetest.register_node("testnodes:mesh_colorfacedir", { + description = S("Color Facedir Mesh Test Node"), + drawtype = "mesh", + mesh = "testnodes_ocorner.obj", + tiles = {"testnodes_mesh_stripes3.png"}, + paramtype = "light", + paramtype2 = "colorfacedir", + palette = "testnodes_palette_facedir.png", + collision_box = ocorner_cbox, + + groups = {dig_immediate=3}, +}) + +-- Wallmounted mesh: pyramid +minetest.register_node("testnodes:mesh_wallmounted", { + description = S("Wallmounted Mesh Test Node"), + drawtype = "mesh", + mesh = "testnodes_pyramid.obj", + tiles = {"testnodes_mesh_stripes2.png"}, + paramtype = "light", + paramtype2 = "wallmounted", + collision_box = tall_pyr_cbox, + + groups = {dig_immediate=3}, +}) + +minetest.register_node("testnodes:mesh_colorwallmounted", { + description = S("Color Wallmounted Mesh Test Node"), + drawtype = "mesh", + mesh = "testnodes_pyramid.obj", + tiles = {"testnodes_mesh_stripes3.png"}, + paramtype = "light", + paramtype2 = "colorwallmounted", + palette = "testnodes_palette_wallmounted.png", + collision_box = tall_pyr_cbox, + + groups = {dig_immediate=3}, +}) + + +minetest.register_node("testnodes:mesh_double", { + description = S("Double-sized Mesh Test Node"), + drawtype = "mesh", + mesh = "testnodes_pyramid.obj", + tiles = {"testnodes_mesh_stripes2.png"}, + paramtype = "light", + collision_box = tall_pyr_cbox, + visual_scale = 2, + + groups = {dig_immediate=3}, +}) +minetest.register_node("testnodes:mesh_half", { + description = S("Half-sized Mesh Test Node"), + drawtype = "mesh", + mesh = "testnodes_pyramid.obj", + tiles = {"testnodes_mesh_stripes2.png"}, + paramtype = "light", + collision_box = tall_pyr_cbox, + visual_scale = 0.5, + + groups = {dig_immediate=3}, +}) + +minetest.register_node("testnodes:mesh_waving1", { + description = S("Plantlike-waving Mesh Test Node"), + drawtype = "mesh", + mesh = "testnodes_pyramid.obj", + tiles = {"testnodes_mesh_stripes4.png^[multiply:#B0FFB0"}, + paramtype = "light", + collision_box = tall_pyr_cbox, + waving = 1, + + groups = {dig_immediate=3}, +}) +minetest.register_node("testnodes:mesh_waving2", { + description = S("Leaflike-waving Mesh Test Node"), + drawtype = "mesh", + mesh = "testnodes_pyramid.obj", + tiles = {"testnodes_mesh_stripes4.png^[multiply:#FFFFB0"}, + paramtype = "light", + collision_box = tall_pyr_cbox, + waving = 2, + + groups = {dig_immediate=3}, +}) +minetest.register_node("testnodes:mesh_waving3", { + description = S("Liquidlike-waving Mesh Test Node"), + drawtype = "mesh", + mesh = "testnodes_pyramid.obj", + tiles = {"testnodes_mesh_stripes4.png^[multiply:#B0B0FF"}, + paramtype = "light", + collision_box = tall_pyr_cbox, + waving = 3, + + groups = {dig_immediate=3}, +}) diff --git a/games/minimal/mods/testnodes/mod.conf b/games/minimal/mods/testnodes/mod.conf new file mode 100644 index 000000000..4824c6ed0 --- /dev/null +++ b/games/minimal/mods/testnodes/mod.conf @@ -0,0 +1,2 @@ +name = testnodes +description = Contains a bunch of basic example nodes for demonstrative purposes, development and testing diff --git a/games/minimal/mods/testnodes/models/testnodes_ocorner.obj b/games/minimal/mods/testnodes/models/testnodes_ocorner.obj new file mode 100644 index 000000000..231d7056b --- /dev/null +++ b/games/minimal/mods/testnodes/models/testnodes_ocorner.obj @@ -0,0 +1,23 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_ocorner_onetexture.blend' +# www.blender.org +o Cube_Cube.002 +v 0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -0.000000 1.000000 +vn -0.707100 0.707100 0.000000 +vn 0.000000 0.707100 -0.707100 +s off +f 3/1/1 2/2/1 4/3/1 5/4/1 +f 1/2/2 3/3/2 5/4/2 +f 1/1/3 2/3/3 3/4/3 +f 1/1/4 4/3/4 2/4/4 +f 1/2/5 5/3/5 4/4/5 diff --git a/games/minimal/mods/testnodes/models/testnodes_pyramid.obj b/games/minimal/mods/testnodes/models/testnodes_pyramid.obj new file mode 100644 index 000000000..b305af2f8 --- /dev/null +++ b/games/minimal/mods/testnodes/models/testnodes_pyramid.obj @@ -0,0 +1,24 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_pyramid_onetexture.blend' +# www.blender.org +o Cube +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.000000 0.500000 -0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.500000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.894400 0.447200 -0.000000 +vn 0.000000 0.447200 -0.894400 +vn 0.894400 0.447200 0.000000 +vn -0.000000 0.447200 0.894400 +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 3/4/2 5/5/2 4/3/2 +f 5/5/3 1/3/3 4/4/3 +f 1/4/4 5/5/4 2/3/4 +f 2/4/5 5/5/5 3/3/5 diff --git a/games/minimal/mods/testnodes/nodeboxes.lua b/games/minimal/mods/testnodes/nodeboxes.lua new file mode 100644 index 000000000..ebd858337 --- /dev/null +++ b/games/minimal/mods/testnodes/nodeboxes.lua @@ -0,0 +1,80 @@ +local S = minetest.get_translator("testnodes") + +-- Nodebox examples and tests. + +-- An simple example nodebox with one centered box +minetest.register_node("testnodes:nodebox_fixed", { + description = S("Fixed Nodebox Test Node"), + tiles = {"testnodes_nodebox.png"}, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, + }, + + groups = {dig_immediate=3}, +}) + +-- 50% higher than a regular node +minetest.register_node("testnodes:nodebox_overhigh", { + description = S("Overhigh Nodebox Test Node"), + tiles = {"testnodes_nodebox.png"}, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 1, 0.5}, + }, + + groups = {dig_immediate=3}, +}) + +-- 100% higher than a regular node +minetest.register_node("testnodes:nodebox_overhigh2", { + description = S("Double-height Nodebox Test Node"), + tiles = {"testnodes_nodebox.png"}, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5}, + }, + + groups = {dig_immediate=3}, +}) + +-- Height of nodebox changes with its param2 value +minetest.register_node("testnodes:nodebox_leveled", { + description = S("Leveled Nodebox Test Node"), + tiles = {"testnodes_nodebox.png"}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "leveled", + node_box = { + type = "leveled", + fixed = {-0.5, 0.0, -0.5, 0.5, -0.499, 0.5}, + }, + + groups = {dig_immediate=3}, +}) + +-- Wall-like nodebox that connects to neighbors +minetest.register_node("testnodes:nodebox_connected", { + description = S("Connected Nodebox Test Node"), + tiles = {"testnodes_nodebox.png"}, + groups = {connected_nodebox=1, dig_immediate=3}, + drawtype = "nodebox", + paramtype = "light", + connects_to = {"group:connected_nodebox"}, + connect_sides = {"front", "back", "left", "right"}, + node_box = { + type = "connected", + fixed = {-0.125, -0.500, -0.125, 0.125, 0.500, 0.125}, + connect_front = {-0.125, -0.500, -0.500, 0.125, 0.400, -0.125}, + connect_back = {-0.125, -0.500, 0.125, 0.125, 0.400, 0.500}, + connect_left = {-0.500, -0.500, -0.125, -0.125, 0.400, 0.125}, + connect_right = {0.125, -0.500, -0.125, 0.500, 0.400, 0.125}, + }, +}) + diff --git a/games/minimal/mods/testnodes/param2.lua b/games/minimal/mods/testnodes/param2.lua new file mode 100644 index 000000000..5d64376fa --- /dev/null +++ b/games/minimal/mods/testnodes/param2.lua @@ -0,0 +1,168 @@ +-- This file is for misc. param2 tests that aren't covered in drawtypes.lua already. + +local S = minetest.get_translator("testnodes") + +minetest.register_node("testnodes:facedir", { + description = S("Facedir Test Node"), + paramtype2 = "facedir", + tiles = { + "testnodes_1.png", + "testnodes_2.png", + "testnodes_3.png", + "testnodes_4.png", + "testnodes_5.png", + "testnodes_6.png", + }, + + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:facedir_nodebox", { + description = S("Facedir Nodebox Test Node"), + tiles = { + "testnodes_1.png", + "testnodes_2.png", + "testnodes_3.png", + "testnodes_4.png", + "testnodes_5.png", + "testnodes_6.png", + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.2, 0.2, 0.2}, + }, + + groups = {dig_immediate=3}, +}) + +minetest.register_node("testnodes:wallmounted", { + description = S("Wallmounted Test Node"), + paramtype2 = "wallmounted", + tiles = { + "testnodes_1w.png", + "testnodes_2w.png", + "testnodes_3w.png", + "testnodes_4w.png", + "testnodes_5w.png", + "testnodes_6w.png", + }, + + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:wallmounted_nodebox", { + description = S("Wallmounted Nodebox Test Node"), + paramtype2 = "wallmounted", + paramtype = "light", + tiles = { + "testnodes_1w.png", + "testnodes_2w.png", + "testnodes_3w.png", + "testnodes_4w.png", + "testnodes_5w.png", + "testnodes_6w.png", + }, + drawtype = "nodebox", + node_box = { + type = "wallmounted", + wall_top = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 }, + wall_bottom = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }, + wall_side = { -0.5, -0.5, -0.5, 0, 0.5, 0.5 }, + }, + + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:color", { + description = S("Color Test Node"), + paramtype2 = "color", + palette = "testnodes_palette_full.png", + tiles = { + "testnodes_node.png", + }, + + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:colorfacedir", { + description = S("Color Facedir Test Node"), + paramtype2 = "colorfacedir", + palette = "testnodes_palette_facedir.png", + tiles = { + "testnodes_1g.png", + "testnodes_2g.png", + "testnodes_3g.png", + "testnodes_4g.png", + "testnodes_5g.png", + "testnodes_6g.png", + }, + + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:colorfacedir_nodebox", { + description = S("Color Facedir Nodebox Test Node"), + tiles = { + "testnodes_1g.png", + "testnodes_2g.png", + "testnodes_3g.png", + "testnodes_4g.png", + "testnodes_5g.png", + "testnodes_6g.png", + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "colorfacedir", + palette = "testnodes_palette_facedir.png", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.2, 0.2, 0.2}, + }, + + groups = {dig_immediate=3}, +}) + +minetest.register_node("testnodes:colorwallmounted", { + description = S("Color Wallmounted Test Node"), + paramtype2 = "colorwallmounted", + paramtype = "light", + palette = "testnodes_palette_wallmounted.png", + tiles = { + "testnodes_1wg.png", + "testnodes_2wg.png", + "testnodes_3wg.png", + "testnodes_4wg.png", + "testnodes_5wg.png", + "testnodes_6wg.png", + }, + + groups = { dig_immediate = 3 }, +}) + +minetest.register_node("testnodes:colorwallmounted_nodebox", { + description = S("Color Wallmounted Nodebox Test Node"), + paramtype2 = "colorwallmounted", + paramtype = "light", + palette = "testnodes_palette_wallmounted.png", + tiles = { + "testnodes_1wg.png", + "testnodes_2wg.png", + "testnodes_3wg.png", + "testnodes_4wg.png", + "testnodes_5wg.png", + "testnodes_6wg.png", + }, + drawtype = "nodebox", + node_box = { + type = "wallmounted", + wall_top = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 }, + wall_bottom = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 }, + wall_side = { -0.5, -0.5, -0.5, 0, 0.5, 0.5 }, + }, + + groups = { dig_immediate = 3 }, +}) + diff --git a/games/minimal/mods/testnodes/properties.lua b/games/minimal/mods/testnodes/properties.lua new file mode 100644 index 000000000..e169d4b08 --- /dev/null +++ b/games/minimal/mods/testnodes/properties.lua @@ -0,0 +1,270 @@ +-- Test Nodes: Node property tests + +local S = minetest.get_translator("testnodes") + +-- Is supposed to fall when it doesn't rest on solid ground +minetest.register_node("testnodes:falling", { + description = S("Falling Node"), + tiles = { + "testnodes_node.png", + "testnodes_node.png", + "testnodes_node_falling.png", + }, + groups = { falling_node = 1, dig_immediate = 3 }, +}) + +-- Same as falling node, but will stop falling on top of liquids +minetest.register_node("testnodes:falling_float", { + description = S("Falling+Floating Node"), + groups = { falling_node = 1, float = 1, dig_immediate = 3 }, + + + tiles = { + "testnodes_node.png", + "testnodes_node.png", + "testnodes_node_falling.png", + }, + color = "cyan", +}) + +-- This node attaches to the floor and drops as item +-- when the floor is gone. +minetest.register_node("testnodes:attached", { + description = S("Floor-Attached Node"), + tiles = { + "testnodes_attached_top.png", + "testnodes_attached_bottom.png", + "testnodes_attached_side.png", + }, + groups = { attached_node = 1, dig_immediate = 3 }, +}) + +-- This node attaches to the side of a node and drops as item +-- when the node it attaches to is gone. +minetest.register_node("testnodes:attached_wallmounted", { + description = S("Wallmounted Attached Node"), + paramtype2 = "wallmounted", + tiles = { + "testnodes_attachedw_top.png", + "testnodes_attachedw_bottom.png", + "testnodes_attachedw_side.png", + }, + groups = { attached_node = 1, dig_immediate = 3 }, +}) + +-- Jump disabled +minetest.register_node("testnodes:nojump", { + description = S("Non-jumping Node"), + groups = {disable_jump=1, dig_immediate=3}, + + + tiles = {"testnodes_nojump_top.png", "testnodes_nojump_side.png"}, +}) + +-- Climbable up and down with jump and sneak keys +minetest.register_node("testnodes:climbable", { + description = S("Climbable Node"), + climbable = true, + walkable = false, + + + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + tiles ={"testnodes_climbable_side.png"}, + drawtype = "glasslike", + groups = {dig_immediate=3}, +}) + +-- Climbable only downwards with sneak key +minetest.register_node("testnodes:climbable_nojump", { + description = S("Downwards-climbable Node"), + climbable = true, + walkable = false, + + groups = {disable_jump=1, dig_immediate=3}, + drawtype = "glasslike", + tiles ={"testnodes_climbable_nojump_side.png"}, + paramtype = "light", + sunlight_propagates = true, +}) + +-- A liquid in which you can't rise +minetest.register_node("testnodes:liquid_nojump", { + description = S("Non-jumping Liquid Source Node"), + liquidtype = "source", + liquid_range = 1, + liquid_viscosity = 0, + liquid_alternative_flowing = "testnodes:liquidflowing_nojump", + liquid_alternative_source = "testnodes:liquid_nojump", + liquid_renewable = false, + groups = {disable_jump=1, dig_immediate=3}, + walkable = false, + + drawtype = "liquid", + tiles = {"testnodes_liquidsource.png^[colorize:#FF0000:127"}, + special_tiles = { + {name = "testnodes_liquidsource.png^[colorize:#FF0000:127", backface_culling = false}, + {name = "testnodes_liquidsource.png^[colorize:#FF0000:127", backface_culling = true}, + }, + use_texture_alpha = true, + paramtype = "light", + pointable = false, + liquids_pointable = true, + diggable = false, + buildable_to = true, + is_ground_content = false, + post_effect_color = {a = 70, r = 255, g = 0, b = 200}, +}) + +-- A liquid in which you can't rise (flowing variant) +minetest.register_node("testnodes:liquidflowing_nojump", { + description = S("Non-jumping Flowing Liquid Node"), + liquidtype = "flowing", + liquid_range = 1, + liquid_viscosity = 0, + liquid_alternative_flowing = "testnodes:liquidflowing_nojump", + liquid_alternative_source = "testnodes:liquid_nojump", + liquid_renewable = false, + groups = {disable_jump=1, dig_immediate=3}, + walkable = false, + + + drawtype = "flowingliquid", + tiles = {"testnodes_liquidflowing.png^[colorize:#FF0000:127"}, + special_tiles = { + {name = "testnodes_liquidflowing.png^[colorize:#FF0000:127", backface_culling = false}, + {name = "testnodes_liquidflowing.png^[colorize:#FF0000:127", backface_culling = false}, + }, + use_texture_alpha = true, + paramtype = "light", + paramtype2 = "flowingliquid", + pointable = false, + liquids_pointable = true, + diggable = false, + buildable_to = true, + is_ground_content = false, + post_effect_color = {a = 70, r = 255, g = 0, b = 200}, +}) + +-- Nodes that modify fall damage (various damage modifiers) +for i=-100, 100, 25 do + if i ~= 0 then + local subname, descnum + if i < 0 then + subname = "m"..math.abs(i) + descnum = tostring(i) + else + subname = tostring(i) + descnum = S("+@1", i) + end + local tex, color, desc + if i > 0 then + local val = math.floor((i/100)*255) + tex = "testnodes_fall_damage_plus.png" + color = { b=0, g=255-val, r=255, a=255 } + desc = S("Fall Damage Node (+@1%)", i) + else + tex = "testnodes_fall_damage_minus.png" + if i == -100 then + color = { r=0, b=0, g=255, a=255 } + else + local val = math.floor((math.abs(i)/100)*255) + color = { r=0, b=255, g=255-val, a=255 } + end + desc = S("Fall Damage Node (-@1%)", math.abs(i)) + end + minetest.register_node("testnodes:damage"..subname, { + description = desc, + groups = {fall_damage_add_percent=i, dig_immediate=3}, + + + tiles = { tex }, + is_ground_content = false, + color = color, + }) + end +end + +-- Bouncy nodes (various bounce levels) +for i=20, 180, 20 do + local val = math.floor(((i-20)/200)*255) + minetest.register_node("testnodes:bouncy"..i, { + description = S("Bouncy Node (@1%)", i), + groups = {bouncy=i, dig_immediate=3}, + + + tiles ={"testnodes_bouncy.png"}, + is_ground_content = false, + color = { r=255, g=255-val, b=val, a=255 }, + }) +end + +-- Slippery nodes (various slippery levels) +for i=1, 5 do + minetest.register_node("testnodes:slippery"..i, { + description = S("Slippery Node (@1)", i), + tiles ={"testnodes_slippery.png"}, + is_ground_content = false, + groups = {slippery=i, dig_immediate=3}, + color = { r=0, g=255, b=math.floor((i/5)*255), a=255 }, + }) +end + +-- By placing something on the node, the node itself will be replaced +minetest.register_node("testnodes:buildable_to", { + description = S("Replacable Node"), + buildable_to = true, + tiles = {"testnodes_buildable_to.png"}, + is_ground_content = false, + groups = {dig_immediate=3}, +}) + +-- Nodes that deal damage to players that are inside them. +-- Negative damage nodes should heal. +for d=-3,3 do + if d ~= 0 then + local sub, tile + if d > 0 then + sub = tostring(d) + tile = "testnodes_damage.png" + else + sub = "m" .. tostring(math.abs(d)) + tile = "testnodes_damage_neg.png" + end + if math.abs(d) == 2 then + tile = tile .. "^[colorize:#000000:70" + elseif math.abs(d) == 3 then + tile = tile .. "^[colorize:#000000:140" + end + minetest.register_node("testnodes:damage_"..sub, { + description = S("Damage Node (@1 damage per second)", d), + damage_per_second = d, + + + walkable = false, + is_ground_content = false, + drawtype = "allfaces", + paramtype = "light", + sunlight_propagates = true, + tiles = { tile }, + groups = {dig_immediate=3}, + }) + end +end + +-- Causes drowning damage +minetest.register_node("testnodes:drowning_1", { + description = S("Drowning Node (@1 damage)", 1), + drowning = 1, + + + walkable = false, + is_ground_content = false, + drawtype = "allfaces", + paramtype = "light", + sunlight_propagates = true, + tiles = { "testnodes_drowning.png" }, + groups = {dig_immediate=3}, +}) + diff --git a/games/minimal/mods/testnodes/settingtypes.txt b/games/minimal/mods/testnodes/settingtypes.txt new file mode 100644 index 000000000..7f753bf3e --- /dev/null +++ b/games/minimal/mods/testnodes/settingtypes.txt @@ -0,0 +1,4 @@ +# If set to true, will show an inventory image for nodes that have no inventory image as of Minetest 5.1.0. +# This is due to . +# This is only added to make the items more visible to avoid confusion, but you will no longer see the default inventory images for these items. When you want to test the default inventory image of drawtypes, this should be turned off. +testnodes_show_fallback_image (Use fallback inventory images) bool false diff --git a/games/minimal/mods/testnodes/textures.lua b/games/minimal/mods/testnodes/textures.lua new file mode 100644 index 000000000..f5db9ccbf --- /dev/null +++ b/games/minimal/mods/testnodes/textures.lua @@ -0,0 +1,67 @@ +-- Node texture tests + +local S = minetest.get_translator("testnodes") + +minetest.register_node("testnodes:6sides", { + description = S("Six Textures Test Node"), + tiles = { + "testnodes_normal1.png", + "testnodes_normal2.png", + "testnodes_normal3.png", + "testnodes_normal4.png", + "testnodes_normal5.png", + "testnodes_normal6.png", + }, + + groups = { dig_immediate = 2 }, +}) + +minetest.register_node("testnodes:anim", { + description = S("Animated Test Node"), + tiles = { + { name = "testnodes_anim.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 4.0, + }, }, + }, + + groups = { dig_immediate = 2 }, +}) + +-- Node texture transparency test + +local alphas = { 64, 128, 191 } + +for a=1,#alphas do + local alpha = alphas[a] + + -- Transparency taken from texture + minetest.register_node("testnodes:alpha_texture_"..alpha, { + description = S("Texture Alpha Test Node (@1)", alpha), + drawtype = "glasslike", + paramtype = "light", + tiles = { + "testnodes_alpha"..alpha..".png", + }, + use_texture_alpha = true, + + groups = { dig_immediate = 3 }, + }) + + -- Transparency set via "alpha" parameter + minetest.register_node("testnodes:alpha_"..alpha, { + description = S("Alpha Test Node (@1)", alpha), + -- It seems that only the liquid drawtype supports the alpha parameter + drawtype = "liquid", + paramtype = "light", + tiles = { + "testnodes_alpha.png", + }, + alpha = alpha, + + groups = { dig_immediate = 3 }, + }) +end diff --git a/games/minimal/mods/testnodes/textures/testnodes_1.png b/games/minimal/mods/testnodes/textures/testnodes_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6730997e2db9623daa1bb458e2b2a7e9156a8093 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9>;Dfx76a#Wr#K*`;OXKR zQo)$)(7@()tcqf?4)78&qol`;+04y{Z AZ2$lO literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_1g.png b/games/minimal/mods/testnodes/textures/testnodes_1g.png new file mode 100644 index 0000000000000000000000000000000000000000..529298ece1d50bbfab913ac99e6a68c388d8bc0a GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|`kpS1Ar*|t72Zk`4!k@(JU5OO zu2gemcF}a?<+!S1o#~R5;J|vtLyE_RxhRK$LGwo;+lH)}tU#>{p00i_>zopr04(np A-v9sr literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_1w.png b/games/minimal/mods/testnodes/textures/testnodes_1w.png new file mode 100644 index 0000000000000000000000000000000000000000..d24e571cc90265d6dd09a15d3e8cb20bde91745a GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|4xTQKAr*{g&oZ(da1e1mxbuHz zb@P3v4GF=z-xQg8cAg2|Tluw4{92jQp(T46wlLk}SSfZXv*`-=O2IXM)xT6TH^=AC Ud;iH)251(8r>mdKI;Vst0AkQ89{>OV literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_1wg.png b/games/minimal/mods/testnodes/textures/testnodes_1wg.png new file mode 100644 index 0000000000000000000000000000000000000000..b2eba0e9a60e0337062d4896c2bb6b781523b258 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|j-D=#Ar*{g&oZ(#Fo-li{Qs}K zHa+6VBKBymzY@&y#>y+>ul4_qieP=nHQ_W<`dS7X!5H-&@?1Mq)_65m-{-F6Psrb) Ux9;A$MxbE~p00i_>zopr0L0}c82|tP literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_2.png b/games/minimal/mods/testnodes/textures/testnodes_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6c87c868df0db96160b5fadaef616a5db8ee3ff4 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|=AJH&Ar*|tKk_p@g`}jUBm@{{ z>nzJM(Myzmv4XK*o@2FJ$KxR1s11_@_<1B6qzunGm?#`)V{l&M^nr!Vs1;}ggQu&X J%Q~loCIDWb96$g7 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_2g.png b/games/minimal/mods/testnodes/textures/testnodes_2g.png new file mode 100644 index 0000000000000000000000000000000000000000..cb9060f7b9f45b814a0f00b7eb13dfe95d897a09 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|rk*a2Ar*|t72Zk`Qc@BE46}8X zWtr$DO21ga*e}nq+O6YpkZ;t6Ndo*l5)D#@XB|uwjU5fdinu6;4R_>Z62$75x&TR6+&AGO)5?bEvRtG@AD$OK!Fl=H2>9x<5- h-ck_BY394q#(p%g-uj-Kg&xpg22WQ%mvv4FO#sisFH-;j literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_2wg.png b/games/minimal/mods/testnodes/textures/testnodes_2wg.png new file mode 100644 index 0000000000000000000000000000000000000000..108dc87bb7e2a89f110ce607604b6e9b279d452a GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|ex5FlAr*{U`x)673%deiNt56bi%PMV)k jTfFU4yhDrlhKI~aQM;In-reN{n#|zo>gTe~DWM4fhUhQV literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_3.png b/games/minimal/mods/testnodes/textures/testnodes_3.png new file mode 100644 index 0000000000000000000000000000000000000000..05b45629afb1547e6c062c465e3305f2385e7ae7 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9>lw@cK<38E-E2Tg&eO#) zq=GTof$a=0j}9LXj{-}Iv!qUfnZT9*%t8!aS}gs?^abVtRWf+G`njxgN@xNA;o=qW literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_3g.png b/games/minimal/mods/testnodes/textures/testnodes_3g.png new file mode 100644 index 0000000000000000000000000000000000000000..5c84f5882b9a185af33e59270ff59ae890f0bc39 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|dY&$hAr*|t72Zk`Qc@BL4Exzy yvP{epr8CwrUgrN&F0@R^>KEg3Hnv5KmLTC literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_3w.png b/games/minimal/mods/testnodes/textures/testnodes_3w.png new file mode 100644 index 0000000000000000000000000000000000000000..8b435cf013556c82faea0d69b3e3901ac7f71c47 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uK)l42QtrC{y&3Z+LPAJTkW;$hf=yNmJgou(-K@Q>6IdCX8u+LGy&0hhRL$V&>gTe~ HDWM4fDn}p} literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_3wg.png b/games/minimal/mods/testnodes/textures/testnodes_3wg.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee9006674e2192e3826177046228cff06c41391 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uK)l42QuHjefx^x=P4jd z$~) zdAc};R4^tBJbCdVK_Db3C`o{IqlBZ5n?N_C4qJMug9MkJ!Zhv@2?8NOK}iCv8zmfd+yuHAb=cBN9VEE)6sB=^h%zN@Y>3b)xGBKk Xl);~0>@>L?sGGsl)z4*}Q$iB}R~;kl literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_5.png b/games/minimal/mods/testnodes/textures/testnodes_5.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef1c728ca262766ed4d4e897dbcf3844e75246f GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|nw~C>Ar*|t2|wy*tC)zGEMQt> wqEP&DRb!ET!lHwV7)1lLmvyo|xxv7&f5%LxHIp~q1!`jOboFyt=akR{0CFN6$N&HU literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_5g.png b/games/minimal/mods/testnodes/textures/testnodes_5g.png new file mode 100644 index 0000000000000000000000000000000000000000..30da4793a153a639f718467ac465032117c34f15 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|nw~C>Ar*|t72Zk`Oi~g7jDb=U vc9vXq*eP$o7;7@&Is2*PS&bPEeY^}icc#8dw%o-B)WqQF>gTe~DWM4f^PCxH literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_5w.png b/games/minimal/mods/testnodes/textures/testnodes_5w.png new file mode 100644 index 0000000000000000000000000000000000000000..b4cb42426ab0ae0d26f35c3badefe4cac2cf8cf0 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uK)l42QnG{-~Lk)UkqfZ zd%8G=R4^tBJbm#ZK_DO~sA+@5Lmjq|F!q*(0!&Gk2O@P6#GJ$!eBSXt+BTo%CrGoW LtDnm{r-UW|(r+RX literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_5wg.png b/games/minimal/mods/testnodes/textures/testnodes_5wg.png new file mode 100644 index 0000000000000000000000000000000000000000..fac9db28edfbf19a5bc2b6fceb8128b23a283651 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uK)l42QuHjefx^x=P4jd z-P6S}q=GS7;OUDO2?7B@K}{PZ9_p}#gt50Q6ktlSJP@gqAm${-;Pa0E(YE<4KY>~p NJYD@<);T3K0RSy_BWeHu literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_6.png b/games/minimal/mods/testnodes/textures/testnodes_6.png new file mode 100644 index 0000000000000000000000000000000000000000..805813e57509bf2bb6f7b4cbef5bfa5267243580 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|+MX_sAr*|t9Df&i2}wywNdzzk xN{vW}QAUu=+(W?0x@=I3@@Ar*|t72Zk`Qc@BDjDb=Q va*|9ZyiwWpJMn?(0;a4ZCd?NbWTYAXoQygb$RYk4sENVT)z4*}Q$iB}8_XJd literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_6w.png b/games/minimal/mods/testnodes/textures/testnodes_6w.png new file mode 100644 index 0000000000000000000000000000000000000000..e6bbf97d977a3fd3091bcdeb0dbd3af99752890b GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uK)l42QovysOo>(`UA*P z_jGX#sbEYNc>3Z+fmdKI;Vst0N0ozUH||9 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_6wg.png b/games/minimal/mods/testnodes/textures/testnodes_6wg.png new file mode 100644 index 0000000000000000000000000000000000000000..29ca933e0aa8bb5307d63c289aaaff44821a9794 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uK)l42QuHjefx^x=P4jd z-P6S}q=GS7;OUDO2?7B@K}{Q29_p}#gt50Q6ktlSJP@guAm${-5b{pI=<)l`J3uWA Mp00i_>zopr04&8LmH+?% literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_airlike.png b/games/minimal/mods/testnodes/textures/testnodes_airlike.png new file mode 100644 index 0000000000000000000000000000000000000000..5a5664a2ae2458eaff7ff3038b0278cb3f637fb2 GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx?BpA#)4xIr~OeH~n!3+##lh0ZJd7_>!jv*C{ m$q`$-8XG4rY;4ppG7({zpupNzTxdBNq|MXS&t;ucLK6UCCl(?A literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_allfaces.png b/games/minimal/mods/testnodes/textures/testnodes_allfaces.png new file mode 100644 index 0000000000000000000000000000000000000000..c0a7dc550c077d44a79e87a1b5ef72c8e98d344f GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!9W@a@|Lkr1XA9fE{-7; zj8iX#iaIEYuwJ}uFU7cmd4D;tmH&s{bd|lG>zAzKKX|vG&NNk`#4!{-APz?J^B*Jcu!Y9mvv4FO#sKbZR;5g!S sJEVG|u-h?-mwyG5{X?qvMtoqOr1$L}kA1*jflQDEp00i_>zopr04K05-v9sr literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_alpha.png b/games/minimal/mods/testnodes/textures/testnodes_alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..157fa7386865f5ec8a4cc616809dea4085890a2d GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|>Ygr+Ar*|t2_3v_3z=7QD6R0? tk(Kn7L37fD6>KsYA#gQu&X%Q~loCIJ0)8S?-D literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_alpha128.png b/games/minimal/mods/testnodes/textures/testnodes_alpha128.png new file mode 100644 index 0000000000000000000000000000000000000000..16babf6c774bd887c6004f23702490b4c9fdf5ea GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`{+=$5Ar*|t4?Gfn@E=mzE+OS{ z(4dy*#H^EsEsRGNu<+M2yYXK5!M}K+#N>VhhJ_4s+Y;Y=;xS-z5|q?CaK&Yh_kx+6 jciA4rFkJF3EMsGMIH}CY@wi(x&}arvS3j3^P6fIprkTdZZS7ly`GBXzEX6SfYP)+JYz0h0I#$9p(nz_t<(DJwe7_2EI^)pTKk|4Nqw#uZf)|62tm& z$4@99&40n(L%OdZ@QqXmD5@G@Dui0<6?h%!Fg=J*&>fC1pp+nlpkIyn%NLA(`;fDw zk&wm_DZ`||Yo@wGSil$+uTb&+2aaS+rNC;hz-l4zSN}N(PPY%QTqKQzXEqLS9g`L| zvKDyPJq6TNkoF%*Kc%+kAUNGV%uA6p67cMAmx;`aX<>8MT?8Xqz}&jS@dfWWD7x*# Y7a!BrN=(AEk^lez07*qoM6N<$f;qi&^Z)<= literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_attached_bottom.png b/games/minimal/mods/testnodes/textures/testnodes_attached_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..e01ae576f5df74b8c0ce885a63826e94fdda2839 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|vYsxEAr*|tJMPzOoi%K$n8bKU jX`YOgSgTe~DWM4fDkK)i literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_attached_side.png b/games/minimal/mods/testnodes/textures/testnodes_attached_side.png new file mode 100644 index 0000000000000000000000000000000000000000..9459cbb0568dde882a4082a42a50eec9b7dc9c9a GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|nw~C>Ar*|tKlVSd^yFBQSbNY$ wNzl}^CrjdL!T$dtvyyo}sxY^>+Hf+QdVcHB>1%Q;fSMRQUHx3vIVCg!0GAIPX#fBK literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_attached_top.png b/games/minimal/mods/testnodes/textures/testnodes_attached_top.png new file mode 100644 index 0000000000000000000000000000000000000000..0148b41e069734f5937e4976e2dd95f9b3c35e85 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|a-J@ZAr*|tKlVSd^yFBQSbNY$ k>7qln#8rb;jVde*Hi2(toTrIi2dZT7boFyt=akR{07OX^;s5{u literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_attachedw_bottom.png b/games/minimal/mods/testnodes/textures/testnodes_attachedw_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..488ad23a90e3675a73e6e95d7dfd9c3f0983b06d GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u7~>XM>?j>ELh)~H1mH$ z?H-`Gp{I*uNCjiE01FeFxI)8*J7H_H60Hs&IB@#Gw=C11t-obkj;4J2c_!U}dm-OK c@iR;e3Nu8kFVdQ&MBb@0E7H1%m4rY literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_attachedw_side.png b/games/minimal/mods/testnodes/textures/testnodes_attachedw_side.png new file mode 100644 index 0000000000000000000000000000000000000000..a02facbc721cdb6e041a4f5467c65febcf542683 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|j-D=#Ar*|tJN7@Z_vBcTn0ByA z>7u}e3$sjw&$)>&iD7nlK^u%1; UqHsXH5NH^Kr>mdKI;Vst094B&Q%58^j@*QkjzBAu66X12r@?mB;F#W4JqwGgXpk@Y7S3j3^P6GAr*|tKh8I_)EyA?`{=lm m@t~sH=Y%T;QvA)%%nUWs)dGIXKXw7tGI+ZBxvXcw?T&VTTJgIQ_BDJNtvD@dc|Oi>b0f8)HJ#9Rr6Q4He88Pn!O> zJen<}FW{rTrI67{SZ($K?g^sFmuBcGyr^fI$-Agyg5r-S8t2Y21e?DLyZ=*fJMh(P7{ryYh1JYRV$P6d`(oZubP0l+XkKkKH6} literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_drowning.png b/games/minimal/mods/testnodes/textures/testnodes_drowning.png new file mode 100644 index 0000000000000000000000000000000000000000..57ffc8fcf996e68f091dcc05e758e8eaaf2fa132 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9E6b$kK<2#}-!y;}Q%R6t z@PCG<+YP*cJT*@j$B+ufzopr03jzKWB>pF literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_fall_damage_minus.png b/games/minimal/mods/testnodes/textures/testnodes_fall_damage_minus.png new file mode 100644 index 0000000000000000000000000000000000000000..88d3bdf58598e14081f21d398ee50f0fefedb24f GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|)}AhoAr*|tD^vv=O#Zkt@klU4 ziY;uE*!*%O0u+RK+_VB;W QKyw&8UHx3vIVCg!0MyeZ82|tP literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_fencelike.png b/games/minimal/mods/testnodes/textures/testnodes_fencelike.png new file mode 100644 index 0000000000000000000000000000000000000000..84dea1b7c2ee318672987049eec68475bfc42820 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|ik>cxAr*|t89viBxt=S{OIhKc npx^sMZJvykSgTe~DWM4feG?d* literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_firelike.png b/games/minimal/mods/testnodes/textures/testnodes_firelike.png new file mode 100644 index 0000000000000000000000000000000000000000..ee59b0db1be0b51619ad304cb17f44e41e4af283 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-uGi)>T(f1UP-3{2$1poW zp#&)I;_2cTQo)!kz{|^&@pF}Jz?*;Z3W5JcJy;qz v%@hn9->N%bWBWJVf$7NI^g4)z4*}Q$iB}oT@G$ literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_glasslike.png b/games/minimal/mods/testnodes/textures/testnodes_glasslike.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3e35414dbcb42b1d0b52990f97d2fe095251b9 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!9W@a@|Lkr1X5a_E{-7; zjLARFANcU)fBhptW)5LqjjIg_$*Y_%Is}-W^pjGPa(mpU!oqMT`B3H+^_WK>-JY&~ JF6*2UngA0mAgTZW literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_glasslike_detail.png b/games/minimal/mods/testnodes/textures/testnodes_glasslike_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..30c9586e84022c1817fb88f90fafad462589a706 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`d7dtgAr*{gCo{4+81gt5zhtz& z`Oe7U{KtJkbq6l=|GhBPMSGg>nNBvY3-_W!&U3}xGkw0)Q7@34vD9SZ=G4O{Kf7JO z9wqcZiScj7Eakt z!I=Ex{DBX9C$O*_`rpYmC3{9%yH2lK-vx&N)02Kua#C)O8%FVdQ&MBb@0P8Ly{r~^~ literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_glasslike_framed_optional.png b/games/minimal/mods/testnodes/textures/testnodes_glasslike_framed_optional.png new file mode 100644 index 0000000000000000000000000000000000000000..37de77dd1aa7e6d027ade771dc898f4fcd8bf6b7 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`?w&4=Ar*|tKh7WcaR1W`^_w#o zT^JadEhUaNEI%RPtJr3v$Lvt@_W!*9GuRSNB}*|(bbP0l+XkK90Mnf literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_glasslikeliquid.png b/games/minimal/mods/testnodes/textures/testnodes_glasslikeliquid.png new file mode 100644 index 0000000000000000000000000000000000000000..e1e96ffb9f62b37173e542bf05a0d84b58d2ef2f GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`j-D=#Ar*|tKh7Wcu)p$py@6fr zFB4{t=ARrr;qw@MCUCAuVmRSBqiF@hbQ=%-84AwEhZ-9Bngf~LE;Alt=-On=(9U+| V!ig*Y)q#dFc)I$ztaD0e0svo?C-wjU literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_light.png b/games/minimal/mods/testnodes/textures/testnodes_light.png new file mode 100644 index 0000000000000000000000000000000000000000..4ba0081c3dc0544e0fc5b3c3a692b3744ab52f1e GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!9W@a@|Lkr1X5a_E{-7; zjLAR#|F>t}$gu3kRpAuJ4vw;eg4_c4)YtTs@G6T=nDfKK?;b<@Q^mOlSEO78>GpK> Kb6Mw<&;$SqK_OcJ literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_1.png b/games/minimal/mods/testnodes/textures/testnodes_light_1.png new file mode 100644 index 0000000000000000000000000000000000000000..57adf5a4a89572114625655181540ac70574685e GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`sh%#5Ar*|tKloXAo-nrD3-_0} zz}wjUcyhAD9EK-rd8N$^PMkW`WN>4?gOrNfmNbKH+qSV~A2Vs#plHB+z(kQ*K+)?4 zw?q|(Btv;)Umsr{vp~ZJ#up9O*b>?fK41|^SL@nr%&_*$ft189ZJ6T-G@y GGywoSv@(ML literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_10.png b/games/minimal/mods/testnodes/textures/testnodes_light_10.png new file mode 100644 index 0000000000000000000000000000000000000000..483834770e84a3072c88a2a20d48d423b5c1d50f GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`QJyZ2Ar*{gCo{4gFyL|h|JQ%A zGp|njiER%bDyO9WT5+L@Uv-sqEz5VCCxY*Go4@r8T^TpSU?QhW%RJ`<0moO&-xkZA v@L_tlh0*hj9z!$39|40cs;5tH*>g@@q3@Pjq4$LVpe+oZu6{1-oD!M7c&cgqa^Z81LJ+CtAB5sOPSD5XvC<_cc?x x9P0;r*(4tQ%s-k8mpCf?lk@h>KDm3YwcPtl3v4g_{{Xay!PC{xWt~$(69AaTHR%8V literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_12.png b/games/minimal/mods/testnodes/textures/testnodes_light_12.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7946d09ec5a15edcceb96fda9590dd3cc9833c GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`fu1goAr*|tKloXAo-nrD3-_0} zz}wjUcyh8t3d2MF4fh31m;}~KCNgwcSn4U{FetfjRx`%($1y+n*dw4U(%Zu8z;0sB kV9dj&y1>FXaL!!DElY1b4l)Vk1RBoZ>FVdQ&MBb@0AdIx4gdfE literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_13.png b/games/minimal/mods/testnodes/textures/testnodes_light_13.png new file mode 100644 index 0000000000000000000000000000000000000000..0b63c84a65bd79fd05e5f57e84fac1eadaf57f14 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`0iG_7Ar*|tKloXAo-nrD3-_0} zz}wjUcyh8t3d2MF4fh31m;}~KCNgwcSn4U{FetfjRx`%($1!i%*%e?SWX8aI;SR$Y k1BodOkIuLhma#Fcy?OD?9J^(&fMzpzy85}Sb4q9e0GZY)&j0`b literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_14.png b/games/minimal/mods/testnodes/textures/testnodes_light_14.png new file mode 100644 index 0000000000000000000000000000000000000000..a817bd3946eea313015daca3408ca40310ceca13 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`-kvUwAr*|tKloXAo-nrD3-_0} zz}wjUcyh8t3d2MF4fhjFHc4pC;*@sS$!*{)a+$%TVIBK=#v3uN8d99n4SX;14=i92 eNmuLIY|Ow_bo7Vg*^&gHu?(KBelF{r5}E)J!6(81 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_2.png b/games/minimal/mods/testnodes/textures/testnodes_light_2.png new file mode 100644 index 0000000000000000000000000000000000000000..852eaeff17dd01be999daad14b8829005ba934bc GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`@t!V@Ar*|tKloXAo-nrD3-_0} zz}wjUcyhAD9EK-rd8N%5GD8?dl%tF#qNAe^-;`hzFk?w%5O`q9Ah@VyZ^Od&21X8F zD=RAnL#K-#HyBDBvY8DICloMs84Dl1Dar7|dVl}lPp+qcRxx4T z4@?!*)Y=%&vbHRmxPkFS!!ovp#r(EX?CJ|Fj05M)WeoG$;dfta{ac`Y44$rjF6*2U FngG^JHGKd8 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_5.png b/games/minimal/mods/testnodes/textures/testnodes_light_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b6eede0ae902569625cfecbc4a64a3ee519bd53a GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`v7RoDAr*|tKloXAo-nrD3-_0} zz}wjUcyhAD9EK-rd8N%5GD8?dl%tIAFi7m)xKYq$@;jy#YJ1oeoTh9LH~8|vR6$LR xEl)d+S)gG9N#X6B`_$ta8@%0^EWx~;TEXU_{OxB l_W)1xK~9ZxJ|gMq49CMR^d9wyP6wLK;OXk;vd$@?2>_TsC#(Pf literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_9.png b/games/minimal/mods/testnodes/textures/testnodes_light_9.png new file mode 100644 index 0000000000000000000000000000000000000000..2aa9023585aba2055ec03f3ab5f34f89b01897d6 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`F`h1tAr*|tKloXAo-nrD3-_0} zz}wjUcyhAD9EK-rd8N%5GD8?dl%tIAFqoKi>N#W_%4Se<;jCtK=8t1;VDNiv-cY13 v(8pTD+mN_JLX+Vx>lW{ABI#;fn~fR1dELvMuQ7iK&>jX)S3j3^P6%KW@e4PR>dp^ji1d1qPz`B cn>HCUeAvOg`bbC>C(uv^Pgg&ebxsLQ07FbC)Bpeg literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_line_curved.png b/games/minimal/mods/testnodes/textures/testnodes_line_curved.png new file mode 100644 index 0000000000000000000000000000000000000000..ab9f8e7208af8577ebd5df34f7a1d2749b5a95d9 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`PM$7~Ar*|tKl)ideg5ouOoPo} z0>=lbf>&2GQ+h5la4@nqpJQ;Ev4HV^=KjjoAV!UCni*d&lMusCd Wmz>)Cz@8Ck8iS{+pUXO@geCx7YA3`1 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_line_straight.png b/games/minimal/mods/testnodes/textures/testnodes_line_straight.png new file mode 100644 index 0000000000000000000000000000000000000000..4f33d9c6d9e53ee5ae0b33099fc5995faabc6809 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`R-P`7Ar*|tKl)ideg6FL$CZ`A zCnU7`IsNgEN;ICy8kMY&H<(ZAjX* a$(SLP>4->jjF%mdKI;Vst03c`@!~g&Q literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing.png b/games/minimal/mods/testnodes/textures/testnodes_liquidflowing.png new file mode 100644 index 0000000000000000000000000000000000000000..1736b89ba5501f6f87ae94546d71249c29948010 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`-kvUwAr*|t2_2SuS$nwa8w^+0 zoZ@wut}wIT*YWM0`MmlXVlbP0(e%&{mv%-U=9`HP$4}1qbJ1YI4Te8) f5{oJuL+lusj*9axK5RD!Xe@)LtDnm{r-UW|`Uotr literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r0.png b/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r0.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a61039d7d4e5a725cf6d54c26e56c335757ed5 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`nVv3=Ar*|tFAP#|@EkflM`1>Y z-BY#&-V=@;PdqTOX#d&QT}_S>N7_Cc@*a4{TGCr!x6J#4v_qN1gOX1f5)L1JO)8LJ z`*hOaL5Ado)N^MPq)w>c7Fi*Ar*|tFFcZN@Ekg=r8pzR z?kU>>?+M3_CmxtsSvUK-F9%zqfb_ZJCJej9FPI+s;nL3N$2+6uPuzi(g(f^R96vdj z84FC#W4Mz&_oM=|$9E z+nLB?Jck09J-#t@ai2KFt%0oIjKR~@&t;ucLK6U4 CW;Ij* literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r3.png b/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r3.png new file mode 100644 index 0000000000000000000000000000000000000000..bef77396844b1a924c2d32af9941ddecfc5b8691 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`NuDl_Ar*|t9Pbit@Ep=StuQ0R z?kU>>?+M3_CmwjCTsQmob=GEs4&LXyy1<(f!9wi8ZewbXfVOQ zjWP4|3`dD9hLdp)g^ZPzifblIJ`-)KY}{j@FqNO7ap}>$3>qtr0&QdPboFyt=akR{ E0G$3g4*&oF literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r4.png b/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r4.png new file mode 100644 index 0000000000000000000000000000000000000000..de1001b2d9ebd15eb417b4ba002dc2025c6d7f5f GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`iJmTwAr*|t0k0Eo@EqE8T46?r z-BY#&-V=@;Pjombxc_YH>n2BuBW<4zc@Ml}E$J<=Tju>i+M!J1LFuOq35O><(+rz4 z6y_%}dwgf|kZC)4ntRsVGX~QqOci%HcU+!r$tT7Pg{guE*&1_!mN9s``njxgN@xNA DQCK(J literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r5.png b/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r5.png new file mode 100644 index 0000000000000000000000000000000000000000..97b422e9a181b08932b7a4362ac976d75cd2e16e GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`NuDl_Ar*|t2`>_E^Bg;Ead1Y6 z-BY#&-V@FoUv}Vq$Ngs$N)IaVBpv=?!E?YwGFG|AzeM7I$pl%pA9HP_*c2=!*gl># zZm5*}p7zWyPhftEzQXQ?HG3E~OC~bN^*(83Tv@{~c~gm*pVP6|K-(BRUHx3vIVCg! E0B5E*o&W#< literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r6.png b/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r6.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd8e4e8e551a3c8881ce47e3bcf788fdc065c2e GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`NuDl_Ar*|t2`>!p@ffnqJ zyQgdmyeFJFzU;vJ6LZcUeErKo;z--aLWzbgTe~DWM4fPvI)? literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r0.png b/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r0.png new file mode 100644 index 0000000000000000000000000000000000000000..da0a99623d8f84189d3d46914f0b8e3f8b34bdac GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`F`h1tAr*|t8Rm&MdU~c?E=+Rz z)O@8u`DtCjo_#7ZZ5yQ=s)iq0&y27{e!38$DD?t89|zrC&{8)y%Mr>mdKI;Vst0A?yO-v9sr literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r1.png b/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r1.png new file mode 100644 index 0000000000000000000000000000000000000000..66bf2be8f9ff80d2e3d76840a16e8d7315d46eec GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`@t!V@Ar*|t8U86ZdU~dZE=qFx z)O@8u`SYI#6@QNuNF2*!5R;y0x=^C+rP3a@gj*i<%pBE?TO3rZrB>!L%Vz?N< zJmaJ{yKLtfg+hT|Td@z-okh$S_PX3)aQei+yz_cqjQ*Mcpj8Z>u6{1-oD!M{`KlV9UgRYy#hyG8;Y0OoGlbl)Rrfo$r}m zGFzg+{52&Fi3-e}p5p5^?rfgP!>m!xxXgxOY5gxQr`@HyfmShiy85}Sb4q9e0CCtg AH2?qr literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r3.png b/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r3.png new file mode 100644 index 0000000000000000000000000000000000000000..0f46e291e81e7da98816774f0d0994cb99afae91 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`@t!V@Ar*|t9C_(CdU}GVFHCa! z)O@AE(*4haich}^B#z}Vh)GX0T`1A^QfUuc!Yz+_W{&E{Eee{ji5+@w8F7dukVC$Tm$?#O~z!Y|d>32`RpRi-=5};KKp00i_>zopr0BO%R A7ytkO literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r4.png b/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r4.png new file mode 100644 index 0000000000000000000000000000000000000000..0693a04d7fc89f7acdd7bfbb06a724348cea3912 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`NuDl_Ar*|t0omy{dV0Q2TbShZ zsrgF7CFQz;m~D14Z5yQ|uzj9rH%uYL*wnB-9Oyx~#DTg=gl!>PRvl?ppP3=~aY8kIL3J!#TVB%W}JnL*%r^+9L(2cLl!F?hQAxvX|uzw*)onSJ{>+6pBaGL<)}r5xU{lcS$;hS{ZK45#)wR4NGdxvi3HcxSum661`t wxMv)PQkF8GF;FyodB|i^Cc{&`15?-;R-Rks^JTL}JJ4P?E^ja75FHq2;70L$Dk}p6bIv;F# z!oHHR&YkaY;g4UY20e!ve55CuDoVGVb*SE`# zj`EL3bk-zn+Oz1yWxY8!x^}Rha~9nGA=`Y(;hk+CUw)7UTEyV#>gTe~DWM4fCj>d} literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_mesh_stripes2.png b/games/minimal/mods/testnodes/textures/testnodes_mesh_stripes2.png new file mode 100644 index 0000000000000000000000000000000000000000..9ea65c1ec05dc1c2e71d35461b935b9ecc14ec40 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|;hrvzAr*{sPd2h1aNucuxZT0} z_}l*7uD2w)mTo`zx>J~6;QjYbmkmjlGkEiA&&NCweRD7DX_=sT@hheE31toGCtUqm sH*?lK&}q2Y9L8c?R&d0pNNc&gTH>zP-=D^O16sl0>FVdQ&MBb@001yGU;qFB literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_mesh_stripes3.png b/games/minimal/mods/testnodes/textures/testnodes_mesh_stripes3.png new file mode 100644 index 0000000000000000000000000000000000000000..96bc55ac5f3444eea6b725ec663f6a706ceed461 GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|GM+AuAr*|t3hXipQVynn)TIK> hwgpPNGAr*|tKU|d(7!nsTIyvhK lGHh=PBNKfYA2vt22WQ%mvv4FO#m6}6{i3I literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_node_falling.png b/games/minimal/mods/testnodes/textures/testnodes_node_falling.png new file mode 100644 index 0000000000000000000000000000000000000000..44153185c23c46924729b8735bd4b47968f0012b GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|=AJH&Ar*|tKm3&v7!nsTIyvhK zGR$xLZ!gin;ad>G93van63eV-`y=PT73YcaCp@K|sM-lJGF%g#=A(Dls0?TXgQu&X J%Q~loCIE(79ispM literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_nodebox.png b/games/minimal/mods/testnodes/textures/testnodes_nodebox.png new file mode 100644 index 0000000000000000000000000000000000000000..66e8dd663e3a117d378b7b3eacd4e8bc0fc67b60 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|=AJH&Ar*|tJ8FJ@S|7i^LtWBg zMh3$b=0gr)Zf^iD|ix_T}13HnQ|qzHd-`nXj~$~$Dreo9QAObm=w?m22WQ% Jmvv4FO#uGx9+?0D literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_nojump_side.png b/games/minimal/mods/testnodes/textures/testnodes_nojump_side.png new file mode 100644 index 0000000000000000000000000000000000000000..6a64cfff0fb1339f4b1daf2a94c088eac96ecc48 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|s-7;6Ar*|t3haNb2Pz9Gnh0d- rHMw4xw{Uf02y?1uvxke{B{qg%(@scw8ej1QYGCkm^>bP0l+XkKwOkl} literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_nojump_top.png b/games/minimal/mods/testnodes/textures/testnodes_nojump_top.png new file mode 100644 index 0000000000000000000000000000000000000000..fe770838f0cc6a6345c7c3308bc1ff89d7e8de0a GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9E0F%LqxRu&av_kV=jq}Y zQo)$a(DbXGhtG%S<9>-l@rEwV!yy;u pmbNG*hCJTIQf{UbrvLC@VVJX~#qaC_e+{5=22WQ%mvv4FO#s;08E*gp literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_normal1.png b/games/minimal/mods/testnodes/textures/testnodes_normal1.png new file mode 100644 index 0000000000000000000000000000000000000000..edaba77e4e602f12ec74e2a383e9a148838f52c0 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|mYyz-Ar*|tKh7WcFkj>V!yy;u zmbU-$97;}74Gk>34h~Ih3JM2-_^PLJFf*5f$Hb{7C%kJ^m>9$gm%Z2N-Y^qr2!p4q KpUXO@geCwWXdguY literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_normal2.png b/games/minimal/mods/testnodes/textures/testnodes_normal2.png new file mode 100644 index 0000000000000000000000000000000000000000..0080a9ee74ba07a7b0ba0f4c7f81c5548835a08e GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|j-D=#Ar*|tKh7WcFkj>V!yy;u zmbU-Xrm+ZqHBs2zxPi^bwIz4KVzxtd2SR)Un4S8zB&aIN8BAt&HS~>pq%6q5z_B## V&-2Ty`ar`NJYD@<);T3K0RRBHC2;@% literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_normal3.png b/games/minimal/mods/testnodes/textures/testnodes_normal3.png new file mode 100644 index 0000000000000000000000000000000000000000..0426ab216faf25f645c5b49d202c6f8f79f04318 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|mYyz-Ar*|tKh7WcFkj>V!yy;u zmNw&Q|2dUbWjgGbpusyM=aAWj5awm_Z1+4B%w+#ItZdwK#9fJj;aKs;s7?7tRe^>u Nc)I$ztaD0e0s!SZBo_bx literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_normal4.png b/games/minimal/mods/testnodes/textures/testnodes_normal4.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1922eb6d383c17e8a9499a8fa7d64585dad665 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|hMq2tAr*|tKh7WcFkj>V!yy;u z7PkHe|5*e}O%B}Tcy}QC0K<~XswbHTuK2_~QWj)jaB`?Q^6;Y6G@xb%Pgg&ebxsLQ E0RP@1X8-^I literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_normal5.png b/games/minimal/mods/testnodes/textures/testnodes_normal5.png new file mode 100644 index 0000000000000000000000000000000000000000..0b7dcd2da9d230c61c56d841a333ce36e3c297f3 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|CY~;iAr*|tKh7WcFkj>V!yy-D z72f~(!Y)@XHE?lcI|RFg^G^BAD9kIyyQ1OJ3^o0a6FC_2o=lY~F8=xisGq^p)z4*} HQ$iB}V!yy;u zmbMG}t5^i5nk?AaxPi^bERk2my7OI~LUTZn%?rCm3h~gQu&X J%Q~loCIDBLA_D*b literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_palette_facedir.png b/games/minimal/mods/testnodes/textures/testnodes_palette_facedir.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf47bbbe2693618e4d7851aa9837720df4deca6 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^96-#-!2~38k}5=il$@uFV@L&Ka>|Qe>yOoY_kN!y l^*=XsUvyT2%Hgjp40(q*UX?A<{Q*?T;OXk;vd$@?2>^*(8T9}F literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_palette_full.png b/games/minimal/mods/testnodes/textures/testnodes_palette_full.png new file mode 100644 index 0000000000000000000000000000000000000000..e0a5f8b349809a6a6d3febdca04f93a5b09ddebd GIT binary patch literal 568 zcmV-80>}M{P)3w&f$Iv9rqA>KLQFM?vn#O?xheA>$T~RDJszPs@-Y4PDymNTxp8tLM z?(|$5j6Z22wpVzX@QpQ*&XBH%?HI{776M%@W4^rt=9Fx2MY)PI8Rk=5s3?GUTPt%YbFEfz-=@7rv;FA<_P?-<(bc zh4N}S7xNnM6z0-xq+ctyW_~T*T84%0(uX6@TbtKDwGMSQwJu?atUTV?46<=}=V()V ztTTzuy?kkm%I=umNwZgW&&&a-%$_-|v;YIMdH}OJ<@Ac4TzoW`G#WG+Y!oz_ItQdd zx@L*id<>feqni&Oa7m<;kcv;ll_JUbvJ~T!f`KQbUNX9U{~i{k*jxYt;P+o@#+By#u%9iKQeqCdVTCz zZ?ewDN2F!pQ?>wybr$urZ(R80F^mp>I_Y9}TIE*KuV!c_w0xn2{9`s(YR9673C{bU1*EjR;WvFNyHE3xSc#*z1vjW z=jMi-Q#Y*tU!ERc_uo9yKui7uC$D@#h(q@p>oa#hwM4bpZ%9a8)MV4&GV#qUhy2{b e4%fP3HcRUj%RjyK?T;eR3IXLf<0XvLn;`P6GU1V*iw@X3{+-5%*c`8N^99UYZjB_)1ygA zhuYeBx{kIUJ9uoNgWJxHD~mHWC^mZ~E?lu;qe6ghV&~=sGn6MheDp@?jZV&q06tcR YL))dFYUI1S0F7txboFyt=akR{09*G#o&W#< literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_leveled.png b/games/minimal/mods/testnodes/textures/testnodes_plantlike_leveled.png new file mode 100644 index 0000000000000000000000000000000000000000..53504dbcdd6224baf262d39e82327788cc7ec45b GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|S)MMAAr*|tKMou)cqy>)#l1kb zw*UYC@Bgu1sHtfC&1-8D8wv%LRI9Vm@HtXVlugnK~L!S6vkU#>_A%? NJYD@<);T3K0RRupJlFsL literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_meshoptions.png b/games/minimal/mods/testnodes/textures/testnodes_plantlike_meshoptions.png new file mode 100644 index 0000000000000000000000000000000000000000..d504d459f30d387160543b1001824bcec1b56cf2 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|*`6+rAr*|tKh7U8c&NeI@$mou z|N8&ds|fLy@m}o~HV8eiG{D56zopr08^_t1^@s6 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted.png b/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted.png new file mode 100644 index 0000000000000000000000000000000000000000..79cf2125e1aacf3924774801deff8fd2b5cc3942 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|wVp1HAr*|tKh7U8c&NeI@z7pi zkAl#!H`{}JH}4a=;`XX~~!1~bnx31AjTjOxC?U?>{NKZjf8p%Mpgft?TQAt96J ziCGRBXXBo7Ja4)&L+U|Q!=-{vRfS9w7#&|MWHICnW)^UaXv literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_degrotate.png b/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_degrotate.png new file mode 100644 index 0000000000000000000000000000000000000000..85311cb2c388c32855fc67fe3c36f114a15da63f GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|5uPrNAr*|tKh7Tr5O!u_dYF(N znB=j8?a~*8kjIV|xebed`S@}iy26}#@ajR&9UOMj2EMHvk2W(lT`&>&z?^C3Afa-j t;i~P990!diavTE)IQ%i>Tzvy-WuZAFN(z}CMFD;wXLO%N#m;^nRuR)i0ZbE58FxWbkzLb6Mw<&;$V1wklQt literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_meshoptions.png b/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_meshoptions.png new file mode 100644 index 0000000000000000000000000000000000000000..d100023750f43debb379fcff8fbfc71f959f2e17 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|?w&4=Ar*|tKh7Tr5O!u_dYF(N znB=j8?a~*8kjIV|xhu|JaS3e~aNN$Q#~a-EKxhl2qfjcdTJxzo2M_)gyedaz_g)gp aQnxS_9RV81;OXk;vd$@?2>_CQC|Upj literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_degrotate.png b/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_degrotate.png new file mode 100644 index 0000000000000000000000000000000000000000..45e75bdd329f7ef429b53b89526f27ed0b310eeb GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU{m;NK;V8p@Ab4>qdzEAL z;)L97wh7G)?mNzW1F8x3ba4!+U`$RBX<=YXO*Sx4nfWjyM}jM@W#_C}Op;HJCM6we zYvbuU+IsBZv4sw9J2$Q@&e)*X?3K81#fFUv0ltZyn-|Pbp78L|8>KfoIVS@6SQ!p& Wmwu{|@9qLLp25@A&t;ucLK6VX*+QTI literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_leveled.png b/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_leveled.png new file mode 100644 index 0000000000000000000000000000000000000000..8954b2c34c5870465d8f3ff3a09086bbcd633136 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|nVv3=Ar*|tKMou)cqy>)#l1kb zw*L+v9*M9#&D*>-`Y^*|C6};R)ElW);_3;j8oU=~G;ln;&fxOGEM>V00nl7d>%w_foRSeU4Ig&jtH>?!7x%G*a=E9jKEDQ?0&cah3=JEk8W$<+M Kb6Mw<&;$TK1vFRy literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_waving.png b/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_waving.png new file mode 100644 index 0000000000000000000000000000000000000000..112a0540f589690ab7bd58889c10fd8462c9b407 GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|E}kxqAr*|tKh7U8c&NeI@z7pi zkA;4xt(<3TqA15<@1f+}{rKi)cKcx0&Y aGBPkqyO>sA2EeI zUiapal3wl;<}{IA5>t(@Xnfzv(Z#%!Wom4SIFoC`u9&`*T@pK)ugZM1V7kI;E|A#D o9bkRofGLm8sYku%-4 z(e352?d378Wih+EL%t>l5ta*)J{+yB%qR1lKP%pplg{otAUN$_Q^p?d;^w7?r3;0HeQWsZ*KIGH zwR1sKeL&Xlrpf6%HHSJ6ZdRQ0?dS~&FGCl$M=Ix%vpT(+@9v(Z@#UVUd_c$6t(Up| vR`zYn)ks~r_o-;Qq`bS_gOa!XQ}pEno0Wq?O~T!QE@AL=^>bP0l+XkK#LHg* literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail2_straight.png b/games/minimal/mods/testnodes/textures/testnodes_rail2_straight.png new file mode 100644 index 0000000000000000000000000000000000000000..8749330d85388acf6d84f0547b5eb4a69eafba7e GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF4e$wZZ7YibqFsBpg@y;WmPU6} z#I=-0x0lDZm&de}M7Ng3bd<-omd3OL85ObhWzR1IH8Pe2`2{mLJiCzwFN&du5Jd`8&l77%FW@Js5N~L-$o~ui+5Kr moY9!W5%xLY!_JP0%nafD($c*imkt7*z~JfX=d#Wzp$PzZH&^rk literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail2_t_junction.png b/games/minimal/mods/testnodes/textures/testnodes_rail2_t_junction.png new file mode 100644 index 0000000000000000000000000000000000000000..0517f6570e8ee361ee9c4aa9cc719e4060c664e0 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF4e$wZ1=4M0F}wC|3k?r$EsgG| zh-)d0ZZD5*FOO+0i)k&5=>W3JVmc~fTS}t0EXWrDYG5o0@(X5gcy=QV$f@^qaSW+o zOil9x#z;hW2`3<0`F}K3=lXYAW}HRG>h?-mPlbaOVkV<%-Qx`IiGUfx*+&&t;ucLK6T$DJu8? literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail_curved.png b/games/minimal/mods/testnodes/textures/testnodes_rail_curved.png new file mode 100644 index 0000000000000000000000000000000000000000..e4441984858011cd8eaaee23dea9e2a7bea979e6 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=1^O%sW#wckSI48Xnx6 zc&P{|#8?vK7tG-B>_!@p35kuZ z$CvMqJ^#RG!r!*1m-LhQPRe+f2X;6-S;QfD*EueIWrS9quQ~Ul&K04rfyOa-y85}S Ib4q9e0OdD1wg3PC literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail_straight.png b/games/minimal/mods/testnodes/textures/testnodes_rail_straight.png new file mode 100644 index 0000000000000000000000000000000000000000..872d04fb9b6105e57f17f76c6e3cee0daf69f660 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=73rZVL?$UQuh_nX2=y z#{4Q!h_NKdFPOpM*^M+HN5#{{F@)oKa)Lk-1CuKoTbg3BLV!s^f?yFNlPf#h4iQ

zopr07%Cn@&Et; literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail_t_junction.png b/games/minimal/mods/testnodes/textures/testnodes_rail_t_junction.png new file mode 100644 index 0000000000000000000000000000000000000000..7e4af5182e1c185c5530ecd21cdddafea0fc31a3 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`6FprVLn;`P8yaJ)xBunm<^Oly zfuZ3_!<9uGdg~4U^BXgqIM%(8t>Nb0m$L+#8+axtL`vM{R!Lq}#i+xX^7ya>TS9N^ zr36a>d67pF8ynINBz$4ob=kY=spPE3S0$fKli*L&pVE5b@ZJr}4mKqw?$kW|$0)f+ zLW65cb7kYB7M8;))r{xVt*oE_KE0?Sk{4z BP9^{V literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_signlike.png b/games/minimal/mods/testnodes/textures/testnodes_signlike.png new file mode 100644 index 0000000000000000000000000000000000000000..33ffcba6ca0275756ea01876d6fb479931354013 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|v7RoDAr*|tKh7VRu=bp@P125? zRnG+TGnFRxTBz@o+O}+$qH>4H9PY&6G-iRn|NqOMbJ&o`;L7a6q~4jyJj=6yZ57+8 y+=fXle;q1q793@mvt%2ufasNuOa(PgMg~6VK&zRnI6HtAF?hQAxvX*m}&=L$4|!PC{x JWt~$(69BMNAYT9g literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_street_crossing.png b/games/minimal/mods/testnodes/textures/testnodes_street_crossing.png new file mode 100644 index 0000000000000000000000000000000000000000..d6e35ad7a6f2e10882ea20effae88edd05bd31d5 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|0iG_7Ar*{gCo!@ea1dbr+`mWn zfBAZk*z1eJq8ndvuuIP2<(cq>Nq%M1lD|F&)tzq~Sp7*aL~pOA&w+;bEarO-`s)1o meEH?WPnl01PZl}*o1x{!=C_9zF>3Uv+{@ z!~X<^=Z8d(96M&jV7S**fx&mK$*cB2djvvZEIT<4b)W_iI>gTe~DWM4fCZ!(; literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_street_t_junction.png b/games/minimal/mods/testnodes/textures/testnodes_street_t_junction.png new file mode 100644 index 0000000000000000000000000000000000000000..713621e0661b1b65e2bb8f3e3c6fb76fb31c43c8 GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|uAVNAAr*|tKh7Ue(AE9>Uv?zrCvE@$ literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_sunlight_filter.png b/games/minimal/mods/testnodes/textures/testnodes_sunlight_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..b38ea40729b0a336119a8ffd154baf9fd2df8d60 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!9W@a@|Lkr1X60AE{-7; zjL8~mf(<4=gm^DqzPwOMLPDZLv3+7&Nzj1@9qkt@7#K>IpOjDDelZ%P)6><@Wt~$( F696qV9qIr8 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_torchlike_ceiling.png b/games/minimal/mods/testnodes/textures/testnodes_torchlike_ceiling.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9862cc988af30c729428df42cf6731cdc5ac4e GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`DV{ElAr*|tKh7WcFkk2Z1B-)@ z@C=Vnf7uh+Lo)@^4lw?6?s%Af;6J|v8^h5KV}?}|l$aGNwr{t&!JxoA%2n6&H8TxOXX37~xpp00i_>zopr E02vuD$p8QV literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_torchlike_floor.png b/games/minimal/mods/testnodes/textures/testnodes_torchlike_floor.png new file mode 100644 index 0000000000000000000000000000000000000000..adf1e002dd67b65035e93622ae3c93baef3f1c1d GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`A)YRdAr*|tKh86_Oi2)6R5{7| zUy((Z_s9RnhxQzkGZ>tdBiR&8ls@F;|NOsXH^V~7{fsOohYemPCMca`zwWb%QQ@q@ on+00DhZGcNNg8AwsOMs2(A<1MX+t4P3($N9Pgg&ebxsLQ0Ny1m6951J literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testnodes/textures/testnodes_torchlike_wall.png b/games/minimal/mods/testnodes/textures/testnodes_torchlike_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..cb442b22d84150cad41d4181a7cdca7a9ad64f09 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`sh%#5Ar*{g&urvu2oPv~=#!u? z7MAyb;alIEpgaN3k195SJ3{`&JXpowqBooA%L7UO4ZQky8A2Lrn2y_BW?ai;F^SoB zldiC`Lv}+LQ`BpV0OKXhOiOqygqZt|G;}e(k9ROBW!&Pn-?Jc)@deOA22WQ%mvv4F FO#r_LGkpL6 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testpathfinder/README.md b/games/minimal/mods/testpathfinder/README.md new file mode 100644 index 000000000..2b9d46e70 --- /dev/null +++ b/games/minimal/mods/testpathfinder/README.md @@ -0,0 +1,15 @@ +# Pathfinder Tester + +Usage: + +Use the Pathfinder Tester tool (`testpathfinder:testpathfinder`). +Here's how it works: + +* Place on node: Set destination position +* Punch: Find path +* Sneak+punch: Select pathfinding algorithm + +Information will be shown in chat. If a path was found, all waypoints +will be shown for a few seconds. + +See `init.lua` for config variables. diff --git a/games/minimal/mods/testpathfinder/init.lua b/games/minimal/mods/testpathfinder/init.lua new file mode 100644 index 000000000..f94848236 --- /dev/null +++ b/games/minimal/mods/testpathfinder/init.lua @@ -0,0 +1,132 @@ +local S = minetest.get_translator("testpathfinder") + +-- Config parameters + +-- Maximum direct distance between start and end +local MAX_DIRECT_DISTANCE = 64 +-- Maximum search distance +local MAX_SEARCH_DISTANCE = 32 +-- Maximum permitted jump height +local MAX_JUMP = 1 +-- Maximum permitted drop height +local MAX_DROP = 5 +-- If true, mod won't refuse to run pathfinder even at long distances +local IGNORE_MAX_DISTANCE_SAFEGUARD = false + +-- End of config parameters + +local timer = 0 +local algorithms = { + "A*_noprefetch", + "A*", + "Dijkstra", +} + +local function find_path_for_player(player, itemstack) + local meta = itemstack:get_meta() + if not meta then + return + end + local x = meta:get_int("pos_x") + local y = meta:get_int("pos_y") + local z = meta:get_int("pos_z") + local algo = meta:get_int("algorithm") + if x and y and z then + local pos2 = {x=x, y=y, z=z} + algo = algorithms[algo+1] + local pos1 = vector.round(player:get_pos()) + -- Don't bother calling pathfinder for high distance to avoid freezing + if (not IGNORE_MAX_DISTANCE_SAFEGUARD) and (vector.distance(pos1, pos2) > MAX_DIRECT_DISTANCE) then + minetest.chat_send_player(player:get_player_name(), S("Destination too far away! Set a destination (via placing) within a distance of @1 and try again!", MAX_DIRECT_DISTANCE)) + return + end + local str = S("Path from @1 to @2:", + minetest.pos_to_string(pos1), + minetest.pos_to_string(pos2)) + + minetest.chat_send_player(player:get_player_name(), str) + local time_start = minetest.get_us_time() + local path = minetest.find_path(pos1, pos2, MAX_SEARCH_DISTANCE, MAX_JUMP, MAX_DROP, algo) + local time_end = minetest.get_us_time() + local time_diff = time_end - time_start + str = "" + if not path then + minetest.chat_send_player(player:get_player_name(), S("No path!")) + minetest.chat_send_player(player:get_player_name(), S("Time: @1 ms", time_diff/1000)) + return + end + for s=1, #path do + str = str .. minetest.pos_to_string(path[s]) .. "\n" + local t + if s == #path then + t = "testpathfinder_waypoint_end.png" + elseif s == 1 then + t = "testpathfinder_waypoint_start.png" + else + local c = math.floor(((#path-s)/#path)*255) + t = string.format("testpathfinder_waypoint.png^[multiply:#%02x%02x00", 0xFF-c, c) + end + minetest.add_particle({ + pos = path[s], + expirationtime = 5 + 0.2 * s, + playername = player:get_player_name(), + glow = minetest.LIGHT_MAX, + texture = t, + size = 3, + }) + end + minetest.chat_send_player(player:get_player_name(), str) + minetest.chat_send_player(player:get_player_name(), S("Path length: @1", #path)) + minetest.chat_send_player(player:get_player_name(), S("Time: @1 ms", time_diff/1000)) + end +end + +local function set_destination(itemstack, user, pointed_thing) + if not (user and user:is_player()) then + return + end + local name = user:get_player_name() + local obj + local meta = itemstack:get_meta() + if pointed_thing.type == "node" then + local pos = pointed_thing.above + meta:set_int("pos_x", pos.x) + meta:set_int("pos_y", pos.y) + meta:set_int("pos_z", pos.z) + minetest.chat_send_player(user:get_player_name(), S("Destination set to @1", minetest.pos_to_string(pos))) + return itemstack + end +end + +local function find_path_or_set_algorithm(itemstack, user, pointed_thing) + if not (user and user:is_player()) then + return + end + local ctrl = user:get_player_control() + -- No sneak: Find path + if not ctrl.sneak then + find_path_for_player(user, itemstack) + else + -- Sneak: Set algorithm + local meta = itemstack:get_meta() + local algo = meta:get_int("algorithm") + algo = (algo + 1) % #algorithms + meta:set_int("algorithm", algo) + minetest.chat_send_player(user:get_player_name(), S("Algorithm: @1", algorithms[algo+1])) + return itemstack + end +end + +-- Punch: Find path +-- Sneak+punch: Select pathfinding algorithm +-- Place: Select destination node +minetest.register_tool("testpathfinder:testpathfinder", { + description = S("Pathfinder Tester"), + inventory_image = "testpathfinder_testpathfinder.png", + groups = { testtool = 1, disable_repair = 1 }, + on_use = find_path_or_set_algorithm, + on_secondary_use = set_destination, + on_place = set_destination, +}) + + diff --git a/games/minimal/mods/testpathfinder/mod.conf b/games/minimal/mods/testpathfinder/mod.conf new file mode 100644 index 000000000..e6034ae8c --- /dev/null +++ b/games/minimal/mods/testpathfinder/mod.conf @@ -0,0 +1,2 @@ +name = testpathfinder +description = Tool to test Minetest's pathfinder function diff --git a/games/minimal/mods/testpathfinder/textures/testpathfinder_testpathfinder.png b/games/minimal/mods/testpathfinder/textures/testpathfinder_testpathfinder.png new file mode 100644 index 0000000000000000000000000000000000000000..37eef0565458e2210ff0d048e4d79edf5182887e GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`X`U{QAr*{s`xw~{I0!I*{_h{Z zP|^F@8tJgiRI93oEOmn0pL{>D#6f6&dtI4jdkEv7qxVy*lbo~F2vW5ESVHw|VrIq=swbQP`Iu>V^d&_)JNS3j3^ HP6=OqZvGJrUnZ`-?hK;kzL<+0d+BWy85}Sb4q9e0222ZV*mgE literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint_end.png b/games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint_end.png new file mode 100644 index 0000000000000000000000000000000000000000..41a1cc549a914cbf81ac93589f8c085df4dc4af9 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!3_UF&^$uA7AWH3>Eakt z!8mnNBO8N)fb;wR^}mE>-0Uh3+wnHAbaQiwxCZmL#SB~Wr!nz`sKuVQ3|?E=wrPID ro_kLi?1lE5)Q9~mtTFlV!BBR_bfG^Xb_c!!&1CR&^>bP0l+XkK4*xP| literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint_start.png b/games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint_start.png new file mode 100644 index 0000000000000000000000000000000000000000..a22e31c3bcbf1cf62405a624430f5da27bbb7bb8 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`L7py-Ar*{!CpWSkFyL`{zx(@V z^DBvWoW4cO7ZK`T)|ql*r`<8<4U4(gt#~VE^*nS!la^>ru6{1-oD!M math.pi*2 then + rot[axis] = rot[axis] - math.pi*2 + end + obj:set_rotation(rot) + end + end, +}) + +local mover_config = function(itemstack, user, pointed_thing) + if not (user and user:is_player()) then + return + end + local name = user:get_player_name() + local ctrl = user:get_player_control() + local meta = itemstack:get_meta() + local dist = 1.0 + if meta:contains("distance") then + dist = meta:get_int("distance") + end + if ctrl.sneak then + dist = dist - 1 + else + dist = dist + 1 + end + meta:set_int("distance", dist) + minetest.chat_send_player(user:get_player_name(), S("distance=@1/10", dist*2)) + return itemstack +end + +minetest.register_tool("testtools:object_mover", { + description = S("Object Mover"), + inventory_image = "testtools_object_mover.png", + groups = { testtool = 1, disable_repair = 1 }, + on_place = mover_config, + on_secondary_use = mover_config, + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "object" then + return + end + local obj = pointed_thing.ref + if not (user and user:is_player()) then + return + end + local yaw = user:get_look_horizontal() + local dir = minetest.yaw_to_dir(yaw) + local pos = obj:get_pos() + local pitch = user:get_look_vertical() + if pitch > 0.25 * math.pi then + dir.y = -1 + dir.x = 0 + dir.z = 0 + elseif pitch < -0.25 * math.pi then + dir.y = 1 + dir.x = 0 + dir.z = 0 + end + local ctrl = user:get_player_control() + if ctrl.sneak then + dir = vector.multiply(dir, -1) + end + local meta = itemstack:get_meta() + if meta:contains("distance") then + local dist = meta:get_int("distance") + dir = vector.multiply(dir, dist*0.2) + end + pos = vector.add(pos, dir) + obj:set_pos(pos) + end, +}) + + + +minetest.register_tool("testtools:entity_scaler", { + description = S("Entity Visual Scaler"), + inventory_image = "testtools_entity_scaler.png", + groups = { testtool = 1, disable_repair = 1 }, + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "object" then + return + end + local obj = pointed_thing.ref + if obj:is_player() then + -- No player scaling + return + else + local diff = 0.1 + if user and user:is_player() then + local ctrl = user:get_player_control() + if ctrl.sneak then + diff = -0.1 + end + end + local prop = obj:get_properties() + if not prop.visual_size then + prop.visual_size = { x=1, y=1, z=1 } + else + prop.visual_size = { x=prop.visual_size.x+diff, y=prop.visual_size.y+diff, z=prop.visual_size.z+diff } + if prop.visual_size.x <= 0.1 then + prop.visual_size.x = 0.1 + end + if prop.visual_size.y <= 0.1 then + prop.visual_size.y = 0.1 + end + if prop.visual_size.z <= 0.1 then + prop.visual_size.z = 0.1 + end + end + obj:set_properties(prop) + end + end, +}) + +local selections = {} +local entity_list +local function get_entity_list() + if entity_list then + return entity_list + end + local ents = minetest.registered_entities + local list = {} + for k,_ in pairs(ents) do + table.insert(list, k) + end + table.sort(list) + entity_list = list + return entity_list +end +minetest.register_tool("testtools:entity_spawner", { + description = S("Entity Spawner"), + inventory_image = "testtools_entity_spawner.png", + groups = { testtool = 1, disable_repair = 1 }, + on_place = function(itemstack, user, pointed_thing) + local name = user:get_player_name() + if selections[name] and pointed_thing.type == "node" then + local pos = pointed_thing.above + minetest.add_entity(pos, get_entity_list()[selections[name]]) + end + end, + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type == "object" then + return + end + if user and user:is_player() then + local list = table.concat(get_entity_list(), ",") + local name = user:get_player_name() + local sel = selections[name] or "" + minetest.show_formspec(name, "testtools:entity_list", + "size[9,9]".. + "textlist[0,0;9,8;entity_list;"..list..";"..sel..";false]".. + "button[0,8;4,1;spawn;Spawn entity]" + ) + end + end, +}) + +local function prop_to_string(property) + if type(property) == "string" then + return "\"" .. property .. "\"" + elseif type(property) == "table" then + return tostring(dump(property)):gsub("\n", "") + else + return tostring(property) + end +end + +local property_formspec_data = {} +local property_formspec_index = {} +local selected_objects = {} +local function get_object_properties_form(obj, playername) + if not playername then return "" end + local props = obj:get_properties() + local str = "" + property_formspec_data[playername] = {} + local proplist = {} + for k,_ in pairs(props) do + table.insert(proplist, k) + end + table.sort(proplist) + for p=1, #proplist do + local k = proplist[p] + local v = props[k] + local newline = "" + newline = k .. " = " + newline = newline .. prop_to_string(v) + str = str .. F(newline) + if p < #proplist then + str = str .. "," + end + table.insert(property_formspec_data[playername], k) + end + return str +end + +local editor_formspec_selindex = {} + +local editor_formspec = function(playername, obj, value, sel) + if not value then + value = "" + end + if not sel then + sel = "" + end + local list = get_object_properties_form(obj, playername) + local title + if obj:is_player() then + title = S("Object properties of player “@1”", obj:get_player_name()) + else + local ent = obj:get_luaentity() + title = S("Object properties of @1", ent.name) + end + minetest.show_formspec(playername, "testtools:object_editor", + "size[9,9]".. + "label[0,0;"..F(title).."]".. + "textlist[0,0.5;9,7.5;object_props;"..list..";"..sel..";false]".. + "field[0.2,8.75;8,1;value;"..F(S("Value"))..";"..F(value).."]".. + "button[8,8.5;1,1;submit;"..F(S("Submit")).."]" + ) +end + +minetest.register_tool("testtools:object_editor", { + description = S("Object Property Editor"), + inventory_image = "testtools_object_editor.png", + groups = { testtool = 1, disable_repair = 1 }, + on_use = function(itemstack, user, pointed_thing) + if user and user:is_player() then + local name = user:get_player_name() + + if pointed_thing.type == "object" then + selected_objects[name] = pointed_thing.ref + elseif pointed_thing.type == "nothing" then + -- Use on yourself if pointing nothing + selected_objects[name] = user + else + -- Unsupported pointed thing + return + end + + local sel = editor_formspec_selindex[name] + local val + if selected_objects[name] and selected_objects[name]:get_properties() then + local props = selected_objects[name]:get_properties() + local keys = property_formspec_data[name] + if property_formspec_index[name] and props then + local key = keys[property_formspec_index[name]] + val = prop_to_string(props[key]) + end + end + + editor_formspec(name, selected_objects[name], val, sel) + end + end, +}) + +local ent_parent = {} +local ent_child = {} +local DEFAULT_ATTACH_OFFSET_Y = 11 + +local attacher_config = function(itemstack, user, pointed_thing) + if not (user and user:is_player()) then + return + end + if pointed_thing.type == "object" then + return + end + local name = user:get_player_name() + local ctrl = user:get_player_control() + local meta = itemstack:get_meta() + if ctrl.aux1 then + local rot_x = meta:get_float("rot_x") + if ctrl.sneak then + rot_x = rot_x - math.pi/8 + else + rot_x = rot_x + math.pi/8 + end + if rot_x > 6.2 then + rot_x = 0 + elseif rot_x < 0 then + rot_x = math.pi * (15/8) + end + minetest.chat_send_player(name, S("rotation=@1", minetest.pos_to_string({x=rot_x,y=0,z=0}))) + meta:set_float("rot_x", rot_x) + else + local pos_y + if meta:contains("pos_y") then + pos_y = meta:get_int("pos_y") + else + pos_y = DEFAULT_ATTACH_OFFSET_Y + end + if ctrl.sneak then + pos_y = pos_y - 1 + else + pos_y = pos_y + 1 + end + minetest.chat_send_player(name, S("position=@1", minetest.pos_to_string({x=0,y=pos_y,z=0}))) + meta:set_int("pos_y", pos_y) + end + return itemstack +end + +minetest.register_tool("testtools:object_attacher", { + description = S("Object Attacher"), + inventory_image = "testtools_object_attacher.png", + groups = { testtool = 1, disable_repair = 1 }, + on_place = attacher_config, + on_secondary_use = attacher_config, + on_use = function(itemstack, user, pointed_thing) + if user and user:is_player() then + local name = user:get_player_name() + local selected_object + if pointed_thing.type == "object" then + selected_object = pointed_thing.ref + elseif pointed_thing.type == "nothing" then + selected_object = user + else + return + end + local ctrl = user:get_player_control() + if ctrl.sneak then + if selected_object:get_attach() then + selected_object:set_detach() + minetest.chat_send_player(name, S("Object detached!")) + else + minetest.chat_send_player(name, S("Object is not attached!")) + end + return + end + local parent = ent_parent[name] + local child = ent_child[name] + local ename = S("") + if not parent then + parent = selected_object + ent_parent[name] = parent + elseif not child then + child = selected_object + ent_child[name] = child + end + local entity = selected_object:get_luaentity() + if entity then + ename = entity.name + elseif selected_object:is_player() then + ename = selected_object:get_player_name() + end + if selected_object == parent then + minetest.chat_send_player(name, S("Parent object selected: @1", ename)) + elseif selected_object == child then + minetest.chat_send_player(name, S("Child object selected: @1", ename)) + end + if parent and child then + if parent == child then + minetest.chat_send_player(name, S("Can't attach an object to itself!")) + ent_parent[name] = nil + ent_child[name] = nil + return + end + local meta = itemstack:get_meta() + local y + if meta:contains("pos_y") then + y = meta:get_int("pos_y") + else + y = DEFAULT_ATTACH_OFFSET_Y + end + local rx = meta:get_float("rot_x") or 0 + local offset = {x=0,y=y,z=0} + local angle = {x=rx,y=0,z=0} + child:set_attach(parent, "", offset, angle) + local check_parent = child:get_attach() + if check_parent then + minetest.chat_send_player(name, S("Object attached! position=@1, rotation=@2", + minetest.pos_to_string(offset), minetest.pos_to_string(angle))) + else + minetest.chat_send_player(name, S("Attachment failed!")) + end + ent_parent[name] = nil + ent_child[name] = nil + end + end + end, +}) + +-- Use loadstring to parse param as a Lua value +local function use_loadstring(param, player) + -- For security reasons, require 'server' priv, just in case + -- someone is actually crazy enough to run this on a public server. + local privs = minetest.get_player_privs(player:get_player_name()) + if not privs.server then + return false, "You need 'server' privilege to change object properties!" + end + if not param then + return false, "Failed: parameter is nil" + end + --[[ DANGER ZONE ]] + -- Interpret string as Lua value + local func, errormsg = loadstring("return (" .. param .. ")") + if not func then + return false, "Failed: " .. errormsg + end + + -- Apply sandbox here using setfenv + setfenv(func, {}) + + -- Run it + local good, errOrResult = pcall(func) + if not good then + -- A Lua error was thrown + return false, "Failed: " .. errOrResult + end + + -- errOrResult will be the value + return true, errOrResult +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if not (player and player:is_player()) then + return + end + if formname == "testtools:entity_list" then + local name = player:get_player_name() + if fields.entity_list then + local expl = minetest.explode_textlist_event(fields.entity_list) + if expl.type == "DCL" then + local pos = vector.add(player:get_pos(), {x=0,y=1,z=0}) + selections[name] = expl.index + minetest.add_entity(pos, get_entity_list()[expl.index]) + return + elseif expl.type == "CHG" then + selections[name] = expl.index + return + end + elseif fields.spawn and selections[name] then + local pos = vector.add(player:get_pos(), {x=0,y=1,z=0}) + minetest.add_entity(pos, get_entity_list()[selections[name]]) + return + end + elseif formname == "testtools:object_editor" then + local name = player:get_player_name() + if fields.object_props then + local expl = minetest.explode_textlist_event(fields.object_props) + if expl.type == "DCL" or expl.type == "CHG" then + property_formspec_index[name] = expl.index + + local props = selected_objects[name]:get_properties() + local keys = property_formspec_data[name] + if (not property_formspec_index[name]) or (not props) then + return + end + local key = keys[property_formspec_index[name]] + editor_formspec_selindex[name] = expl.index + editor_formspec(name, selected_objects[name], prop_to_string(props[key]), expl.index) + return + end + end + if fields.submit then + local props = selected_objects[name]:get_properties() + local keys = property_formspec_data[name] + if (not property_formspec_index[name]) or (not props) then + return + end + local key = keys[property_formspec_index[name]] + if not key then + return + end + local success, str = use_loadstring(fields.value, player) + if success then + props[key] = str + else + minetest.chat_send_player(name, str) + return + end + selected_objects[name]:set_properties(props) + local sel = editor_formspec_selindex[name] + editor_formspec(name, selected_objects[name], prop_to_string(props[key]), sel) + return + end + end +end) diff --git a/games/minimal/mods/testtools/mod.conf b/games/minimal/mods/testtools/mod.conf new file mode 100644 index 000000000..cde1b2685 --- /dev/null +++ b/games/minimal/mods/testtools/mod.conf @@ -0,0 +1,2 @@ +name = testtools +description = Some tools to directly manipulate nodes and entities. Great for development and testing diff --git a/games/minimal/mods/testtools/textures/testtools_entity_rotator.png b/games/minimal/mods/testtools/textures/testtools_entity_rotator.png new file mode 100644 index 0000000000000000000000000000000000000000..17ebb2d35a89a13ccfd0f5bac53020c20d6390fb GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ah@)YAr*{kCor-x81k^Z|L z>-E2jU;hir|S8q+6U76}5_UGSR!`EDms*%A3b2d79c`Qh~`jk!6 zBj|v9FRQ`aI6sesdrY?Gr=CYkm~W4gk={I$B{}VLu9*4t!cQglwK>mdKI;Vst0Nn;f=>Px# literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testtools/textures/testtools_entity_spawner.png b/games/minimal/mods/testtools/textures/testtools_entity_spawner.png new file mode 100644 index 0000000000000000000000000000000000000000..6199e0145fdb4252ba60c8bf6845a85f7104bf0e GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EuJopAr*{kCN;7hFyL`vKhW^^ z?=R2S`mH`Md~N1(+4ikG?Y-;S4ORJPGkJe&yN{1nQ*)ha-7Sm*nHd=7mwzn|Pyg2lbPt24tDnm{r-UW|C~!&j literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testtools/textures/testtools_falling_node_tool.png b/games/minimal/mods/testtools/textures/testtools_falling_node_tool.png new file mode 100644 index 0000000000000000000000000000000000000000..30099a7ef4201f6f6bfe8e8c52c3a5a371c6f615 GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`!JaOTAr*|t2iX1enUXDj{CQ?F zLoMubeF~4LGEV}R;w%M;BW))xUSeR8Si|OE!oP&kCDY+J2eW};T(qH~=emUs#!9PB nTgTe~DWM4f`a?yO literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testtools/textures/testtools_object_editor.png b/games/minimal/mods/testtools/textures/testtools_object_editor.png new file mode 100644 index 0000000000000000000000000000000000000000..d1ce9cecdb5919c281848625c5532b808cdd4fe7 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`)t)YnAr*{!Cm!T%2;gz9{{HNY z-a_e>+M-%d-8me!_WogCnBeJiHSKW#kKplKo_R}8)Z{S+Hb|6Y9oTeB`oXK~YElB1 z4p{T<*ye2d+w@F`<XZ)VJs{4Hd<{lM9rXA`V0{1jJgu-6HmZTdi8<;z*m e=Pd2dJ~JFk?Y~=7lN}Cp27{-opUXO@geCx!4n@ZR literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testtools/textures/testtools_object_mover.png b/games/minimal/mods/testtools/textures/testtools_object_mover.png new file mode 100644 index 0000000000000000000000000000000000000000..8b14e9fb2a680154ede93137b9a3928f6f4c9d7e GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Wu7jMAr*{gCKz%xIPkDszWwu= zjnm)2FM(Wn8=WM!?rANEF`TSw=(kN-L!HMu5QHW;!rZL8Jv zW&X0M!F>DSVW+d*Una7Vdud`{{%u8&cL)@lLejRR3)saP|u; Z!^#=iCm8NZ%L84&;OXk;vd$@?2>^_nK^p)7 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testtools/textures/testtools_param2tool.png b/games/minimal/mods/testtools/textures/testtools_param2tool.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc66357589142a637ad07b4a34e98b8e475bf87 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Zk{fVAr*|t3sisf_jq2bs1h_% zyQSd6%fakvz~J(D^5Uh8J46NE@=9f@op1OrlIfPQB*ZwA!S-w7aTcBf-JH@6BFoem Z7=kvodCdBH|2xn`22WQ%mvv4FO#n+?CY%5O literal 0 HcmV?d00001 diff --git a/games/minimal/mods/testtools/textures/testtools_remover.png b/games/minimal/mods/testtools/textures/testtools_remover.png new file mode 100644 index 0000000000000000000000000000000000000000..73f14cd549949a103d0799da7bdb64c03e8f3382 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`9-c0aAr*|t3sisfyU*G1>~da0 z>;J+|;VU&&f=-63EF{|=T=lsjU}U1qP-+tVu7+j4-Npug!HKgPP5fMsWFBMASS0yy cOCtlr$-d5G>mLN<1I=XcboFyt=akR{0K&;ETmS$7 literal 0 HcmV?d00001 diff --git a/games/minimal/mods/tiled/init.lua b/games/minimal/mods/tiled/init.lua new file mode 100644 index 000000000..68ead8e3a --- /dev/null +++ b/games/minimal/mods/tiled/init.lua @@ -0,0 +1,33 @@ +minetest.register_node("tiled:tiled", { + description = "Tiled Node (world-aligned)", + tiles = {{ + name = "tiled_tiled.png", + align_style = "world", + scale = 8, + }}, + groups = {cracky=3}, +}) + +minetest.register_node("tiled:tiled_n", { + description = "Tiled Node (node-aligned)", + tiles = {{ + name = "tiled_tiled.png", + align_style = "node", + scale = 8, + }}, + groups = {cracky=3}, +}) + +stairs.register_stair_and_slab("tiled_n", "tiled:tiled", + {cracky=3}, + {{name="tiled_tiled.png", align_style="node", scale=8}}, + "Tiled Stair (node-aligned)", + "Tiled Slab (node-aligned)") + +stairs.register_stair_and_slab("tiled", "tiled:tiled", + {cracky=3}, + {{name="tiled_tiled.png", align_style="world", scale=8}}, + "Tiled Stair (world-aligned)", + "Tiled Slab (world-aligned)") + + diff --git a/games/minimal/mods/tiled/mod.conf b/games/minimal/mods/tiled/mod.conf new file mode 100644 index 000000000..78b19f93b --- /dev/null +++ b/games/minimal/mods/tiled/mod.conf @@ -0,0 +1,3 @@ +name = tiled +description = Add nodes with a special texture that spans multiple nodes (aka "world-aligned") +depends = stairs diff --git a/games/minimal/mods/tiled/textures/tiled_tiled.png b/games/minimal/mods/tiled/textures/tiled_tiled.png new file mode 100644 index 0000000000000000000000000000000000000000..363a264870a5927f03e7fd4c74e22066cf09d403 GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?I3?vN&YJLDIp#Yx{S0Fue=FBr^&in@gAcx`q zo1Lue3=E9Uo-U3d6^w6ZI_4cR5OMLWW{hgBy&Jcn>n!7{XH0=le#b9Wo2OT&rC6`l zZ6cNLHsgt5!WV;2opN_i8^zf_GHScV^L5|nmC*w6q7#lCOmpgcy{4f~r(qpK6+@EL z1Z{^clEMtO46oS)XZ~Bp+QXI*_b^ZS@`HQn0>RGARiYUOSR1tUGR_qIWKCf(0x~AN zWc$syVfBYEe!b>$A97ah{4Ct?{@`n76$Va*cK#20G9P?ml#6y)%r7Nn^5cNngYZVi zCp-OYCS){l*5_SKI96Sy^ONn5)(Lio6YQT3iVFX`bIs#ZV~v9RnICz-C$qmf?7`w- zH-UeP{f*msvA>yrf;ii5Ed(lVtSMMmdKI;Vst0LkgE Ah5!Hn literal 0 HcmV?d00001 diff --git a/games/minimal/mods/unittests/crafting.lua b/games/minimal/mods/unittests/crafting.lua new file mode 100644 index 000000000..eff13ce09 --- /dev/null +++ b/games/minimal/mods/unittests/crafting.lua @@ -0,0 +1,120 @@ +-- Test minetest.clear_craft function +local function test_clear_craft() + minetest.log("info", "[unittests] Testing minetest.clear_craft") + -- Clearing by output + minetest.register_craft({ + output = "foo", + recipe = {{"bar"}} + }) + minetest.register_craft({ + output = "foo 4", + recipe = {{"foo", "bar"}} + }) + assert(#minetest.get_all_craft_recipes("foo") == 2) + minetest.clear_craft({output="foo"}) + assert(minetest.get_all_craft_recipes("foo") == nil) + -- Clearing by input + minetest.register_craft({ + output = "foo 4", + recipe = {{"foo", "bar"}} + }) + assert(#minetest.get_all_craft_recipes("foo") == 1) + minetest.clear_craft({recipe={{"foo", "bar"}}}) + assert(minetest.get_all_craft_recipes("foo") == nil) +end + +-- Test minetest.get_craft_result function +local function test_get_craft_result() + minetest.log("info", "[unittests] Testing minetest.get_craft_result") + + -- normal + local input = { + method = "normal", + width = 2, + items = {"", "unittests:coal_lump", "", "unittests:stick"} + } + minetest.log("info", "[unittests] torch crafting input: "..dump(input)) + local output, decremented_input = minetest.get_craft_result(input) + minetest.log("info", "[unittests] torch crafting output: "..dump(output)) + minetest.log("info", "[unittests] torch crafting decremented input: "..dump(decremented_input)) + assert(output.item) + minetest.log("info", "[unittests] torch crafting output.item:to_table(): "..dump(output.item:to_table())) + assert(output.item:get_name() == "unittests:torch") + assert(output.item:get_count() == 4) + + -- fuel + input = { + method = "fuel", + width = 1, + items = {"unittests:coal_lump"} + } + minetest.log("info", "[unittests] coal fuel input: "..dump(input)) + output, decremented_input = minetest.get_craft_result(input) + minetest.log("info", "[unittests] coal fuel output: "..dump(output)) + minetest.log("info", "[unittests] coal fuel decremented input: "..dump(decremented_input)) + assert(output.time) + assert(output.time > 0) + + -- cooking + input = { + method = "cooking", + width = 1, + items = {"unittests:iron_lump"} + } + minetest.log("info", "[unittests] iron lump cooking input: "..dump(output)) + output, decremented_input = minetest.get_craft_result(input) + minetest.log("info", "[unittests] iron lump cooking output: "..dump(output)) + minetest.log("info", "[unittests] iron lump cooking decremented input: "..dump(decremented_input)) + assert(output.time) + assert(output.time > 0) + assert(output.item) + minetest.log("info", "[unittests] iron lump cooking output.item:to_table(): "..dump(output.item:to_table())) + assert(output.item:get_name() == "unittests:steel_ingot") + assert(output.item:get_count() == 1) + + -- tool repair (repairable) + input = { + method = "normal", + width = 2, + -- Using a wear of 60000 + items = {"unittests:repairable_tool 1 60000", "unittests:repairable_tool 1 60000"} + } + minetest.log("info", "[unittests] repairable tool crafting input: "..dump(input)) + output, decremented_input = minetest.get_craft_result(input) + minetest.log("info", "[unittests] repairable tool crafting output: "..dump(output)) + minetest.log("info", "[unittests] repairable tool crafting decremented input: "..dump(decremented_input)) + assert(output.item) + minetest.log("info", "[unittests] repairable tool crafting output.item:to_table(): "..dump(output.item:to_table())) + assert(output.item:get_name() == "unittests:repairable_tool") + -- Test the wear value. + -- See src/craftdef.cpp in Minetest source code for the formula. The formula to calculate + -- the value 51187 is: + -- 65536 - ((65536-60000)+(65536-60000)) + floor(additonal_wear * 65536 + 0.5) = 51187 + -- where additional_wear = 0.05 + assert(output.item:get_wear() == 51187) + assert(output.item:get_count() == 1) + + -- failing tool repair (unrepairable) + input = { + method = "normal", + width = 2, + items = {"unittests:unrepairable_tool 1 60000", "unittests:unrepairable_tool 1 60000"} + } + minetest.log("info", "[unittests] unrepairable tool crafting input: "..dump(input)) + output, decremented_input = minetest.get_craft_result(input) + minetest.log("info", "[unittests] unrepairable tool crafting output: "..dump(output)) + minetest.log("info", "[unittests] unrepairable tool crafting decremented input: "..dump(decremented_input)) + assert(output.item) + minetest.log("info", "[unittests] unrepairable tool crafting output.item:to_table(): "..dump(output.item:to_table())) + -- unrepairable tool must not yield any output + assert(output.item:get_name() == "") + +end + +function unittests.test_crafting() + test_clear_craft() + test_get_craft_result() + minetest.log("action", "[unittests] Crafting tests passed!") + return true +end + diff --git a/games/minimal/mods/unittests/crafting_prepare.lua b/games/minimal/mods/unittests/crafting_prepare.lua new file mode 100644 index 000000000..a09734827 --- /dev/null +++ b/games/minimal/mods/unittests/crafting_prepare.lua @@ -0,0 +1,88 @@ +-- Registering some dummy items and recipes for the crafting tests + +minetest.register_craftitem("unittests:torch", { + description = "Crafting Test Item: Torch", + inventory_image = "unittests_torch.png", + + groups = { dummy = 1 }, +}) +minetest.register_craftitem("unittests:coal_lump", { + description = "Crafting Test Item: Coal Lump", + inventory_image = "unittests_coal_lump.png", + + groups = { dummy = 1 }, +}) +minetest.register_craftitem("unittests:stick", { + description = "Crafting Test Item: Stick", + inventory_image = "unittests_stick.png", + + groups = { dummy = 1 }, +}) +minetest.register_craftitem("unittests:iron_lump", { + description = "Crafting Test Item: Iron Lump", + inventory_image = "unittests_iron_lump.png", + + groups = { dummy = 1 }, +}) +minetest.register_craftitem("unittests:steel_ingot", { + description = "Crafting Test Item: Steel Ingot", + inventory_image = "unittests_steel_ingot.png", + + groups = { dummy = 1 }, +}) + +-- Recipes for tests: Normal crafting, cooking and fuel + +minetest.register_craft({ + output = 'unittests:torch 4', + recipe = { + {'unittests:coal_lump'}, + {'unittests:stick'}, + } +}) + +minetest.register_craft({ + type = "cooking", + output = "unittests:steel_ingot", + recipe = "unittests:iron_lump", +}) + +minetest.register_craft({ + type = "fuel", + recipe = "unittests:coal_lump", + burntime = 40, +}) + +-- Test tool repair +minetest.register_craft({ + type = "toolrepair", + additional_wear = -0.05, +}) + +-- Test the disable_repair=1 group +minetest.register_tool("unittests:unrepairable_tool", { + description = "Crafting Test Item: Unrepairable Tool", + inventory_image = "unittests_unrepairable_tool.png", + tool_capabilities = { + groupcaps = { + cracky = { + times = {3, 2, 1}, + } + } + }, + groups = { disable_repair = 1, dummy = 1 } +}) + +minetest.register_tool("unittests:repairable_tool", { + description = "Crafting Test Item: Repairable Tool", + inventory_image = "unittests_repairable_tool.png", + tool_capabilities = { + groupcaps = { + cracky = { + times = {3, 2, 1}, + } + } + }, + + groups = { dummy = 1 }, +}) diff --git a/games/minimal/mods/unittests/init.lua b/games/minimal/mods/unittests/init.lua new file mode 100644 index 000000000..6c1728420 --- /dev/null +++ b/games/minimal/mods/unittests/init.lua @@ -0,0 +1,16 @@ +unittests = {} + +local modpath = minetest.get_modpath("unittests") +dofile(modpath .. "/random.lua") +dofile(modpath .. "/player.lua") +dofile(modpath .. "/crafting_prepare.lua") +dofile(modpath .. "/crafting.lua") + +if minetest.settings:get_bool("devtest_unittests_autostart", false) then + unittests.test_random() + unittests.test_crafting() + minetest.register_on_joinplayer(function(player) + unittests.test_player(player) + end) +end + diff --git a/games/minimal/mods/unittests/mod.conf b/games/minimal/mods/unittests/mod.conf new file mode 100644 index 000000000..0d5e3c959 --- /dev/null +++ b/games/minimal/mods/unittests/mod.conf @@ -0,0 +1,2 @@ +name = unittests +description = Adds automated unit tests for the engine diff --git a/games/minimal/mods/test/player.lua b/games/minimal/mods/unittests/player.lua similarity index 69% rename from games/minimal/mods/test/player.lua rename to games/minimal/mods/unittests/player.lua index 563d0d985..10781a95f 100644 --- a/games/minimal/mods/test/player.lua +++ b/games/minimal/mods/unittests/player.lua @@ -1,8 +1,3 @@ --- --- Minimal Development Test --- Mod: test --- - -- -- HP Change Reasons -- @@ -19,23 +14,9 @@ local function run_hpchangereason_tests(player) expect = { df = 3458973454, type = "fall", from = "mod" } player:set_hp(10, { type = "fall", df = 3458973454 }) assert(expect == nil) + + player:set_hp(20) end -minetest.register_on_player_hpchange(function(player, hp, reason) - if not expect then - return - end - - for key, value in pairs(reason) do - assert(expect[key] == value) - end - - for key, value in pairs(expect) do - assert(reason[key] == value) - end - - expect = nil -end) - local function run_player_meta_tests(player) local meta = player:get_meta() @@ -48,7 +29,6 @@ local function run_player_meta_tests(player) assert(meta2:get_string("foo") == "bar") assert(meta2:get("foo") == "bar") assert(meta:equals(meta2)) - assert(player:get_attribute("foo") == "bar") meta:set_string("bob", "dillan") assert(meta:get_string("foo") == "bar") @@ -58,8 +38,6 @@ local function run_player_meta_tests(player) assert(meta2:get_string("bob") == "dillan") assert(meta2:get("bob") == "dillan") assert(meta:equals(meta2)) - assert(player:get_attribute("foo") == "bar") - assert(player:get_attribute("bob") == "dillan") meta:set_string("foo", "") assert(not meta:contains("foo")) @@ -68,9 +46,28 @@ local function run_player_meta_tests(player) assert(meta:equals(meta2)) end -local function run_player_tests(player) +function unittests.test_player(player) + minetest.register_on_player_hpchange(function(player, hp, reason) + if not expect then + return + end + + for key, value in pairs(reason) do + assert(expect[key] == value) + end + + for key, value in pairs(expect) do + assert(reason[key] == value) + end + + expect = nil + end) + run_hpchangereason_tests(player) run_player_meta_tests(player) - minetest.chat_send_all("All tests pass!") + local msg = "Player tests passed for player '"..player:get_player_name().."'!" + minetest.chat_send_all(msg) + minetest.log("action", "[unittests] "..msg) + return true end -minetest.register_on_joinplayer(run_player_tests) + diff --git a/games/minimal/mods/unittests/random.lua b/games/minimal/mods/unittests/random.lua new file mode 100644 index 000000000..f94f0a88e --- /dev/null +++ b/games/minimal/mods/unittests/random.lua @@ -0,0 +1,10 @@ +function unittests.test_random() + -- Try out PseudoRandom + minetest.log("action", "[unittests] Testing PseudoRandom ...") + local pseudo = PseudoRandom(13) + assert(pseudo:next() == 22290) + assert(pseudo:next() == 13854) + minetest.log("action", "[unittests] PseudoRandom test passed!") + return true +end + diff --git a/games/minimal/mods/unittests/textures/unittests_coal_lump.png b/games/minimal/mods/unittests/textures/unittests_coal_lump.png new file mode 100644 index 0000000000000000000000000000000000000000..f460d909ef35804cd8d640574bf879646947ef97 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`>7Fi*Ar*{UCNZ)xIPx(6o>8}~ z|K)$ioy9G}DXVj4>Ur?ou3&da_*<84{~+pYZ1X!dN$HG$k8D8!p7fNl9+Ty&mrSj_s3lft2$!D z1@*3N%En1LybLN)qN~4p-jD%W#^CAd=d#Wzp$Py& C$1{-t literal 0 HcmV?d00001 diff --git a/games/minimal/mods/unittests/textures/unittests_repairable_tool.png b/games/minimal/mods/unittests/textures/unittests_repairable_tool.png new file mode 100644 index 0000000000000000000000000000000000000000..46fbbaa74530c32ef3b02fb0e4fdd7f606fb4ef0 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`>7Fi*Ar*{sCpWSkFc5J5{NLey z`{v$OJ)cDntD@p;G~P{M>Hl7R@JxYx$wEF?*U+133tATCOz7U^n14z7#}zidh)zkC z8~4vD9QHDa$o_jM?h%`08Mh=y9b2j$n{CcS$F|S$4_@wLc($A;?aH1!1)!A-p00i_ I>zopr0Ji-*QUCw| literal 0 HcmV?d00001 diff --git a/games/minimal/mods/unittests/textures/unittests_steel_ingot.png b/games/minimal/mods/unittests/textures/unittests_steel_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..6977696a23832867b5c0499997dfcfc0d71777db GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`X`U{QAr*{!`WV>`IPkE1zO_f$ z|MdB7dpF$(^B1~fWNDE8Mvmd|kJ@uJ4 zC~eT_aN+vFc(ZfL+vo*}W#>qgTe~DWM4f D!SOfD literal 0 HcmV?d00001 diff --git a/games/minimal/mods/unittests/textures/unittests_unrepairable_tool.png b/games/minimal/mods/unittests/textures/unittests_unrepairable_tool.png new file mode 100644 index 0000000000000000000000000000000000000000..c676213a5de29a6e3c656f29bead261595ed63ca GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`DV{ElAr*{sCo!@eaNuEK{{G+p z%lzAmj&D%X_Lj0u;|+>enR@N_|CP^W3bnf5J#TYOmgJeS=LFBBMQ0SuPx4x9WMt4T zZf5*eF6CojBxP}D`V7X0OB&cDdoDN_-idj{^v(K0*?v2}%Uky6pPdf0kHOQ`&t;uc GLK6T-H8}PF literal 0 HcmV?d00001 diff --git a/games/minimal/mods/util_commands/init.lua b/games/minimal/mods/util_commands/init.lua new file mode 100644 index 000000000..ad8d3f9ba --- /dev/null +++ b/games/minimal/mods/util_commands/init.lua @@ -0,0 +1,137 @@ +minetest.register_chatcommand("hotbar", { + params = "", + description = "Set hotbar size", + func = function(name, param) + local player = minetest.get_player_by_name(name) + if not player then + return false, "No player." + end + local size = tonumber(param) + if not size then + return false, "Missing or incorrect size parameter!" + end + local ok = player:hud_set_hotbar_itemcount(size) + if ok then + return true + else + return false, "Invalid item count!" + end + end, +}) + +minetest.register_chatcommand("hp", { + params = "", + description = "Set your health", + func = function(name, param) + local player = minetest.get_player_by_name(name) + if not player then + return false, "No player." + end + local hp = tonumber(param) + if not hp then + return false, "Missing or incorrect hp parameter!" + end + player:set_hp(hp) + return true + end, +}) + +minetest.register_chatcommand("zoom", { + params = "[]", + description = "Set or display your zoom_fov", + func = function(name, param) + local player = minetest.get_player_by_name(name) + if not player then + return false, "No player." + end + if param == "" then + local fov = player:get_properties().zoom_fov + return true, "zoom_fov = "..tostring(fov) + end + local fov = tonumber(param) + if not fov then + return false, "Missing or incorrect zoom_fov parameter!" + end + player:set_properties({zoom_fov = fov}) + fov = player:get_properties().zoom_fov + return true, "zoom_fov = "..tostring(fov) + end, +}) + + + +local s_infplace = minetest.settings:get("devtest_infplace") +if s_infplace == "true" then + infplace = true +elseif s_infplace == "false" then + infplace = false +else + infplace = minetest.settings:get_bool("creative_mode", false) +end + +minetest.register_chatcommand("infplace", { + params = "", + description = "Toggle infinite node placement", + func = function(name, param) + infplace = not infplace + if infplace then + minetest.chat_send_all("Infinite node placement enabled!") + minetest.log("action", "Infinite node placement enabled") + else + minetest.chat_send_all("Infinite node placement disabled!") + minetest.log("action", "Infinite node placement disabled") + end + return true + end, +}) + +minetest.register_chatcommand("detach", { + params = "[]", + description = "Detach all objects nearby", + func = function(name, param) + local radius = tonumber(param) + if type(radius) ~= "number" then + radius = 8 + end + if radius < 1 then + radius = 1 + end + local player = minetest.get_player_by_name(name) + if not player then + return false, "No player." + end + local objs = minetest.get_objects_inside_radius(player:get_pos(), radius) + local num = 0 + for o=1, #objs do + if objs[o]:get_attach() then + objs[o]:set_detach() + num = num + 1 + end + end + return true, string.format("%d object(s) detached.", num) + end, +}) + + +-- Unlimited node placement +minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) + if placer and placer:is_player() then + return infplace + end +end) + +-- Don't pick up if the item is already in the inventory +local old_handle_node_drops = minetest.handle_node_drops +function minetest.handle_node_drops(pos, drops, digger) + if not digger or not digger:is_player() or not infplace then + return old_handle_node_drops(pos, drops, digger) + end + local inv = digger:get_inventory() + if inv then + for _, item in ipairs(drops) do + if not inv:contains_item("main", item, true) then + inv:add_item("main", item) + end + end + end +end diff --git a/games/minimal/mods/util_commands/mod.conf b/games/minimal/mods/util_commands/mod.conf new file mode 100644 index 000000000..fea6dd3e9 --- /dev/null +++ b/games/minimal/mods/util_commands/mod.conf @@ -0,0 +1,2 @@ +name = util_commands +description = Random server commands to make testing easier and more convenient diff --git a/games/minimal/screenshot.png b/games/minimal/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..7324883f6c29aafd8e50f3eac6c8515c8e39b866 GIT binary patch literal 133364 zcmV(*K;FNJP)jH zFvdGDF|KXwIJEZRgCBkN^3PzH;&j!tw!4P3wKf^tk2X+uuFc)pZ7|qMGsmK?DP?CW z*S06RzU*Ca0q4u@g&}kA&bRO0eN6!kp@JF$!CNeH+!}*i22lpU+!X?>=T(tp3<3e! z6BUD|Am6YQk!<}V(Mll-D*^&35jZy;`i-?Mk(_`2QIMDmgXmbqdb<18LoiAxsbHw@ z846M^MS2!SDDq9-LIKcPQ<#kbRfU2Af+V7#qK2$7kU5vErKlwUAVo$n3L-^~K>%Rk zemM^7tgHZFEuFse3)`DBEzw$2iXh_2TR$=MOVN^3kERHVFaV$`yFfV$Dk&%;5LyMT zs~NKx>p`Gy7wgrtm(TxVy}GbuC}1211VtqBn71mF5E%_x@hqi?I!D2~evGJw9I676 zHZ?XgLazFLxO-e>1|Ff0tqHbiTk8zuW$jHjuB32X`@&+;_R$;MDj|Uw@MxGpC6(P! zCKE?UqFjm?a@J|LDdZCw9OJOtcEh;6e7Rl^D{A|P^B@2E{I9&5EHAdx1JAwLe~s3g zA+DrEwa%w5*E2^|$vsTx)xrFYRebXP<6mkg6E}wSt2HNyn}~=aYK%EOz2}^ZDY6q{ zh_lEq%0K**zjZRdFCy1B=T)d@v)SFd5Bss(u2Lnbb4s}E86qN0GLY= z)>63ZwxyKmZ2ocl-}=agDzqgJ@XkBGaBye8nay_Fu3n7WbLMR`@XG5%n~U?Wlbe{- z$=E?Bs$7cK&hI#{ zfinU)3prl`8f%lMkxYt-yxmXZ3!-RgRKA`r>fQC00Q; z@Sba9n--gZNa~0{QwWK4SJxw_OUZGFUGPAtu_PiwTY^;pagO51Xw^7$292e3T-`jLzTOuGsIFgrI-cHp@buZ|dS(ya-FLz6mc4a`GXubEHjgpV z!z^AclB=B8YSiJK*WbV0KmT(3zh8XTl`K!5e6ihZRN-iG3c!e_wR7m&xGk&In#jI- z^-@&2-HymO=YkJ6v+o?8hWQ&2`&KEx_x5jm@$}E{?L9i$fAjzS-~OBZ#c|BYJdU!o zP1;--=fRFOwIgqxSw!>C{`>#g@zJA6y8sjbK@b(4Pw!N|>hp^di*xq!)7@mcx9u*S zbJo;j7yB5Ss!`EA0%KN@l8aHxrq~*QvA9HPt2q^xyrHW0mMT+c$%syDz?kCc{qHt?r{U_%@FqVh} zL5+dJNkIU>kmk$+Yz(O~fFKnFwNAz{`O3sGfe4Edf%nEZAOp@}wLn)R7u5pu!={>O zOblvNQ8-T)dvScFN@!3-Rg{PTK?;BZ0NToW-w>Lrns`3}PyqZU^%nBvi+?PfyX^`D zxMX9=Pi5#*)f%*7g65b6SVj|^y>}Y+TDLgBwyInZ=S|o5%;Fspps*mAejGw=Q!LIS zGUimQhdS6HB{JxYiDQ&hhLn5-W1pMas)`ngIpv&&AzC!fpn?E`@zjL+`ts(T#~(a@ z`8310?$5d#?c;iO$13xDHt&Wl2@G5L`qQ)aP%3Nc12-&fm?p_?`7#e{g}s~RsO+xO zv_7swV}m@t|L%B|fS@oNM2$LoJei)>!89eYIUpz^BM29d;p6Xq@A0EItEztI?$5pZ z_K!48d-v{xuHTTSPd@p<{^HKFXHTxW^Na3zsW#i|&Fu-pT1P}FrBcdmR&_njJ|558 zr$0z3#l7~iwl@#mPki>nPcOedJFLF7HD{!V04*J`8-W2Ujxo&-L(amW=AZd@{$m70 z(wqyZT8r=v!GPavUu`ynv%Z}CEIF?Xy38UaDi=UdB_J?)i-g8i*k5aC5QNAf zW5&@{M~sMZmokHrT5A!gX`0!5fA8Rc2&}Qj00I(%Y9>MfAyoiDgp!gW02Bp5ycH;j z!Z%Eu4S!_qGBGy=A6cPSj3cs;J1`y<)K~0lH9q^vKzdQi%HX=>LgbCJTojT1dSMYD5r7tNL8LbtVO>B1r!r#e=%2LoEyFS%R8 zd|r>&)qH<;etC8@Kbb!)$K+0=~)AK|B+G=&P>o%R+fN~KOJK6THI1{QdhR{GWvs%bD((IWMZ8cZj(exsDEDg?;gYDHRoitp^xKn@6K`l3MCn5fmB3uN<>U# zaw=m=c_?VmI}sJozXt5KJs=o`q0dFdSQJ)51Q9^$cD;AD??zBbFN)f`){Pg5Cm2oHhN>6A7TAKnQLa$Eq^SSyd_< zSQDs}oMS8^GLFnz;>Zqdxk^KclyuiAAk}l@$a2YwrKExeM43f{i=^w!E`;DMTdTpV zvtXSf7S*gAl{?`z^ERioaAe+DSBXLzH^%I3E;n^OAG*<0z#CmvPL~Nk9U~q9AA>v+nrI=g*hx^~L1gaCyCUgsD$s0yKqu9$qzKQ_6Yoz^y-b z+if>o6OA>_y0WT^?QXuN*#V6&%b57yo5wGnoS*DHs?GH3;_~j}LkONinI2c0^PNVp z+10M8tJZUaOk)?vGN|ZBAAk4BSD$Y-tDEbq&8yh9lbFWK)vMDV_aX6q{np;%;A;J< zY!s^kL)f35)O9nTEpC4~n@z2?ta8ntT)o_&gdchHpMJId2gmjoK6v;OU#$M*_1Au@ zYKP_ZusCe)RgY8O^?5MjwTi>#?X-DOt*A1;`>+2yIg5fKg0M0dRAFXeoHehp#O9!1 zUyZX9yF1U|Q{sMaau=uT{pyXIi|d?(p{StIRtit|naX^-+mgeS6B=BY_GTQa6u3&& z3{po%EvvM9nOQg2u?j7aAS;UwV-^8c7_Pgz^=U`D^@b!2tKQUTAdH*LgQTLKO&*4# zYJgIo$IVEUDZ3o|n6Cy%I&5-WMi>iLPE||JWMCYUbENPMokKKjd)wLl~QC8uq zGJ=dKh}zVYQW6jVB`C@&rTAbCK`F%;O(_#-Dr^j~maZEKG3La=2zJ-^s!&8?6xj%N zL+W6&9IF!gW!I;u9aDyC3eCJyP@n>+h7ds!M5Q=Ks#;P(+^B4g(HsYb$b6eX2mmS~ zAU2Ijb_IZW04V|jWW9BbMYr8tli8xlF*X|fvo zRO*o$w6(r`{`6OW@%Q%k55NE9PbBGXyDhoQCX2FhzTKbNeGze{Iyl+C(>^|$-&57D z+ocps;q_*{%S(giVD@-JpJ-9ZGFcp7tiRrvPk-jae~oPV{Nqm=td91-wS~*Da97VZ z1!X#EW{2VCBE=237R;~y)Bh4>A2)r;&KZhvG+=cAiGl`)@ofFF5Sh9Tgnk=un6<&Z zqxPLu{>)B*e8~e!qFgvwzg}iHDW+0iLEh19Zj%Vk#!>{yHjNNgnTxEAF<~51zZwqr zj!R~zhI?DaepnNCLm4xqDi0eTP*ZIDWLRx?*E<; zI&*@gvy(m5j0CsHlAKpiWfoCJ1VstXi^QC|armn8n9H@4Wf4PQ6ruDdUUZabMzys|aa_o?4($9|a1Z8!9&cFeJIUbT2vv1S$tl`#fIxFjtlA?3z5 z{WyA}!r2f|0Cy`xC6>K;yW4E*)^)M3g5^}Q00?A`yItYLabPC-rmQkvw}Qj&v-Plz zH?M|Cz5j!Y?{)pKDqD_Zrg48dA3Lh1Fzyl}bT?2~_wJYORVX_oSLy>E*EY=AIy3ZR z(>gaVGkw%=hj-ul>0!Is-`kUDhBzo&BIq_Tm%$aXf zvH$nO$3fEZ$)YBFcrIP`hka`_!=6Wbo~fg7ar#BM5|pNBLlk<4#R$q zAO*JFI`!G0tDNwl*V}bb!sV=WF3p9ez%so@r@HwaF#fhT#B=RDY>dul>N{E zqOr0bp_!SwHQw7XCJ->rraY1XLJ&^F?vtlq|2fJRyMZ}^ZpU4 zaC9sgiBisu_hdlnCG%6&rzjWB{I8#U`NNMt`5{zk7_rrNiw^yI~hG@niGAN-UHi>KY+y}WwXZ{EikfVwAtlY2BpdH(92lMC zjh{`c<8W6^-lcI~?{{5?O2I=xb_B);N5+9vRb>H{%E)A_ZG!;;=dC9Zq&~5wf<-L_ zvTTfqt1JUK=CDj0U>-FD;frrVrrxfEG#Hp|JRDXcNc zZtNXeYd}d*1Prtj?;WXt1yQ5SIe1eNrWB{4?S}!4T4#_n4cydm zNXBhHJZIa}c%@g{Rpn?A8Z@$6^&x;!3EpJY`i)J!JSwgf0Z$$qxp}GtcCu%W=65&C zjdK+`J}`&u(y$dNnnvYjC|h3=s?YQJv?MX=9W|x!>4Vet^|giOx_@rB-mTls&==fD zF`)v2(6$Zk%=TsrI&3y)KX~z1J30G{PyXQj2fuhQyDy_KtJI_PhQz{TeRulK)#?=* zi7T8<7Ny!9`PWj)EgtWO)5J;VEk_m%c z0N7a8-b{A8&5(L;L!XyH4oXU6%-&XR0+O+A8l^Eso=z6KuB#VB+fb1QMkpwwIX!x~ zzkgc#ShH zmiu*tlwvA2Vp@&6tI;LM+nk~uQ?Hppj6;q?PJ-4!Z5=r!C5zy|)fJi$iU?;xBcTmy zvTGVMGiKu5oSK7RgPKqh-*o*Mmam54`F8zBQoe}8*Mv)iwXY(8p=(bz??wfoOyq%{{jkaxJYW?Xko<9WRg&{@}*^)l9V{nl$AhRXfbAOG3IN8iSak5^}_K(y_m$9fvP0*q&yJNNF- z-<{_!rUD^2H*sV%4mqA>0oB%2Rqb7>r%lWmR0+R{iY7(b+^?-Q3JMG!0um!t{=f-B z<*5{{54@tJ4A$$|M-&nPG`FVR^)Q)M!?GVm=54dQ*!Ez-78w+MZtH*P=2M?hiq_yT|h!pxf zmcB2|T=%E#@~X=TjMMqFz3R_`sY4w|6DV;S(T-4BiR>B%?+~VjTpP4Y7qieX18Zlk zE1G~?hrUEeDGFFpI}9;6BLq3-;5=)oYad4;o9l{(aa?br3~XvE18mRMxoGSVYFsQ{ zE3+32Qn2ik$Eu2nQv(fo=G-11P4>8Ir$^&~`MfyeTX_7@_6NCh4<58%yo_g87l2gP zW>}iojT-I#1JW3-&ii&>xSQ=(T{ZPp>(%s|CylK+=CVJXz;p%LLpZ=%6{!6PW zd*L{?n`f)T`RP0Fgd_T~Kl{@^ z__g2s?eBd5PZK8tZZd0pRap;uS?3YC6ieWZ zGg6S$hA`v^i4oMhs%Z^aR0fA8kPkJLTuku6`)cB+Cwq2E^)&b+=jWB$-E`6BT#z8f zQ3V7>gfet5cH39ZoNKv=!{@83wIQA?d>MJQ>u0kdDjdNWG=M|Owex_w-6jQT8@n4u zWgsQzP>l+cKt!}ewez|exAUeUfH7_b3TY0t-F0c&v_ztetflWe=21Z#H@VrYNVm+% zpyeWDS$Igfc%Ev^j3~PA2t9u!muGRApuq5l&Z^D@m|_v|ml3sjBl=J8aU_@3$wZ zaLFvqVa`2`XC@X_(8Y++q|d0&UUP5<($|62CH z{{BbbkJnf9+F9PAChfR?V|cKecZCWVi9?yT_a8lc^U((<*1z2B_=69B?$wj?gQJtH zi{)#t->;_Oum1ASKX~T@1Qupv!8@lU-SwC*hqysPJZxs>=YI9~7|b^v8Xszd_Tl|+b<6JP`3m zZ6D+2dPe}=mSWRZT=PY+w;%`hf13Mx4zAQfS}1uzg0g0tqEPmCBeMKUSIF&PUv z7i&yP*%~lp6c|xh7(nAta^_T^NXa7%*ObRTb(vHw$T)7h0d0kq6;L1t$iSI{afZ}b zNJ0jH3^JJJ&NP+q>)P7syl_8uhY8U)+xoX2a1T&buEiJKKG<`uscc2a%I2 zVfAus_bH`(^|TP7iLIN)vJBv4{wT>!({-snX6ju5MlT%Q{{6B$!>V>bJP-HC%N!5( zAD^1m-FYyps)`|p+JPx#fNb7!i{`CCii}2MMkcvTr2>BL8L~=hAvH}c+6Ooow3TFWJflARPcot4+JUW=i zl!Avea8;Qi`Rt3ENfpv=Ts>drjf^*mr5_8B1It1N32o~_U6T(J4`l?CL15&1YFU90 zrw{A-$*ejI2M=ZivYYzZqB2vm`(b)Ck-&aYH#6s^#s{|>6H5-(l$`Rd5_?+q+doU` z*$}@>@hpxnciR_9ue^m)xTO5)$1lB;cH)gIb=AZn*`RqC=JWbs0&hS5-}UJ8>B*#WGuIj*W) zMud{~7R}A|E0wMKnj;C6RD_6EKTM%yi<1&#GqWmTGpX)e{Cb5RDP1ab?-+nyI13w zN`%Ej?YeSsztCzn_I&u(IE+%Z=HL-AmB{ zzE=^c3Q1DuKuo&4-1*AJUC$yfpS-;P__d3Rm+!p$6N~+Wk3RaVq2Ijq=C_{Td}qCW zX1Dd#^E7>cv5zF?me#_n)w;+h=d3b0SR)Bh$!Wj462}onF((p0Adi01C>I?>~?)qd*`quv50DQ*p8L6)&Lk9 zOR2rfLzx^l#({G*#$t#>OK|o!ouN<>f`T9y5nw|UQ{lqSQH)WfAkp$>4Mby~$C$@d zGK+DcyGUKv6$S&^Hr5#mh8(%J4z~@25L6YYG1b8&Ot5OJ_HJD*8Z)tz!&X5fr<_WR zQQ?-7QnEzCEXsiBEC7N5LigC)l_4->cK!GJ-KU10-z=Y6bU8;XNKQ|WkNbWMKE!dD zOss2+q3YGst5RasG^_Onkd?;$#olt&x6RD#%g??4U#y2`UB5cr|Fxg~)_-=o_u>Ea z5C6+w`I%q)(GTAF<+uK+-~agc$4vo)XRp@Q1@H9wrb{tdN2rh?c^4*A99g}q=F>e_ z2>_Oo2x%MF#`?oOS44xYtI7kz*t4lplD-r^I#`^aukP%(Lr!Vn>D*~HyP*q}9pdQ8 zH{t84CQCN$us3_m+nZeK z1PFeXQ|G%I8Dq+cDdObBx+&+aYv#5-us`_zXKy}uS1{c>JxQqmBG}T8xk%;cgF=s1Y{`> zSxox+I~NW`2x@N#jrpbD_@@MJfh^#i9lKaf9XTYDlrsV-gGd3yoD&GD3W~=&iamqyvl&E>r2WueO)r$>eXGiLXT`5#M>#QNKwGB*A&uev1&3t`S zhdt-^yjXNKauHV{pd!JoLLgB^P-6gq0R&JOk2;s^TpqPvW1^~{XOT))eAG?rC@5>N=0q0uJIlmfoc&l#u@}t zWHgqt>_pX*G3Xns-dBhvrG$otE~lInGFj$?0mxV#xm(Pq*UQdZ+tf{oc{e79F2TTs zg9{2OP^=a2x|^3bZtGX6XXIuwuU}itU!N`Rw{cN)Cftml9)EOx`uy_fdDpDFu-;+M zxeOyCkg^t*?e)03?045as4>ZezH&RI!AdNys-4g*%^0DYVjhdOy1pEDXVkBVtdgNJ zQZ*r9V!^hV4n0FMc3S)d;s)M-=Ude@T)enGxqoD>L8F?;I}~Ol=e$#iB?}@ULQKV0 zG~YWpK3y!Pi*_C)>-pDL#)egYiR{28aV(Zo@3E4caK797*f8h^QKi zg^Ls|k|u{uyxs+Gq)-+yM5UBq9gvWBT#6KdLaK#D;*bDQlntphRt1o>a2~G*H%MOJ zPTtyQ=VcQ6o_V^yxG1G~u)%|*R9DUg>#Z6vt0aEns{>DsL2E=aSyEAF4Ri9Ikf`!5 zrZH4B3|SzPq9b6HrV3*$&Lg6DXB}eXTr~y(xQMqV=VGiV;AA>~`bU2hy{W5EPcSp| z+e8+&qm-Px?QnIun>JJLP-$!rZPl8+BX3E_`M&Rb025r8&}E#zcie`%?^fu%o84{@ zgy?Yg{qxU%{>`5a;pFW*zxT=4e=n<`3K@0i&d)a6VQ{WARg(wJIeUv;>{Mtmug@>H zt4$6;hn#X`0F+Ea?AuA(HWhgu6C0_UNf^sm`!ME=rms!o0+JN8$eMX9)7FTM{jgEt zG>Qd1Jer!l?*8k0O0&yle}4D8dwlc7?2Fy;*=q0ds=X*ihJIvL%|~+I7t%7KA zIoP?Vz~p#5J-OqdS*~_fW$&LnUaz)KzIgWIKlV;rg_I&$EK*WRP3sz4S5{D) z%5urVT-Q#Od|N$uc)zLr81sWicYpYoA1%r(U7Be#VN%>05n(^(Li5SNtEboRe(?Tp z{Lb%H3m;ef_K)BH@Qt7U?E4>`-n%=SEsl>KEavk&r>E0N3?hHpM0L!^X&Bvo)XSKll>=L`UdYGn-(-G0*Shf+jAbIygu8Iwu|U?j+~FqBec z$dS2VfSXaQJ){C`uA*^ce7In2(wR_$KG9JApk>b5EBqB^G zrD#zmgt1T7;utfi5*kFoTMG+7iqQuXQwAt1U{H%>6%pl7Swt>b4ZxVvZj-OSc%}{X zL!#_T8plpx$Rp&Ym6M}ph|63$lyTZlb566$i9kON#9Gy!GhUo^le)J1`R?)CH`|N7 z+0lRhr~loD4?bLN&z`>c!#D2!bX93p>K}ahV!3&qV+N2hv1B;9Q?saoHO|(x-E^_3 zD-l`my6I$Yu=tu{F12kHOR$E}2$rE6a?z9oY%)%*v;7T&rfHas((N{bZHfvGL+1h! z77JDEORx|eL@47p{$Ty;@}0Bg>(Bdl&-pNoW@HvAkb4kO00yEwmaqQ!`ReJqowU-4 zW5c}+=UkS>89zJR+dF9|-Xke8BY?3c*^C5jn&7J{YRaPOhq5IKit4&Pm53%#ZCyBk z-6a4Ls99g-i_7Kx(>tmpenf!V*Kx(<+BakkGNMR~IYj`Lo;mHx^?5gRdA;pfc<9qG z>KYqRG{TwzFg+s926dSU-l1d(+zspABN=L{pBC~@t^-Oj(q;=x#sH8 zYp30HS*!0Dm zs&H#Z0G0&Q*S4Mn(ToU&zz2gQ#sQHODaIgyG8Z7tF*#?@sIm~E^E1_?z=lwS5v3#s zg?izZ=iPRjjG>f;kN_no?$>c~XQCk1l6RyCmQ3N4yAsgp7P^Zi7sRzf=9n@75~=mp z8BsK>It|8CRa*cttA#U1f>-3OpHmmD0Ey#;SInl=d*rX?Ou$ef>vRxHkSD1u)ZARGCqHH zgDuy=Ij{Z5nhe@9Ic6k`3ncz5%N0a^SuJc5d^NBNoX=etqi6W?| z#Lik|nzf+_17cGHg$#bXxHtTUoPHX>G2+WxkfB*qii$Vd4hHvuKr>i{hWUn=bQkMaUhf*0*5kxUSsfv0R(!n_F54@kr z2klL@=l#W`U-OTA@K!ghVv4j2W-l8H!hoY`+mLM6=(L{u#A3;kVIfu4y0Ia)%O~B7 z{;Tdrnpr#c+-(LzS9%`Kwy!=~c?sR+_Ex5;w9mBE&85h?lz!K3c*tdS-IZLPe&;Jm zSV!-IYsJq(-EDY|0W7`$%Rk!G)ns0`lX|(Qe}4=1g6l^4}*KZZa`oRbnr z-)AtABjlVU_if12JAK_o>#{Z0{M!HjpB9V0a(nlhdOtLa&@LKZqq9~ZTQtTYkqC$g z|C93`5vvLpGH3_^7*zcYRQ(N{N52Hv(ONAF#q{ou*fw(pWUvp6`sy0}zK z!PBg*p^EoTk3or}IwQw>%~&uEy;w%ESKIaLj~__2*L9cQdhl~&PSbia^zg@DfB%=? z`E@XI{k8t!#SixvK532vR!Hb5GtZ}WI-sS1r!}KUVdhqs7zyF&*_x?XMeea$3-~Q>f|FhJUnXQWfVRm41?o4oM^27V5 zed+>KtWeD%3XRKzOZ@KdKlP}MH}Php(aH$H+LG8;_TbUt;QqXAec>|PMCmw$3Y_ew zsk^tidG9>F)-CH5-|dDb4zqDM+@{xdGoHQCyybdCYj$NRLU3KjL6FTf&eZ1ZFp!2} z%%}H{msiVb60G?3dONI>X>u9DP1+phdt*xeLTNc}FUNeNv7_zHD))LgZC+h(J!$D> z=rpc3Eo$k;>m8Rqx9;#{|FvKHjeqqQe&?Th^5iK9Xij6y2sC7wPJE8?=%-)b4Wp}Q zQa6VOdy~Buz}Ol@c`=)E+VTkE6R5#nzv)Nu@+dn)x*{0R3ZfiT5 z-}<-yh3Q_^E}TdqgVrGtsTM*MCqvyXbD$D)3eJsj zQ~*Pib4E}_ah6Ai@kaz3LoFN2I z%46S87kknr+t@HM?y&U>JKb~D!qeQ;djV^zf=gpo&|ESR5-I4dprk}bLyf~w&>$hC zm^4ck2IWcP6v0`{Sr9d)Ob$4$t}dQC-fnZSdav&9{H?;pw;9c1~B{??;Iu&WC#5HqXy5lmlR4Dg|;Gxvs0K zqSgOL)my;Haa{e{#nm{pEUg$Vlk8Xy8p2F3UuI@zW@culyf@68m?^dlVwRS7u%Wu} z%V~XdM=UM<)YDT{=RE)C%v6dc$!{G$_-?Cf%K3NS{Mvo{AKJUL|LnC_7kX(gSva)x z$g7vX6R6E(mowTlDoLW?O}_7~$KU?xL-{YBz4QYf1w>pg%S~ehh6Fd^Z4*|jL`19` zee}a0HgfCn)4$?@10OlL_lbS;C-b<65F&8psWG_V&!Vh4@m6t@rCRxbJ>``8d^Q_$ znv6!31%fFI!&ECz87giXpN706;Y}f=*8olGv@tUr6d|^1YR$*x$(g@*wv%t~%u3y+&tu74)i*rlUE!~7!a;Py#qe3=8dqqhjjP~Q{ z2&>2-CF>*+T~*qpbibO;P{Fdkj?l6TNfg0~k)(3EQ_l4|odrLwT~q5QmJEu=CP`S_ zOOKy^;xoVIH(h$|x#Oqqf9~05PCf9zU;Zt>^3nHy95MQ5|KY!V_30lPRSstrMX2`f zo_Cx~Go~BR2!s|yZtHge;A9j^RjS4X)I{;Dp6*h%77>b=fC|U-PSH#nrz>OwtUm@~O3vy|%3>_3 zMZJEiR8{!U+us#kK}CRPKMk-lJGhWCWdVV5sXYM@Ks=eC@F`qys13;bwvZdDN(%wX ziik^x48-;YX=6XI_ZC8ED1486m=IF2$VDu|3B#Ks(Gg)`onp7jvt9BO;%6XlF@U3qht%npkJ&=QC}M8hgS>#7Pzpz`bJZ;do=P zayn{eX@7NXXLMxc(5;;}ws$u@o;$d(S8e}rYwgyijBi;_r(2&3y+~5AAu+ zrM0KG{D1H7IseI*Z`@1{YMF#!tFrOl$0D{KH^#ueBhoZ8?>PR+QL(Kp7-Gid&QHJJ z*}1$vy0$Z2JG^}V{rf+0YTt)1s9dRCf?fMEN3p;fF_U=^X*ap)Aq}l_*R? z5@+YnU3$;KM;R3e1zmZ)%bOiOm*#Ugs$)YGor|-aEk!+)Rb7pmKFP8?o#V-#xdXPa z3CcQgOd*usL;~wbGGtjKT-C_MZk+KWhab52?eBT;^gAAW_xqh^yY=o5|M%xe(0A_K z=8b*rxo2jht#hwFzj5>0&epaohrj9%{Y4%n@A~LxZ@lr`o(B%lmi}UxrjluBXZxaP zIJZqvGSPUmo5ad{MUcjbCMl|F>}|8XQ)Y3hv>xpik>qt_$HOW8_^oIxW2{1FsD z{#a6v+D$KmIG=3q@k9`9oKm$A+*l6+HEjUPqRwc{D5@GmFnkygtZ38P%HY6=d}y2! zf>Sc`wy+u+shF8Y={SmP1JL=jELEi&1x&KmCKhHqt*`?ke)-rO4rF_Ma_@(FNSHnQ zqN<)bRS7{!grHjhMFgNtA(Cr@vshUcM|fDz7$)9$!jntuLmTl3BEn!b93{Z<%RCv zrQZI<-agJmTMy^2pS?3_HbR?htfvl+dInx3sbp4@oXc~QI|wr9TRs|+MH1+GQKI>$k`65t*TDA|0G~ANpAUUp1 zIft_}6@g4P%QT3CZ?pNlw_8zSqY!8&6YKP$Zf|k098=yGd79_7D^^Y|Hsc1ep~iJ$ z#5-9zBg-e|vXx#fw}0iY`?J}6UZT;Zw_e+S@Yt!hJ-YYMq4nV_{r!;&s@&DtAWj6| zxOGz-NRi(E=)3!Ki&atls^9T@?>+stCqMnG@^tmWrE_VHYo$ChiC~+z*XMg^IJwQ3 zt;V$prB`e2wW3Ft%l`OQ1B(`252c1z~&T?ZQVz3faFk|B*nNc z)+?etuIkyQX-3*YrXyGrl87?G1m+=V%)!SJEhPD#JerS^fpk8=r!$T*klARhfd{Z2 zVpNQ3r318_NK@C^xg-*fID`?np)eMrl?H(0%)$PdA>TeR0OnLXjLp2BPRlzH8wWd9 z#Tvu|OcQ63H)vK?O1X&hN-66tg3e)+^)ie+<50}XliU#-M-sswxHF9jdSP!blEGuA zOqlC+ak~mT&=jI-Rzb?agsM_m2N|bhn#~HR>rfv8!!+JJyzk+2m%q1n<>=Lob4OQB zL{dI;{;T_z;xy`EMSl3=cW7t(;Oc2r-nr+{&)?c!-#fqO_Rgyp)?az}$h%EgC(VI> ztzXB86jQUXR(Bh#7GcFkMn(dX&0w^)BI46_VC<+oFKYzxXZh!vzU>2^xlvChVI@p%_tMKVCL-W|Mlk0 z7rMQbxFgnv=YI0~x3|`B96$KzLl1s@@9I&SPSd$Kom-e+IQ&b$>ks|f-}6VhbMsN0 zkfeCwrT_Buv;S+nGre~E>HYf-_wqxB_CIv>;`fSj6mVTPHj*}mIFOGx50LKGX(Al1 ztI}7MiXt-HnB}SLCPEoQ5eaRhoqq7=KIMbs;H6{QXxbJn7$w#?C|<*#5n~v)(Q<@g z1JR-+Dj?W!8tcHJ)S^LvRtGR-LTH`Azrqfdgd_rmkrY^43w``C)rM;0a4?MEBoYK8 z$#Gpf0gG52XK7#vaS{xo3G&b&@$ECC^)DGipn7??EEKHqZR-w}@z!@nQE<@2BiLv~ z2*bn@!XZW|y{Ze0m8yop?$p&CZ-)ez#+SjEI1btxSRk>(!7j zmoyN;5j+=_)s!;S*g`<(6G5GwlHN*pdvh|{o(+~Fh(}kZYFr#sL;!+y+V?tX8}9WK z@i?W$%<2Zkk(4p56|{Edsw+zDFNSxH9y#;Ox&L)=@Su0(_S&tgiMz6E>a8nRFP`R? zx`!W&)5Vm>H+F6uSUNP{+yCOlADlk?9>%yXr#H@@?MVB!%_c94-9a?WnM`A&0wJiA zJs#`#Ppl5^BPqHyw!8{e#o#v08iYnsqDcmrlQVTsmF7RlRT z*#2*$w)2A#zbj+}2h^@DLxcPs0jn&G|LO}L|DFH&)}0rJqjL*$C#)SCeXXwRR8nKsMw1H!*|NB_fA3?eQD6JoA3A*G z@pnD+k%QTuL#N+;|J%=8yZPMZ3op1}&R+VDb#v9Y-9)18;TuY=ZEwA?w)K;$93MLP z*r}5rNu#;F<)v-kP)3xgphrMMBnih+RhX(OvpC1dQSP}Uv$A9qx|dQ!jjrj3e&M5p zA&5)bh7jO?jdR9m%BXj3$`v84Y>PH~0uD0h=&?3$c9&{Fv^B6me*wTZNJlYboux#^ zG4^*`wG5yWxZ4Gq?Hc5oTDi2xXdZe8WHe7IWn`N2UPODq-OD`U5v37^Mo|oKDRM+L zinN^%f=QlJ_%aAb6bukhyv7JV6`)DrEQIDvls3AelySh3gEJem@vVR-Y2q1(0Fa;% zfb^g)tO=Q_QpD4VVInIpcb z!tQKFI5I}e?(A%iXT3p}1txM^I~_9#3r?^OLm02q$qDwJQlqSh!s_1nVKLgfI6tiv zW6@;ua~GytM-M!FXXmvqe)(TtU4O1=*0#2vdgJm}&)xX?!!M@gk(E6wt1_QAwka#M zFj$&Y8@7p*$Mc=MlP>)5wHN9T9{&7W*`?W)Cy!7mHZ~`fLQzC3TQ}_0LGM9^bbr3(St3)5^=M~2zao3xe$h-A!;wUSO08%=r5N)Oow#rBho1PouRQ;gOElah10c;Q(4bEO?Uu;*a#=r%or+OK&S%m zjuDAs*;uoyN*C_3`hXybWkPe?uNFaGS`y1nuJyt}Zta_0T-{nN;&2Ub5!QSZ{F zFZvVjzkK!ER@bF!j76CFVz*4e1!4xWFVJs5!BE8EzdqvAkrEMO0gNNTf@O>{$QVTluvul* z1Y#s(B(#}D*y&LrSyd};C^$?5Fp7kQY#*lrDv^lzG)l^P26rRy99B@;64e%*NWK=t zHAW#63xOw-32r55mLSktQU~5KV=-jX8)bC2Lv=G5RbIrb5x`H$h-jo}#GAroQ9LSZ zF673YT?t*sxZjDkHYzt6TZRiuSwn}rle#G4JQhgQe(E%G*fo|!Ox8Q)wewe3PpshW z-R+&mi`o49`+HWCa7kT%=4QX@)k+^cF;5`$VAEU_waVgH`zE5?qZq4MSxys1RpTIh z%*w{1G|JpoNaN0<`%(YkZ+`CL%TlDktkzd2&HDbugImLYeeCEvoAG6gNtZ}Z+{;(L zefsdBUS~j|>bAC&_?1rjZC_0e&o{M?^KMg5lQj3W35e`mpByFeoz+|S?SJpau;|Hj z?_lNX`mOiueHaCluw+>tyD@sn0lE}jyE6? z7mbcP%!WD`v^VNrS3BtLZH2l#8{ENhixG_Elp&xbcCifdx4B#PQOEUW}O7 z=S*dCOC%el#yJr|(eBY^GogX@S{>s6~#pSFZeL)z~yj4(|Uf zr!smNW`t^E%UPAMcseVEz#;paeBP5CkajwgaJN>V?=;=qCAwN+Ne73XCSndK24&=k0td@Gijq5sI zV!PI*aWX3=l+}Yyy1l!_nW?KfHc{d6!a@N@`Fq(pdU+btc8vrc^T@;aXG&Y=23qd4w##Ku-pPTWpeFAbu~ z))v}?xRa+^nYEo!9;Z>p590vdEZL!;P%#Lk_?vm%c(qee*Mm=eJ6PD zu$}dXw|}r_&#LI}q0_BPciud>@~}tch09+#zW;-rtV`YX$(#omc)*0)i-QMidt)>iMPj;n`;Fb{%MRUt zXR$;W@YX`-a?g=6A87(`h}|myNEnx!jegsH;00 zv%oF3deG16sYlpUQOX%@A@}NoQi_1b zg+-iIbuC0hxNXnVNNekZOHydpBTt-dZMlR7XQh-?sW8=?PzKARYr{&x5deHCyuCBZ za*A9#fh5XEQ&+v7EUK~ARm#NfXcI~_3|FO6%3-gox+$uf3v4Y`RiRA{4(y;gv%0Cg zZ-8-$yR%^>1Y6tMZ3>nP(Xu?cADP53>=%s=IsZybCN3aU^JOE{=+3XEYs7M~KIZt8DdjH=jdE z$}v}qgN5bOi_5G1bdgAbiG=El(#@dHXH^rEtejbdT*PUh1h7oTwW%e~2yJSMkIvuf z?R(pnpny! zx8Lk`jxP1)WqRz~)$HQ(D5t~G!r$G-F*zi{a0q9h znFN`a!if-V?T7x~p(H?C+}R7a7pkt5xGGFh)sp5_)5wIDGvzcUIQ2N}PId;pP8#1+ zn_D~6^SV)-gzj9rxcE!RuSe0b(d54s&9yhro?Fh}d*sl&-tp+KyK(C~QY`J?_hhLq zoxcBfojLOxD1GSE@lWnudhEFu|Hs*U4y0z zMG27wqd}bHjBRJGpe$!VY-0%kTR;qBiL}&TpiF`|yQ&*RC=WczquI2PGO}RHCym!YtpbgN>!y*h zL|QTlxZLW2Q=RTAWAdqU&mY@!?7+h5JL}hX>g|IIha)w6^Tt&oUSHk!xVH*3wl>^e zo!{5%&VA+8FWtNE1gGKPWq(n>DHi*+tvfQGIJ@?~CvU;gE5SO3-S==I&v`A&Ld&_BMm{k7FSpO&JYmA7O9kUS;p6q~(!KKjscwowWf5~8O~(ZnZQGtWTSMNCVW{m84<8T_D-eyjQB5T| z*Gkt_)9KA4>?UI)W3Ox@I5DAwaWT}?3W5u8E@j+nl5pXvk2$tsEQLdW5SUoTWu@{o zEp*|vi)3BRz@8?gV_>|7JVc)JB<8cRzw`2~g_Tqc>#dUQ)}zDAa~mT!x0I0)%(X&@ zv7T85c$1-IyT3nM?gt&3Sb|A9AX;MVW{yR?sRJ!-KB)E{n~Qr?W+aZ}Xf#RY=+4@- z(<5c0C*x{BiJq8XY~gLhI)*7A2Wtb z6WW1XxOz1Ve_$uiPWOMbLt|`$YpV(bf*k_u6^lj`k$6^(%86Q-?@vaxM~<+7U7QHQ zA~Gpzr=IT2A5aCDft>X!ymkGyV~`a>+nd$BM}P6oi5!Py%@M%%VB&C!mnX?915ky_E zax$v0VCB@#bu(?OZ#2Qq5jrcBU{oo`a$agp-~V&(zdI<4pwMVTK|}}Il6KfgFgk$T z3^@z6W2jNWCt)Gt5+bmZyF$4@_6H=sjz4ur;e}IC9fZrs|3ffPOwuIZ-kwD=S-U)%U+kwDSGCbK z)(y>4S=!nI%Yal<1&oSXjYg{1O)&?0n0RQRG{y`kGbSOc?*mayLwK};udSYV?1gh* zdEn?1FI{=%$jV`l>~j~tb9C>D;CyLvkNCU)adzq(uMD5+k>$)$wcEYboA=UBageFhyJ;_ht___+2;GZloaT(sdarNI?85=*H>=-oMstVoYHoKuY2sr;<1e zYoQuBn`x^9ix4pW5fV9+&|6;=VG#mT(+uRx)2EEu3DFX6N&u7LjU7TL0JK8!;8@JN zG=u=yFB~aDyP-urmv&2GQJtr8oN!{1)hHFHmt_v>G|DKGiqG;M9Vl zu$U)r3;eCxUS$DQ3Q}`iEK{x|KT00B|9=(#HqPIEw!T)KNDj-anbq$;^Eb|4`*(SM zWUhC7edFs@`3g(meAaGxbXyKpM-TkWvs&u?FhpSPBjtvvt%z*{^O*n*D`_OTRh zD(a9!0oAomGeRt_3ZG?kJT=G>W1HX|#OK;mxV4B-;9XRMC079fV-g%@BDD5l7Ocmd zf`Q!|$|Yss&eKK{f@Kt(hia;6U{Fb^2#j`#Tsbp{gec-5tW^{v6~(eZBweX4Jv$UB z3%N}_jdMS&n|{BmN|>{icF4e{+Z(lvSZ|&V$0fC*+josK+v8c32of_-^>Sx!yfax? zig$KLgS>~lWfb5JL_<+FkqE%P5uA4XhEi89-9B`3jvy9@<2o$1l zga|0uEDO$z)HKJ;V-<^dHnN=*cVj+nLI~>8?(M_QJUlo?WgJX{5X!SSxKYAZ5khp? zy?&~Hr1#h_z5VC!Tzc{5*8jTaf_t^4<;kh6okn1r?gPbm%XK>qIdnpvO&Fx(3y zBrt|#I#Y=IL7vDY-QAhkP$%#K*-O03=g6!PjXP34Y!BvX*F*kh9MA~`3#9t=7@$s z4dka-S%*&4i4!m)COpae0_;W1Wm&X(ESp~>9fV^;n8{(|6v6c^o!}9gPEk`ib&(U< zAPXtQD97W`4)^ecQZwTLOQ13W!!z^QbZXYNM;ec`G4}aZ<{|*m> z?c3Xn@t#{3o__t@=WAW77U2mb#amaebtKO_aJHAK1d*of>P zhgkrQMEeni+j3SjHPNw*8SPpFh_B@N{Gj6z-q@TXkJ2b^&j~Ih2rg z^rCGL@~FA!P31)zz_}*cR8E6~15lLC5!S`L14~^%q20zXY;Z&+!a)djcU&KW1|otM z0^q{FkW~_qYz|LHjUe%4T5s%*LEParGQKRD-HoAlDyCl2JyJYq+`J&E-L7_DzVf~U zFV-sj>mO`=ZZ>^udEbS5I^QZrZh#-!vVDcP3)!?fzxHY*<*CK|UAtsobM%d?lOOEG zv-yl*WRb<(&-J=aR&)J~F}&QHAN0Gh2u)m|`q1HJ8=68jAa5{{H@KMSr7m!Dfj~85 zIGs*r&BnBF#w>Jm`q5wf=xkO(^Ock>9)qN07J*2HNnk`tn@i@gFb);tGKmsOu!v!A z-ztO+Yaul*STQp~hQKWIq^f3&;KhlWI4Oa)i)Km68e6I;+&E_wtYbXFFd`{Ek1^oPJn8aK>G~1`<(B zL~teW6-6Bu29mnv!7>G@cCocP>GY#c+;#2VbBdKV z*!{XTBhOYD+<3OdW^h38z^>!6QygI=wTMv^A&%kda4w*X-p)VA0Z0Q_f2;+7nQ&i$u{%RCsz5kK zj`&bzJx)09=b6PJVn8Dy3UlWLxbZPU;CPG^1ZxNkjpVSg!Km9wF5bBD@`bO2(T|Rt z`1sSWeD3B;&n8PqBlPwy@}>VKAN#;G z>(rC!oNq?T2p*=<{zEd7o4ebHfM&m&rGP_0dxvG<(*()C~d*Eb~l z`24k#EAM{%lWP}lJhJef$4K|*j(uk3;LB^gD6Yi((pKCW>*x0;2H@Igs{7LYBIxd$7Fmqa? zfHj01YGo7%X2`;PZ!(_6u3Bneo2M80N$dIc91%!{Jk?68+K1@QlJ>yP9e%@ewiS_54>F%%9p!G-%N(0y1pU-)qwR+temvnR054Ym^L+6q>d;@s9%M@bs5at!b~`VtE3e{@zrA>TM~haOKE?W1FNw0;Y2&4YC9moP`x{u*UOx zW(*?|GG^d<%3&-wa>7B8aS$J-ciRm_<}fyISYvkz6r~2;MjS#%fli~m3XDg9JEcF= zuIbTUX@CwNO4>|w3mX|QdY~^J`nkcvdi%y&+RucG;RFMUVZo8}huXt0+`hZ5U(D3! zp4?hq))-L>ta)IcqFicRzxHdF2iK*e_g894O!=;F5pT2Aua(buUiIpwpSfe#59*t*4~xm0O1)1n zy0X82?7P$K)%IXr6sS=v$Eh@@#2mb;$@Db4IYvpWkj)FNJ=>2WW{fplH~}Fa`@zRB zR+QLEAw#S%EZ-4)!Wf(kHH>JaOht`k*<5(Or8O8pjioGP@q(B9Ak7l$AkTG7j=5#Z z2^)u^v`ldnN`mQgnO{;72Z02HxfG}nJP1bv4bucI97@wPwXjBHL?N^R2q)SRidVhR zaY(P9)@r^GMSqZZxNM|6JR2eUg`tLHGXkm9s8JGzWx&XxU=}gIZWIq}v&}$QGKL`s z94>_M#TX-EQ3=g!W&KvSIbJQ-e8x=AifaQ9;96ORy=`=!N^xMOdN6 zo^SBM$QZ+vEs=1|bca|D3f&+{hYBRpb|G2L(lA8ShMHUN^kdf|jcSP-%X`5K)9IEB zX@BR;y@%!xeD3`9R|2ov?a0$J@$BwTT)gybu&X;i@qG&u3-gmFpS!m7(K8?4ci>4u zme0Sp{9=`m3LDw@1HvsgZO*NZ%*?1yBA-Irh;baDRTp6hib|~(3Qwv*;LkdxFu55>JY4%TQ8+BWjC<_wAJp< z!#tIU0AQhkg?2fPqEg_R`=zD9%~+=1Pny1a6EVPeE((p1RjG!l$PiIB@g&Fq z`$1uA2}8*Ttr+`e2Xk`A0VfujC6TYG?>ZzTfKA~&DkbG`CPy7h2}(xUlZHa|AxBJW z~EaLB+{Isq#*gDcCRy3^>(*cY5%C44ceUcf~fHy}>ioxl^_Rc&k)v-tcyLt?#<%-pVWsKO z*@@|W^~R#3r(61Z%_I>I9IxTg$<^(zPt@-Y!||{E)K4xRcy#x%j}d3uuk9T`@71;6 z{GGMmIuU^|9ZTDeqlCfc+OCa(*hcl8OQs5`Or>c9 z{&g%{W0rG)IF*>`Q6P*VaTpD`%u`8Cq>MonV{S|sfom}>lDP0(U_v6Tv8_r$(CKv< zQxnZ_823Q~watw~87zMZ1T>m{cQ_zGjn;ws(kimtcqt81#|DI*Jd$AM&*m(&R63rE!+dEl`Vd+(VUo6BT; zWbPv;79N}*J3K$Wc>2IY^LPDl5tZM&u{1tc9;-|Mp@wro^4Z4z+pEtpR9hIE8f)Hn z`}$yW<(<$iOmvzpHXaDye8Aaz)gDf0RwmIDT=}?r^ANq$-g8;pdIPOIXI;BkTKYNM zzQ~t8aq*=jy@?z>7@%txtZ#iaxOE9F-?ZyBKDVf^UG>Es z0hR*af=L?+1x*T%HGm-4a|+JgghRU<8$!wJ-nBY=$UkyW|$0`Zt$exX~ZF zs(#nu6DN)w-|6l7hyUu`t-<&wp8T}lSuNzQpc1_G-oI;3K6rC@ZkI)X`$@93wRPTi zD~o&X^Str9KlXI6GG9HyYGmS^mID|?*jnhJo$oV77yqhH%Xk`@chAS(gEV8lZ z*=8sr1kuKemTSPGC@jZ8NU==X4vOM5a6?MX-OuEr*;bzCfEgvOaW)oaMi&naCc{Rg z;DzN9$*l24b$zX8gcnp$8%refSeOYLD6S>ain_S7({}^nQp8YHE7eTIqE^*PrGO&p zCAMdzKP<&SRF-jKFFHT`q| z1G%Bp2tesOD^J6`MtS`eXm^k{re7lrW(}$w-Ew#YUIq-^{;Zh zv~S--@!Hvm>0`?q>vI$Hg84VPXZKC*0}_$Wt#{77J!0~MMdZNt!X3PPr#kcuZG30N zQEKC$d)I$WW>)G4rcY$BRczTsyHg&B^8+|g=#t=o;GMUv!H%?zCJ9w4^5Kuk0Xx(| zbJLByQ`+O!N@-M#n4Gj=hI$MXGtRNF6(0FH4V4e)adyYyd5`F7qe3jib-q*X|EqUW zRk8o(+4y7E*`YUB^;x#iQCAbV7{f!cSUPGmDNjn(4$NcVmPs}kz0x@`A<#o1U()xG zgM0b(Os_ea)hmkTDHHv|zr8ts6v_m;5lq`~b^s?9z#E6=4CEZHtikM=1DyaW`Cu*3 z#G7lxwL^<@uWa_m`co$xZ{0Wj^gnp<8qu|VdyfA3KlNu9cklj>|M91&cr6^izg}y; z^V0j*#Vs6W1p)HrFH)&51_Iz5jfE zV;3<4LkpeY}%hQz(h!;p9XuVM*WygHBN^*)DdF4`lz5{T^~~ zR>*ac57g$Zwj4UefH^fUX~m6tg-9iLVEe|ZUYS!0dEj^jGU?V&(fN-*VmvNuSK-lBv&$06XbLX-o? zwoq1xX00+DL_#1Nxs?W$NTvfL|E3OYkHR4^;Bpu;5o0UpwbN>qjzU;Hk2;t@twOUx zaIGk&U`ArLKc3xqwS#P24&8D&$Qd`-Uu^sX1vBrFG&6#s$YeD@rzBSYZl_aI2ZUGmY;tw;ojucsC!5o6 zTzu)s{5@s^S2Hg>^P*r;C6I$GnCL~huWDD>YmXx9ko~2{O9!qMy+!LckGE)hXAfCi zT{?Tb)wF4Rm7-^;{aw74spkGY-SH_DHIIAy7LOmJuAN?s_vRSS`kSkrdXWgn^D1RK z&ePL1yl*o(9rr7n`F@2Te)f$^M|Yd|Cs(%R_l619POH@qd_RE79i8jrXW8OA`E;Sy zcQnt;{jF7ijbOJAGl_oub@thmoxWLYd3d9ViwJBBS48PRHZjkdce1_5=63nikP*hl z>PZ?EMX`HvHoUwX4!RTLpaZyd3+6pj(sLeo^8gJsIjY2)sXSbfcIv94uAN|44|JrZ7cJi(VE7j78=D&J*z5dkk zA02b=9da}zq%XY3Z2iFG*xi5di~mV$fe?+DW5j@tYOM3wmC|GF^cy8>&B70SA-(IF;bgF1vlXjl zjbZWAQ^gaRydw(g7~LA~M!HlD#IAa4EEF|&EfW(loiWG-U1bA60huWK4dhoq*S_(} z;Y(|9vt3zlJ@@9C18R8B0U&$|R|YIGu`^ZLsFxC!YMk%>&c^k1aVvuz1_wj99Koyy zp#^2joEyL0hS&RW{wC~6;cCa)@JsvMsWY8}2lIu+@+3DtGVL0Lmd2JHr$em>7MA5e z*oyq9-Fyi67HqD-gb!N5N(A#C1(<;CS79}Qhj4%J=-`0a($ypFmO_(Z(IpYbiJcy&rtLTzj>JQBwl|>OHewr1I zjkuwa>R~^pzN*(esS6JRF0*>sO9j_j^;=n~W_h;5RqlIUlJ_T@6a9WXRV#%~D1ary zti9fE%#?Vc9M5!?T$9vq0GN(Vuw}d$jdD3DS~=57nG&zpDAUa~ko*H6wJ6jEN^y7t78KlRSiZ;zLuF@1QWw>nYZ^_>f^?w{Hn(#nh1 zFW#~H3_vbl*R^s?G zD_X!5s;-M@rk{HqJ|!7U1UC`L8~r1w6zsdzIr+lUzT53ROfJ5AbI;rF@4Ij_j1)o8 z1t84N$<0~?zL@eBz#`*p=v`A!fOefZNsG) zG6kb$eyWALPg~XIJRO$>r=?RPr&tc z$X8*CLRY}SJAgWX%D{(kYZbBw4zKu~X1L37nmmvEl-UxMnREv4$N80X>o#SJGxJ9i zJ@?Gzf?Uh(=Jl@@7dqRWqpj`V5Kouh{;%rg-+9r|ixcGW-RZIM&o1AnEuCL>hx(3t z|KhvP{d#3K?GKq{J8{ejRhMM(DEq~yg^!g$O{poFh(P0vT|*cZ@~~4GMdpHDV*oI>kzJ_DO>=Pi=*r! zE!=<>1!u7iOD42gf|<*EE*(TXOPFP@Dctmm5R#G+i)x~gLBok4aCf$cHgb^#*hcMc zK8k14TrsIh95L6!!!&knKZ%USu@JmaOi2X5oxm+(sFrQOkR}Bpj_+ekOuy9VF>GrP zGnO03yCuD_LNn7wL11RznZ#to`8P^JBeD~^92hgS#@g)XQBohP^m|FK!!+2o1qJ7f z8wW2KLJ!JwnPf3VUZq^ZmQdP=f9^T<&{}6La4SN|%|T~ZbuwZZ6U7@#Z{4@>nH#rm zbcXNlT09Pd`$6UT3tziq&s}ley|(iD^w>g-)9ah* z#a3^a$*t}fPgi0?9Wuh)Q5OUwv!^*2N_n5&6>on*ja8~QTn~Zn_6KN`E|Exu-d{UX zg0&nDg{JV{9zeo?OQ>3KID`oYPR_#C5Sq=>?TKm}=YUCfi%m|K5@Cc&SQ0ZxWCdF9 z>NcbL@Lc^+Ha0!x=dSjK7YDaX6IVZX_w-Wx-IW4a(6Auy)atuuiUW7%V$99$4c(dz z_7Jw%Ni6WWwDJ(FLS{&N_VmG4nE3OvXAgGw7VyYmkVQ+DdVk|5&)tLA{zHG{Sh84O z$M0>F*}^@G`@cF?(ih*OQ!oG46?=1Rw#t>j2H;gBd43b=)B5ChzWt3$mo6PYe)8_S z?^Q}IE!`YBAx-Mmu3dAk>&?#Ynx9|%0>>(q{a!c1gnNO*jK@HFE|P^IBx=p6jpH=&ea9##lvXBL85wuM zh-G5#or+nG%Ax{Oa9vA@)IkB`xkD@is#1kH`6*6G*zYGcbsTEuoKhMc4aHa!pdO97 zNzk-vVY4uXHUP&EtWFR3EJCnspj-vMWR?mPgJ}L6iZ#Y z* z6QaYY=;(%H<2~LBQaR7B-c$F;f!o(Ed^LKb4=XvW=in1_i?a}z!UotWOhrB0fh&pe z)K9HKpF_3eT$pf1c|j1^CM(X(3w&X{HUSURz>=nYf)(6Z1`ordO&E6|o`L2xynX|Y zIQr_s7y->y(P&nBUD>Dw)BYX(^|ZXc=~!6Som8at;ike{gKSsn(37hf6hUbh=(VXz z!?G6QESNa?e&ddneIMyh-k-LU+*|7puMAOlsJ6y-hV#?ABel1?#_;qJweNIqA$x&5 zSBH&SGMNj`^GDCFR1ith5VUM3G0EM*!bTM`r^YW_sM)m_-+KGD zD?k53;$`ht9M7Bd6-Q=FEmfXc%eJ`RyZ8O`?>Ua!YPBw2yx3~BA9>_a#)_Gl*(aX( zXs_45aN*+W>gp)dHF@BHM{c*Do~k#PQsm6tXSgM2jwz=E{utC6hTvp~43>6WJ4p;# z3@|7G4z;8zEK9RgAR;NTObgjHPU>>t^?FHRu&vyTc7#!=0WxG7BZ+VjV_a}s8LxE# z*k~Y#FBce@3Y6Dv$#<6C$Q+2*hN?xF(atSiqk&=OJ3Bfy^B2F^XF@oI4!Kq(J z(>}!(*dC3CdEinjkeZ-8=lyLF1WvW=3#67;yRPLUjYkSvz158kbvnRW(KN}Z>n0KR z9KTQooME`+lF$+nT+os8E6;ef;%m$#K^7$df|k0q^09>NTwLC;wS$me+T1)ff9P9R zUOYB)pz0lX?aFu7yX^IM-fUEAUPXTCt6#W!Whv{5Ti2H^UpjYfeIwI27~k7ofddDQ z+P3rbGv8WmZ0z#=AXio7>46&S`+EmrublL-QJ|dOv57aU-Rh999dfeu;mmAUlWn+%?8!tt`%`ZPeB1EKKM2(I^`!(p^cWllThY+2TN`M@4&b7K}k zgr%|>V0mu2L7}k^U;u?M`{&^j%#H(c0cN4nhoS_RmtYaHK zQ$3K=Be=WdPFDyQ5R0%J49R93-Htnr+0&nC)yUe;a&7LkJo33KrJ0V7$=VWA@8_kc z)X$rOuT*KHblmYD@M^VqA%Aaw`?9}Pir;?njWKPONp$asy_Sk*EpF<7P6)Yr6T(x$cwvlw(ydl$&I*tg=f=w)@r+B2^AO_orf|P0Gr4>8*7g3w1!!v9N#hL0rN8(TCy9EBr$ZqVU*aIQsnWxbn3`K z$99Hs(cVc9&d(p3-uKSMTLBJ_?4ECy4qUi=Yp1`Z;tGoWVO(^E-A2&JV*HU)e`5dC zBdxfr)Xw~*3~h&m!#GtyEGhS`ZQ)Ed76AfCTF|s%+lR45fEs`cIDn!BS9gr?Wop;d zYCr%P=L&LAk*iz}H`8T_2fM}|MER~X-u7oCi!_xg$da;;(hL!Maj`Vj-|TKXZ&Q9d zU>)65l43Vjs8rp~r@2?@G&CPi-o(!yzjE%b<<(R1)UH-PZhodxTYQJ)t=)SzGy8#YkTN>zGVvwo49zbrG-e84m>B&2m+r*!<=(!TA{!#Z0H7R6b6!G3;Z;WXSMVcYkD7gZ+ zgotr&VN?V#*6RsBNb1K9^7nNTuRs1z09Qic^a6 zB=S8znS#{%*-&=P?PWCPyo0{17^{;=uUT+E^>-C232ae-ZdBtybxF|lg_h#K% zX|v`{tN)s{{R8WV_H`;Xr}1og`?awEO+d20UY$8t!tA^04PsKseWx^G7192&Z8FiD zdpEii!=wWM=1{uZGk;DQSj-gUz5pI=m{aKSd3dJ_dt6wKRdQges9H&$%}!3{Jhd%Y zytZ|%;Cqe$l%QBQN2);tQ$v91Q5{x6o`-9rlCIB{uDdu0X+A`Glo|h^L2MEZQDba* zOuqbG-+k&Mcm96p@O*pGoqX!O8|@5Tt|#v$EAKniG}wvSRw2h{oE0=_%{$`{)y5Cd z-m6{Ry(xC4-PZTNw{k{UR}cTS+rawM(Ym#@sh#QihO1Y` z20QooJ4Y(^1#9Nn=B`&`|Lu#3a-AE4%4>b~_z(X3J+FOnYPsFgyS~_b3E~#wXp$W| zefplYwUyy;zDVzY) z&1yyB#CKiJuteN70&WO=7f5RP=CL!{S;T79kZ003k-)f89O4mMSSIfF zVF4D>a!JNi78lf}g~*uD9Hj3CvS2~U??*#Iyg@q$4M~w;VhgO03v-l49ui zq|-4h#!}hur$d)|)OBrAVj=#aSE%p>0#1Yk@}L z_)r;ilCiO{mkewZZ9%cCv9iII-9f?_vpq~5d+YX~HdX6(`i9Bsnph^+_Y9ZZ#b6r2 z1PB3;HNV>Fx0n=D6Z2Y>hxGjJ>d~)0^DFyzjb+_ItGls&``Yr>rNJQTt>cFue*F38 zpIcvBzjXdan&v`?rKRO&b7Ie)y*F-L$D_hGyd0bB-<=h> z5W_&2I?NTEDVsg;NXb-ArvSPeoEQ>jM4KO}h8HG+{!W5iJRGDbSBq<{`Z%lH4N!;h zT^I^DAB}$OEWmz%3b41}a$wM_&Y zHlBASRW7w=x(MA$n#Ez+B|w1W)v|9{)bWg#tKO(+qh(=!6|+oaMeaIU0~-$~+TEUK zn{iN{GcCdKah4d7>R7Xyv!UyFSzaiSvn<1gDFu1P(=?wL3)3v6$ceMeBM4&F!jr><3KXdg%X1_uhm?wVnfoa z4Z~q-y0RJPd09nO_`}pZ*Kq|Bv6jc-ft~vU_sl@77u; zi|%1>DahJ19UhzSEf$j*;iZ+5tbJpn9dkVsf; zKsSRkcAln3{kOmu)BY zM(>`x+Ptu?#3%Mv?k;3K*muOGtG)2*fW}}kS~ih>3%h2S%nmw;O;6r^WunkR$2F+q{G4W9yo;+by+gFzZNCQ7I#Y*GI0$>4wf?1 zhB_&7k*3M@~I^&@`mWn6Q&fzNA84@R>(y4ozY z4xzDewHOsXM?@W*ivX2U9aZD*#PXQK|)Ns}LfXw$#?a zU7>pNsWZL3bC+zZ52N+exlZy zQy3$gOOb;H1EbF0X${JNCR286_grtT($x6Dmv5wzeBH+{O*@a>dgZb8b2BV`-3h;5 zdGsRn-!@uEwd?gPoOyECzWiU?ryr|EPo4Ng_U*p}q;%iD%K2vb*7tal7nPKM-`Sfd z*9S}5E+W+^`QN^ztJPW%lzP4HtFJ!4y1M+}gO5#4PEStGe6U0Q>aYIH#f$Iu`<+Uq zTB|j4_Yz1_03?|pcRqHHvL!X5WIgP2$!*8BqBNFTr#$Dyh{;WYg5`jPxiDL<&?aU~ zBfr+}nKJuZZe!M1G)oMOif0SV*wa~*>1)T2IQqU?F5ZNu|C&D@aK z;AJ@jB9UUY4)RgLfFUo43>iHXaFO#Qvk;i>hy+patY8KzF6_z4s!;%QD~@HQLWe8? zz?4v=EeWjMi9GC98oo)A0ZTG!s!fx2GBBtPbM!T5X-vE{Qq*x&CTnBiFiMrcikU1K zBq#?auteHYmLith>qZuJjTgn6( z{?qo2U(<3GM$5Q5ormX6|Jly)7r}=z>NG1+D;_U6+HMU?L5MgCOhb#8TIt?adu_Hn z<>8}PTuC4h5DC~n2H*nNV3yIwLKwmMA&lVK(5#iN*u-)GW1!St-`&jjHTJ%~1_)lg z0())v`enGa1Dy?+3eAz+ehc;x$UlDa!og{%RWDpV@{>RN*rm%)Joex_8213+;C}cJ z<=t$+Py8&LIu3vERj@3$qU+y`YQHjYuGEL#jX;~6=-l^7F*KS%%K+PzV=FsO=h9sC zAe#)KR=wsrl>xi={Z)H|ePOD6Zr|kDPWeI0dhyK|camN?-SkL&rFF;QhhXKomsee3 zqp!Cwo_u`f?fYk5tve6E;NzFp@7qpoUAb5*@gw^!&3@0)(+XDHu@?O@~JnGN(={ zPYTzwk~Fo!Q)c!j;v|*E{ED^VuhBt2_QDS_l{WRTlDy7rcnqb&Db$M!%A$P#IwSY{5%KUl8iq>0d6 zmP>ZQIkGhd(pu@4$Ea=D(U3{5M^C!OhHa}2ltF1=T7z_4Bn`RU_B_)_NR!+~PL`W4 z0x>tzLJH*AZjz=s(`lR=x3ace%OzCz;+fd-e~h|ivVWjO3jPL4-W z5(FjNrb@{)O=o9k-+lKTG!m=>jKH~seAs8hMqi+k6koY=>G4O$4j-!AxS4X!KlsN= zNeKKBYyG@ZzXfof#iI(OX5&&0j4z&By6}qtAW~owvNZ8Ym%(mLOw>u13Q8@l(AH+} zc1aeFxNV4GIvOe;n<>TK0xaW@0~jCO>vjOO%)c)%3^^+u(9jaHAxYK$hKw1cISE0?w07{3(K7_47FJ!_8&4f z-DA{S+++161wt@+8BWpCo4(HF?rxqCv0llb^Vkvo~MW^EKLCsLrKX+Vho+0Wsh>U^(aVNAWgHZ zU{VT^P{&DXaaERQ1x z2WeUuRUv@u5GD#EVZ&x#>ewjHIA}H5K|fQuckI~FX0!Q&KllSh!M3)x zUDr#J_|TyvQpykNYJ7Y`DTPNbKQ(fnb6zm!0Knq>TeG{qXMNMTeEI$9DW}&Ly{(^H zU3tH;2ViJUZf*mL@~8-N&^dIwkh!qchbV`12*nm?hxLmE%O~AdOb{|Tzo1$jzJ9Hx zwZU0(n~x2Z)aGWm#|K;hIRh{WW;I~>EW96qKt>w6x3%%^o+%U5lWWGzF~fBLS$K2e z3_bG4{O0#gHwUYCO}=y2;-%@S4To5huCb*N^S#c7IU)6x8`A)=(W2jaY4T@&{Zsdz za-KPNk<3+Jg!<2l$_ z2c4J?j;8f`SrUO%8KEe2DkGdL=u(pxKcOA zy;{A(V$~?yCffi6#g1kAE2&Xq*zCxmS!8R^c0iHI^2kur!#!{pHASt_ctx=64CJKuPN1Li5H&(XW zgATF?*E&jsCe~};URB86+Ui*-l!(Vgtig>2DJF=qywgv+QG_A4G?|+ZYn`iYJ#nmkOpoNTS4gB9z{{qER{La zd1~kw@o8H$*K}@i)|KfSWh3Vv`hL8q|bf0Jweorq(bu zHEr8;q`NeyDaUahyXX6yrGVv(5^TGLN1b7xYp(o~&t*~+ zvQ%4Fl;Lgnj3VJ$y8om-Klz^5E5B@r=1WV2t}LgouC4ZT1_B9Eb0fI zYpHS=`lXQCcFtm(*oBgzkBx>Vi#?#CRiR zd6E=Zc_5I)g~%W&Vre3cY|Ay%+caauadtXGkz1Z;hMyd8=y-W1a-9sft!tNVGsaJy zy5r=@Gappl2RFT|SFdbtZhjy;jN?d3Iob)a?}wvlL?Na6FbMgB_KeoV^MZD3De#u+ z)r(*J(#D?I7Ajz+4TB+c84Pz|@xX6xU;KUD1K==H&cXloOo#Pc)dVxrL5rC9gtW-x z8!c*K&#|xvr-ni8J=HJ;W+A{sSl@v(HRjs;>tHpi*K7*jUuDh@K=|>f zwkit;^K;1G6xK8-8g?*Yl*Ry=i8PQ<^_^Z zeG~rsik4XaVs`OAw?raqM?4s<{n1>S#YsOla3iXseo+c78i3Z!jZvf3x@kIF8o+2V zDizOWa94vKal9w()#INT4(Fjb{m1S;{8z`n@=NCy|Mta?eJ;Mb#_zuy?!Oa!4;JU( z{N+z>ul$vjFMt0_fB28^p9qRKZE^jrtvOLZ+9zY18zq0wufP1(zI_MvC~RZ2A95+> zV~>6O^5qLc6t+!a#HZNYTt9Z_e(l_5dErtrUL7OH9@>SpUGXcLWZFVhc?Q~pI3d7z z>UpkhwW+fn{jY#dxzC=b3N2 z2^&adQrf9aGB!ji%Oc1#W)sVVayu4CyIis@s^b&G2}Sj*7iV2RIX4CS!=r;h6W=U$Bgsbv8k3t zCRn3h(UMBd>gB31LT#B9#?V=*TB$OLwo(E%7HV4q&$9w+%f~=VBpw<(s%!in*tdg} zv8uCsY3bIBFFv29L&mZw>RXoe^wZz|^rt^JHa7m;b5A!KVu$g+6uHseiU{@z+j0@Xs9gp4QqI;QwA4 z?261`7Xm7jSePvPUdR#ZT-vsY>P4y=@Y^LXui<5n_EFKI!I2<`Nia*AYhl_0D<^l} z`xllU{g*cn{zp;Y6)^@GT1lzT3NfgL%QgqtlL;XeoQ` zR0B53e=EEE_Fb*5ryX~!v-5JPa&Y9cSfsno!f5Th7S~S(3!kZ0_PdB67_Et|AaET} zFfmk?~ksww=acxg1Fa*wP$Op#ViphC-yfc2{`Lutnmw zwk;VtZaa!F1)c&XmcV>#dr&RYWGE0K4mBYnaX+#&9iJ;FaRy2a+Ok@$@+@9%bwe-k zY_A{Nv6UpLc0I%Q7EEzGHCOY$7MXUs-8(Zg{lTtS ztyZpFxjZ#BZCR!XCd?|fwzig+mpYyHul&+K>i45crTq5w=R4iYC>spoZI|4vhDZL; zpZM25|6hKrKDiqJ)^ELCpV$MVwQv-6R?LO)e=L&6Udhh~F|zdPW=}{6YINf6Idyf5 z;PmDOu9gw!m|7zYAu4{qZ+%pY;26L=05{<{hjX7j{-y9SukO~=zf6*Jy85jsyAhU+ zMY$PzS!yfJ`|MLeNXxbR_sYLsAV{pA{zI?-^6#FwE!DLs%0yti;ASE}_2i)UuF-@1 zzZM?hfQ>@+zb^*7h(*~i5BdxVUm?IC3rUQ{Mq*=&ywtnTUC&xuNTmEJ(c23fS7-I& z&piLL|LU1{E>03g@)jL*1YTuD%Nxut{E?;NQTHc4_N!iT!xrZeMF01DYc8NrZZ6#>5GHAA_m{jzT83(lx=1PM#Vx2XT;+u@;};s?t)N zWXJ}y-5JO?NE82N)PjRvLIQVbqwQeZ^+r*XW;X9g0bJ)Lheok*N_N4Du}U?UvEva# z_^}kWgy*=`ngtGWsh9Q~lj}gpXFvP751OJczWAb2YG-F-ZfXnXL+zQxn8Uj3Dw?h3M)(T+0m=_mfq+~T37o0pEBc#Mn1 zvFQWN$;B(@{*BRyO~Uvt*ja`Dxonlu*+Np+aWvMMaV_gGxY7iH@QG*t{rL{ zJujlJP$#!VKRLKOx%=(C^Y5Ns>`qiV*`1zsYaqVgs~nZ`jcm|S3R~ev3OGuft1kBX z(LAl)=i{A%Pup&gXXCHbPrLMO-|LslVa`*Gq~pxC)~l{JB}DA`(*VfY8#%jQhtV2d z&$CV5dp~>cpSBjhs{*67uh(?6lSZ5|a|m>8Z8{B#`(-a46nk%7zK?G8j&$@RpS(IZ z_3mop!o@OC!JA8)>$h)|ae&gSx;N0{-UQ$`w$8ZT6mTHd#P>h)cZj-;pa6h&2fp*% zXkIc}2z2=MrCmb~0Zn`9yZb9c^?}`NZeiCEO2Vb38)W3t-nDBXO_S~I&E32A9yomH z)V;@t`r3OdzeBJ~0Tpd~Yi);|e0UKfr$n6*=*eITO|JNeR*$H}Z7L_5_0ilxW2C3XDhgY@ZiFPGB|^cMz#SW7D2Om{ zQ4A2ccFvja8?;QGh^lGi@R%hg*;D~z+O$*!u6h;f;lVH_ng-O>2)KdR$j}d56WheG zP4X-cOK5U@EHAQhy@W@g!HJ4btrAcabWe{{mVxF>`04-bLuBnCulQ4(P?B2Fr zOo_)dQ$`bj-4bng6ECoZ#KQ3O&8{L5i!*K^GwWZvoQGjJ7!23fH&<8JcJE&NV176~ zJ&Q4(oSZy={``T12mjok{|jSNjmos%%D%GHd2_w}hJw{@(ymn&aS?Wt3qc)8$tNeq zFTV7z!r%^|XnXbc(Yv1LY}~5Ur>?&BZvmjU{l8V95U41uY-c0Cyi=5&jPY72$Rf#d z-d}1tL|9li%BWGb+kNIb*dlgb4c@%-ItQ z0t}TWKEcyp&Ef+5KORhfmdR3*f-25w@rr|9h~j-nT*ahUC@3-+4OF%6EL~cJ(XuSx zv=tl5J^BKSR%M?nGd=lGY3H?Q=E*XQ){JP1oQ+RaUE*>r9E^NgMm7;l?`(CZ!mVuv z_Ri!*eaF?+sy=%mqNT}}T-njBjZVqO%`=lf@E3mh+U9f3D0zM5q$$Et&hTfS{A~aQ zqxITZ5E2gTg%1~()l0SelkUaw%eU)A|JJU(nqV&4g|p;V_37h}TNcfd>;uJ&ANcn_ z^iXroz1IHi)#z+0wg@7wl=;nM`|?`WDac1YyWc{HNzv=3BX4ewv^I~uk$edQc_gZc z@%TibK^B>k%pnvZs^ZL~Qkrv#%n`AZ0Uv7y1B0(Mqi;hoB|I+-GKw+Nmi5B_pRvDy z(=5BsG{OJj%O3|vBxf;6CAI~YCEIOoW*lbR-C<^C=4o=bn@w#NW2v~Zk}3G3%ZJZ8 zg%U+L@SUy_8e{CILq_<}~KQcr7UHWf|i_D=(#-jw9zC zLSFX>VPy=lJx>z0ZktYbX_VOjM$$%>Qh5d`Ls)rR)g`47QG_JO>tM0#oipsem>~zf2s_D~|%D!h*d5yfr z%c?rBn)7BgO+{_w?Zw$FFO2TfC_g!=>QXk|aOPy!iI{jBnksms?_9oi>6sTUhQa&ax%Z1V z&wh5*-1ag=8DWA-+XHiFtH(I)CV5$R<_BI{-#Egm4Xe8ke$OBIm;UBo{revs{*xzf z{rP10>1(h2;}75a@8EZG`#zl?3Dc%s*O&K}8!un*%njo>>P_6vvo!UA8izZn5eDy3 z@WE@v_ojnsG+&fl_=GXNre)h$1$95!8U8I*{Zh~W)o5@{`%5_b!PUv%=);fPeYBQ# zIClS#hZ`dP{&FpH^2H>Y%eMF4YVT4JE4h9D#sPXFA4doygvoyYTM|A&p4oVV9sXjq z^}X3|mQq^cwC7!|gGO=81H<#RJee;M@lw&tFPy&7Ut-0>oo~MWqxkF#kL&VOUJrNA zc3*w=qYzz9HV($O?|pSJ4%xi<^6lsUUnQ(+n2f<_*xP~MBiZQormygU?8L3kf9>r%U*Q4=6yzgy{N7PGnXXp%PUg1Ax5;OI z^tuJ)jO7UkPKrSiu~Zvfq%6-O3*M`M@DmBNa``|M1@HQGE(U$q4bp^Q)^rU;BpFcT znRU)O@ZMsid#Sw%-dGXiVj|kojwg{)zFBEcP@ZAyOBjE19n+N z*K0!)+|+t!b248yApqmjs4ixamC&{-SeqnZtW7deuZ@U7h-kIy+SW^FzyT({EG0vn zAmj~eW$yv;I8zM*M|<7%w(&qxoN8q;ao)Q1s?}7hUe2~goZt{FV$q#P$IGtSnWdA- zaNTy}X&!OW8vB#zSZ6*q|nN?*A4 z;%9Gs^WTHtiQwq%n@DLF5F-eJR_?vWi?<(EkI(DY8f~1nu|T9K7UwceBZ6%Rgl>-l zMS_#TC~u4&ZN#}4&e1dmX;>`W?R!ZZ6D>p03050r)ZvAFjht=2b0w1E+QBH@mVp8pac|9=SZH`m=`v;CP2 zQ8fQn+uT>zx3)H6db+5Uc1K4`Ekoa_rc-em^_6>O_raHbcGfW5UWm@~<4-_;DGI&P zD?JFbOLivG7^m%Oxt^5GSMI#@|0?0T@59Cv7Ax4@hTml4n>P&l)$-}$=Cdz|%lgKA zI317s)-a9)jkNa0$-9TISK-zu6Xl^aht2s}r*A8yamp@4VY#+)QV_Lj$V;EOP>At( zoZ6rf0wgI-kT#mdR2pZ3Mc9jU)HS_xMmgEGD&=u+O)l`N>peExv#qo9IpJh6ud@N( z*_iga$%{f+moPLLO%$kZr2^HQlR;JlY{5B7ylw!90f#7te4MD>8i~evYP_K_0t!Vs zD63VHC14R{d6!^!7=1_Hn$1q$|&6;7Hg5>h-OrHMscu#al=s(v20qdp*S^mL zgAf|8j4_Ewkhf7v%9R`x%wiJ>cp!-J0&c za_{Z`6240^0HdC~69Rg8#M3mgS~?G*Hhu4$_mGbu$!%M8S_IeSR4*$;kVhCX#=~eZ z8gCR?R`(U51bN!7yUKntf}gIN6=KgQ^VB!QOSiI5hQ=SvF21zC*)~ws=lAUBjq^{w zu=DU>{B>pbTJdKF=x?5#l{}?&)$i=u{VT6K_ha|p|24*klx4o*$tT`Hw1n?6xE}Ky zpMI%n?yIXmvavbI%R60puTP?aTH7mM9n~V`nBeG`tlw##dF9;GKYF;_`NlVHz40C$ zeGZ4VyNF`FA101)0^nx z7muI2|G+-I_x|1aMPoHs#A3cK<>|5{0suw+K^12~zk4`e0CXL&;qv@Q&ds}zA7Nw# zMA5{NkA3zMrugV|DH|U}%o-_ct&~wx1&f^09w9~|jNEKmKtQVFj3G~~3*Zf+5E`v8 z30nH$C~jJLwph=yQQNh_g}PM=)O_AWsqiisg|st-8sq#VA6jsI-+SwN<9$!JHfBoq zXY2K7m=nabWVI@NK&hBC>%JI77P+R8kxv2z>{uZB^t@J~cfm16AXw}9VzE9uX^SE8 zBt$VYEqG>;x0E7fJtAQcjlA{Ms*X}|bXaNyjMCnBoP_1PERw8m?QdX|5)6SeKw&f( zNM(5nNrJ1Dj^mhwr6|setY`#$)m;T>B;lYKYx6D97QnzP)fHB zyd|q*nDyFtZ@urw(*Yu$q>z#nYo-&1YAWPks&2 zQZ4K||LLh(*wJ(G#TT}oayzr5jNc}-;Q@tdHnXl*cSq&Dhp&J8!Az&`zjm~9bz@`8 z{?f0NgK*|Vzk$Vj$D0dFMqlpi2m0sE7oUvjt=ToQc!)Vn4F2^SPsj0&cm0FA|I?rP zL$~0!XuIDb;d_TK&GnY|dn8(3nLd2`_O|k1I(>Rl21k&vx)1fQ+|M^Ya(Ziix;|HJ zKg&j0+DpZf8q5CP6;Ita0dfOrfTQYKB z3=l_NnI2}UvaF?V1+`sMrDR|`)HJ}dhgptdQuno>T0zD0IgLBfphMh zTb%`zmh-bF&-1>rlhL5lUDYUtS#_=*UI@WP$?|YzqnJAD@?kW;v#M|Z`fFeM^HQ42 zFR3d}yX6U#CGGm+!Cm^*FASb~^^bk)t3NN54iK6i3*w*n8L^8Wd$ISu4?2qD>BX(E z?si_ej7JmYf^X^~iwNOb>L!i)rprfJT}n>kWw~F+&g$%vX2U_1!ajT0ysxE)(D|2|E`rtPUSt zc}wfec<~Zz~bT0eDjlWyhCW3 z<=21r5B+t30N>^QL-^`9fYK+acytUawb`0{kbOX!yF2;(!E)EwK!M6*dUoS|*B9iN zDsGmmCWFQ?m&V+8CNNxgQs!MVthJksA#X#>INoRO_Bn zE+}!{wrwvGCVSs^-Dra|gts>)mijbKEg(Vs#%LVHnej$9zVADc5RSQ0elpDn3dXh! z1NEu4Qg?PVi~@2Vybufkd2jm$x=!~N0F;(ZBsc+5traIBc!v-Gfg~^Ls;$>9FOc!J z?v&udH69D(tYHKir9H8~!KM9uZFImsPUCkTJ$g`|4~RI}o++dzvkW|OBnafUr&Gcb zPhGX>1;Japkuhd>wpGg}&zY9mxgG~M;G0!fSpyJYGK!t^La=mz>$PMQful{M%Bo2= z`vJL#04t?9=adrfJtGkxtSR@#n}`d-X_^uQxUQA9*jYLprY^{3r-Q?z!Jw^8HW}Xk z_9Ki!lG)Gwm_IpU-}q8;dQKNBq@9qRy#MGMe3X)lyQ3E`FK!&>dE%Y1+S%Da8(f#V z7?KtY*(jnYX5~6X!_i>*>o~r%vnSb!w6df=b+YayrVArDmZl+&0l#o z{_pOOUy9(V!TM}j{^DV@>ci*aJN40nHJ@b!J+)N@{caka6VCIfX%yU?evV z?oKA7cKTp1q5BVJlkzHl#)LBX%i*N@Iu-TCQy5Q~EHlnQY6 z>T~hYUE*7{pYP^bE>wey@NiM$f^S^Co?kw0)Y83mdgZiz@bJnn-hJ^m*9i%Ue&X{# z^_z9{!6SI@efY#jpvd5F{2UlB*zodNir(Dp8+&>4>_lIXo$=txN9Sb~NGJ1bcI*9H zs?(bJYFR}j76Zq!5jSL2wHy^BUW(2A$@2;Mvw#zuAuf|s2o0Xb_t z0&jp4GTn@=@z}>&`G8#K`aI3N58ks@R@PHh$taF`)kh+w9#?%YwM3C8L1<^Am{a0| zZ3!gC8pfkwNgCx!OBR9DCh|$A6CpjRRuGe+B?$ZJC;E5n9%azs$ zyU8%_qya&YXEacj+F(({NK_ya{K3wKhCbnG2qa)X&hzPb)M#Us?Helui!m8(6 zduLg_bGRN-cBj^p=GK*ozCYJjHm3_2o+t87+pzuw9w7+q?0tZ!Jznts{aG`nrgwX#?S2@wGaKB#jl)x=KpoWOy9#-z7DH3 zyz&wn?!NHm`PSn_q`giAQbu0eTHScCL6J|=XtbY;ZIMJC&MfoPy1<;eu(3IzU`4b{ zJYILPV8yGW=wM@ZWkBOVKK4TwfFOcHl#oFdG2vqxEA3LjvLf}!cdZsN;v(1{_ew$t z)-|JS2nH#svV_U++QJADLU0BMBPpc{Dis0~?-6U;HXxg3lv2(j;fxExrwm!Zgy<+1 zb*Y_W+IWgV2is{$5TlrC8I^YamW_RUGG`I$`VbdMJ8%8thJf;i-NUyY z*2a&iTvd$HGu4{adB0pWG^5h>ZLh$KR-Wx#yn1?G?Ok2pxP5`JG>h;4tfeCo~l44&{r!k_sCe|QW@0xx{vVzO~bGsyfS|%(4quu6sxS2mbYIX#Rv@%)Dro$nfWPBg@M(=tS6)E$`6}VbDGrg zkf3S7O^~|NvQUr^4oRVxSj{P(%=uD1d9330C$tP55k@D{U}C zQNsG#L<||@vBy?Bg)~O8T$PE49-Wk5T|Rmy83FR=^EF{0B9f-USu&c&kq}*{np$@X zQGyu9mFx)xK@&oV>8SHAAlvmS6C>pOY`aiKBV;Q7UVEN<8wepvN$f?w**YA0t*ymc z`lv``XRC$J$7t2Gy>tST#Yr`q?Ecz!{sIcFRi?amN(ljQ3}bO^lMS=^`C23)co+<` zb=SrtJShrmWcz5r8G#T?)62Cq7L1cEJy|@oL?ip01^}y7ylCW!dJ#*c-gOT{@|o!-0JKZi{fef^yX`I=nEUf^k)@jI>yA zkmZELDFj{DyJJ!U7OXstvkb6Fiugzl%2%t10f2W3cSCyM}_l&JE`AUo!^}=zH@Z+t;KOu$*UXFdQl_cl(KDO zR1+o}xrjr#EQ9Ma7WJidSM5}LfdYVCvBr4LN2&Gjj;Si(04!jeSh~i-ab4v1rPnLQ(Gmw*9SOMC%=As z^+qYa)kd2Md3x~e4?TM;n|x2Ru8!{fl}=eCS&`G#s#YEJN9%k)rN<5q@x$8>yQSFN z*<7xV+c|h7FYdB-4P8)KK4C!_D-O0qp3!9YfIM8&v0k3q)tNLhJ-Fch_@DaLSKqLI z?bmka=3=9W(>-wr9PVmKsly)S@%2jGo5W|MVPeSdy>_h|?)}X-?`6l`wRPCg$kcr^ z9gMn0OUaM=jmJxVDSPwz7ypIxhd(&es)>xmAoUTDv>k`oQJ= z=QpdaZF-f&+yTbGdf8#jgAwGz-#23sugWfp$#|4D?ScXEhGQ_}LD4&;_q8 zofa_!DWdblAwQGm2oE#Ho~~siO>KAf#+~lV zl}w|I1FyQ4F=m`w*9u_--~j^;uC6;O;-k~Ltu#hdM5OBKH*X#P`PaVv+Ts)dWN@F| zx$>di{f|6%p{>;A3%kpCnG{seD9y3u;9)zHT8GC+p=tg5$K5;kWT~rlD|H|!NE0v$ z2+`!?mc(3JtPNf*D}pHrbUe(AGXbD$J@ph2h?KUyLDUmWQ1CRN7z``oKPw7m4cVEEA=vJ{ zLLXM|KYl%v_t~Ea9+7KZFZF8O^9bEL?FteW=f{&- z;gSulT^(Io_QUs2FFt;>^W2s5tCz;7WlPBO6w~Q6fWWiyxT&4sVLG+~vx2K6T7B`G z_Y8hmmW$2J-BrJA`bGqr391_4DBalp-Rt#Rg7e4KMjn3p2S5GZuYdb;V0o|f+3}*R zBtb}dg*vPrt}gzrgUNQb>PnB4>g0472PxX7*2)Tm84m&XoQFv97xw%)pd*` z@4R!4CpbLufahbu2yxy^X;!6-STZQmx^FBPj7grS{)z6`f$gQ44rgFtdvn-n>Ak~& z)TRA_YfpXp`qghfdi3!t2V0Y2@W3e`hMeBV{YXwcLhkAv-vD9R6f@Z(QCeZ3}M{r3BRlMt6DQ5qE_ z7J$s+ycHa>4X#yx?c#-XyNY7mwMs+?dzXrFK;i7>A!j&*K*6L<%T8-`dR88-Rc`}e zCn7Q$^Or7_rNzAx3|SYfv|*Tp;0Xjk0Wn7q_km8vF=M2Ysy9w)lx1-ei`GdWOpz4G zVWS)-jI!IZdLzR(E)T`WUit{PEOIx0^rbIs?!3&egZ~y$dxj}_NlsL;c$BV!H zfN!$ZR}ZNC+u^SgjN1 zrkjPJ10`K;hsSQOgl(E_dxS6x50}}OzO|!k_osg1Ys4Ne6+f+7sSWbXOM^J-Th;b* zAj;7Y;_(N|b%m(|N{!ZOMse7W;$Bg?v2mg60)bmET+TlKp@&7fxc6}9*I%b)|$6!?$kJHMRyIUJldyK>8cuHwPKJ=OWI1;n%bTw}o zNsLjBSrq89lB03a)eU9RwgDs7_oizUVG^*~y|CTZdN^dp`D&#?Aj&!Ke6?(n3=={H zWzh&Hly6Q)CiDzN5l=jry^Uf}40|xxLsNB#dShK%+P?Q$DwJ+0)~YdJv31rcYpn^W zM-(QTMYYg8GK}!msy7m~3JA6aDK1dodT_u1FcBifPMPhE2@sbK@E}RIH)q;vMDQTa zo%e*n-o`LZvR)em!D=0_QQEeZSua(QXK9YxYHf5)JaHZJ;B;ravr0;jY@G5m=WSys z_nYJC>3NAQ-W<;cX*?N5Z`^zMos;8FUb`rG6ne)geRxtK>|}3?nCA)SsZgy|G7O7h z)Aeb>jY0t%X>7vMAn@T)jD(vAV|rP+KEs?FkjRYb^^q-y)F zR~V4iIu^vk>1?VHy-uQQyE8m3=I!dw>g6xl{%<;aP63r|4G2+2%J)}CZ{K5st6`pN z@!s(fUalIBy^+b~iAONFQ0)I*=ub}cbPqN!#oHXS-FT9a$a(m1|Djw?4zojz2FG^R zumd-kC`qJ|91uWoz17Mld3@&(efgWuZx5Frd*R{c#zxaWN5Thae%7qJD2@Q(l$=k- z$?Zkd^(2I-T(6j5T_RuuefoP^0biiYPyl= zcju39FWZxPy>62vf9kVaS_bE!Z5vJsf}%JDWxO&v4xC1$*Q)Ou^6}4KWGpDDB2JN4 zL~EN(v6)UM-Xb7jltrUqff;Y= zzAI%q1Y;bhLKz(=EKgZ*J+|OFW^K?~=cz#8%1VhWJw9G_trI+W>=&zw$27xf)%M2A zA`)e3G}wTxZXr)%k%162PtzzyG;-dAo$aXsl?{qGN*qE2`Q44tbUOAxtTF3()%X2i zA{O%|V#0Wrq?lo^Ww)1PAKiJnX?vp`Mu-sKOUXEXbiOW2JDbE2XHBb}4Xd?6l%)yo zWJ@_C2wUrev4UcZARqEhsWeVZZwBKCp`cnz7*{H!aV$8u$hJyS#6%SL$}}~|-qy7& zvcmLXT;v{HuZ`+}IBK=)YK8iqQJ^exwvS)9mOZ~u_BQD_#c@>CeOnofhy{tJG25HY zp1Hbi6i^q8*V=Vf5*C6FmoM%b-!TqFkues4Xe-_I>ldVz(J-2g3-572c59dn2P4MP zR+dh_b@p)Xx?iE;FBegkMW(Af>ge+3iI1~TLi`BVbAl|x02Jgqw^qX<+AKWc{Db|6 z_U%*G*Ux-Xeq379IXPxUN+av-kma|!!$&kW7iYPh1xu_oC{`NankIv^xMA4;#E$BNu zj-8b#pd{vy@^avB-BM zuwboK)|wEyPIethLB*rTT9ytLTrnAI&rxx5fs=2%V0KR}cMv)k>@bVF#>!5EHJlU92xHJ`nZ!bCKbj>ZkhW7=BiRQM@&51( zf(^k_><2GB<2=D6?q%OKT@vRh%?4@K+nx&?0uh8`g3??_<*@LCVgxA4nDW|4j}bD6 z^-`5{!(-Z*O6n(bc;H4GAVDyEc3z)X>x2#3t~2Hyq4#tbHbw&_rGCWA``xXxhyD@H zy=v<$Dl`l9{B&NH^6KTi$ZdRJ@wp#Z{p7RJg_Cu;?CZ5@E+$*s(F7y>mDM{BDQ;j_^AUrNxu2xpZIc*Ru3NIzx36o%Vu)6 z^7Ubj7{Mx>e$&e1J}qYVk57;%S>kPv2ML!}?tN%0k5e05%J6J7Q`RZjRf|p}+!&Qa zF^`dyJ^9$@E?H}wu@q~bu`DeDgyEPgZM6)tXNib=UwZHiCsos@S>jx8RGkWMDz2Q8 zy$#+2(#pzgkb27isVvSOA1(XZnLw4*g8I((5ohbAW5~1b&PFtpRh_XYDWWW=O|2-2 z1m=Nwf`u}@Lq1P(hXS~4-B;yO#z{tOG#Tc-Z5@P&#~DeTw<6|UF9U;Cc4@|yblSLV z%mfG3c^ATR=>$(F5s#b>-h)R^EYymSKqCUvty~*hE@Z^Am@tFvs+3Bi zRb!WB6L3J(5}sI3nzbz^qF(8{534ML)~H@t5t4STG_tl=ZKun&!?8ogT-n{dxLYXG z0f=6C&X^grr@c_Vy)HraU+=Byp%hmpSgC?Afe}@e;X)X1`nHavk=J@-k`hMSTDPUa zgmZ#v%*x6(GL%h2d7yD@4Yc!q{^iGDw0e6@XemopZcI$G!{oHUr!u*S?x0j~6lx!Wu8<&%93+~Z+zkW zjV~X+`MY+We}^smHZVrgJi#tFYwNa02%ddGUw@&xa3w^M9?r70;&)ER?a_N5eePb{ zqWkA(<9L;4ru3gaJN(;&wEbg0{N^aSTb1^2edQCs^tI?=odnHsz~+8&{N4?{w9O+u zoDyP$lk3suc+r)@U>o|`!R~3*CKm`Jtg94`aaA=01LwrKFdHWxE5f5*Dr+41-p^f_ z49EE}RbE>ayjPt2dabN=*80s!TsG%XBCJLjTb_6kks?jgAH5eoyxN)N?G=#H##YOiUwufF-8Q#Sr%#M0K#bWq`M;IyBg|BB20{T)<|a+ zA(Q~?`W|TnSfk)sLS*X&2OK#Ruu;CPU|p#^6J^^<+Y1&^#FVto;sDB8tva+=^nwb^ zUDvPH^Ht0-ccSfd*GLEe!31xOcY{$3fmr7!bq-&o#-og2w3ezEFhRKq7CF5! z$*anfl*-OTB$CST#3vCu*xl674F=4bFy7p%ADsw+w?F)fjZ%;N!OnO%7)t2?d5rzh z{biCf<2*&&SSwP{zCJ!a8)Xb6U9S4B>%9vh7;k+D9y2o-4^~T)BzQ6$pRY?J-MXym zUe$9gBHXk+;aFF$dhKNW=ybI63hI+{{cu&fho_5-IWYX$$-sH`YV(8N>p%a&@>4IG zXET(@3SvSfWPRJ;m zg@C%wFu?%7G(D9z>ox>zURr zU~9E0il{dIWHfZ%YilD4d6MHucrdc@M#TvF9`y#M7!PITag| ztQaJ1-$4k$BTBus(AIXf>Zcni!F^XZoDkxordG;IjKNzq*^aIDiHPD9fSHK$*?5o* zF=lB*g-5_Sn+@Y4PcY@qxxVYyr>o_>eDru;_kBtWUF*p>t}01j(64*csm?ouXn3rn zQ{FEj%l6v-{1=XH+&VdV>C&b*7y^{*fC(c{zP?ex1s`HARHxY!)tE!tIu$(esvmDA zgyVXporSIslVOetR&6k#>qZkqqb#|1e+>v#mFZd;^Ngb?ikY;%3tp)Z6fM_%oH8kW z*>o;=jJ(s1M`$`ud)*@%oh;Yw+6L#xvs6*TcPHbQuC8m(a~zzF8C@*e5cwh=E>^3) zx8u!7_jXuBfmlSHpzN9JmwF><92GG~D8e*M@@RW=EH!n`c6C!P%A=$8x@#krK<^0i zy36{rb-AoWme^a3e}pz>FRoWo+0LuQ(V|W<-yQQo0Ut6ykR4tB^y448(p*)wUD~pC z?H=FCNTP#%tAGE2K4OTx8o%_VlXrLH*{Pd!g6TJ?nBA|Dt8LFdbIDWx0cGw#J8 zOQi1u4jgmeVH#mZm_rsvs8@g>43$cqf0 z&MV3Z^SG;YAdZ3+oIW~UFUppqLA`Dl3x^^Sz&S@ypyTntIVD$!t|n)1-aa`yeQNoh`b?XzM0Z zF58|(Y-?{)E&@R|6?xV4O{wNfX|c3UY1I!VX(Z5U>A{%skXq%rAiXwOL3MAVSZwSJ zt#N&Ciczs#)>)DV?>nQFHI&e7SSXA8R!G&iT{|hZy$aLeq}NSAo^paM0S(18&IZY{ zHjOt@%YYSP0+aaouu6+m4AOelo*Z?mUVHrs2=Jz5K`>qm#})u(nlY|FFyA6opo z*=l@Jt?sEq8{F0CV3%)pUVfu}>$ZBh$;MB|m#>No6FU4_`}&aOm+|FaD!=&S+aLed z;(dnc{qFR!JWp7xg1y}x?#COyVW10s7-!ux=e(ea;IDpY=k)9-%f(Z{4`j zuDZR8Q7?U*K#O`+BTmt}?gHykP(X*OyL|PzA@S+-}ig27pa&Hv(=)FQCyXVV8jS2@_1c0*4xRrSe>dQC#rL2rwu1U zSrbLrX+;HM2s?|M)?h5cnsA8Y)Z2iVP73C%?`ju(T2(TMS=F})1#c2f&n|KpbLmRZ4A;QHCX9S+{8%6V2C6tz-2U2q zan>8JtJ{mHbVlECE~b2}mY%1n2-=!OSM|$)+4iLY7s3aJhzUqvcAXnx>fz#~!(@-JAdh7m5O#9{ZlV&^u2lLd8Hh z9|*&7B&-caX+gxvN!>T*$`faEd(yAjar8N{2}@8Ru=U2*$y&G>QqqK+)+t^YX@u z|JuFh-aUPeqU$NUbzyS+#&KA7dfDV_*V_kD4rGJkoQ^V)<)l44TsEt|)ln9o9Gynq zOj-VDZ4;e-D0}{?=#mcl$eag&Z9dIN@=SCkK=_T35h)tqVuYu3v@q*EeDKcdkS9Ll zsY8CiQXAaO_OT28VzLDQSJT~boHrjlvo0V&z3-F)AA;1VskG}wo<}P5)&UBrFEwG% zN_F?{bi3URK!X?cHmu)q{Gj&emt6-Bhl-IGs6N z?(ST8aJp>D{_>U0zDn7F*nN3x^3raAfC)2L8%-SqWsp(G8>(EVtVKB3E&wJ#{9;*? zPyOhHBF!4vOs0kR$RW>Z7-p$Q+%xMnS)Q$nDZ>N?Y37;61R_eE@3TS7eby?40jDu9 z2ATEVTEjT*TN%e(_i%dJ01)lkJoSCsr6O$`t$JgX;sP5jwX?%frX`4sB?)a?O)*>5 z4gpT$xOcq^K4!7^fCF_NOWlP)aNwgX$_g%(LCzB=D4|gz5XN=;Hm1x4;1Lf#Smk-f z2D$JdRHg14cY3y}Th-K3wJsQsDXiB$WrQ%+tyFzn*N<0};HHn#aA5RFI@+DD&Bw#JktVP1RQm7e%-;{kmxZG45F3YL;TBjWq7j>AdOt zgbmhpt)wv8Lksh*gd9P9SZ70~gpg z#@w;(BeXt09&KgoQeq5<5E8NRC_(`*7FBoNu3mqbee-z##{A>PJfHEQAR2+VA};eCi1-Wrmv(QYvw{6@Q&>8*ubP3h>d zIqkh1v!TFzND7ANmz(cYzFFIPk8ctn_w?aIc{E_fkQ9dZYggZD4@WE;^P;ltLA;sM zB%_h_uEg#9snY;9X0ein1d1@S_DOC7IM80?Ja}JMiU5r@OuupR;lF-z@JJv01+p1WMpnfNRBKJE`xwtvu zc%(XnsmhX~saq7tx&`YM0%NeH1cIhu91g)d)HR)IyTg<9YAu7p{k$uNtSWm?aJ}d= zgnWucLew0^XD06ldKE9u&)PXlV}jy{^wr_H!wn<@HXEVYCt{XV=2-~cdc4iEslbb${Bd(nS;e@i3wBIx4lFt7^TOPBx1}^x4%DKoc1&h z5e=g}x0Vt?z~S@bRoit6jP`aA4X5K_*UR>v7}EX6-+b-cuOE`r^!}R*XvM+B-Qfh5 zcPKTi4n4ux^ws>d>ArE~e)-|``>Rh_e;uQ(gyN{s*#-iHy$;@e`*v-!EE(slv-j?` z=}a^^!rv#4-TX=mkFRyGNbu@WwPF2tuj$cfk`eysqO?Cgo z%=h@_PhT;K1HQpX~%+lVFG103z{Qbt1>R;#t^kl2p)UL9;+AIb_uf)Me` zRXfhPk#3S~F3P1dVUTe~QNV$vY<1jm%6jF?#k#Ex!GV0>Q+v(|XUKS(80CA{Q_3-- z0by-u-FD|^4X2sw+;EV2Y_xUGLK-q{EEOc!po4Q58><7LNKnjOAdxnHxljO>ak4DS zKp;ZNe9>4ZV@{gZ$)LSe;IYpYb_rYfwcTTrbuBy&xk1(5L<0KQ_d)Yd&9HAvT zz5D*d+l$2;W-O9hcaBsi#v21Fx^XgejehU$1E+ZaNTysfEi3I5TUsZ*$D|*Oli_Te z6Y}t=MX9l+%Xd;52_}5PGi~(gY1MUVxvaIbx^bM6K(x{ZVMGi$eSc|g&R6R`pA~t+ z8KP0aoN-FIG)f7EC?yng=e-5+!E+Y#0Y7|PV@j%JE7Alz+E#uvOgqy`V<8ZvaJlN! zf?4aO2@lWab=MI>q%{bq!;QFnSm9c;1kkZ$=kon;yq-?BZLjj!6C6g9qAqVeespS$ zR%)%C!8y6S3cu^|Wb5S7hey#)LWxLqzDZRTXvD;MeprLhZ=>gDaLybqss16+d3Fti!Xd+YcOM3p0#yXjG6IRDuuuf z$Ad=oIJ1*{sGY&y=TUAv(pClsAz+T9{>0P|;r>_dkq>Fp<4M#1SSOuEjsWs?W~6THRfqR3h8d zP2kL_&|_osjZJJ;)$z%r^FzC~GE|I2jjGq@N+3TXu}c_exVXQIT*o=H9{mRAsmujl ztukY3!qxd%yY9Q-X{i06h>Wq`W~PGn@mY&pun{T&-vwXtxY#~FJdxguG|tB~X2f}r zy;-l71AzlgGv1gMsEufh0IN#JG4|f`2vtpsF|nQA*vSCn^;`z$y(3XVRd8Ab+4-vL zo%eAj5E5;vy>v(Koz{1Jf7q7Cw>nO}Wp^K*1!LoAdU2SMnB`~;PIoox0(LDyoQSQR zPkzsjpxfWE>7*O&c^b3f&fulbn|rT4^RN7GEJ+^y_y3k}&zH)*b6z*Lt4&v)s0p(y zN_~J!7xoDD)*>4b<8%@@MRu^o!bT(xCeh^rzETu41AwKga+>~?`7d6JFVwz|2p_V7 zW7hcg&Hk45dW+9YFbvUMw&|!6oXnr(-rfCp<4$|1gWZp2BbM(*GlALNXYaI1QG$@f zm?7&;aQ5NJ(i)J`96#1iKal_U@##M@9p6@Jhp`Jn9B{tN`7?36#aKdc@BNW61fhM- zfAzfl>09T|ULF<^7PHt+#OA99veZ}T2*U1o+Mdht7T<+LkV*R^{T;^8rx{wAqIk^Ku|iugCq~$2_~9~d4$shH@3Cb z6>07rcoTRe2zF)D%g&A>vbjI(dVO}(4x%DUBOu0G4&0Y(hY9eEA05>;xYb#gPX=d4 z)nGLAUYnp7WgnxoS!)fQ>XekW)7pC3*ZT7Q_PSJy`zH@xTZEN$ZP!_8D3?k;d{ozs z8s`qe=9rj_wb=2{+v#jF8V(bIDF)`E%lmXn#%Vm*+SwH4IYQ?=j#^nrgHG<8o;24V zO#c3L`eAYStAnco3-BHjD>gP}S{qqdr#1ls1y0NGTn>^&#+>j7Q^uSX)<b4uF5O5Fancl~S2j*qTC`>}q#JZ+cD8mO^R;??OE5!{OovsdudXXGZvoy1J`PfP{so%!x^i; z&Zc3Mll06kQ=9}Gw%A5a(l`5?_w?bEj>dFwUmszFci5~T>6DHFggBx-v~SjTC?dZh z;Z8I?h&MQ90PuEwZ)NJ_GXW8QeAtSF&qn#GQ|;QHmt8jGfTNR#>mNLW&lmasHebBo z%Rf1r{GQwQetbCi>+AB85YmT#;QphJWNCo#ub-U%bXotSTbqBrs-C^NIr-pLd^MHS zNn>g3!5Qp;BQ85bNI>3s0tAld=SeIWjZ6n@ki~l; zKS;?Zf8?Tf76~*Oj;zzYQL|hahYesAEXRzYR1`i*S&_t99*t*=1{OuwbDs|ihGS{e zFpD=gCXN6gL;{jpbMCBmRi&!hSnFH0#=g_C^F1-fmn$iy<^pwXql24njGDR6MuKxu zRUJmS?6tEfj#z6Ogj@(X<^qh1xCq`@?2050E({8e8Pd{GLW~R|A%evSP+*=A28bd? z%i5gXJ6=5s!`X#wxb3?6?UO}Yd8Tll`h#tRkmxJ9ou!pSlp(|MIEqh>Pilw9Q38<} zAsS*>V_dft<1t3WZ|^>WpFD9_9$fx=?CeEEFpBaao|xt92hVRG-<-qEl|{<0yWv^r z?SsB-iej%i)-*=FQG3@fAb&zCJb!$=R9*0Vv=hfMnob8XCn(a^+Dzob5!2uX)4^m| zC?5#&7j}lUmX}00WT~NrbQu-I&z;^jmKom9{xf>UYoWdDuC4 zNefY`8o!1V2-=7$K?8mic+1We4aH4jnGeb?m>D-dj_IxrZ%y8nG zWp+Kg^zz2|Iy-oIM~61g@x_Z<*7ezdX3^-a*B@@s@t6)MB9F}J-R|Mj$(2XuLaT?Q%L^D20h(HKEl4qS$IZfVe9wbD#m(+M1OCwKD z*2_iJE6WMfNFs%f-Z^i+ee}FyCq_>w+ZN)FJv#iCHfID-?cCD3cl!Q{5WnZ~(MOWx zd$Q~jXLDnJN%o)oBhSwE28_!~2fNnl(Kv1!y|=efcBM#p!jrD=4|c|*Y^1@92#)T} zF$SrB<)IvF@z8Z!U!2RWDCPOOYK;PiDFNWj8>}G&BQf%Z24I|wHe+(0s^xb}*k$QcAXuQU^}1(W%U4Srg|*1MCx|2F-hb2N16!PPw3N$A7Y zQ;{v{Z1DKo@zix^W!Z>O&1`+X3P-h0%Jc5Q(fRfWlR&)6KDsq%dP8}}V>L-;w;!!U zoafW1x2`NZ*?GoL;I@~RMtm4$<*Ex{jZuQJ+c(afvv+>^=>D%S<&l;&WShcC`lQaJ zq&{xUU37foVGp!DZYRhHMiCuj)*l@oK_%wZYPFU}rz_*V?t2Nok>(LtLg53wtH~=vp==@$brnu=3cdvzj!7Wuatg+F^bUJUH21%!LQZLUs$dG z^mOu5i`6%~-UIv-8&m21TV414!@<(ppYQvRe*PlDsDBb4Hc-5t_W=;*&V!E=fi3YK zv{uM_rJZq>QAPvh+=+-!MzOSdP{jK?yNxaf<79I@?WGy!d}lf#AN;;Or>T*l7>VFW zB^xeCp5}l^*YHkvy_A9su%Rgz`GA|C5J1d1D8dp<5ckL!02gYdU95^Rt3=e+k2b}WxFU6loG&>5EoOvvpsEs%!_zD z9QMJ*B<$~QC-FcbE!XPwcs1M-)|nzH>b4(_vbL$6l@arin>d4-z6*hh7<;d!k}ibP zce~Toq3m&^tJM+$a=z+TxHi@cAMfq&oAo(QAZ8*R0t&cmN5Z8VF;^s%T5Cm~hpzWC7SgGKH8+;Uf=jYbvHj3iS{R`^+t-B{ClsF=I zYnyD0tZ{;6>^pZJWPTGf5zv_ zu&6wP09J@N0UyHZYH_jX#kioUFFj%|+PHsodWOPyG@=rRj3W=)w`WJ)XP&*j{OT8Q zI`GcUf9azSR|)uAPB z)zk#D*<`$2wisod>iWK)jkdf*=j+8&cb+GR9GWwV$dKj)k>`_Z6FN+Be5B8ElHQc} z*RK8zCr7jx(ZNNrn+h)C@QwA2NAmn)vK0{#LfDID{pG&=(X&Upckhvtcz}b#J6mz} z_WHp$AGH9n>YFxq?!kLE9$e_jgs}wUD{(Zpc5ck)hlAhu_~@UU%|4!I|M`6JbR=F* zk{8m1A@r@b{i0Ie_oL7E(jXJ}N@}I2<1NrGOCs$}xt0*{xJX&bdKuyz$rb{#*);B2 z;{)=PwWTae>rmZk-*lQIUadNZtWlbL^s`q2_5@pREEOTR0G?>6t=0(X0ETdC4PfG< z4D*Prm%X>#Xyy@cM%GS`*gZC_!O5Po(vsY$j z%Es67Yw9Bj&Kq`EF6!|pbJCY(hl9i5g7btxE2}6Lyf4D*QRUlhHfw!UzF;pm!{Sj<1`M0Q@p5_`7l!kMI23sqpEF`vWunRg2-NaY=>FWx1Ksi7_Qc9 z!kFMZrD>cAMoHPU2sPW7|u{$hzws(q7xW-7Se!d*2nD4hudSge*x=p0X^_eV^nL9Xgm?U#*8V zdgg5N?^#a2Z;mg^Wafi(aUrPt#7-9M`tCA(Ywj{%a~9S0dg1Y5+dS$4V`HRsgs%sC z>B;+Md35*mzPI#ry*PQ?#*xh&S23Xmp1yV!{8~`#9MTb9g?1z|+zE?}X$ZF}rNaTu5r77pI?DKTitt?_O=eLOz%8>_pRO6t5NBZwP3yRdhVKExV@6@ z(v|OBtZ$y2TY=?tM43;lZ@+tEyyb2MTfa>+iqPEJFLd4S%F<_&7=9;DB-HA2zvqRB zvw(QS!^UL9QPRpzc1^qPu|R!qB9=I8Fmbv!Sw#CPfXAKcg7Xol2wB3BL&T~OG2kRR zK0IG6YEwJ%Lx1=gV-(BD=49jKxD3>64U>o`#s^1iwYGh2rn^E!SkQPh&J6SzqYK*` zlo|?Y#zvj$8K>LRv?#K=?E!g0P+zqe@M_(i9M?u7!o3jA>CPz4JhvLW4_fy|TW4GC zZJsB671B{0Mc&y!G3h!`ii${xh%~l$&Lunv9*_={(SU8+skW8E`;FbgdVhZ0Mm!Nf z(=qcJd5?NyT)@F0oYMKc@dT<>4a%LAOK3%~uI$Qc-YI-6&@1;Q|KQunk00~vi{S@> z5`t_m4Gpbh1JN&;NFOfOhrRD*ue83?r;p0ju^V!5j;4&q&Lc-T^Omwf0(KZ~uqY6~ zDT=2fcQM}^#lx&6LtF>9ViBwLR0e+ktwS=-qBYjk`q;U-?_G80_2v3oEA((t9d*{Z z=_oF16-RWw>PLl0BBrg21Z_G)Fp33Rl>Mcx_>DIoKbY$mUpVlQJ3L$EUd*LMjVxU= z$gA=0Q(Gc^|E$gvvt0PC%|W&kM}2N=C!XFo_|$=z5iyOFMT{~W!`%mSDq>3zD)|w# zPtPtt^`TGbH-3c}X?bdrfvC@HfS!JD2-U=;Q46*3PgzR{^;sB7-ECeF)4g7cF?eFLe2hEn>+7eRv?YJ-FwR zYYC3_`PP(<5TFP8=*|A-(yf1EsfCjD?$sJ2gs)Y)*bzqi)Qd@K@HXfQkDd}F-BSR_ri zI$0bZRZ)~P0Q)#Qy!mbN;UC-yffh7hownJO8>u0HWzGg|mAkkpYe1j5#2*64;MBxacdWUM;a zo)m*b8AKRhk8Lm^81LwMsg(9YP#5Z^UU}Q2p0=%dGHQYYr&KSsDe^30sS7?yk~B(< z)y|TWvcU*p2QSm<1w#Bq$sl){m07O-`37)>T9`=O)pA3RBa;LgVP*DN7w zd64ms&D7JwrN$tKyL6c5;f(2jI*GSjvr`xor;akqLH#q40fs`KvZZe&^+VsUbRk?jvo z@ARo4f&--(W7PI0PgoMMrZ;28DwH^hGv)ZkG&W#!(VO7v!iA&Jt`PV^I|IY=G-btH*1v z;ltOST^}ELOrfveynXkL*1!FI*ZkAdOP{##J-7bw;O(oE|LE!Di^D(L{q(=#|5*kM z0RjMUaPYUEy69hh{qnD8EDAJ48DFn!113rY@@{8;CJGQA=vWb-yjM@@$OeC^7gIJ` zy7Hku8Iq#*-O7~$@m;v*bDDN;O@#csJCH*8{&bv#c+u$7kHVMDjH1qFDhyZdz{tgMhq}9vcvu6!p zhx1{gy-9QCj0ZrDI^!&0yf~{x5igE9CXz;#fN-x|OhsGE*2t!+=4EZHYighzrHuLe z_2S;*ymaK+D;o?%7AGV|&C&pKb?q?5h!W%R>AY%tBSfluZ=~DU92(nq(trz>=1|=@ zxxQRJ%7j;D)ajBr-Kp)(O+YeG5OKa()>YXG3fUlARqG^=3O+bFtpLmIai$b;2stFJ zMi>~zW-yLqP3^%O!i={QCeH?gELAh7Nd}Ts_kEVef%fy;14~m8E-iLK<(o{TN*=2`4_84K7qFF|^qHJ?=kRYBYpJXkjOyW&r z$m1KQ6q2a$gR9y8Coi~!Pp2ayLY(cl=F^W(pH2cxQP)W+mGnL!FxFZg!HeJf)VpsV ze)8HYhu`?(8}sA8fQ|p`v+;+ozubQMV{iTNtN-y2{OZ@fasA!v1n@r`{@MQ+|LZYC z@H@$FX4mH*x%1q6o@wvFIi##A*D8u4i~ZwAwHM)xKfJ`Q@s)V9x%u5{TD;TW{>|+% zDT&jKX!q68%@4kN=b3NG(V~?uAEvi|{&t?=)z|JbCOakC4hZ+7?MbB8&N}CGnnXEK zoB7r-iic6HB~f^C>z&1=YsK(h{chh6DNQhj@ABpUOF}eZ6n=}xTI&#gLH0lV`(IL4 z#sz6=h~q?Xyq2}#M9>6`$04>}Y2C+3VWl4BDWaHQ-*zU6B9Vx`3yZoXjP!Hu8?kzG z+33^bd7Y5~`RHdZNRO3PMb0X}&QsPkz&S?RCTW(XB!D|#wZn+;h>bVWtdc+QGv8VM z`n~hl?svCO^@GLq>Deg?pZJ+?-?_GjqP$v%`EqGA5}c*D7!O8`YA|&evjG{@>wYka zs;8mB$0{ zJ|7T*$z&Ko|ZR9KQDaCJ|(Q?qcW07eBBy!UOks;qdIKt87)S zn!0LjU~zZS4%2PRtt)kCd~fX8+7DuAI$fkZi6|lXY}rMErU`%Jp6W5om$EZ98So;H zP8SV0L^!)R%R1~It;>9r1>NCmSJk8Uy7J`O4_}=<8*g9VaL9Q$La0I z=BR1aV3d|;YX0^6A%;Xht)h1hAD~W_84C{|m}}F>@C3^y!o%IE80JZd5ym9MJaAN> z-MR7u7x$mtoL?31e)ISlCcf3Q7bEf8B@`I{ri2fa`Uf5z{+`kBovvp;w3BZ#V;v_E zWUL*)Wz(G=FP5u100M3Y$LY;)-#~uG z)ScBS*)0gq6Y}Zb{j@cGDtueD35*x3#(U>&h!fg2rF1%q#D|7q^w#>q`;T5Q?;icF zo8*e#{!kcrcr}HQ51aQ+-KD+Rdk^Xx%czLkEFcyrM@AxqeLh71p(?f2RCbmp3_S73 z8?fF|N~rN+y|$g!XD3yWkJQ?1Z9M51y^>l(LSruxVkiI(;G}a=%2h8##G;6b)cPl? zptG||b|w;32i3GPA0*sHoz}(-(&+oXeD@>2c=y@2=GPofkTaGLt9e2g=EFzx#oKLu zSesj=i$T19zLX+mC@5eA2jVIe0E0wP+TlxtG>noT*g_w?u)m3$l`ksgMlp*;e0$Nf zcyQFL?}ZT!Sn67j_Gcc)@X$IZYm+8&>(X92T>EnU@H`+M&hMNo)82^GY3$PBcxQw; zS}q@oK$6iABWR@^B>Z42Syw6qI9po>WZBuXl^hNe6N1N4EtT^j3e-^?l#M7RBA}jO zIJ4Fdc6O6dUOYFx`0>lxC~?*$1q*0=?EaqDt3UC-p8U}pZlewuzRQUhcdMV6GVP6yI-))#-~<{z8D_%~}O1Bw7~VBdp2{5QkjHefsG zUO_KVAn;oti>}>y;r$ohDa~9UY#J(9(#y^U?hM4t@v4?n)~ z;V+f(N!@GIdX@pUV!TSqyFs@up(94*yLVTU-E2z13BDZ@JWjg4J)1Wkhh?b+i&VQJ z!EZft!B5b&PhZb6VVs`r6&s(J-b?-DR=>0s1AM3J|Boa@=)O`9l_m)7QTnw%u&q9~ zb?w>RL@-P&q1ZWtm_vZKHm4rjWFUrFu5E}I9Bgl-(WukC>g%(^@?^1OC}IIKy?^`l zH=DbG*kKyw^V3K9XuBtk@l@4o@*{un`HjiIBAX2g2!IGl1>V~nrfJ?9>ul&MdALxQ z?w!i_4|k5$g$RZUas$~T&=NR?6a}_aFc_G!xl}z`B)J)~;c#Sn#3R6-o}8||LCygX z#3&foVhR)k3QS9hoPXjX^B#jS7Q2v*Iikor2o7Tu8SUek^}W_!S_gtgEE3h)8wYKt zoeS7;0b*lg+^QBMh@u#)OApR2f%x%=eEevcf3uzTE(BEpCLfxlFHg+lnpgm-YuW3=I{UAGTK zmKn{7HO_hnuzE$XOZOa}ffsq)W)jH#x`G6VGy=_{{F%~I!hCIT9iGY-g%{;lX zwfmtNNx)!LHZp`44ExkCKK^_EV*N+I(_VZ~8Osv*osw>r4f!<7Vvs>><8|H%*Tt{yxaoi(S)`<=`;u=AD?UX^+>D=_g!Yw$e{A+%{D zJ1Gr#$^mfW`u?=wC5bPHNNDWU!YM5!-j2#WCN@DNq?TDj09q} z^hs`|VjBZ87-US!Y~vKJ4&M3Oo8#Da%7r)%gZB@OlhxW}$R@LGb$zra2AkQKvTB7) z>+&etkJa3Yh}W%dlpan~VZbBs36aVW2XPwp+O*1G8)QI&v3b)po!gn_lrS{GgXc5D zDVs2aG$HoH{KUEcd;W*T@A+!|!lBOr0Oq&hKl?CT_#PPU!T$?it3U9G^rrVGW#5K? z#=~)=t(95ZcjdZ@MK(&ud|mKw_Rb69< znT&k<Lktt60;9ZaJ_* zK|WE9-<%XSxDZ_5+agP|LELD!s%)ovo@U;lhhM)N9-c}GCucQh$@Oue0&&{SCTMFq zqDc{tqSg5s`Ox-!6Q%+F(M@=>uMM7xr5{@tK zkF#U|glTP#A1?t+HsRLzL?qJa=`2UVli&!l$Z+NhsXOaE0-WYt%HCtYvpric=yCV) z8}m=Ud;Ce)4e!oXVDanJMwh_H|;;>gij7U(VnBc*t z=RmSJ;p!lPS2xoJir$&fp4+Yius%3JbY~I>4h6SIJ#lu4ibPBZ9~-Y|1SCyJ8e`W1 z%dE4(N|bNBO5Szrqck5liVv6by`A{IoAuU3G0Y%No^5Ma*QcFcvX>^}%JksbgZ+zB z$vb_v)S4rQfP$km;%vxCUXZ$Tlm*pWVAv5NJ9~A1xTsnWXk(O_R@J4v`oY~~h$BHx z>figT%YWn-`cJ&8CINm6XW*^B4!{4ugSY-FU;=|(_?-lR_nVJjPZrbS7+Ku5#;cw) z10GWbPwED@y$qu-?ZqfMh4T%VCJ_IQM1|^q3xDZ5@U{W_ZFuu}^fdey@pg3b{M&?r z>J0>h98L#ZJ5;w}QA!#iB1ixf332yV?m)%Ldv8jgw0(H+=roSg=cW@NF~T$Fcwq}u>pch>j|N;@B(U(vJ5P(4js^(| z(e9OD^HSO=RsHBC^W2~qBqCwTwG2BWO_4-rCylilf<}NNj#tfkb7xppmPIrcL>o6> zwucYr2#9mqSy$h#&%Sy5)bpP^I(^_8vo%FAa34d})PTIIgC|}qHQX5uo*j@M{p`hE zO_n}naq_~~-)CBFu9{cBdFQ#WzZc$loSrYTb?E|pyMnKm@InsvdQcu-%Hh=k>|cS8 z{xR6R2H*Y~>_>r*#$TQ$%jd3>NAs6v{@u}DFZFuahw#KvU}3&)<0wHr>1}7V5)7|a zZKYdfq&4ASXI8BnjC_)1-f5tYV7Iq5E%LOnYB((VzNbQPYOh|}VRTsQtLN+8FWvs^ zYwc%`#?W$#xl5NdIP^xP$BND@KO zOXKL-0sioI94Dh1in}dFn0u?Rh#{Jyco49Q$rx~CS^R-v_{curps2EV&BmPPfp2>} z^njSH0IY);+uC~1vZqx4{$#ps*6n1PD>8ciDW0G#8%*d_x`gE~C4*}-7Dvw6WXS5e zD`sN;*s9WHJYLs*o+mk>6ytb6a*U0q-a$ff>wMYkh@nxDVB|5vKu`cb-j9+gCebK~dX+1~{sgM$yjcYX>md6I{#hky`J4(mgh-)i{DGT7AWVpofG|EiuZ;A%x7ukR0{8Ufjg!Y;xU+Hb1EayEw{P7oTb+X6-hg1E z`_=g<;uw>vT&AKpUA7}6mW#Ew3my%lozeD(H@2UdBpF=3dg=7|lydNdHC3yX^~MZF zNu}%2G);M`z42NX*$@%xkTJ?%xV|yoJmS$IB& z%LzPJz$^lepkKo;{wlom7y#hcSMcHLbV!Oj+3v$48~p6ed)M}6={5;);bK-beH7zV z2;5W5Q89_NbcEw<5@W)hHQ6Ytt7f_xlXO;9^?cr*pS0sCTQtr2q8b)ad8klERNrh* zhF^T=#lL#<6YusPdU&1yOC)5NVD4MxDd8O3n(>Urxz`n;gpYQ8e-3h;PA`yT1_Xny zbk}&Vl2nrjC&g$>@E_iHQ?fpqFMj1jp6c|~DSsv{adrNv3u3qx5CjN`J;!E|Mbkll zc-OLLlSMJwa((r%T6Z?QD4LVrt~;+?k)UM3pA!D;8PPp+uVt{ zaniV)_>o}i-lwAo;Sf4)G;{=c?~VBLdip)+78Pzn?PFyJ@B+aE)({-%Ndy#KeZ4K6R9ejs9W|7fu|t%oUHEW5fk zhciqb+lbMcFl7 zmd8%3(Jap+Y?1DaYx^hCQtHxSs=bBS4x+qoRbVzFOtrxaa0=IbQ?_yxPZ>Az8xM|- z73=l!af8C~>FMckI9e_q?qt)h_xm&Y*hFFyB_W=CYAUhroYT-7Dan6%Au3Le78>q$ z5E1xmXYgJF2N4Jior5=P=sjcvF2qj^4De*y=@_QJ4}Rqly!jAZc;f0_1UA5-f~VU> z5wiz_sJk>P0okDQiSWn}OuE*!4Hi5FOu*sJ_I2AE?m8wo0LB;@*#nC(cxO86NC1w(Ij;@k#A|>^ zI~)+fl)G-OF;|^i=nK=NfuJ#qf|z>5n)+}rvS~y%#-pdF1L`}gR)xT+Ko5FEz#&zI zeknT@Y=_ALi7unnTD3?YjgtPOoBEl&9>nAm`_Z!l{Yd)&roa`(iT0!WC4Lxhk@>kX zZ>BHK4!a{i;*tPMKu~A3$_ma9?Ha3k$%r#nQ;Y~DS%!~qbV!9LjtP#yY1`xaw8v4r zU5p=BZ6zm95G^u z&J)qJjs+MdjB&$A&~aM}!vb$zc8L4Yu)T=1AixNLgPM4-5;gYNk9yiBv0 zx=c!d5R}ta8}Nt|_8SC-7Ij~>9boL8c>K;|yzII=r-yR_fG5d#dw+(tV~|gBy0N`G zOa>WWuX+IL*^q9(T1>ZN9-`f?0TtN$K(6cc>owf$;7r4|c;eEh#!tMeEgVXCHirp^ z%0g-3tp@fZxY59kQ@Hh2_!PigL+77_3}+Wsg=)u_3;mW{lRnZ_Ai`E zR(0Cqh+u-%3NZF$5WM!f3%tO9Sui3_J&Qq>SmYFQ&^2ZlBkj-*);vo_s@Zb-R-SL_0vffy!8f&CSv%Bi>3A?$-{q+Qog422GMU8&wm0K^Gp7&X$>vP&_lm6Fb- zL&C?=U>uLK?pJSIg}#Jh^LKby9>V%DoZSQ>;L;}n7&s5kLJ06%#Gbso^<}{sj|mfz zwkAp`qtw{|+)JrpR;E{nx4&|>fo1?OgaUpG1n2_nJ%pq8;MRo?>^$@Gl?T7?&4;gi z>u&lEE0EF7FLj&%K2h@V{klY$7Qh@}R1A-$8#nz~zNXJM&s(37blc?=w-GKEF z$5?p{$fXfiohROL29z`BR3+Oy6BMH)i&byhUZX%y&zIUjRY@1DRbl@28Ak)ICl5{^ zAg8lI)UCTTd2Ah+7NH>L+@W4-`+t0|18L zBf}?&_nQ@zV;Hd~N%*TvxZT0M9@Z8X8VG*!jtkH^crk}NJpjO|hNn`vmcXwq;d%mB z9-Z7Oh9`YH*^R6-1aU%$NN8|Y^@_6)5rX=n>KkLM_c)3OU~8>O5|I_r>J%dWlScnw zQ(pVlGPv#7q|PFa44?&Hdsls983>1a)^1O zf|zg=f)AhE9#TJ@o1t>lvaD;`Eb5GwMAf)oapF`oOc4IiCfyS)Hr+2&q17w~q!VYebQKfazFXK2q z@96dXo5e6T&IN2m;%VTQE^L&2EebIi6kCTbrEa8rg2yog9~P?aFg0jgb}@ zrg#sE6M#lQC3EIJ0JR;xI zzJ2%jLU}NS@o(17uZC~^PvI{ROnxB!O!Rlz_rLE~--#|PR;t^Y;2|#@epuI0oVd!>H++ zX4#H&R?mH}rP9`EY^@d?6XIr@Gw8wPUb7y_EMTyM2?uSfar9(JYO+uGsb+1 zCO-6tvIOt#?mSqmxP^_KL0`%7Cw8`;onZk@-4j9$vQiUmaJ8zL5Ihv*KYRu_f|m<; zHhUtT@^Gt#n=QOv!*^VEuN^nX zO0#qfx&|5n;p^I+RLw@7E<1m3)p1UTX>xPEK6KR4f0hogA zApl?k&S=Hb9AhHV(MC`u3J&5KHVU&C($UhO+b!$yrsf~wq zd3JWxhX5jh(^aXoPgv9}v~tE8nMUmNY+dyYCf;cK+%s4C)F@;1A{;LJ?Ll6uR!g@r zjZWuHqosEa2;RzQXIwAkbec+~X@NFg&YuXG64}?tKK0&%6^QJKY4HHoNAS!K0~XMh z;2r#SyoKd`NJj8mWc}vG;B6opBVASPWSrrEs#1Hcga{ZACCDeFNLpv z0lxYQJpZxpeWm@uv)6v$myRayAPdU&##vbQ98-%1)TgtXRKV6?!)gT^`K)Q#~!}o4C_w?#f6A4kT%j4tqqqB2?wWD;x)2Lv_ zZOsBpM`HLw&aPw*aff`w!32}1Ts9sV!)YKC1Gv`qQCGo(C8DbHp$#T6u>yp-vTk%rmCtbNRHh@!DtJob1o$YZ8U-6j?7Q=-Su8^|*Y-{ulvF^NR60Y+EP0%>cs9$Wm65;%Gv-9!>TJY> zh^w|k7{!^8bu>j(+X_)rXdBDICa&b(Zwb2Y^&oln^o-ZuKH;I&O2wm#aq!%M8OlQ>2H5g&1=#s$wwVBsuFBMPSasbU(x6lpPHB zKf0eyg(q&YZUkj{o-gJd!BMZYw~DhgkBUSHj~rvTYg``1jMH=!t=Eb&z=UEb-aGoG zD52InKv?_Gmbz`ch(oKDbwCN$t#iR?qqS7avewQ!gOsJVmMNot)v8B#S1ZB5#u1@? z<$WN`PosF2Ob2mJcvW}2Z2fRQ+WqKQ40+1a;V?$b^__|c4K~ma_ofS$VQ_iIy|d)i z0(K&JAmJ-L6xU&S41Wg*fFjuB@FN>fI_JgsNk}dTeD)%I{RAE>_}CCQf>RBL>WPFq z(UWXEl<?P!`y-EmHCm)E{o zPOL{x^#L%BQrnz6XGk($H_grE>V6N1@%K;XH%!))k1#KoNNnHWY=XfPk>6AFRu8w@ zXbsu>`nqSM&+fsmJY0DoTj}Vd8{OPc#!F0*aReX)6hB&SRC?4Yragmbj1UPSP%m>4 zkHd=Ub?-6o0bl~QN5KLl0uw*Pado=9WgdKMUSNzR6wdjJI@vF(I}>m@*`9 zmy-|fJqT)!VmcaU*7&;Cahe{UE(MDS!rJIo_2AKDI8)$Pb3lYPO`mL#=2oBc$RWIH zo2K{EI9`-0%Ghk2vQhkjpWJ`yqZ=2Vn)u+Nm;&?8=`811#ATz-&R$%sR}c@t8Hh*l zckthT4kp*&#or5?&;B+8pP)Q_Y3o5M&YyYeTGjUk+hjsEM>7+^+wSVYMwSc$ijl(@z^M>-=Ab;@cKKitzT;{xM+^=%hiGib(WIfBg%$E?wSA(zrD)n6zyw*|)RFZiGY;=dEfv z17m!`BFHv|G(Uua_Ajo1b+7>TuR_KVHk1>ryX3m3fDHEUc$Q#TuI=Of&g%=o`|{^J*l!s z3NE`Q^5p)AO?Pu^-EuA|N*0Sc5^3K`t#oIVk)9FZ7*;KB8{cc?`uU^o8B8*YEcTrz z0-->?2`CEQkYW=84Z)&hjJxxXY;7KU2Eoxd1@D0{TOVmlA$Vnnt4{2N>eC0wS!r(Q z=_KhsGk(0Ct`_=Ct266)Tj8?AYr6%A0%l;^0DuV_hAPD&FUBGnJw41{8QU968+eQm z0;eF^u&juvW`m)%mPEtQ%{fQG`_NZ}064Iy2*`PBf+`UrD9&A9(K&Vcrwo$e zLgDhkt_fx`O6y8RoFL>^xqryz__ic9M*JSZ;mlT6STUZAN_)5CO+bQ+e4NZ9~^Mqd<8B z*lPpchIXku_FdnVWl8>}tMEn*y@%^5+;3omLxkazWBB0UNvx#=1cq$^PoMx}01iV3 zPp3fEKsRA;2J1DfHGKaB?sd>OxZlHbIbeXwJ+X0Xajy2pZ8n^ruVc=e9w;LSEaw(Q z;EWsQg*65_2fg;5f~} zE0k|j#;})!GLlXs=rDxYVC$m;{cL8PAJODyRd>Nq>(KUg;e(_AZPg|ifl8$|TKCRk z=OB)e)>;U9?WGInXKT}WkwqIX<+~ppUHs@w404a{co=uO6$wrS?fVe4Vc0T31S1}N zuls<-w~ns?6F?Yv10sjt&R`GT{%MHEu($`e{x6C zv|ScO;~`CATvPGj@%x*@Et3s+rp1Q&9Sqk=Vc7w3ckx_tRy)l{?y zlR@De^Q1r69D|LBh?P~#d0fD?hDm;%CS z5it=hk5?RXWpH2i-g(nRNAKKoKGnC^SmhZ{jvn7mc!C6Ytti9^?P!t(6RikYL zcxi_vgYhisl~kcmMFft~fEgDdD8PZUlp#oxh)}31Imj|DcoauUS@Mrxd}7P(4xY=N zICG?+u}^{#!xKgvwqt;D}%#euv5Si(=1X}f@zG_J|OUp4>l}`Jxz%3DNDTWom_H}IFi}!ym9`f&W{>* zy%?nfqT0I`F3zm&HPSIf`#bw0@g{IeF+nIv1|ItTjeIyrt&2VQdR>#qj-E+(Um2nZ z4YI6LW-^X2GN;E2K|Hf`y>i}bYaIlxRPVi3R&Q?1MkDpb_nvb^Kzj~UKr(^f4#M#M zF961H<fW!sj_L3NAN{eue0cwKg&Hily|hJ?i9=oM6zQg^wV?qsPS4jCoEn5&LCtBg^Rdn0 zwY1nA5Xz*|DE8h0r9^q=tbTN_B{WFaR;{53TOCZVv7mk3Rc+UF9gA=r(@T37kB`qd z4iweO+dB>l1z2>=2h@Pq-t#&=b0fgZNf+B1gHW zK({wH0+xvJA{t_f0OOeB-OYSF9#x&D1Zge1{=!K(0JXNPuqcX!_@15N(^2`iGPjkT9R`o4x_7Q`@^4ov&q zb8aP$H*h>Aapp`1ln33AzEt%JbB?{TeHEVkrYz`=@CX=t`{-=dOt0UJK zD2kKV13=JMFHf^{Y!QW?~E!U2((m4+U1ZgvdTLsr~5ezcuuhG3U!rhKO{ zNusrErknY6vbk7DNh;F8&c#8LP;@0Nu5M1AnTw4))V9fO;h!jj8Fwn4~ z#AiHt`>ftd#M@;Pz>XRHo~?Lpv*RB6cIm}9h%r?6z3FL;Oc>k1Ab4Og;_0$J9k^yQ zvy8{Tc0%4=bw|>BDo}S4th9g;%MfA6)PM+&a!Pdwh!Y+9rR{12^x2HOI%6o_oQE7E z?`iB2$EJs%Oc2iMg-JK!tl$rAhvGQlu~o(z=LP2d%GHgGbEc$K)&>TcAg3%BY-5_& zUF8FgvTVL=v~=ECgt2q7vnt8?ut-;n&SRYr%30DhN+ZKUvRu?&KPF9bs&n88umq_1 zZ4RO*)-Aug#(3vfpkKk{3dj;3eFN@(fo?oC(JfJ5KVGgVj;X;}LYtK@?B43_@7#EA z;ZKv3`^%tmnpEr63i{~m?C}2aN-9f{W|kOEW`j{)1Rjqb&gZ3YLzu7uOD{xWFQx@0 zf_rMb?^M?(2^W+eA2kenLR@etNod*BamJnYh_NJL1QTs-D}CQ0gaQhv>{z+r%hq#-!<>NjqvZ^~iTPUOI zJdb>5@|anzduw`aX`rj+c_BRC+?u{TnjDN6M^O}cV;pkYV{M(&PAWwOQqClWNLf;M zy|XqEyzh<2zHRl!XySt+*j+r>GFAoR$ul24INjQQ_Q8Y8!ry3NW#DoG0>PULxOE6u z1JF6ZDS!beeoMkJz%D=pkbbwC-hD^u%fO|X?;YvTDeYZ%2D6x zvR5aoQuSH~skCPz%lLcE*`$oNLHB=WBTZ-U^ZzVNuRUp`#V-8CKMC1J{>%^l=u7GM zO#XMIeio}2A`+_Nebq-)6Ho% zN>5ch?wSU*#<#~E4SBqeX0K%VUXtbU)@&nS6A5~HQjbQ0qhRX9W8L>Q1SU8{5d{SK zFeZYmPTH7(G3@Ag)l|L0TEw<%S{{?>AU`^)oV1i0MiBwjDeZ6uIK_B_rnbF?@+>+%8J5Lm{E#p{b#o_Y7-X~Br|WH=l{qIZ7a zaxxQG!0BnnIpuM5zSIcP`N{cUoFF5H*;wkHP>{+R6-?*TQG7Npt+iP$7{S`;D55O( zDxhAuwld^nzw00fVLN{39K{2cCW4}fM!`DZ5tB;M zgnJqmix$aScdA!B$(+_W{N^PMPc2TcEQ4`2P^9PJ5z=cb*MZQ`&x3av_g0p{`vBMl z`iYI~Oof&97YmUKF`&);Re4uuVCpBX3gOxnr94E1QN5QcK%k)m%oqu4;M>`dFv@)S z?0|l77C$|S$5|W;)`rn}TVb^ZZ;>bfA%X<9=P2E_C{aN;Pd~aT2sBQvzHwC2pg%Sh zLljQX*n1b^G0-FgS9eVX-@6;VnG6}@4jdvBXIZqULRVm-1$|QTzU4RKm75h7q5>0#`f@+dwE7^k!JMv*AD4v+b(K(W9b

4%yUDEE|K!g0i|NJd+q22I zX)BB=!ldn*v>*cW-K}ZoH5%xw(PBAXBzwS9g5xHMM9qsUk_E{05y$vEwM zBM6QtmW`jJ8?`EpC0e=ZG{N90WpT!>@vD<%2(+p7`lOCy>{`6MbKaK8*=r{+KJ&el zLAf|xFD%Z9R9)lzESnXns~850g@xh1K-WZeVbn;75=?Ob;fh4mYa3x7MLvpSM#8$2 zOn9&HaGD!!Iw=Q(!Ft&iS%C>!l?`B&C3$PDs z=Z~J=MhS%g2w{Zy`9g-^I2WyK)@{QWNupHnsH+V_nFD34_VD6bGJ-LW65q{HG(=Vt zkrRwDXc85Gk>?}I_`X1w$CI^3y~89L085ctI3@3NWZ8Edna}JGZ=5XeuFd1pDa-%? z3I?n+Km+5!8HPgOeBbfzwSq(gKVQqU~~OR(qi zh`EKxV_-4HoMSiCC(mwX$aS~Qn{yj{y!+}j-WtUFNpeR=s6FL^I%|mUTh-@uEX-RJ z(YEy`r}g}#BM}55y=&Ktx)>xeVe`2(T7fr&24@22r0%*nrXmsAL!1%_0b|s5=JdRL zvfIP@cC7^?j%e#0k`6EM;$4f*)+D#rH@fmXYWV2?SnD$#%x}Th{%fFOYqs^hpLpdn z`|mt8{tIBApxgwQ~ZwgDUt zp{d)lYbhs`u!Fsw`SF@^r?oF~VT0l%?CtFlLJYAY_ktvV5GQtbb4o&rIdAH^URH~` zlP*m2*?5vwH)VgC+MWcf8l()4^@4nv*HrVjFZ1=-E z9^7m^O$%(T?i)#r$DSZBl?t3^2tEsptSIlo8R5Z!7*UeZcplXc>m$ND|IE6CpJmkaDxvH zE#m}N>uNNNSB)Gb@`3)i2O@~_(MGTm#YG5I)pMH7TzwW%zQy75Tk_IuGxO&UN~Dak z-MJ?*Wf5ToRZ9}(`)M>L)wf$A=}`6SG|8fLNSZV79Ukm@V7Nae*t>WGu~Cl(h(|$H z!CD|93x1PVB@BDdI&FXMR{6D)@^KhIa53%1n>0;aLfeEp)puA|jCfhE_H(>nfTLTD z#}7M=rZP9=h8NdgRJldLYgdev`kif(1= zbBm(Tw-y1@T8}4D+sQN+qgm0dZCm!EEV+NUXnNb6_dACe;4h%IC%N@eqyJ6dG=q-2H#-%o?xWc zt<)AHG(3y$f9dw}q?A>`sG-z7I_h%ZgDWC#p-vKny-VAz{eyt$`ovhKqTpwNQ2CST5(XYp0XVjHIKiX!=$}h*Fx+DA#3 z`bpCRD*H|p6u{+$V6iw~b$#v5PJ6=Ty6c+GL;_Pwfq1DTLE&_YsXkxSLI89q@x@(eRKD5BGo z74;zzusBi{o2K@%w^2j{$K>FH>1dp=E-tI~W`>7Auhpw_4G$z-jNqB4;Mwc&;#D}W zp^ISm0zeP234bT^C*ylFm`1R#;pGBe$N@xj|MK2fpFeo-d#)}b<}B`&p3aIi=2mGz zAf^~~LiI!%>8CAAPjYrehZf_8z5kjt=J8Oe(T{kCD{xol1*`B;KMN-y} z8$Mx@@d5>VEFC0M-!Cy`u3O?_lSS-fWBZje+FPp~Mq==j`|N5it{1v()B+WR(xBGX z(7-c{q_sSd1kng5Q{c(T`Gft`Q_5;h|H>oR>pB}0DP0cDyAde^79I$u#2Lv4vk-!J zI;7h#7D>i|i1e^Ur(OSn+>b@<)Z%a4TF@xg5E+kt;NaJ>hkUKEgFeYG%AwJ zIV0!PJ<7~!b5<{P9b&nzx|YXTnyd~VA1%(-LQ1duc<}TIy$G1S`mxV^&!sn?Cx79> z@Jq&6k8pcb%Cl}&YS(6~H_zqVk1p&aDb7r?Se>?OM)WJ+etg zcuble)0mz>1&#i%!ZF%Y9-!Ue$v zY)z+DqbPwr>Kt0s%IIp)^`a%SoIg7f7rtsL*yVEK^no;U6_twse#u( z=D)R{kOCk818@wm0C)`CWZ~lWgAZN%_VWkdyngw3mc=7Za^Vb$1r1bV8VKP1-KhtS zL_8i$JQ&Kk5NLN}Fc}XykF>L<*UPy*^&c}du`U2BymQY@XD@G!o*&|2QVcn=j{fpF zKJR;hc(3HGQuR3Ua>+#uGzQGDYp_#@3?KH|t2T)SKeFW_h5;->;Y`BP(co;*Jtly8 zfk7c#sZIt!zzc-24}o;eW=?Y9aQoP2NJNNIZ~H0)j|f9J*k%=?k@ms|Lx_)p#%*0YZ3w(mmaL?+f4f+%x~fr%%4M{P^^H9$t8GbpB8%5*NX(dwy(W zeX}c>NJfi!olgcEl%`u*Y_rfbli}#jVdtgX+`FCo%OBhL;>E$A8>Oc?3z6Vn`*1q5 zOLTH_Jik?K33Tsqb?M?&+26VI{t0TyyjyY}SL=0-!hSxP=95W+gzp;}jMzNCcLpL6 zQJ8(G*#G#RMQ%ErAnHb=NcBqhiX#Y;c}IHP1x)(RBryr$iJVEASx;osz5a(~L zAAI9sB&GD$B&0it_duQlRMdsDS47F-Y} zwRX+~YsmNfz|(2OMGmUOJi!%#*JtDBPglE0->f0?@Ya2J=RV9E_{N)X_c6#7+UcTt0tx`;?;=;VT!nl&@Ro12CmS-Sz}Sa3RULR?^W> zq$#6lwd{=VXGP*HSvS&Q-%Ht6Az|IJyWDCIIEq5`d#+?d(wtY-S68TQ&M)LZD0}z# z7^2Zhy*g9cusEm^_yA}^U2j!O2s1c2saxkf+xn_kZ#e|N8H__qWgfw>SUFykGrm;otv5w}0>c&gGwa<9|_) zyZ%VFr|(scty}xxQB8b1Ezo>HpWB|6)e=P_O(L(md83?mmcj1kd!xyr(a!Z~I!Oq& z?p|viz1{VEFr2osp(Jc?Pb1=4C9+&FO49^cNw&BBc0LoEv#zZ3!N`n+wN9=d44$6t zd|m!!)}ldO|ZE@+nd8Y8TZ!pO{3aMJEvS| zTVo{7a*-Fb@4IH*rHtqr_noxf1W%1I!Mgyq7-XYap$(C3GaU|_PAyI=t97S*d(=P# z?cuP$akjhh+#u)8vc7ri;b@e}wyC_lvU%C{D^JjaA>t}agdV>zqWdv0x|Cg(1Z#9L zjB$YTlRlw=M?eV+!PT-!GgdC`c$N`@=Bqj#=I6(CUZe=fx~YBeqkOC($U5@Dm#bBp zXX9k%4Pp^c2G%=92=*iy#;cViANl+*F_@)u^sTCS`hIm2by1WXwVGapH$R;#9Uj|Vu5c@|yE zwqDxVeP)Kejnim6inZ&bR5a4}QmfAPy_LRgd&3em9SxgOdTnj`zjR?gAniFV264+s(c6gZ28YqsJ#*-zOp>y1kHX4hdznl9p99^vAfk4ErD3;3GcF1|njk zK~z;e4v@vTTLU4uQ(DOoM~E|oFfc(eC0*GikAl9*C{+()MLjQ%iX}>w4#XDhlG* zFc)dTd##Lm(z0S4B?;p(jzmIeFd zOk1{XYdq8Eg_qAyvw^$+-1N;?_y6*kz46@DD2^;K^wB!OJl76kJ&!4UVU{wH{>pK^ zHmXFCMm)$BMnKak@&Kj@gj$FkO5z+RsRz|00zK&V-0a`oDRvqZATtsyZsEL>u>?S2l%ae)%aiD2xgO^!cw?lg&ZLN_uKQ&Abjo(C z`t0^%&J@ifKN$u{hZ73#%A+yMCHBj8v+VoXAURp~$t;U#ZnWgP$4gi(s9SA0B9sh#^mJel=c zCCKHY1Zq1-3Pw)l`KHe##n>Wh-NAG0pcvu zDl}!2#*vbyEL&}fw358^v2EntprETmudOrQ%GOfKk4MqfK5TTA_3()iJe8qhGDMdT z{>JA%_{CxRJ{R|5Y>~|ePD|;inT@ihbW%DaJ4S&q>U6KIm(EUyiIfHy6l3O$>pELx zgOjthQiexSTlKx}J1ry1vpARDyDr9*=kFgP)u5zkK=NW|5xsO*h#Zl+{|hemW$#yN^q4eYet%Md`-%air^`cUO*N+qUaa zd*remkp4BgB$wQ^Yp)d`KdQ@_Rj8jmB%TG(0G&@t*ez9P8dgFedHZA&N}aC)2S>a0lO$+ zlUczdzCKea;uqaZzyHtt0CYf$zcV|(^wgjJ!aqe9^c2p=Xe5Bc{|iGHyaP8L*~kCb z{2%{s!+-hy!=v*v$wU}wFBuwUw84tqmwbXJxH=vOH<2 zAQ%(VLOx85k=nbib*9I*H#Ptee|BCzda$_hm%j3omrwukpY-E=^Kbo)!~T&C&Eu-Y z_YX@F8XDZQ+Xs!)ah$BmQ-G*hONH95Ugl{ueReW~Ys#exoWC5d;r%a&XFeZQW@B6s+9YidTvSN^X6ru>O9*l>B+2OUF$w|50 zSHJ$DXO;)EUw`%Dy}cp!*m%FOHA*vTdgY{zBXA9>mezvP(g`8DUSsO4H$5ckSPz^w{By5vygoobXEe%l8gUe*5eg23LB!@!_SE%*#d_r#&4%&z#>63lv3~KX ztvnqvlBf{cWz$vN?6p__^jH4LU;NMC_?z$x@51}fpzHAeiy;jD7x)W*!2RU&!&knY zez8d8m3%siXVZL4&nt*qZ+um2-B-9l$t0x*aPigg>Q?KdjF1_{)85LXhpYLjMu-`3 zaqZkN?tA~tl|7bP3&Xo|aVpI?9wCMIKYeld>}FqtYHhND1}3epRws24Cp6I0lQw{L zUV9&c@!B~|ZJy>93yl42Qcwm_!q$yzYc!qYK7`KnooY6QV}ckmDB>a;Mp88h2mlo> zD|Bp{R`V*gnU-=IF%l|8!-bQ}(8@=_}!{htS%8oDc z9Dq!x3w&DSlf$!hZ!9?2yFBUZIK7;vPj3u&hSu4m(~>imrg_sTF9%g!H)WY+gJC)z zBt_ddltKVRFtyqj(`>c0QHJA~3(kAh7eirP5E1Demu-J?*eTy3hN`+B53==1i#d`~ z=80HWHPE1}8yCY-It1vFEMg3`eM4UU{%Mj%lXNtnx2vffiSgw8BS_ELMvEO~GjcSdajC00czQ2g5D{(Tt%pPu%qgVF+ z+6MdTAgR)%7YUO{0&=NH0l@Z}Lf{b~q%qOPUpq$^f>9J|8V{e!vF__xo<2KBUKpd; z$;Xl)5jiEjkys1>dDGPn=#`@2vRPUUMkAIpWId*k%n+tXHQre#Yn%?QiS}x8=jrLq z%>2)TT|x%1CFlAsj2!wN@pmnB;>;4_4MIMnF)yTy%~=uR0RM zYTZ62_doZgpR|qr>F_tMpiA)o2Lwop(i)oIyZ-UTq=$p|qc~c}@o9NFo=#-5!dq8p zDAR-N=^wf<*%#ZplR=TDR$1kY0~?%E3NBrk&a1UY07!&D=Id2HpzX?SZx4*=RnX(nNGrQo zwurf$kzz2j7Ayo8)M_qe>*APh9OR}`&s@8#ox;o+V-l7mX<&p3zM+(k^N>WQY3g>>6me>M=sNQoIIq3;s_(US z0r@MtkKTR!T;LJTHbwj3`T!w54grE`f+saD9<`kb1P9HK$5HMB#iqfO9SpPWoZqjM zB`Jmw`K32)V1=~-^GxW~Q?vNh@lWl3*lG)yB{^(-^UBItBkN9#5BbLK=;>_u^l#YdY)$+HcR-%z}6>E|GwwAdQMRDiql2v@WYQ8Zw7m#L3fFFDl#r=CS4> z_)$U1bDczmG;QA@Dc#O)2H8_69)z8Q9r}e}8PITzdSVY>CWf2@F4ol9gmxv zxzgSIv>IisKKI%hRj_%w}pgfI_?c(V%G5{J`}u*(l0zrX+VMWcL?Mq68X zD>cDDfpE$b%7z;W!dNO$ZIBx3uH&4EB*K`sYx&Lj&t1Ox!9Run$iE)`gXhrG@c)ig zSib>p{~q+CKa4*28T83hSp4PiH~#zZzy1LFtb9e*+1X<4vn%8AbGth)PY@;A>$7=7 z5E=}Jb*EJu8>a*H)~BnJs&QRP#97^Mx$Io6T-i7*sb-s3x7ZfG@X-T8x$YH@s0HPG zNK@u;+{=D(s+w9Q1GH}2PWmE_bsg%abKW^)o2FY-CE;Lo3k`|tng<3Ig_@SQvGZ~X<> z`m@`A1~vk~{{&|j;ivu#{8OiJ^!nbds;gzI9qpAHji~k}ju`f+tIQyxaYW)& zIIqbkf8-e@9p$84cG|06YJ^Z6#e^}V!71jjU7Xixk|9f}XFEGj{ewt7-7|gh>NN!MS;DuMVwqZ*jcx0mZeF|Fa@BDVzak3n2bh@C9O49 z>T=$!mxFWI1%PK$w>^l?CHaLjb@Qz5Ek7}&*L~2+(-biEvV!1IG6Ia4Tt2grkBhllYJ1Xz*Hi>(}AS|9SZD46+89aTra<(~}q8oxL*TlZ?dN zIupggfDr;kH11pFrH&$xFv)TjGT%FyY1*|WiQ{5BA$nwyjxJAkKD?9eBuMzxy3^Ja zY2hiXmX<)gF8i+OieeB!k{1~u>j47`*G5_oJ|NfGelX0ar_NjN499G7z9uoT!C8ZbS;mF8#$GtssGAClz^T~Z-&(iz zU^GZX6aquU?QIT=bf`>Fy0uzXWs4cM)>6zJxWS0^UEfz~kcoO>0wC*^(MT&z36PgQ zc{w0k1VVpVby*3s(%aDzR)H~Odrt5T;4A~PIt+&ut28eDN z=bYye#}R$}u=4>mtvNq!iz1b!&GW1nL^fyu@E+$PMVhSE9nVk*sOyw*J{?5CS*M-g zoHG{{-~;d^Tdtb6HM&!A60sPc&KFpaX;DOkFPDup&1{echmVifHS}NzfuxgN-?$Zh z;nnf*=^3xu=9f-d$8t<*E!UmZDBU0=0@Gq1W8|NFLrN&dpBO{T<3;aJ&hI|u{)c`3 zGsEOY9?MBFj(F_7)g6KdL*KK9cOJLib*FXQR8bn%Yjtq-imqfQp>O9OScxU;}TeEQ~)ELXR_ethlHOJZb!p?7XR`jhAn{Z#m? zQ#2+(G?)si%W&a$!;gF%f2=~?FNZJwec>Ow1$SZ;Z=`_z_DAO*Ab#b^RntaH~?g=_s$q?0(O_K@87?*Dzs)1uz{6Bdgc2MlF8HuG@B(V zNQdnpjY7a+0`rbVnD9UelvRtkN1e=PnfJb2X(@fgMUrsmos$$%zgkFRZ9XV0arYlK z2#NV&$rFkZq!%o&fu+afI3JxjdctYp%Rw1!0%RoHPL`jd14p$9a{`rjv@IMFX z2K+<+IQ-W$*!*wdKmX_8W(og2hCLYn&kWwq^DIG$j`4+0UCH+nmiqZ=j|q+netg~{ zpH%A(kVk<8C9<41vP+YwtsOYDUUX5;s-`#2QbHI-y0iQHlcs5ag0f(&?^~<2jxwT@ z<~b?SE_0W zeCkJcNHFu$b;1)cxT%fOGWZYz($=WHYn7agrpOVVBqX9qf;dhH33(RRHBv2PMM4-D zEITcWJSx&WxZqk_6e*^fV9x~gmJ$~P^6`)xYZs? |6GO9W4VB4JgCbKLjfAXx8c z%F0?dt*%PjHZIQNcG2=U;SsT3Tj$%}ML6m!`{@3P6)0FQwJUpjR+W8c0tV})^*GM- z7P+uB+PPPTUq02yNlX}`-0Q{#Pmm#A8c#gq6ajJ4d-B=+aStfNf30nPHShmcHmGTY zopZVkMT$iPSQ`FF+x5e`n~RV;CzfY@K1)!~_J&OPWllDMQbf9l#hvZ6@@K1BSv1Ut z5f*}lwspMRjotA0t=AvdwR}$@eRiP(5NbgTKD!_(uv_NA-((r4k5e^>ZNw_)>7 zp+EFl^r?Mxutep5<^RXO6#m)@t)E3tZ=wzOEnAJPpz|#k!U)L z2t$YpPH+eq5j;r9c$7MifY5;Ka7RdqFMRTnDi|NIrncj04oyXRgDu|1JE- z|2!Oi1O5boXC?fH`d}e{#(!5i_WF5L)Stvff(4FkmcQn+&2!UX*p~z0Ei$ANurunqnb1 zR#~eX007SzMNv!#qqtX=M>HJ@*%;HyEa9pn4-QWk^WJKZq03Tdb+=fqVCA?Xx+xO#dyWNK! z@=AhJK$yqGv}-JK5EI=SWJ^E@i{k0R#riub{CA`13jxmB_K-&zWpOb|&+aZxzWiYI z&Z2%?FK^vez~-QxmUjhTjPT+J^S>?v>Z`FN&BT@SO1^iYn9QLs6u;@y>$Y8fBbi zaa?Gu+qKdv6uW%97tsJ0_jU<)R3IY_0yds;?}0(;L3zi$b1^5AS>_!eLJ$pFcHO#* zMRs_yo}YJ3*|Qu(q!HNpNwqT@_Psef>A-2sur=CBXRHg@PDaD31t!RF7$*sD+P>-B z-MhyQkSq<20w$a+jlUPO!Qk89dGyH_;OwjMhahwCeg8H5dp`sJw1lZf|GWONUkHES z55v_LviH96vAx&z0Bhp`0!v&k>+-yr4F|F@%ViJ2P=>3r_0G9q$K$M12qQe6#6_NV zQk|XEMn{A|Bv51f5d1L9mGTMU2qPYYw}FY&wsKSyCO8DX?==c^I7}%cN(PZ&>jFZ= zlhA6tntP)hraT1Smo%VYgE9uXPWNl;j3=Bly(B;M2e0(Xvz&ROi^13<&zX7Z@^+dG zf{!(|vQ~@3HBe6klEw(eIOCM#=`0V<)a#ZD$P-qdg;r@qosmEZ^T8!4ky`VF?e1+D zO}eVhVkqM2gGXm=W6F8kdCeHfGgs9m2){8%We;a(Ew-9bpo|8qxuEl^pAItwzEgIz z$-#s7L2Dny>058#(;>9IR*jdfNn#32cddytYL$(boILjHlcRd}Nkn7D1Pi^x9PrcG%$L{{%cMgxrD8?xE=gZn^5Cm5z5*V1iPa@WI-O=fsB?P>?ba0?M z-_#{yG%4uWaXH%J!TMo7KoAtsICTeGI|jKB^!B7kqfs2^8k>IEtrrc6F^)Ya=)%r6 z;dofY#@O@Yc5^GX+PEe*xbNE_mHQ30b_=5okNIGd)=TBJrih%Lx9!>r@Y*=8H}$)( zz5exevhwe|-dwzJ;lZQVo$f#RJUskzoCB%ggNN|&9_%UjhyDNh&%@{bApE)i5We+y zw}0$gpQV$6v1hMeUN#HPSX-IdW@eSfAs*+WvgrVmamF{c3agBEIxFb%q-WUGtvfv} z>skXfMA%@oY3*cGEa#0g!MdJe)HhmNi+S$@=_G9J4mm{tV8I<8HZbdw=)kIF6?2s4A7zEyZqQn4g{X zW#3BZnyO_uw#IH93*L$10<8h>&M>L9`Bu|1d;UZkx8;-{VXQ>Lo zN?kAOzHNC#jEBRMg|i?cKAjEX7=o4MyiFs9jaV(D_nz@UFxS>7*%_}bxc%*|zJmZD zqL7MIOE+KE^OMH(a*&F0)oSN#2;FII&Z@rFUGJCoVs%O%z58f+SYEk&@i=TNpq>Z} z9SYWaWId$-ImZ{#H(uHK!Z!Lj)32J<1_3lZliqIo(>a%LT z5&ODBqjBmI-GdVfw>@68ZA7BQ{5a!XQcNPj&@iscdDZ9cZJxsH;$~ty-;{AO zeet0Dr@!3)0OSrn%|N^cyAFOCzUO1`OMejlp&Rh~rtquf@Y^;Y@J{P?EsF`m;J3Cn zt=Eva;W);DIby)t>1aktYT*Cb$UlJDwxsL2XgH#|J2^O2vs}ww+g#iC*yq}|ZQJIt zeKwbk()3WOvoRcTSBz`ld{8x=PjA^G{y)F>d(Ci?$9BLJunaAm>iy@BZIl?0Q>$ll z9<(XQ%17&bum;X*R+iM;kQIz)@a~I4E^;~fhlkeMIM~5@iGu|JG*!0WPDvRQJ3?^c zTb$Ezz>xI4Kf7!wMRIZ^qq_%1p}>FW=RVNKaQCLAB?{gLACz_u2SlRNh9L6f>a3j( zA$iX!K=fhTA`*g4l0v~iI}Iemi>fv{j!uGLY9TPnZ9qC&7^0QFZ)LMCs#!A3yz}Hz z@F z3}_uV%*t@3KL6sd-F<%7s?YSAm__bx?@ybj@8(qd)^3|G!2~h_6vHxeXW_FC_+Nj< z{{dot+xvrczCEa#6Xz1z5e$X5ZhC3pB%VC^0msKpGp|u|IK8=fvmZv^PGbnfdI>v? z6AzjTYp>2Wb;Ba!o~&NHc>U>}tY!_t(B2()w-W~SdUbW`??f2Cb9-191zDm^PO--K zCNR#1apFwXt5s8!8Rrkj_H4n0x*!Al8vOGAF8)K$|NqPGlK?XAep3JVCtvvuRO)6~ zSnUow#dtou-M=*$VRDf zmb;+s8-<)X{?;1?l5Op9m~vtox)N{#B!kc#_or{Yqt9nx`Em6bxF&%8D(D0FHuxid z5Ip=3!4?0Rf8f>M^@IJFezfY|G>CD4!Twez(;$3XO>~g}qDLD-h`}Y%)}cjjrL2o) zmQ!K9a^541QVLxH48h~;%fU>b^vhZ0ECyIFtGuZef;GJ!Wv{w+q6GptOkB-O#1Mo(l*lxZQS)Q5Na2w-!04RKY2s_~zlT>)UaV z6z9?^Z7s#XYPUXLJUkq=mGh<0qrEym%QLngPkAFUMtwj~KoacJN9UX+L!%=;=+JG4 zhx>NY#=(#VXu_aFv!=-kigB1)jlVdaKKre{9ZUWit`#xqlB0`IjuJtAjl}cy&D+kO_A{oM~7f!Sq0jYeH%&>1Kh(wT0>3`vRdY5 zvRztM+1i`i!%-&j4!DtCz0 zRt}0;1Y;-N{iuHMv2I5|zgPTE!N2g+;4l6SKm+(5_(MMlUi<@q;6L|H9|QOo|0`dc zUE}*#yV;_e=L-x;Y6PH2FbpB2Qn8@TS=qJ{z*slJ+k~eyb773hN@5Y4CbhlM9t4L} z>Y6aZF_oRh3@1f(ba!`qUNNPT&DBql^6=K+M2%J~M~skno;^ME2VB6q$_dH?QmZOk zES3<6QA<6HT|2=nwV4DFn4smNz(4Ybo&+4c3*FwhXtXtxbU7_RN;#nFxeeyciz9%L zKw6@vtn#W7#+fXojiO?Olj%8<40;Qk#U~R-Wl!Ch<;(<~l_D?m<34Pz=i6O7j&2&A zoD47Nq{lZ8hk8~tq*T&rr;QrVmrZ+;52sT)hb&L=nv%vamWla!8N6>_pWN^5V;RT0 z_U5mC+GspRK-OTl_xJaG-|l8bgf4%$*WY+{N#vwsFc{787aR1~uIWF?`7NhnSuTpQ zhyZA%!xx!<^YG@24&UIh$p(*^FUcm4xGXzG#}6U*{{Z zs$nS}4%^v$B~=IKm(iD^7$5!Y`{!R@H|K28G}o8&9-JP2b^7e#rWUyh_Wt&MIt?=h zpXOJyYQ7+pgO@bo_7n$4bw9zQ51O+pxc)kA+DFwx^B7$Jeir`@eD?oqB28Z!>fepu z{)4kW`2F=?qgb?^xxMYvw2wW`v^RabAL=}#fp(p;#`&nz1fEX0l-Y7d^^{WJEXR~U zAsD7;yLWD)S-~ksotmVb$}FGNwYL%bG;Bg@$8M~uh1He;uv}N#SZ5p|SWt0(-T(rX zin0$=iY#rKEzzVt%~OrO4(N{SY9Dje1@0zaLf<>#~WTF zl})4RI#pDq(>}!~hD6{F#}N}&=H*Fg-HTD0{r#!PvsyHml7cbqQfm<=!Ae5sS;@A$ zF@i8#H1AI~l-rBzWe2l??dOkGro$1^U8ePW$wzyuq;R;J9@e%nC~Z17c4Wmt$3 z>Pekn%-d6ozxmV8XHCU9p5mZ`DKd@$V;p&DafCdBDfz&W&U;*9 z26@KWobz`4$Zuzy=OQ!H&Eg$H3#LY`PnNlWg_~}U^b|4#7Lg&1x&SiPwJ~5*_?kZd-wgT`LaA+ zfAaC?{g1al`q$$xl&}>4pD#lP+&y?W#^axz{mDQ5_>X_~&i7AGKTemG*3TYY*{IJq zjnTS2=sZUWOV*_g=|!QWaMo5ex84#;$}-Pt+CGc~MvBWfHzzq5rGq0n`4pm2N-vtq zX?K4=;b4k(?0XMe!|Bo&;)AL=Tg4}p|AF)3XUglJ`1X6>7~aY0 zPtWv^wQCL^ua;Mzy!n^5r_Y?RAqJ5#0GW>n0=sPHO6k6n{phWxi=~LzSzybISp$%Z z6ge)K5YW8EM6mZ+MqvuU!ReGn1Hq_uo%8_P)81ThrxL#1m%oqr8ejD?${#+0!%Os{@K59c{(14Xp3j6f#~5PS1xd%r)n?VyvF9QB=^HyQ8_=9n=60zsch zcQ5C@!KoK3VDRVXbvsT7MGT-I6ls(dENkA{0RjacwY~8^_PvAv5=xn%{jKUxqxmbZ zUVZN)?+SocPoKUQC<5JgyCL5n^o$DrgqCyGX!tMzCn)LV-c1#nxN!CI(Grp}X7HSU z_DeU%@7}%movpfc<|qyP=s4B8+e!E1gKV!FP?gAfyg#-N-C@F@0C6xwZ*4b9Gs&y- zzXN=kXLB+G=f-GKvEm0FJ^JBQA^uUGjPu&|v`vUN4b`}c0{QCU-{dG|ZZw$=|jE0s0^J4kykA4__>mQB(&RdePQ{OgaZFD%ltcpCr$L(R9H^fUi4jvJc zu8K&V)k*ghTv>_ba;6Q|V^?J*2K0X0g-LS;M@8(L;nlCb`2JtsHf-^o-?*Ev#{KTz zpU9`TpEAbVez(NzI=?7$M9de`;^X0-Vj!BT{F=CYQs+-L=Cb_CH{RW%@9|PH?w_Ac zc?EGMa+Le%5M`Xe%~=CH($0IY^kltJ#=-mhPH7{RtryT+*{8NX3kJ){gcz(h&N{E1 z4HhTqK23!+j`B1x;!(W_kT|V%)0}nvX*tXC)Eji| zaqYvl;LqpTJg{>G1<&1#ARKHVE-(>J7~jS%?|%Zm9l zo8iZgFF+(}@?{wcR(|p7q3u+ARQjaPHhEKugmFO_G0pb%_`TnF@$uo+ZTIm%bvS1g z0r8*y=RaG_FIQiJQmf!Yz2QdNp?5}yvYb6U9J^6!AG&sm7MRi2wE);43Q#iq1@b1Y zbalF=>#Gm$<<0Z+_Z!Y{UjF9I{o!x|z><1d1coOq4|gMtcn7zpk99eJezvB$XFRuP z{_&d^zxAe7_eW?Y%@>zf-@1PM)nWJ17x#V`4DwW*@%5UoAQ&S6>m~;l13x=+f)~s4 z%j=?f^;)9kWJ5oTS-hqF>B?fsnrM#$$)5f3_vpExO+eHSlZBDMf*uaju`?mEW4t+y@F(wo z@}v042&er2j_U3}|2y&bp2Elfdi1aQ`k#LPxBmRU@ahl!;BWjaSawj8Y@xsqIk_q2b!P{We}a;?TQb!1Z~WwV%+Za={Nl8?&J|`%H#lA zJvpB{N~BM5T!R-ywpzmF>hg$P12d^*EY4S7tjsA7bd;-QbKFhVco!w3NRJ*Pco=t= zm#c?+nKy+HP>4jyDIKPPSQpAXmrklMt?Rj9neJRBIN@;|di-;L$9pj{%Ce@M0}Kd7 zA|qFuaIGFXv+K zKL6zA)9>70o!%nS3Js^(FsgfM z4ph@DE7S!9;q1pZvv)V}QK4h(I*n=Mg+)Mb?@r5EMFTw^G=#zV1j-KG7($TRK6fTrp_24FYHeV5*}h;(P%;p1efC&+6JpQZ{Lw4*VX| z875ZB9)Qe)Fw?A)Mvgm{$Fr}0P=8s}=LIIzITvX#-oyYnONC*r)oEuCCCZJHwjpBZ z5ilwHc5fHC`~886NLXy@V%028ht4?*IkL(l77Bq@ixq@;iWAOV&T8!(!S-@B6LgL# zpVZjxC*?dXA`@^~&sOV_a}r`ylW*qCYe#(UQ}+%8Pcnw`@+~||P*L;!?Z6QtD8IQm zs!=gi0k(4k3;7puG$0Er~%&EZuf{#^h`|$k@i!-Tv53yPdV808pB^Rxty?8{%h*_v0UWB5WAvTbU7x9b6+=jRJMzDdVG z+iKWxCrB0nQF-E!;n@aViu1ghkw?oyFk}(RmfB6^o#!!lq;61!zw~F{zxshc?qlkN0=O%ex)K;Ps0!BW4X#&t*1WGJwmltD%sd#NyHE&<&p-rBZ%oogS4^1uIpjAjnwQ-yC$|Z#qUMyx>>$ua|q886ZxXK(# zsina>%iY*_&fD|l40v#NJ3(&{juBYdt1M#&xc&T{7k}(G|I9xg|LHwAV1WMCv%mPa zf9o%8f9}OEf9oF^pT5#zl-eBnfnl_0=BdMKa*S94QN|(9>zP;xLKd^CpT@-J6HF1! zXi6^1CUqdChKH_4$+pbh1iH_Urxzz&*7J+`G!6aH^}Q`>)SL0t8cs>jvE8NutFt;6 z_}KL~+uby|#Bg~~FK5F}-v5ZWLm5CbSUzs5%W^yDUn1WB~O4BLVyVJMc#Fz z$WSxSAwWv1yde;TvSB{b(=hf&r*$wvsi36tnV==h)TnK+1i`lLdpWX##uy)8UGLv? zoChCbUGdROMV0Dx?>u?B>kha{z?u-b177jrbdW~~VIfM9p{nBj zpyZ(I9LZCR9++sNqgH#20sN2t&;AJa+$B)g%4w_%UgZ4dZh#pv#?<+u8&BgfB^Zl} zW{n9&-~Xl0_kzJJxBX_zJH8k!*qCwv2p^shA=T#!;l+OAQJSk}q@HjWK$EC=5 zfIw6^aQLiTLKG?0x3>p;2h?qMI-HCX^Xv0=7+=1+-CS@2^4#_G>;gsE#C6y0rtnaU zi>{rNfprN5- zw2nH0!E}PppKe~>z9Ccy%z{Iswodo&JU;W0oCedW!6})3s9ZdMwCo2-03QaGz$55} zZi>#$Dxya=84W3LHfCHP;sFc}_^cF*YV)oC`QNhr=T0@O?Oz;!``Is?W}nJL2gX^A z1qBl5jFMpJFgQUXCJ+#o#zXH;gTCA>bgRo{L322C)9EPBHybbQ!>LX2tb-8-4NL$& zZ&@~0$CG&Z@SEAZn7`LtK3z~N0&<*(8C(lt3?icbe0{dg)(_kEc6?RY%ro3PEz0*-&LIa9 zqC6|fL3SC%1c9gnN|LQP}UP^-Y(;-tZpR7E*? z)9!s%g42DwzM4f%1x>xZliV|gDdi2V+S3SG`o#L<$V9Rqbf=-LY80#v3Q=Y~AKF&S z0AW~da&0Wj*<94!Rymju>#OzR?tZ{Cth5a}b!4TL7+TI72%U-!Mqi0pnWNk7i7`PV zmI@fxU#=Vc$N$V%clVQx9&=!2GUT3QY^SLkCd!ERlI5v{Ot`Sh^#=`gFrA9Qj8SaX zKa%ltE!E(*pWY90f>hyRPG%+8q*xJHmem&}9jD#YEjLi)q&RCJM8mE(ZzenRi2LKG z`{{SL3=oYJT*Tpszj$>w4sD$!$YmNi4d6Tz?RY{IdqQ%|Kzf~y3I)RO?dfoH&Sfr@!w2lxcz%9*1Y=oGv(5k{&RgMe|%Dp&# zf88{|SY%V1K0BkUuU=h!?UH3Eafb5}ARBG zf>qo!0+4-!-~74n{_2x|ykpx@>ZTDq^T6Aol^G(yv9^^EMC)x#_ki@y>fq+H0z~RU zTH9xq#GGcQLyGm%Pzrz?Cu1z8ak;Ff35JLm4fASl ztVBs3frG=dMV8h^V5*!)hjB=nX~sxaVc?^WM5~^H$VvtxNTqlmsv>v6VMqal0EJ<+ z0AL4wr_9))q)wY`>i%gYM2>NA-cO?q9^inbwk#)YFMSM@VZllCX1QD#BN6wQ(@_B< zO>oKkgelTaK@JvmooZz;?FRU#{?N0$;i96aR$2E8g-h5|-U11IcFK#<`|M3A#TZ_F>RGn4$e2tYAw8D=d{762KoRokE3LPh1 zJ3Y8K5&NjfgO1(aedSwgBp`&LEl_q|ufF+sbA2{j7aq7yP1>5e$crK~#1VyE!r z$@%ek^vqXvRu@GA#1dbEs&eTajx2ib+MT)~pG;r+Y^v`#qVGL_H0UAE={Oh|&|<|v z3{LX0EVNPHlMv!^nJ*TVmM)@D&3M0;UaM(P_lJ>_GEO1O@U$hhdEUKx^=8|mH?qon zr^2kBTzk@L2nzGyh5(xt(+2Xixo|=-gz<13?(a{>F4^+K7%%}z1$$%O{PynA`PXqN z!GKTwaq7&Q-Gk|;IYS$kbD|)#X>%=H0U1aE`(6yBDM$DMhDNmU)&J z*x69$D`m&v2}JPxtjIF%Er`%JYr1} z3~%928;N8@bVFEfY9U~ri7_eky&MsUxG4B!bT5ZG%j>f8lV>;sBpLghi&Z}BkKN_@ z%=!RfG&;Sjb)Jcm!H@yus6a|a<3c1}THBw%&`MF|F}TClq?;Tlm1+iwRnheoYBfni>AmJX-^?_Y>=l6PNQOsz#Nj3|Kv?K&&&0*idNiuIx1M6RrS}; z9)0-{Kciadhqj9$aw4jx7^RK6c0nEXBZQ$84U5@wUSYwLI7HsW>Fqb`=Usp3*=SbcWR3Fw?oy?-VDc9f`|mA?VSub8aXYSVw#3G_d6tj z)<$sg?D6&e?Ow2y6)C00Ud}c&TK|2j93H70rlJcne~EO7$O zY`+`Zeq28(tao)T-g)-e1zlv~;bCZIJXi}HSvMDl;b1h9%B|Kp1RfDw)*0n+f71zy zr_tX(bT+N0|0g0^8L7`Ub8o_KD=}~oCo<7U?}8spcX_$EznvCmO~zq-i_9Kd?G>d0 z#E83TQd(z>*Hx)iq_B?27(EgqHj6Xa>&lrlL-~81V^ZAD5MBC4ew!is1zegmqqyOa1r%jz)qXFnB zEez8YFAFiNL47vg;Ja~=vnXU>F;pwnp5*C;J{<^tv?!MP^jo`A``P_46LaA3lV=-P zpmrQzeR@dlcW?qoK#$-5+Era%!`f&@fwHDtae`3RP2)+SUDok>)K zprh8Z&hfxy>izdIn?~IGpJdYtn7iluN`iLwd zBp{I{;Sjrn#1xw-yVOsI^Rnu8dXm~XIj^#**Ee@NhdcqI?UJRTSd{4!`=TYc-6W0v z{_B$k7Mm|#p9GYpV0biHo?%2sCo@{T+_l{lrjr9jB7Uus+kJ{q8a7`nnrV{pBXsxC zi-58)V449lsbZ5ACiBy2-kb%8mIbf#q+j0Nj1R;28^CApUGYnC_Tj3iGNariO@s=> zC~^{Tri|G?$PgVbVK+_2$BZ+1bRKwZbmM` z14E)Liup3n7?z`Q#$^ z*dL~5T@yrxUK{Vrs_0G<|I8nMj!|N|;TOv}e?koV__w}ufMIug;BPEd`@DedI0Zym z<^;NT(uc!HYX_Ojaki-!h)*ms2E@fxJe%buspz_rO3V412@q*L# z^2gqL^doC^>+~rbro(g`hf(i_<92tvf30V1TIWR_iuLNUDa$3fi*iRYY832`s_h?Q zYq|G~RM{C3@6qLTcK%LtmFL*+?hgeQ(9m&o!3X0t7o_i`v!)+)mM3A%IKpaG zV5kJ=Aw)vZ!@Z=a6f9eA%H9s`I5lOSmjVV5CEyvN92E_g(g<3e4yVPOWF@uUcSj{s zd<^SZmg;;H6*-D19=4h?>OjC5yx&e%gTwvEbA}L9oo88*<)KexZG;g;g}b9d8Ke{q zeez1)ww*D~0~=zbS?N_E5N|)ZFZeg7+wpd|y>AWCun_)oiS=f^Mqr0_o9oAzG26uh z=tT5Hpu;QGT-7KitU#*u6osIs_**@o(`4O?mnR%0^870om(2SCg(fQw+rxnMwmoH} z#GVMMP+ngA?Bi^mvjUF8G)kSZk~j3t&1f9y4r&~xs>*>Td09ED0*DBpm^M9d+)c%d zwtWiW2}yIKPZ~R%aiHu(I5CbWW5&+wb?Wls z%ql%!^Zq1P%Oc4_vClZWINJ~&B4s5nW3)`ZeXR`$$JVY4mc(J;2L0T6kN%0^33t#HGi3~X0 zx6{pc-h6yp&o)=7I0d5UFk>r(tk%?_a9PcY0=?W1 zjb#LZliUs4emXuxbW~~#Zr04#v-gYo-FWu33!IB&o-WOsUwVTfvb@bio}sM7@M6Z+ zVzDaE;pJ>Oug7gKiYtqv#e_Y16i$2M+w$Gz^FQ)*^$vUf!2owah`;%}&#&(vb}@MG zl0yFOVZS`j?dYnkC<}TVdr|VDO0pclA`bTI@|=y2^tHCqW0FsQ<+UTZOdlgsnq9~|#E)&SAm~@yJmknovX$iW)8xy-;azUx!x8L8I zUwHHRM<)cEJf{^_!-$KTDWb8CQiEZb=9_cS?>GTn@W;$mby*I?NZ$y5xE=FFIbT*U ze(BTg@3!GU58=hjt#Pe9Tl(cnpsIRx`-YztBFm45ajVr;#rj+Gk}LBI1W(J}W&4YI4(LGA=I9XP7}8GAdvQagxpl zKnnc&t}_Y@C+j0DNLW^CEaAND7RJjWz8)hUKF9=1~JP*-emmQf79{K1oBe?$~%V`sCb znn4%vqFiY+BAAEhE>>mTltx426ehOawlHAj!mHPZ_9Ta4!e9Sz*8b*Q6KDW7EG(q- z;aK!57M9Gm?P-}gCw%M!~`?jNbE(8`r5Jn*| z?>=5udBu4-*{H{9I1N$`**qU7CkLNrf->^xYG#bK(qb5MM&%IeE@CaJl4S34%U*45<||uwk|$s%mQ~^ss{wBVicg_CwhyCD(2T(ZcpDJ{r(vjTF2{&D zUo109QHTIDyxl21f;!pU_2^^(c0F4{fHA;~7Kk{lMoL(f&#ly()hvnl5zyM^BC89L zxCkLSqLai#an8W0SDd@WmwZpXKJuO4#g=k7ipfj=S&{61| z`#B_DL%r{=-s3I?9qC8dB!ugm}e4BgPi77m5D6G;0K$Rh%Wi77xy_9 zhravxe&9aM=#!RnP$P7QKsGSeJXtS)V3S{fVhv6w=VSCf(2BRc90s?)lg2=iQ{5R5 z$zoOes7z{N0)d$s!2Lr z)>*A(THr%dRqer6>k7iaFhEI*V((ucl~ThXT}0z;KfZ4753>J$Dev@mf9v(xd872} z?|=727OFS>%d^GG$gx8Har3yD&kM*{=KZX6i0IRc=7Z(aA77lkS3Q5{ac{=yCar{! z0M+pd=-ch>dA;Ff)|#o`j}z9w!!JF3o;5a*^UpqdeRFT;i>!Q)uD{vfEEOrLvdAl1 z=e+NgHFn<6=@gUu1R7^>3<%-yRyT@^qNo;mchJDuWwp7zKj_IS6)lWDPMpMu!>kZS zhrUfpQbq!$qR8m|p~W=h89N;GVpBNlCuw<}85?%@17|cuI3+uy&R8yTF%B-eeA4Rh zaNwNftg7?662+v(qNJ%FU6dH6ctccT7!9Q`FGNU^Mk`9}ozK!3f*gobYmWyRaWGKJ z$zzH+WbI+38Bt2*9K1!%l0RwQl$+K1{^d!C-~lLehQIP&;nno=-oHM`WypviQT~p;G5H$s@oKX{|QE3NhT6tOP@3tCS{PcrmwaNwIyUxJ#`RuD#=kHxDp3G;f zs+WngN#>if%!^$2hQx~Th(&Zx*ZDdakh}{E)=r8bAO|nfpiZi#$a4`LA}qbD5M%F> zYZtK49tTRXb%N*FGz`0Y83L?kcrfPB$|4h{3#W&PHzZmQAsnZ%lM1pVz-!9lz2{GE zw_9fuHl?iJ?@qIofId>h=5@AfTVBz+;S|v+SQupudCofRUtLH%kye5BY>U}^6ooNM>QZO7=;P7?e}Aaz0@-X<7pp}x>50*_w<1V#oN4Ps zg(;)ss8fr)76>9WDVkBO2cAL32`guZLmOh;-pUAkwcz_xtDSF(k~n&Q-y#%H^i9d% zyxDbHPLsqS8|3I?p5=@phY5GiqzSW1Q_c0oC1XK($SY2Wr!>PHWyD{fF9fdu$Q=rL zQ2l-!`f+!VDgJ_Vl~k!zK1}GronHNh?P&nTI1X9aoDo`;3|a;a zyrIzV1{lwN=xOnMmY)HZ<4L&~5f*578mBQ5#!gxz13h$cGPKex{c6`i6@f86eR`?&WSnM2wmVKB#o0(pPZ_YzMeaAtxlzCb4P)S#8i{a@ zeRTVK86nDZS~N)-`oa5;@Ao@QpjLLVXz~gf6V4Ww+D#C02Fm?867>+|i zb0d1#CD6qvThxRwJ@(_Y*NeItdpiso02g3z&d9;o)U0<^*$flN%dE)pysi(Y4q@1~ zF*>%|l*StwWiCh|3Tu4+7XHgBnnY#E{2AONm#fNn|Mn8r1oJZ8DTv}!9zzt2gAV{e z8b@ckLt3ij81UH)9`c?@~Z)LZ473$_ZuTa(4dVP7e61a$;MddJuZJ$ktZWwP+ zP*}w}XDrX^4_N(9F~7*x*OeOeyH6h_FCNrVt3}|IlWwpY9=VA z(m(_wF3@owv-AAfA9)&PV)R~z=sYNDC`gFT_Q$cx%Bc%l`v^jMlU>kK2X9BCs#4&X zX$|XjPM}2?8tpR1wp&GEfe=}*n=$t7Fjj>q^PCW9I>Q;nG;v)BLkx47f@!(F%#HVb zYuck0w4@Mb6-_$nk>m~BKImkE)Si~i1b265oriZXx^l)r1o9M{WmVT`m^6SW8O(z? z?WRB?=D=t_NOw~9&~;2O7Zoo{gz4Rn3(vGfICWcQZ*|G*lM|`rD zp*gEo3p|tAgw63y@9{n_X3J-*<|}NKl*h;#hZvS#YUvQdkd*;=J=)#9&P!x~X$Q+7 zM1Y*`N1S2r(iXk%IvXs+fHU~)(PM8yKb-PXOvd!bDQRP3TrJnyI29*c`t!wRQVt+J zFY+p%H|0Vj)9=gO;r-V)@ap*}1bljV9iYoH5+Z0%W_2zQaCS;fT`8S+$QplkUO^Zs zXFSIuCl4=1iabKu-9u__bZG&Q2u^)FF@a}gzP%qzvNvhU!_cZCV~2L2LL(%))?GfD zb56Vu+L=>lyQAZRV1)Zgj(QT5&5B05z(EZnp5zH%TzHY;LX;ek8IR{RUuVlzafTPO z<@GG%!fT57Mg`^bvUqk0WY26LDR}?Ses%Lfy?V~S{Qf&tS?rGoqisE#y?MQr#>`h@ zI@skb@e941X0s~G@#$y+4cM9U^9zFV2$@6DYkzk$)Q|Y1Z!TicWiGz@rFRF_o^58w zeUA`i9OfB8Auq*j)U8q}hF#7?Jx@3<6|}5Nh@EU5L)v@Z_wx3(+iztcfMuExz1!|N z!n3-tGQ6!&skc?FphoR|3^3iDz|pKOc}Xz}oUE$29Uza-a;H5`fD zT2t3xP~&`FR5`hSP#AcagufxUm}PXL_V%}K4Ndg@$1lh7Dl6#B$hP{%_2Mh@{Jd~B zoZ4P9*Bk-=W7CM%fW zS;01o%G)sXdQp(+6!ho=aoU7nagx)Zz&N6uF4m2A=(ue&Mk&f3wyl*0i>x12Q^OcN zWN}vU+uMl~2%O{@B!uB_Ji0EjSR%2Qv&|W;7|3~Ma?`u``m@8$;bU!g4e(myl2;I9 z?4myV;q$9+Jx3T=>p0J1)Y=X8f>F_oqt#ZoM;p9doKaZPn5fNp|NN182{PC0JtV-fAZyZf|8=g)xj*zUZSc_}2#^*WC_ga{iVRbjwI>DBQ}?ME9c@))r*Xo>v-E-3YL!PHO)525 zLNlw~t{cX5l6%Go;eiVj-CLvP7e3ST#j_7&d*3{%iO-g^`Q^pJdIMoBONt;RflZUm zlKqrSqaO_(wQKv4aZ)t-H2UMGyWzL*?myoXTwPwj59OP-$AnVQc)%c>;9lz)NiGWp zjj`y((6u5~)si4oeY07A>moV2eG=JMH6<)1n|8Eym7VTw06u*MkX(Ppy5RGYeCfyE zX>Uf{>!{?}b?(;a`ez^0qJe-nb540w(J}@YX6c`lmNU-yk@pvzU*aF;-h|ITp^j zlpP`04O;L5#Zb=}fco-m1ENVRnX?yXtGcd~ll5Xw0_02}ikbpno-cA%wOvvKI;V!y z7%-faIh_>243k(lNsiVXrjjz~shpC1*!aYU8msZs4{GE|&9c_Czw@HYy+A(ncFJu| z*fu9l2hmZs`RaM|;he2;brFUkCh3KZtYXsI!%>fey?;Gb%OZW4Jt(R?%abM)CBY8j zQS2W^?JefOYoFdb>uJtFD%^pqvkgK<#mQJecxG&zltv(!DHbIi$00C3PtIU^f7dyv z1p`b1Kmt|x0v#mueZZ!q>S@S0XA?)`QgP7{c(J54?!b@cYd>zm)%zWibghlPANegC7=)2Gk+;q%?i z?aOc9uD`S%yKXUOm}BGo_HG0o!-(f~W>IP_Is^RVJaBz48AGuR)g2#pVldn5<$J{G z&%gNS+h3gYWNF52)cJ^L0w9|j2LVhkxr|u8?kF$C3YG8BvuAZy!jkiMpFdV^M2S_< zMOGFiuqw=oGw+Qto)Ah=ytr<{+c1-GgfnQ5cJtv`^{v$i{LrgO>AdkF$iucPITt8v zPtuqKZIZNtN~^rGo@X&Q>O3kNo(ohKTxvZ|L5@)HylN7+c^n5pX_*%=LK-mV1X8Ef zlxOqgd>E&T%egYCX4jvT;H=68Ek5|`-~PFOO#ZD0JOeguo`6*VApqj%*&m(nKfAc@ zoHqM=Jzth4;Ync}T@2B5&UlZLw^vD}hEejIa0-J3PoG@f-Q5QO0)%g!56Ojf+N;&7 znd}6GKi{le5(*|mNSRj%aZykkt?Z1lzNl$l<9SVge@^Vij&agcYFU&t|=@&zC&o%1;l+KFi3W zZt^mdlSQtKzyfF?N@<=q&}skl>8z6psQ1R@TtJzcj^!+4ghddtlD?HUV<~0PWZF*M zpo*N*eC89JK0e$|Opv@nld=1gY|0#2wtds`h6G~^!L)U!X>!n{ywLhDfAFrBy6Y0{ zBFf^`t2>sXqN3x`UTzjXco}6@@|?3&QAQ4XcX_@>C=Y;GWP%FEU2+et9+lRbc~iaj z?9r(ErY^=o8x^>KWlmHdmi0v^4|4J$Bzf8Ttkhalju~S_py6bqoq~qlXuIAr&p4)x zq3Hy~a7k48=97;*7x)AP=puEq^OeYgkOB77W^p0b+(Qfyp06^DAf?1c=PY>f=DvFy z3mzX7M@SE&b*O(e-+%w*?(=STmO*6SyxJ3;zd60WTrD9qQT1nRcGjFFs#QiWVv{}`hfZN+C7z?3g9D4&OCpY_DSz(f*)Udf|ymcX= zo8XoC5B!s_|EAxB@1?g+oq$g@+w>m7R6GD~_(*<<4o{w6d{&E!VI~qX;e|+@n2dAi zVYSF&#KxL>AsA&YwIdwj0S3^_xbYYZE(iH=D~W)P=(aOf2ZVy@-Xa#kqUfDd54)CT z7=W-^EOJ~N4<`tH#30z9yzf#vvSBO(aah?Nd$ADdxQwp=LS60i!%`-qqAQ+7{)#{*k1Vu4pF~+n) z$(V`Sd!Kyi+E2anK#!wIZGT<>0p%2ijs@gzULKPdGtK8>b2b+lQAVeboKXfj3fMR& zY8nF=C+%Y*DiKH+dsbvHS{r0FqlDLOJGl@}duf!NpH;maPQ#SvqGsj8n=VFg%(R|Y z#`wGK!C@;WsdQX4vtVsek{BXmOioiIE&@j&{QX-Z0%;?rNn0dE^5GB!?E6nvoE0H5 z2cb^pm457oww3KDbx7Ojys67tIHT!(G;hAYzrU;MtM+KMp0a$k!TEKD$MF{Ng(qW9 z^Vc8WuD*0mn1?=4nC(yf@nMR_&1*4qCW9CF;O@Wkz0Y18%tvxv`~697p1(uPLEh{E z_Y9z{AO#`IIoZs4RhKQqyWwG33E(m2v+QYc^&`(_XSG)vQz|kHks|^@nx3Zjq1~&H z46rfjKslM`)o?P&(dl%_X?xV29wYQqs)rYXP>3QyfiW?w*yu)xLQ@t`pIlB_vLY`t zk?|B~G2)(HEsMM`I$24F)1amyq!JR{Zo4usY>eld8X})obnOH|{XT~107{y|q%Q-( zdrKIY&u0Ok^uowtQO`en^<)3y_x|Kx{#+kVZ@?FS4ZQvpaQoXpwIE*seF8KG5CMn* zCSR!8?MKV&Zb*}oP@tvKOl*G3Z>mUT(Z52lq6Ra-96o)~nq`oh5$}zM6C7&^hKvNE5 zOcwTbf81PTICTU3=_paa&@&vPm{Bj^4#yP&2qzXW6-Iy#_L!V?;Qr-ME=mM}>AVea zxuVKgoz&})Lw^K~a^@wuoP=cW$Oc_}qjD)vx z>2R@HIfIV<0HCWlrL@#05>8yuW(w^|P7)L=K?RZBWIpdn1@3?2Rr{MSU8Ey*#_LZ$ z-OWokFR?YS+xFkBLEyp=>s<^!PQTIulyx2+<@at@cF+C@@2XeK~no2aP!$G=jZ%4s%8Dw;6w;RTI=0GWn=*n zT&^kw?4ZVsu_Dic0~}(?fhe%^8X;zk1J-RerFPzEJ9ZiXR0y7x3`R;RXGH>i2`3OE z6-_r-t5CNed67XFPurC4Qj&mCtwTCyB$T5O6~}+zZ~C%Ve(ZFt!Q&rXutnl>ma~QN z?)qv@a6D{B&S9Qory?}@=*H-R(uwgaD#`^0D2PI=)(bsFf|GD827YsM+V4l%T0?>; zQ~+xCu!jOHQ>PxDj?U}!nqvZnUZI4UJHkOBsI#D4WQZbypf+BJ>~NIBq!=y$3f7uK z-zSS3CbPP>J_1!^NL-K+IYxNFW^zzZADv4#IUBMJ<$_nN^vc!qteR)eKo@1T>0|U!5ar2#rVb{O>ZByV4Xdb?}@7p1;3Gu={sTmM4oGpRs%Q6abT3>%~Dauby z4@GW~E;}?j6s-YDy2UKx%uR$b>=l^;*O`Czm7(%I_SQe>Z%|gFqGS;eIZ4sbNlxCO#X?w+#gI1GaWKnG!Vqd}1hoL`Bn`J{VxOqKA zYY}#ofvI;wuzlN!0t(J|_v-x7q9{3I$-;)HxP5)dL;+xwlkL=qAgHqnQUW}quy$aa z#-3Agw!DZArv9;)Twn+TrjR3^+L=H6hcB&$Frtj(`C8b-1kbgdAamBLI&ZEo7jNaT zR1~G)1VYSnmS^bQ$BV4UjfROP(5652Cbj>A4fwDhyaR-?*}NXmaQL?m<$-AR;t%+{1WG9!G%Oaj%>WgfNoR-EMM5NMm1p zvP-F;i#aS)VN3*L1EVD2DKP^UY3FEx7$t{;9vwQ4leG@ukW~UvAzL$iy6;|W`<Eeg%A@nu+=8+^wsqfM*33J-4wsKf0%e`W+gAdb5_sm+wa|> zU)w6+?tcB%WIlg6qT`)WsgPmLR@hYQXF1xLBW^&QFEC@HD7Ht4A>VD=u^Y=e&vCI>%m|``ly%J!q#Sc=0z{ykXAciO2%wr}FeY=p z2~O~cnCF5yz$Yc;5T;RQ6)|3q(o}U(2=VZ`!z4W~LC9fuRNh~IA^*g)|MKA9|0f&# z&eysRB>oNeSAV(tm;cIt?YDpQ-}G<)>-Ybt{yqR-|GNN8vl4I`&G{dfP%U;U{$;&gu;s;smwzWZzgLDbT!R5}B0LPnd2y-JqZ%z8spo!A#;kri14 zY&f-?LZ^ZAQI493y6xq9os(oWv1LvXL~^hw7y@-!*OUP3%-!)&)nq!g`Me?+PrdC2 zS5yT;2>^N4x`|7=+*gZfvH7^*b$axt)0>;IdHN(jUQTBOp?tZ zMmM$2%8~PYd+c`m@pO>d1i)-rS*!GJcUsm}bZAIs;E=vA7@bYJbY*M=AkXo5j4aQZ zRRXV3a?-*O!EUFlMx3+dqVDCe>-wrlj-Im2bZ;|U5*DmeJck5jMK(L^4(F>`QPEK) zl{-!9MT7&)7d(CLlZPG;U9!b=-2@?UHZX_pf9+rfG@1Uac$P(Q_xgLk^T|Ws>c@|l zr``l_YKnNXd`_;*3B)mN$046Z9L;bVqVxqXx|4Dt zzNM0ZR?2BBwP76AMLkKFHJqTpY4YY%f^P074y(E;@|uoL+n~x^2rg`L*g(o7W*({1usFTGc%d^-? z9RZvMA2ghL4H!ZgoLafczxk)zZ#??&-*i8JzJApImGXE0C3p8z;PM;shyP>$xqssy z{V)EppQ3**eqR3OulyqT;eR8TwxGI77htvo>X<+k%z&AeBVa;M3ac_n2emVIcO(8&f5+GQ?i7G* z<{8eK)2UB!%3zf=%_cu~gLW>@_*^un?PR>QYHD&ZtFzBv-W#lkX@mfst=Do?d4`-a zTol%tB#m8hZ_VZU{QP`*w|l@jV-$;w#}xYL#}~8paz;_5VstTh<+}Y4uq{{FATxX@tF`_iOyKmd09Hl|Ibz!iRl%qah&(-Mmdkup@Bsdq$ zShgB6M&2@mIZ_%y*el!TQi-KbO!=BD190SO3%Z~~;H!Uo^08nFSPsD3|6>M#$hYqPn}6v?|H;SiRLgn(8&+p!YR^E389skB+ux2}Plc$uLGSlNI*i}{ zv9)oq@9diweZ464kh%y($+IHbq;iEJz#J71Z+h)5N_0pfmXE!v=1B$+j7Jb{mQ|-t z0HqYkdDM0jK)@)=s0hIJ-3bV^s%9LE<6+csnu~N19d;@ZAkCPn{ZoVh&ey3O=O%xB zbyk*Cr|{4Mk1j4YBKOX-j3=WCTV``Z@?>4J>pFTle)P$u48yRCy$7yOOjN;g< zfFQIbdj0C=qx(0XAHMjPx7V}0-E|**e)s;D-_^s*?$vg*Clq3y@x1iJi?b!Vs_U#N zj*Q)>#`RDG0U&41B70h2|M)wzRh1$~L=p8Ey2Ygs!_1u2%h#{E)_m{v7pIf*YPu?B zjmuZdWfPAy?apF2?x*f`^Um!0hnI^F`1R9sHL9W_-hsSia++`+LG;fbUoV%lei}rR zs`IHh&k4o$`fQ$w(g)^ZoZ7KJb%;U_aW{^FW+0;FqRa%5qnQR(3T#IprvQ>Uz(-H4 zcX^Tgu_9x2H46ZxzhK6a&rYWv1gJIiFd3YM0F#w@#FQM`&#iAJbwRw{%@L}|BQL|EN-{pAOCsq6YrD1gRlPA`t!f? zH~z)1{~bSfy}Jb8-`u@<_>EuvXTX>KBFGlNr^Fvv1+4r)eg6*@|DhlLi8xziAi}X% zXCuQfe8M3&niIz%a zT#z_jR2Qy}~JQJiY3YrOo?5fIFi#Y%8=9sMS>8;fB4V* zfDME5mSreoHH%_i7kQ2cr8z?sV@?T=oC#dcGQouRo^q7e89+!+GOsft@P2oyXUwUX z%@(KQY3Qt+JmUb6(2eTUt11(2gbz0@t+1OU#4yCLZTrBSvyNf%?D3ll4|)Qo|}f;olEggmm&1#8kfR#iMNsP~@dtf+D(K({vx+lJ>AXmMw7&K6$=pKLNLuijhoNImD%r7yC+K`%Ol^`#V<2lF%pu-@k zKNy7BVs`c;SH(FkHdyPZZ3q!!0gv6(4_>Qq*!TPI+>fxIHw}qkk%#Mg*(}cU^J?nH zvffD9;p=DEpEf`6^x`XLB1ag(XHTx%q17(^7t(odGz7ru1hHe_WYlGqReAC1#R0Ow zAjm`^2ahvsy>3s+dz=eA+XxK8)%gXbAO*@HB8bl~npB)i}Bz%qp>5l~#ig zK{||s8upXmq8-#Q>b6ZXqh?Ma)M?KfY*SQyYo{rtyDqxaZ;(doRDCE5p%j9cW;qcI z=Az{7lRq~5v+)<*^t(6pAAWE1Q|O=i`@!=+34Z7s;I}^lzwmAF6Yt<({P+E*{+_?> zU;WMLD?k5>>|4*^{x^!B|K0xy`10QbSOzcydJqVFzc25C~uW(sTR=|NOg2 z>_qUslawN8B*+4wAck=Frsu4nG$SdIRH;CC&=DG`T(a5V9OXp&_;6z|C%0dmhS3z2 z@B^IB=CfHAk!F-)j8X@kR7U#%BN72YoI-FH))%#vR*yy$8OJ_wB??SLd1|H7#;EA6 zNniz!+ub2+QeC9L#lwATy(AzNmu_C4IzMQquq%|(saXiJi>pkgiwh-cpt@&i-@@ka*zH3kY@iaZ`PaZ>x_`I4I6-UVXqXl2Q zkljlVW&yF=+amx@u(LTSKd7_Qc=CiwJ1z3+_GWt^@_I4*_-0$My1vSJAs)7Xud>w- zJwAWuI-gTxOgj$7+nkGe)oAaKW?9CK)41~C4QfhGQFwkiuQAL@etS6VZci587XjoK z*R%JE@_9YGtPm!0l*Oz#^amJ0QBXunAA?c){#ND%<|RChavVITxZ5fK0OrVQlV|vL zchKJ8glER*kDs*1UdbsDeFPk~U0#z!c#QGU)n?lrNeRo6)n%=daKhw_&gx|*Dh;g} zY=2b7+h!voaCK3hZI%G~s>mMhdt=;e!JM`n%o6Q3IS{DU?)d&Q7l z72o<}*ZV^xUCWA~Yiro2uzpbEh zTn8P>9F!H6)=Yzj0iuABhcwmS5k+Y2(`!g_l?R9{sB6XxhZ-{fdQ(2G^J?b3t7q6m z6-cOZ%8+oWDw5nmiN2u#GvdzS{l~2U^!IMIH7+8foQ}%5 zQ0BEmQBE+ptnH`W-Lak*#Ama*tjl_mqsSbxY>-RhFS)zf==n%_s|={9Alzx*zVYk zMiyC;wPdw`0JW(a?O7&_b}F^+NpNwRLqNH`%Buk4j zs&2S-fW9S7q7O7D`{U$&U>H|bW|bW$x!UBxJ6=E+5dMij^@wn^TFtYPstJS8=d^-> z-rOGQBJcZTp$otQ=y@e_p55L`1RZb|Q-}~@9AJzOoy-Km!J-V)9H)HRc$+$% zGlJp%*b@T#lQB*!rQW)Fc~jLkhIR*q$fVJSU0;@^n?h4AnkEO(0hB5fWm4vfw91I| zCW}Ihz3mN-k(}BAfF#}$MHXEg-pKWn#zWY4y&R&JCInE<`1WuZCRa5@7BU23YN$)O zYD(|*tDD0Zr5Pc`c{_BFazgT=;u*`o{m*{apVa<#jt1te`QF`&yU7>>7d5*oQ7KUG z0$VrR?VTO;ypi?lI`cu#&~ZAg%4bkVx)Sw8wfK>9#h|jz*hq6P3Nv-19QAtM$j*<0 z`9EQn5W~J5t+mS9#j0okwPRT=j_JSaU{Kzu$ze*jw>qzw zGj=$7n8-UfC~IB70IDJM2MIHjMyEq>(^4IIhA{}s`QrR+adUrfZNzEe0ZQt!rv1^z zU@0L6%c{z%qTKC!fE{qLC}z$3Qce=^#DX2$-3|Ls5YC;r6Wnf>IS0N?p_@C*M0 z`sqJ~zBwQMRezQK@r!3aULB6$Z~VK!XY`-`lYit-w!gQ0=Uw^U#cTIFU(~A}efH~r z{iBbbEdJ`>{Ab&uiES_CWM~e#@J_3~Rr8{-Bi336pRj*Q@z6^(82~|1B1W^m59KV+ zGu$+Vb7@OFo-9L+$Y@b=6|JU;FZOI!EHk^j4!d0DV;|>o46DVp> zHiEDu5eF#dHGQ~MqTtFJ16@BjXVCqt4*%F6eGdYUDcHW;>v5`P^KlwKeQ{?DxW6Cf zD@LfF6`xroX$(pxBjr75U@Op zm?R65kKq1zS}r&xk7pne8mTX59JsqZa+>+zv~u_RmQYZNGAV;qgkhGRq>);y zd2=?;>-C};je;;1B_W6~Ofkeo&8t~9_PT6XS@Rf>k_roa8c!UP`BIRqnUwa{zx=!t zIi@8zw9`0x!H{l4dUG*w*48$6{nLMu{E@TvZ~CXvPtD)`gY(zrFMRvIRsP_g`Nj|Y$O+%Q7Uy~PJO4ZI$NrZ8 z?l1h({9DIw{md1jkrMFEqemv#vvuQ)-)_gIVT?pGxmkJE%7YvM@Yn^vTo=JR%IR!X zm2-ao`M|I%cysq~8afGFIJp5p$yw-!Y1U+AK^|^(-zx$=<&hu?Q};ET#`e*pl zMi%RuQD~iy1js3gq4M%A88RjGk3g_$RyIZ$G74)z75;<&iucT9_xI^OX)bf?Oz`kx zy|TePe|BcIH7cD6ML`573C-6s04Jx2A!8I}1$Bw*!&Osd1sl6apd=7dRK0k$n+Chz zN}7v+Mnd%1wGo9}kPNZ@Q{B0cRY+=r~C0hAPWr#H6H@B7~rIem6o>-lNw(;5h3S%?gB!D%%Y zS;?IPz|&E>@Rn0EDz$q-fZ#s9`u@%0usBQ)bN-~jVZZ(K^Vf$Qm)mVWTa>Av;#CuK z!o-&4`clP0;eq3z6QdQ?!>V}upOmQ|VqBoEyOzr8_)nZX-YiNOd9D@t>ya3)?<+&j1b>3XydhPx_|Hl8+pZ+udiu#ZLYr((x zzX07te*CA=PtNp%YIm#@E#u@~VU8Tm`gXaB&@|JTXcrx%xt zV0}FkPFqG3E;iZ`pfIb8$5&VGt)zsdn+b7|LE_IA#e7yUl#j}d-C&fQ`gFZZ>-s?w z%#05gXHBvP89SYH&WM|+oD`-oB=U;rpzkyjIzMT3fSn8K=F3YKPS7)0DtVep3GGpRmvt--?#0ak_ zf&fOIWg;V+1)n9kXx5Joz?9szhu-UnWCQ^I`eqkAfDu(qE;64}Xq8oi&PZlQ&<`46 z1Yq)9Xybx+F{Y0EYCc=cm)+473r3J5h)$C_9OT2BW70#^d>E8>fZ`e1YWw25-+QsY z`Ro8b*9{&a1#&d`x+&lmE(_^9>TJGb5aZzEn^%1<}G{f_z_8!O}Y4o|sU@Ql36mvhypdD#2J#9$1Db_yXH>#_n8$hE_HEi#et zssx<^aC0{xC(23$;2iXWmPM9TWgY{>E_pzF)R+Y8Y*VlMV>_!0Dxk3rf(Ro(0q0q= z8zR7+b@fV2gC~q>XAy@<1~0++WjT)O?i*$_-Fnn;Qo&O%pVGm!$0_M z`EUQd|N6hL_OAMHPJZWK-oF3M|HH5ROKtJbEG~SW#A?n zI9LdLgefEceSrJ%*T3??o16Q9f>Cb1oZUa1Y|!%m=aRs{Lo&;bUTreK6hpEP0E zyX9iVSm`6S$$xB(^t-#^{GC}*b8pq-i|fU_v_Mx?c7NLCP zwySl{M6w&Oj1_erVdxL4%;M0R-Dw&pH_PWyxvFYXZD}Cx^9rBB?Z@}himS~tbu!X9 zRx>=tRl#{h;&jSp3kv}+^P=I5LiG0R03aT={q6mJ=qKas(Aw#!`i~yQN%y_me_YM9 z|I2^%;|RoRxqjIHnru&ZyEkrBH7jE_a*$or)#g&4@ikx2gGX=fZ>;DR7$Q_cC8`he z<(F3L>&B#!->uG@)A2xfY?{oY?09O81c#jzIf2}54?QA;V-hDQjaCUSB)K3j-aJ^8 z&>b;Idg2M{3` z_haAoq{22trOm3Ic>vDNW>q1k$*4&$=hO_bJDPx4M;O|qV0;Hf|`;Ke-O9!KlddR-j%Q!x{m5Sv^T zdbXJNz3TdrU}|-kQf8(@@T+F+VCarsu%@5JdO<(>*!!u%6_`DVE(VNBv5k|S#;LO?we9unh#mgaD; zAdMcIZk)!+bB>{b(WbdKSw;nX{bp-{1sG`S*2{Ut%VbF-0btaWbd-u0uq?>+`J+4+ z`=N!UFPSKc8j`?>f3#WTe2#JMaGVaKl7mcuOmN;rT@!v~z|O1>K$Yv_Qe>^VRz4lM7{&r-5b|p@(xWD1e#R-M)ox%vppkzuEfp zI@6P4yZ{V~O#p&GeZR?=ClGO*ECYS3+wD{elFA&D!FE=oYk1eTyPLbCH7|9h4}kin zqWQ&|yF(Eh-5;x>TFsZK5y!-;$i^UfpOFBLdZG$3crpl=A6_lLwi4HZ&w?=_31$Gn zIeyp;$>;6S%TJGaouLSU#YLHO;iUE$V+06|;&hP8nyeOmGMP9;P?phDBvfEAE9yDx zWtS{pk(|2mt%}2Pk@fxQZJv$R%|Z^&q8LSBxS?|goxif?7fZCJWv$2 z_Z_ng9{$s7X=+l*%;-f^GmfW?4?l3acdJ)w8m| z2zl#Mv`kZbuxZ%xs{GyW{m$?G%4a|Q$NwC9^aJ64`fvNkUbO$(pZIZ%@o$RepZ&f6 z!{YgyydYVP+P$^OmB1p3+v7A%(K&ecs$HxrryY(wD}?tl`Aabd06GojV3XXNqGLOy z#3G^U6emAyST1Xox(Ln&IB7Ud3WRh4y5POHCMD`*(KJ>${k9E(0?;W>jV5aE!#MgX z&lrQNP2RWDd(R(Dst+hAort#Cyz;^Fyf~kqJEt(_5qSKqKYZEu76b6&(_wZtpV~o9 z$-6RN5asQ$RoaG<@qTAd`wJ2?7OV=pKxtEDr@Lhqps%1xs=>~(5huQ}n=89hEI_1C_L zOLY9=bo*DoE#25U(kVaOjQf6sWVl+=Jfl`*&z8&%gTF9<>lxbU%<)tUn%?a8%7taQ zBoQ^u+*%bRbRWmv_r7PBIjaip4jd@VZ!R8f}!eW-v-Hx~%62V+^q%we_P9j!;sF8HuDSm=Kw9 zn&3ze0lLr~x{-Da70gLyy z9V~_CLBIE^~)iWD{ z2ZlkkTFfyjEqbdCJLySkUQv<(is7U4GenaXhGN{dnlZRouxW4<6c*~YWp^B0Sgs3% zA!QU1P|wBbL3yJYV*TVE?z_`|8s+GSp-jOT#z9`J7t#B>+sP*Y*b)-Gg&2ZC>5FI8 zFa5P&Y4WRge(Y!e{r}Rh|E*vClKuLR{S&|amw)Zm|GJpjW>!%~q%_BAU<}X7I(a=j z;;1oh3^5%C%lQQ-ESj*GHPR@?pm#uUN+B-tR5VXqKS)LR7_s+nUnv%?v5Zj!Ag>!| zb$2rRy`nrgXiuFD0l*kc>i_~N$FhcTaJM_84FrKAr_1@u$#~qIC<8H}-pTkhUox-b zlgHQNsHQl;+-(*s>!X7P|HL2rnv44Gb(=SY5!TREQD%#}7}QwgDLc+HHqT}xb>YE$ zRmjl~L(23gh6V)a%P~-yQCDeX}TQT-wo3N=ZEd zAFj@3Z(i^>ox(-uJc}G$Kj%pvf{Fzr)@=pq1KV+v_i=S=AC^Fy;mhzxKgr&fIN>LJ>G zv%tZ^``Zb}_*vT(L}06ZS+-jB9oQki;jp3f__{s2sxXo8aen<{%j9h>3LoNP1~>;} zkn>v1ih7)M&=%Q5W{He1=GpzB_1+ODm36GaZG(Wa7fH<6-GiJ7~4*enB1evILk#HGjj5W);I31=#dx|(+=@_$lQ%)y6U-NEf z%9>^wbif#E=S}gY_nvDzdL%Fj7{scYL+q9{+bnC!c-sZ5&Df1v4iQC2#NERIfkdo4 zd9o=>7DL!S^f^H|vcsK<$RipE%&d#nCfgoFak;F2_@}@0pZkyew}1Dyf48dY)z^OT zzxBWS_kQ@3j*9|Q-Vf^hECT-@LW=5H)ErBL0>$>8C8KqD3TDvQO^!# zM1akyY)2(Smh-BHsoxOO3QI%UKyKfhP?1_pA=R5eYuvu;l5Qz#fL&e}kYq->_SH#$ z(cXUd;|Ll=>UZAzCS)*=$C+422a83fveei8;!TfP)Hp$c*B6)P%SFC`N+MTWbvN7f zmzQ~!$w8hz@5f(xrMZ9j%?Gu8(c|&u!MArh8a<)$*_@RPP`p0BEQpr*S&@VRftkZ(nL;nJ2{P!lXAW&ERdtM9@zAMkk_FqIn6N)NefV~g`B)G!Fr!w%VXzEGzyHpZx*%eCnZCkB6TTk z90r3UPE7XwfHDL@><1Mw&?eCoD8}gH2k$;Rwyh5;BFu!?ZU>ZngurT;=X8JQ0W*t5 z4I>|=49IbqT4!S5@ZTI+`g5AAEE95B*R7`ValFX3D^oUBm5VmAr&APRJPZixaPxb&_>N7-&eLq2U(Tr5-~Q%zKYRH6O}jsI5ytIS zLu9El*ZE5HY<+ds=$MPGM?UgQCEwedU|NJkv7YIZAMST!sDyupyig{*x}V(O8Nz%? z7Hh#L_%MajaLPT;XES@+7uhU0eYfpjgmD^BIm@Xw;vI4EQ*++%2;zjS_QBA=j50U27NTWoC zn>_0~KMguslh$BD2}*?4r5{?YpK{DoJ7YClWF?(7h4=1s zlu4&T<8VykAM<~LU87LiaDh2b)wc2Etr{|#2~ytN9;|W@^MgErV2dnhr}Lav z1>5hmN%Aj4S)?p4Gop>(o(|_1)zrxV@%h!VL_$Dg!Y{rJY1rvQZ zji>hhY%wpYET}1mZq2f*;xaF0i+49ho2;A#$kour@(h6UVj-`7^25t7t;T)#(O>?y z(=6`^PIwOEKCVyETn7pFj+Wr2sPDbNxHIw$=ROGtEgAiWi$te^7copN@@ z*4It4$2qcIRmzVx7?XVX)oMkYi9Bx#ksB*TUQr4+bH3g*l+a;<-YIK!zZ+sQ7nNVU zzMUo`CqG{nT!f5+<9?V9YF5?l(WL7Txd4;TQYo3p6(#3QQD*fhVL9Uj>*Onrpsup6 z^AQL&g-4H87L23QE~dK_BzDn~=##OG#;WF8Yh|64Lvj#S!dmy{Wsf0_0oSEKB- zgak4{yPcB1{^o8p)v6E~?QVww&NEs@07A>N>HIYX={B!NNaD?Wa9eXC5unAR8Gunw=CD;PqX3#t z>b7&7Vn0RT0}(_ULoggCdFVT3d<0Q@WMw!!bO@!eKcG~X;RQ}-^wB(jetl{O4HVA9 zX1O#LIH0Z8%lRS&R+M?<&1k1Vhom6G-usL7^7?YEoT|$7`QP0Qi&a(>pg))*Ym}d~ z1P~DC{MmUOydwmG2xsf;w3T|2RaQF(U*8;zwEZCa(8n;M=(~PcHkBac{%-Pb-?L-} z2r#7WAV@9ei(E~>d9+xU-rBO_DpeG6{1boTz3BZkjIuLwY>kcg4<{XLgs33pEXfj* z@T}W)Oa-yM*YYzRBn6c+@#TwK3`3Ix;Ms0x-#=d*qd`?xt};R+0nu7N4Eo_sH=M>o zpp27YkTDQ}mf}IF*WZ8jrhj?6i*HcuvQsI=^R%~_TUG@Ivy0NIDSV#X^#Jp}Q|)#Yr) zlyR)65;>1z^70{jzRH`rY>LHcNF<|HYCLrj1w`}hzD0lpkJe{ZT`?HFo{Sw`hPmv6 zwic6A_X<8KUH}NGtC6$yYGo{>oEp{VBAW(HFg4NvoY`dMLU|ceoQ(XuuF`&GJ#-FH z#~95EVyzpb3djUGk%BTo+M_z`mEd`zz=Pkn({MC`5QlU$nf-hiK8I8QsgKZ<<%Vh{ zt9fo^Z0e>ga$_V!P%r|MXM^^=rW|30_J_$MdK^@Ufo80GGfls9_vZ6GEt+!9G3C-2 zqx{&aqUOe@L7%N4CFETdRIEzzzWR!r1sFW>|# z1>bCs7>HTbc;$*RDe>(<{AXo2_!qzP$*A!4;}4)D`~3(q0>V6V@aa5fwlx6(QF?*S z@>*$idf0jF&R6rhZhz`Pv#4g*IW8FRZYYc9n^&u6XN%2dv1&%yANtWDTZn8nFM|VN zg4G!bSm&c?DoP``UX|6{EntS0>|u9vd?k&0Gw2<*O?AEAd}Cfcam_`wy;X=|Yw{~OzLkH=P$vLW`yY^SEoZ$JM6Sn3Eqzd9R^10&$!S~ z&KYOJ=*G@ys{xG7O^(|27b-&qL4aB@~zTu^Tv zgmJW~O-XsObqEgMf9KuXn}_4EhZG@#9_~9z@od2#ZiXV&^^k-EFUe}LxW8+W0N&U| zUBr--9u|e5UDs-<-QrwiC8`Si-m|Bpo~&0sfc;Lc&jm)w)IHD6Y_#5aV}R1`@~WHpZSv?rko)Kkp<5)k%`%&+J4c#`RyBY96$QCt-Pa@ z&Dgp=h1c88w?~Hp7M#>q;t9quqN4^D$0!|YnsK|s%c!-v-wv%DF=fGnN>oL~MTVTV zy>{|y#>%7YKfQAe z7RuQgZ88d@SJ?-Tmfu`0-=8U^LvZ`!kowoG1!dSI&nGiZPE%LTNXiK#lWH9M&>qJ`lko87;lzay zgxWrsba$m(xGCAI7Y~kxQ`-@kw|x&u5k0KR1Yu$v)g)<|u)Jk8`{2Fj`*u&WIzn5f zu#rV*Hw(V3iXxju$Sn-Ao%E=rmf0*DCyfE2m{+xUbhU`Vz3l@#hNC1 zKT_a5!F9~0*^24WMvjGGR)=A-37;*q-L~8AdwFv1Gz5~{&*B#!jR+0h@m}wvlRnGA z_RuaiHOJZ2`B{-w(hf1L$7#~8vm7L8cC429kg~KOa++l<(F`(O>6AcG!=}z0z@ygA z#O3qFt-t8q%*h#f}px-Fr}IBn^{!~!RUOjW;pdI+Hsr=3IL}5!@R8UH~#Q46@)P_=6UjG z?k4JhH_n_okeAQj{R5Ye-&gV;nIjI>%ahExD9*4I{&ZAr>o7ulFa`~BR$XnDb-{Z( zqFK_zSZ%EgW~cgJ{Q_^;{?pyvU;C|blx@J1L5G)}QtIT7kLGN%j@^`3@6F!Dad5JH z40x3<)|Z^~i@abp-I2D)33XS%>GGY$;_0IN+R_T5f>%0H0m~BP6dd-wKsXawx3}qn zh)Kf`AQ;*)QO=J^Em?H-<(-;m+2&b=bA+Ll=X~?y&t|KQ;Q9H*Y_iknlna7q?Y={wqep15} zj`wPkp{S{qX6n62ZB{p>4tmr&5YM~)=x~GtI_)}XRrGHj_LyJ~EiX&in&XS3$8okQ z_XqV>EkSG|>;niIVBoP?ujYD+gPbC;DdsO`Qo4wv_sVL}^~zXr_DFC77=>SY@5!#) z5rU;soQe4&T?jlYR?SA+F?dWkiQZpcHOZ4{-d>F;_6Mm)1wi=x=8oZFwOFR_|MlQ* zzCWtU1}F!GVfDDlL$IxGy+y}yq%7_Sg=H5hmpX_t%Sz5!6r4j4+T(CKbbU7hP^#bh z_Q$V}^v)G504z&uvGD+tor@fuf-ND%^{m=%x48(-y!=1SZrj@d(;!SvEjT{Oxc_j-NNXsNoBTWyvxOxh;>U&=*Hs?b>w5yhv|s1qjR2*jLY zg2L6s^=g@I_s8(|3>&6Ym&dGCYqjMd%+nws@aDc|?5 z%1FKDbwQFD?rT4JQ8i_VpuLst%~AjEt^c)$`{N}0^6BEq?)H~%Za)3p&yQ^%bCP$d zea{bDi&)6?G#8bavh~%)JmR@{?Y;AMq{`97tXkJF(BJ!KzvKJy^&55f(LuN~RIGO9 z=Al!uLpYLrL(eaZO2cl#2HLRirSrphbbHk_*i7y1zJDdVk8THNNCoRS8U7(zf3qnc z2}04lYFrFgmy04JeLHnWxmfa)eZNkM5)a%odV;x0-Ml;mo7L?4TbJD@d!|i7lF3wk zYh%|;%!tvhccT!_y0PuLS(7bl-koB5oPsq>KnT-YQCH&iwqwk#H+A2-a+wLvFosgu z`C>UK`*45cj2ma2_4}^R3P>TF&l(*9Pz@z4Vm+isl~*+Vs&_fBCan=lMWLMYSy36~ zii$U>&CQHPUGFBXjB*GgHj+2L^=5&dzxv{n$6tRuj3bEg=GBO%vhxD zexw2$t+K=&h0k9<=%Aw$(rOP01hm`tf`z=Q4~L^xHg6D1zs}uUoSon79#9UfQHf)k^J#FS3|EilTKNz|vPb3F&C5Mw3_xJCS8~$9V1O3&A|T)` z&GFJiHTFYtJ{0qd**fDaG3(AW4NKi;1e>agHsm>*ZR%-IguvM<2N3H?kqk~#QtUNz z79q6&8mqgb8z++xXl%RQU_yhp0`TCxb%||gO8l@(+5#qsHg2tpDXy{*laU=*Iz>)Kr z*8cZFyX9=b=1^+k*qPJDZO06R^*f8=FO814?s>y3b*gZd6Va&Z1=vL^XRppOeZ!a$mI5?6lL>yMOoCTG@|EKRpcoQ z@X`@%sDPOIEQOA6($dPVoMAu`x$x#?k01#i%x8s)w(ZpED7{MG01?Pr5+BU;vC7dU z2?&G zITD9tPawzLXtJUxn#?#hxa!v6^Sa7y(+S%sF1aeQX(fu3DHx$y=i$t3B&vS;6emG zrF0kpHR__w>xTAf3>f04&);SH>E_ez$G>%37W1NJ#=Uade)roSoyJ}0HSrJ#mlc5l zQKD?U0qZ%L!v-zD$oa#=@aExr3LR?Tg5`@xS7m{#FQe)#tLFLk`+z%6-F@5MeEf1J z$D~vkwURPyw~}Lb!OPr=v&B_`>6tJ990QCn&uxIdzYU?S-;<}5^C)GW_=Dp`-VtVxy;JtE+-$H``lAob487P*feQ_LA{migG(U{uZ-hS}}y z>2#W=UOVCm(-DkQFA)Wsx^xEIyqOSiASSX*jfP+}DLcq zUcI_Mwc{Ywv;}T|+`c|Myqd@zv&Zq{m;39>O1H1+sP&Coe(Ai)XBdD*Qw?gQ6hZ(9 z!Wrd^ku0a86mksSL1RPPjg({DLHD_<@N?&PKEmc|ZjzSI-Q7-Efia7tF^7ZBIDwX^ zK@*OgHF=hNWcR1jq;(<$fCW&bwQV$Vr_Rs6WyXi?(IG}a75bx@5GVk9a zQ}eVbpYYX1L2CkfPLU21Msup2fgD9>v@e4c=d7!*2N^$ zc`I47o+bq1FrRUrWrv+fwMh`_MvT(bv+{5l+mjMm1_9LCj79>O#I03Uc>rjr7~uh` z{?v2M7tIDoRIpNTY^*5?>^&5MR9TvpvWhb_LU2r%ry)5~sSO32n&TgTo>cm6 zr;fw4dHRI-Pk7|+RxUB0pRG3Q1;&&F(FnQ}#d1Y^>8p|B2)5(Fjj|y`-~oX01jzG0 z^(=ps8wz+ChAuh8uHRp}FGx`NaqRXFcZ>>1qcKzN1I6Q&I9pX0;%Z*aigA!xd2Y3v zh88X#2e~M&?DDIR9)0y9f}loU)Pf-wsHOsoygYU3bO!;-Q7zZAQTE5K&+BYcEigd) zeW&cWD01NA{cY=LnAC7MjLxB1Ef_}gb>2SctLr7FUIsNuHLvoE^9AGHgItI_07Wp% z^Ndk0+(z%UzS^j?qcp!yMFh^hGK(>Dl06v^Xfn~WoxtY&sNNr723^wdhufd>`? zu8ajS@eC%~$5&TcM#=;eAXq6_(f8B#ehgC28`1SsrXOWy{^mQsy*pZd3Xw?Y^!Zml zQN zn=d}U*}d2=pDpr2m?4~Bu8N#$tx$T{1Va`rJRCW`wdU@_zx3tBC11?*FTMNTL7s*;CLq@J zs(sbxs|H5!`qy8X-FXLuwHzYP z^N=VRN0ERaQi5z+14Y-Xi}P8;CML^_t@DgvWR=A+DM|ApH9)n|$uAfzR71JQ0zyXl z+c%w$kY!?C<-;UF0Nz4?-R@pm?{G5UOSmuUx z^P(QdR;#XemS?HZ`|a zrswhD#Y5~2t72I|VCY$0G%LHVi=ryD@b^1)dvi0oSI7>)<@v>W^K@3e7iLczh$-Q8 z9Hl53AYr!~ary|}`mK`T-)I%eir8TLw>d#Z*?2O$+a4D<7|R(+MSY_okIA=#;FsQg z4gol{CoOHWsJdS64#RB8gK;Rbc~jgT_lU==!W?BfgbBnpA&CTtuYe(awda*mb>c04RufHefc|3IP`tbs_P8hjfoZr6Op1*U&c{a4; z*}6`Y41#h}6e9|0Az0pUmR|3urnK%WrLl|bj^g7cKU@ zlQD6zPE3q5aMfH)c2HAbTqtSQXC-^yx5NI&3-i*nC7E^P==wOxg0r+U^T1*od`jGUB6qF73NmD{zygFC~IZvitsZuhT zfI*R!S%CmxFk_VC_a3kGSd=9H>Slh}Z6W2}%T!2C=~lKK2RVQp^B0v65KJ9Vt=w!x zULzzRs=(FHuIG>DFv}5y&5Zjv8kE{7ITsXhIY|h^`n^)M5lT{WvdJsN?RUQDpP)ub zC5Q==pr}!|TmgS1JTV<1kFdC7QHp8jr*6ON}Y+J9FIk)hu@dsEc~BtbO7^ zLQ!zWn1CYZq8}B>BBSXd3L#droH1-B4FSQ}7_0Ib!c@3`+J1-;_9sm!D&~B5I0A(8 zB5P>%`qdGUR5;kos-ZUz+r7ln7~A!BR#lv$s%9_%Ba?eSrNi7s@6Olj)uPc>LQy6; zG0+4Ho}ooeH_J+}%s66PG)j-{B!^U+9F=weSmS0@Nsw+|o{F8H$ljU!<5xFV3y(2z z1XotSK!^2gQLmOH#@nMTvS=sLT+RSU9aRRhVVoXb4<*NpqUit&{baZ^{b?8u6MySC zd~$srji#&sOzUa9+4m?Tv;hSUkV2eMt6kq(9{}SSA*dVF;W&(~EjcyNc}2}9>i2%- zX1y-&Z@+u<`VQ;BN>}3i{5(`euA;lW|AdoRKEIs5SC$u)aIBLh77&3ZC;Qe?$~20g zl_-m9I6^b0Zu{-;eE!9o2SQNe@r78u;T3ePx+($Ozx8=40%;V@DMo zU=*4H#bq#3+4GA6hHyMg=bN$}IwAmPaJ87PmNRV?76nRnkjR(-I8+&0HbtHl!ExpM zaO#|vTIzslh_UZw&NBpYQ)eQ>7y>mIGo%~UOff`e{6MR-NRc&Srv#US$46pein!`b!dL{CZ<+eSw?S9;>XKsRO49-QH zh=e4!FnOj*=Ej68=B$3=OGG1)&Ho<1v+#+WAC8jdg;;7ypF=LE1|N!~yrXoAc!8kJ@h zlHRrnO``1)h?1L0-M$%$9F;Zc20f)<0&ql*w`$Ur4=8% zdAOIOvH>jD&CQz=q_J*TyVW*%U&zVy5c}0S%{dx4=#95wu{e*BQig4uyh`eke(=SL zA_BXIF8=(({>8q#*~9qpXWjI$kJS2SOUwuwB4h;iQ#Yqd2q=~NJhu_Sq<(%Q@nwdi z3O?TKP9f4olcd^*!wG&A-Tn8h!XJOJt3_bA*xo1%Y)-*(*iJT_Y#0H`l;z7pYLw55 z`62^AH}g_!b2{|fhtoJn2O#?5)knW``~9DPIFGoW#(X_%a362v^^>Q@A&%KesF0q?#rKga{b|4sc5Z9tu=3JQDrPQA?ksrdaF{TD9oMXVxf-q)!kvf$mfD@2wAN! zc0@0-QuX)Eh8Xa0M3>yy)*_qK7Za$hiQnE)4o@apDh?8Nqr3C@~mo)!*DQFLHpE=53k=G zj>oZ=LskLjhpE@9Hy3A1Ys}D@#Q6sUNx<(uuf!&o&b;h*+ zi43^`dhl|8c=BEaoT8V-vmakCpA>|b#@T?TjKj{hX{akX@GJ$YlO!bKS%NJgphexYO?beyYnE&xBSc#%Og=T05&xoyItFobiG?i&UGIwfoy1ASbw>Ha|aK z&gy!UgUG1hgfUj)GDd(2$g5Ni>Ux#Er6Qw`R_d%OgPTI|&5{wGD+9GrW9Nr<$|@#m zaySi`(wvJ7WcyuDNdg(qS513pANGgQOK*@3&IEvI;S6e;`m>+^XhQ4vzxv18yIU*g zpS|u@bq1HP@73V-sN==v`eI(93VHIlJx>1hsW`83g;w9JqnG>B)J-Nt90y<3tbg<1 zKb`{A1C}pd9l3Ci&ae{o74dd9R&}#ntnyiToW_e{Ay4iwPS3yk$l7Fyot5juVdziF z4t~ANyE|0MC$B!aXQ;Hs0xB*kr%Y44LM1+RhdbF7j1JO#@WC0WaQ*{j^_AD)d0sV~uGp3l+H zI;mX3fI&F)Q+sj{leU-sUT2LpE=;HC?#0Li(HgBEmD&ayT)RtlvQ#%AUP^02%sAta zb%%-4_!dGy?f!J?M?gZ7g2Q-mwrL-RWHSrlbeuNpydNYIp)BxbwYWUHR8AtnJ=TTb zLgW$Jsz94r#b_#gjLLM!4n%8|R3WJ%+g7e-GlKAHRn6)g#HdDNrQ;Nu0jHu23IX_F z7+#%uGswm4?44)N%x+(v<-k&(U2c#4@zs8Mt%9T(6_ADMn^|?nuHRn}lrGiZj}rzx z5(bpkdWubAK}ZO=zs|zzbzkQG!4=y(@iqVNS^U_=gVc4Sj!k=49RV7-0@&2D)NGh zEWv)KX<`f&JRvU5q*4y!$Ok2I6oD`J!aCodju+R(qz#0zJ*u3s6nbNn)dV^gT+C<5 zAv2}-E*KCaj)zWa6;pA^VxD0=>f>I`mpLIp8b2lY4^TkwzUba6iIX%dM9>?z9r`3m z03I=jNG3ZiUv+PO@goptgrG^c!(irF$x3e11Dj?}P*I!}O^$9MC6mwf=_Sg{2Y>E^ z*#*CPG<){s$!^!u3T9>g^0!|5-`rZ?^sgQU`09&&fC{bV^l?GA5>O!=NLYvv`OAmX zCl3STsZBcjkaaHyki;;Cb9}pPwFON!Ynr0p5BQ<&Z@z0(erWrg1wZ0tC5~2d5G{iH zt>bl^BjjDIpHlKpkw#TP)r?FIPE&DS$nV10i5u&LKg;1A%5~+Gmkpvi>zF%9-`3=Ckn>H&4o& zSEu!(1@KAXHBPatkPlAk1c`D=y1mw;1q=ZYlrkp91lc0QGR!cxNi_MqnTQY)?DNCaBUX3ho^eXx!q%y}JCg@Fd>^yp8Wu4>*anGl#E{=xf? z4&9LuJS1QwuFeXCgVlb$xQrl?9@azrhkxS3pxlf;(9!am$PrFsoQ8WV_XKym;vf9U z%la9A`r&3Vug6YhIWSXbmi6x82zkULS^B^6;RnZVudF8}^IDZv1rUi~e0sfH&I=4n z6LCPnNoz?EPxJbDP8LMTc(GXq5T86*<$_G3>JD-_XB6@FLFwQScE&_b3#AQ8J@AMK zn9XNZRT>GrQzXV&vHs%ayLFI)V3D+5_8zKlXEtajxfL4 zoK<-_>XCC&Cx2dHqj2)2OuW$*)QH@V1+XGbos7p$KB!X zxSMYJhq3Lj8J^cq7mHQdRGj24V(lq_7xi;?`GeQ9dG3^zqiZT0vCT?sB^&RL_4yB7 ztiN)+`R&^+ONV`f?oO$1HMlUt#brTMz%rC-cjSOv{>U6I(B-2VMfC8|-j|`D((qsu zs4_U*?55v3jxltjzS*B1Zy-SB*-C8PZeF8iahB)&Mn25=HC~}7f8;v5Y}!@@2b+1d zTIL8lC+%?5RnF{)(woLYfGOqCS_SXk0_FTGKla}5{?hAr&#M==<9qMTNCqGOsY@}d zFwMJ8Utc9>zKMo2T;+N2DNx5ii#+2wWH}ji=-(XIb#r_;iTT|13J4crEX%xP^5BGP0_S##XjW&BFCJr( zpjMDs;B8&jTx9qM*Yi~Mp3OA&UU2s05r`#L5A{2n^*5e9`k_lM5{Uljavg#(XiQXn zmXCv-q!I#I87bk>o57Bv6pN~{3J*%ACIMw-(F}b^XJAy*sP;R_8JVrK<)#SQT`bqD zRn^MYq-UQ*k*hTg76eR})tR(CMx0Uxqg|hsWx=I%m|_5e)@nRWnZN*%PhZ{)gX%h+ z5`!YD7-uF5eByrv*d=06dJcnDZf7+AId}cmKKXgQ4;2_`NSa1tw950P&#vRS=D9R=jFv z(&yY$7N(oapMLiAr_b{O&FlKn^~F&gRVy*c&)%88_{}%|_x6W7r*H8-zBn8K=j5s; z!GTi(N><1p^K5><9Y4Kmv!cn)T=|4Au5$$ZvZGA|ffWK{y4 z74{woj^?YFXv(so=u^ z0M(KncLq^pjQ0pk-t=8Mh7Px#s7ua~8FknB#j*%NsRURj{Q-<V)1W;r#f1MEGB zAVQu~3Zv2P{db?IpNVlm6cNh$!FubnoOH(tKtv!MbPuUN+pH15+ii!hKPXv|3unC? zF(?XF;5Au&Yu#Km^UKCa9YR=a>SWorN%_o*MrkL`CI|$E*$3}DJ@p3-g2+>ygs~hT z5X1ER$(pl_k*d`uCRRqDb_2^17Ie~*Le`WOq3G&rjzHAPOoLj?7>uFc2OHl4Ne&Pw z0P_`v zt*Z)t>ZNgdvCM;ZAw!%I@4V8ErvW%?kHh`$ls>g&kaY4sm3wb~%d;W>&ToBzSaZH9 z`t29A*IAWQ%nHtH&Q}Y9223sNRiLh?nEG|~>RF#Xesj?VCo?|(L zs$$(ZU>;MadAX|VOj^UL45tdEpn`MeFV}URj67Dj4}Lnwymxxm-YFQ>`wPhExc?Md}cH*DE=CyU+rMLu@Q zK~z-2*|#RR0B6glJ5Aach=7slG*{O6;OczF1#nvd$nS3VMVV2WuV-^g7(v8& zTh%<#t^qVvsiZARme={|G{G2)DxotrIhZ}pBf$WYP}K}z>H*eD@9(X3PUL7x5O08( zA{1#L&N%%3wH)+u)ES7?#m`>nkBa6x_z2sRMHHpdVa@wq9u9iw-TqG1tF)u{dsWtD z-5?*lwsBHE39K}`zd4~Cg0%X^Q9BnS6D*}h5R{_6I9nXLodaH*NQjuEO#=!DQ|s4f zwHk-P%Bv_rde$BEy5~CZm$~ ze%^>IQi6l$tNEq#5&$5wT#zuUMKdpkP9j7SzoN%suj`t|fZyCd?Dm74eB0}04uyz0 zg}dF5QNaKoS{p)y$t0$o2U;o^Tt8{XK~op^uT(xOdB!l-m|%?H_P!gALz$uDag30Z z{;B@xH@@@5!~S(&kJ_SPR^sK83pjO+xai=UwOC4hIEKXfKb(4!HTB~>U@!=={Nd}z z&!2H2maBR+W0#Z@AY-Dc3O%`;7Kk{A9pd5P_3iY~@!GRkp0Dv{g^GFc#mC+K_?-#| zn5{2<@-o|mYMI@=QCZ2QGmyn`(pmxULBAjFzkM>Y$iVjXu4REwF1hv^FR$Es)y(Jl z;Bpq`OK|%9(I5WO*@rWR;gid&tE=8 z=qY*+11^g>M#Lf$j6WVU%HaCC8}1lp-Wj%JpH?LmLEF%11~SXN?dLW6ub&KJ9T22c45S7xdzC zHM*&jG9q84A|dnAGZ+btKDe?b<0Mz}i_(WRbB2r3n(6j#H(QG&y64%WtBY=I9fW{E!C>lAr8eET zS(M9p6GJ9r1PJI}9qtAXY_{P2WEf_Px(+D5_wE@+P>x1RUFL)m*zXhL5+}7afn^BT@+*s_ zIvybQotZK*>qqsfSLbCuXJY$myn0fSCX&nI?1RSIFh%X7qQv)Vs4G@vbn2lTCYaDx z%acnuaz<4N!3%O$G@Qp#`AP|=lUs=s06)BZ_Tw8ZeFULPtWV^GXCm_ePAw;xDx+Zq z%^_aq7u(Y$$4(mS$LXr%S7-0n&ljU?Gg8oELC-|<<<0Vfw_dABkppU))Q%?;rID^ai z!WifD(BzALRBG~XE84KNqqB|>rIf-V&IjwKi@s%2U@btIw20zmAK4{ceMRaS3i3qgwz zY>c6qv6NOb(ljOh>3{W)m8*KzEH5q=K3a=)FI7|Kf@h2qJ6dQV%e)6Fb&e6_v_2dU zYV0>xLK%ZGy1yMzOxksvJdM~*SayL|kuY*Nm{f{~(S|T8GYsCSaQ9}a7Nr^0)VicR zSkefBwb9tX34@03?|Yjh&>_0ek7kfIFB1`hQneL6zCQCnCIC9%tjKQfI*4JGA=$Ys z7gkRiC`i%8a&0x(ZchQ3Ji%C*F<1weBnmD}qt?l^o1a}}2!xEY$Jb}4>FA@kPIHni zS4CD}CBb@eO-OPgU`(Z!XUk%-E_B)tAONXtFt%C`J>&F~m$xp)hR>S1E^Bi4*>5lHj?ah-7CJ=Tyl+N6jeNFh;^&<-4O{>TZ2(W-wFTb+B{L$;UWL;W`oXD8S zW5&VMOL@|ZdEFmuKUzv*qTw*^PDwB{YO|Q<;+#HwaoD%rY&LJMGml;MLkscl#cH_@ zo?KqfCaXrP5s948R8$=;$K>s}WHE)Tq|;}nJMHoYHZ;3B167?5X1aax0R{&7`GDXc z9-l3~yy9~pD!hBpm?3Q)WUw7&-+H6N(EGe1YSew3Jnm^Tus(Re2{tkgCj~f!FiB{1 z@IFMw3B$;0_wGASCfN^if|M8whe@O4^>pniUHd)+PfS^6Im>s477`GQBe-xbk_-jl z#w3Zvi>nMxu4c75jvyK|gz~zuUSWV(+R$M)$Zn9sXiwcVUvS1fj(%t*^`ywl?x?l# z5J49W1aRy}H5qAao+Hk%o{%=Mn&*^;WXdBr1b;lp5I6-zRuRFd0!~>)FcORk&Z71h z21)^dLFCvN%|&%;yP<6#J)Td=YYn$|J)uxd0sq*a{GiuEUL*>3*B=Ohn^~?VxZ5e{ zH3)%bNKUrO`6SK0Q}dZf&3T8*1t*vw3?^x3^BKnE_06^@m~+t>HOWLFXBlhq#;3du z5i_2XDqwe%->qjLs5_{6D7+EE+9(OPd&@!n6B*kS(z2oq)XgyE@#KX zAwWBy=OnA7iPq_{3tcOzz=+4LlYgDYnD}{=u^%B((O`GTO3exR6tSVR^XA)CblU~ql8Kp-TIqIDOSS-UfGa7YAe9Pn%yOjDE=-t?+Y=$EE>;)wb;0>$R5Ia~ zNnKGeK?&xRHtS*^H-)o!Y)`@Zv)NVOsc}@YQxW5% zYOS$#1uzBy`(=|sfWG*=qsU|62?crH2nGeGpT53XEc2>JEz{*i>epZ#53S7d4FBLC zJ)f0?LU8x`lx$d#wZ-NQ%#@dn@kNe)8* zvX3l}0f5uqBwIsB7NFy4?0c&fe0bB7jAIn1lZ1#ivz*ZsDFz53z{K;1oAhqr3`7?u zXUmj?T~yLA4g>TcBB{~} zqpWFaarKR}`;YGtj`s)i?gwj}LHgBv`GZ$kF{dbBttvpR0YN#vsH#N&Xh&RX)gcU$ zT*C(+z$rDJ^?Y4e=k;XA-gu7-!EgrCG-zlsL*wX9M-u=5m`qmh_u6}W_o71-Ckl6R zgl1WeoO2lCX|e=UJ^AfE=_j1=ZLb21j8T%@!Ju#DlgDd74PL|3ixz1dD%Q0z?j4!u zR-22*RaFpg!~5?%KK7>oT)OuFTrNwVAvxG)zMPkfNevh=M3RnieO9G~tFy*g?=2uo zww7Y3oo|O>e;6Zxr_;FJ6qI=w!)ZT3g9OXElMX%-id{4q(c!HZZc+wgkY!X&*hf^< i83Y=qUNv#v{vQDd5?!>&%R(Li0000. +# This is only added to make the items more visible to avoid confusion, but you will no longer see the default inventory images for these items. When you want to test the default inventory image of drawtypes, this should be turned off. +testnodes_show_fallback_image (Use fallback inventory images) bool false From b3c79906d4b63a2a1a296b6aad6657e86619b300 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sun, 24 May 2020 14:46:50 +0100 Subject: [PATCH 230/424] Add engine version string to ContentDB API request (#9890) --- builtin/mainmenu/dlg_contentstore.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/builtin/mainmenu/dlg_contentstore.lua b/builtin/mainmenu/dlg_contentstore.lua index ce5c061c6..3f01d4474 100644 --- a/builtin/mainmenu/dlg_contentstore.lua +++ b/builtin/mainmenu/dlg_contentstore.lua @@ -198,10 +198,11 @@ function store.load() assert(core.create_dir(tmpdir)) - local base_url = core.settings:get("contentdb_url") + local version = core.get_version() + local base_url = core.settings:get("contentdb_url") local url = base_url .. "/api/packages/?type=mod&type=game&type=txp&protocol_version=" .. - core.get_max_supp_proto() + core.get_max_supp_proto() .. "&engine_version=" .. version.string for _, item in pairs(core.settings:get("contentdb_flag_blacklist"):split(",")) do item = item:trim() From 212a1123e0fd930faf2467b09761815b849efcaf Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sun, 24 May 2020 15:31:06 +0100 Subject: [PATCH 231/424] Fix build on FreeBSD, broken since open_url --- src/porting.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/porting.cpp b/src/porting.cpp index 29af62f7d..d902d3737 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -28,6 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) #include #include + extern char **environ; #elif defined(_WIN32) #include #include From 5311a275235d2132443643199330953c877b794a Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Mon, 25 May 2020 19:10:23 +0200 Subject: [PATCH 232/424] Silence GCC warning in mapblock_mesh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes following warning: warning: ‘waving’ may be used uninitialized in this function [-Wmaybe-uninitialized] --- src/client/mapblock_mesh.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/mapblock_mesh.cpp b/src/client/mapblock_mesh.cpp index 0a1619b3f..1020e35f5 100644 --- a/src/client/mapblock_mesh.cpp +++ b/src/client/mapblock_mesh.cpp @@ -888,7 +888,7 @@ static void updateFastFaceRow( v3s16 p_corrected; v3s16 face_dir_corrected; u16 lights[4] = {0, 0, 0, 0}; - u8 waving; + u8 waving = 0; TileSpec tile; // Get info of first tile From b546e8938d41aa9e3101fb9d4d5b02924ed73b60 Mon Sep 17 00:00:00 2001 From: Paramat Date: Mon, 25 May 2020 21:11:57 +0100 Subject: [PATCH 233/424] L-System trees: Remove hardcoded use of 'mapgen_dirt' alias (#9931) Games often and increasingly do not use this mapgen alias, as it is only required for Mapgen V6. Such games were triggering the recently added error message. Even if this mapgen alias was defined, dirt nodes placed under a wide trunk were inconsistent with biomes that do not use dirt surface nodes. Place trunk nodes below a wide trunk instead of 'mapgen_dirt'. On sloping ground, the trunk then extends down to the surface, instead of the surface rising up to meet the trunk. This looks more natural and does not alter the terrain. --- src/mapgen/treegen.cpp | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/mapgen/treegen.cpp b/src/mapgen/treegen.cpp index d538e15b4..e7e30c880 100644 --- a/src/mapgen/treegen.cpp +++ b/src/mapgen/treegen.cpp @@ -148,10 +148,6 @@ treegen::error spawn_ltree(ServerMap *map, v3s16 p0, treegen::error make_ltree(MMVManip &vmanip, v3s16 p0, const NodeDefManager *ndef, TreeDef tree_definition) { - MapNode dirtnode(ndef->getId("mapgen_dirt")); - if (dirtnode == CONTENT_IGNORE) - errorstream << "Treegen (make_ltree): Mapgen alias 'mapgen_dirt' is invalid!" << std::endl; - s32 seed; if (tree_definition.explicit_seed) seed = tree_definition.seed + 14002; @@ -229,43 +225,43 @@ treegen::error make_ltree(MMVManip &vmanip, v3s16 p0, axiom = temp; } - //make sure tree is not floating in the air + // Add trunk nodes below a wide trunk to avoid gaps when tree is on sloping ground if (tree_definition.trunk_type == "double") { - tree_node_placement( + tree_trunk_placement( vmanip, v3f(position.X + 1, position.Y - 1, position.Z), - dirtnode + tree_definition ); - tree_node_placement( + tree_trunk_placement( vmanip, v3f(position.X, position.Y - 1, position.Z + 1), - dirtnode + tree_definition ); - tree_node_placement( + tree_trunk_placement( vmanip, v3f(position.X + 1, position.Y - 1, position.Z + 1), - dirtnode + tree_definition ); } else if (tree_definition.trunk_type == "crossed") { - tree_node_placement( + tree_trunk_placement( vmanip, v3f(position.X + 1, position.Y - 1, position.Z), - dirtnode + tree_definition ); - tree_node_placement( + tree_trunk_placement( vmanip, v3f(position.X - 1, position.Y - 1, position.Z), - dirtnode + tree_definition ); - tree_node_placement( + tree_trunk_placement( vmanip, v3f(position.X, position.Y - 1, position.Z + 1), - dirtnode + tree_definition ); - tree_node_placement( + tree_trunk_placement( vmanip, v3f(position.X, position.Y - 1, position.Z - 1), - dirtnode + tree_definition ); } @@ -372,7 +368,7 @@ treegen::error make_ltree(MMVManip &vmanip, v3s16 p0, !tree_definition.thin_branches)) { tree_trunk_placement( vmanip, - v3f(position.X +1 , position.Y, position.Z), + v3f(position.X + 1, position.Y, position.Z), tree_definition ); tree_trunk_placement( From 083b285f4319c470f307f0b52f03a2fb68facd38 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 26 May 2020 00:17:52 +0200 Subject: [PATCH 234/424] =?UTF-8?q?Rename=20=E2=80=9CMinimal=20development?= =?UTF-8?q?=20test=E2=80=9D=20to=20=E2=80=9CDevelopment=20Test=E2=80=9D=20?= =?UTF-8?q?(#9928)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 6 +++--- README.md | 2 +- builtin/mainmenu/dlg_create_world.lua | 12 ++++++------ doc/lua_api.txt | 2 +- games/devtest/LICENSE.txt | 4 ++++ games/{minimal => devtest}/README.md | 2 +- games/{minimal => devtest}/game.conf | 2 +- games/{minimal => devtest}/menu/background.png | Bin games/devtest/menu/header.png | Bin 0 -> 404 bytes games/{minimal => devtest}/menu/icon.png | Bin .../{minimal => devtest}/mods/basenodes/init.lua | 0 .../{minimal => devtest}/mods/basenodes/mod.conf | 0 .../textures/basenodes_dirt_with_grass_bottom.png | Bin .../textures/basenodes_dirt_with_snow.png | Bin .../textures/basenodes_dirt_with_snow_bottom.png | Bin .../basenodes/textures/basenodes_snow_sheet.png | Bin .../mods/basenodes/textures/default_apple.png | Bin .../mods/basenodes/textures/default_cobble.png | Bin .../basenodes/textures/default_desert_sand.png | Bin .../basenodes/textures/default_desert_stone.png | Bin .../mods/basenodes/textures/default_dirt.png | Bin .../mods/basenodes/textures/default_grass.png | Bin .../basenodes/textures/default_grass_side.png | Bin .../mods/basenodes/textures/default_gravel.png | Bin .../mods/basenodes/textures/default_ice.png | Bin .../basenodes/textures/default_junglegrass.png | Bin .../basenodes/textures/default_jungleleaves.png | Bin .../basenodes/textures/default_jungletree.png | Bin .../basenodes/textures/default_jungletree_top.png | Bin .../mods/basenodes/textures/default_lava.png | Bin .../basenodes/textures/default_lava_flowing.png | Bin .../mods/basenodes/textures/default_leaves.png | Bin .../basenodes/textures/default_mossycobble.png | Bin .../basenodes/textures/default_pine_needles.png | Bin .../mods/basenodes/textures/default_pine_tree.png | Bin .../basenodes/textures/default_pine_tree_top.png | Bin .../basenodes/textures/default_river_water.png | Bin .../textures/default_river_water_flowing.png | Bin .../mods/basenodes/textures/default_sand.png | Bin .../mods/basenodes/textures/default_snow.png | Bin .../mods/basenodes/textures/default_snow_side.png | Bin .../mods/basenodes/textures/default_stone.png | Bin .../mods/basenodes/textures/default_tree.png | Bin .../mods/basenodes/textures/default_tree_top.png | Bin .../mods/basenodes/textures/default_water.png | Bin .../basenodes/textures/default_water_flowing.png | Bin .../{minimal => devtest}/mods/basetools/init.lua | 0 .../{minimal => devtest}/mods/basetools/mod.conf | 0 .../basetools/textures/basetools_dirtpick.png | Bin .../basetools/textures/basetools_firesword.png | Bin .../basetools/textures/basetools_icesword.png | Bin .../basetools/textures/basetools_mesepick.png | Bin .../basetools/textures/basetools_steelaxe.png | Bin .../basetools/textures/basetools_steeldagger.png | Bin .../basetools/textures/basetools_steelpick.png | Bin .../basetools/textures/basetools_steelpick_l1.png | Bin .../basetools/textures/basetools_steelpick_l2.png | Bin .../basetools/textures/basetools_steelshears.png | Bin .../basetools/textures/basetools_steelshovel.png | Bin .../basetools/textures/basetools_steelsword.png | Bin .../basetools/textures/basetools_stoneaxe.png | Bin .../basetools/textures/basetools_stonepick.png | Bin .../basetools/textures/basetools_stoneshears.png | Bin .../basetools/textures/basetools_stoneshovel.png | Bin .../basetools/textures/basetools_stonesword.png | Bin .../mods/basetools/textures/basetools_woodaxe.png | Bin .../basetools/textures/basetools_woodpick.png | Bin .../basetools/textures/basetools_woodshears.png | Bin .../basetools/textures/basetools_woodshovel.png | Bin .../basetools/textures/basetools_woodsword.png | Bin games/{minimal => devtest}/mods/bucket/init.lua | 0 games/{minimal => devtest}/mods/bucket/mod.conf | 0 .../mods/bucket/textures/bucket.png | Bin .../mods/bucket/textures/bucket_lava.png | Bin .../mods/bucket/textures/bucket_water.png | Bin games/{minimal => devtest}/mods/chest/init.lua | 0 games/{minimal => devtest}/mods/chest/mod.conf | 0 .../mods/chest/textures/chest_chest.png | Bin .../mods/chest_of_everything/init.lua | 0 .../mods/chest_of_everything/mod.conf | 0 .../textures/chest_of_everything_chest.png | Bin games/{minimal => devtest}/mods/dignodes/init.lua | 0 games/{minimal => devtest}/mods/dignodes/mod.conf | 0 .../mods/dignodes/textures/dignodes_choppy.png | Bin .../mods/dignodes/textures/dignodes_cracky.png | Bin .../mods/dignodes/textures/dignodes_crumbly.png | Bin .../dignodes/textures/dignodes_dig_immediate.png | Bin .../mods/dignodes/textures/dignodes_none.png | Bin .../mods/dignodes/textures/dignodes_rating1.png | Bin .../mods/dignodes/textures/dignodes_rating2.png | Bin .../mods/dignodes/textures/dignodes_rating3.png | Bin .../mods/experimental/commands.lua | 0 .../mods/experimental/detached.lua | 0 .../mods/experimental/init.lua | 0 .../mods/experimental/items.lua | 0 .../mods/experimental/mod.conf | 0 .../textures/experimental_callback_node.png | Bin .../textures/experimental_particle_sheet.png | Bin .../textures/experimental_particle_vertical.png | Bin .../textures/experimental_tester_tool_1.png | Bin .../mods/give_initial_stuff/init.lua | 0 .../mods/give_initial_stuff/mod.conf | 0 .../mods/initial_message/init.lua | 2 +- .../mods/initial_message/mod.conf | 0 games/{minimal => devtest}/mods/mapgen/init.lua | 0 games/{minimal => devtest}/mods/mapgen/mod.conf | 0 .../mods/modchannels/init.lua | 0 .../mods/modchannels/mod.conf | 0 .../{minimal => devtest}/mods/soundstuff/init.lua | 0 .../{minimal => devtest}/mods/soundstuff/mod.conf | 0 .../mods/soundstuff/sounds/soundstuff_mono.ogg | Bin .../mods/soundstuff/textures/soundstuff_eat.png | Bin .../soundstuff/textures/soundstuff_node_blank.png | Bin .../textures/soundstuff_node_climbable.png | Bin .../soundstuff/textures/soundstuff_node_dig.png | Bin .../soundstuff/textures/soundstuff_node_dug.png | Bin .../soundstuff/textures/soundstuff_node_fall.png | Bin .../textures/soundstuff_node_footstep.png | Bin .../soundstuff/textures/soundstuff_node_place.png | Bin .../textures/soundstuff_node_place_failed.png | Bin .../soundstuff/textures/soundstuff_node_sound.png | Bin games/{minimal => devtest}/mods/stairs/init.lua | 0 games/{minimal => devtest}/mods/stairs/mod.conf | 0 .../mods/testentities/armor.lua | 0 .../mods/testentities/callbacks.lua | 0 .../mods/testentities/init.lua | 0 .../mods/testentities/mod.conf | 0 .../textures/testentities_armorball.png | Bin .../textures/testentities_callback.png | Bin .../textures/testentities_callback_step.png | Bin .../testentities/textures/testentities_cube1.png | Bin .../testentities/textures/testentities_cube2.png | Bin .../testentities/textures/testentities_cube3.png | Bin .../testentities/textures/testentities_cube4.png | Bin .../testentities/textures/testentities_cube5.png | Bin .../testentities/textures/testentities_cube6.png | Bin .../textures/testentities_dungeon_master.png | Bin .../testentities/textures/testentities_sprite.png | Bin .../textures/testentities_upright_sprite1.png | Bin .../textures/testentities_upright_sprite2.png | Bin .../mods/testentities/visuals.lua | 0 games/{minimal => devtest}/mods/testfood/init.lua | 0 games/{minimal => devtest}/mods/testfood/mod.conf | 0 .../mods/testfood/textures/testfood_bad.png | Bin .../mods/testfood/textures/testfood_bad2.png | Bin .../mods/testfood/textures/testfood_good.png | Bin .../mods/testfood/textures/testfood_good2.png | Bin .../mods/testformspec/callbacks.lua | 0 .../mods/testformspec/dummy_items.lua | 0 .../mods/testformspec/formspec.lua | 0 .../mods/testformspec/init.lua | 0 .../mods/testformspec/mod.conf | 0 .../textures/testformspec_animation.jpg | Bin .../textures/testformspec_animation.png | Bin .../testformspec/textures/testformspec_bg.png | Bin .../textures/testformspec_bg_9slice.png | Bin .../textures/testformspec_bg_9slice_hovered.png | Bin .../textures/testformspec_bg_9slice_pressed.png | Bin .../textures/testformspec_bg_hovered.png | Bin .../textures/testformspec_bg_pressed.png | Bin .../textures/testformspec_button_image.png | Bin .../textures/testformspec_hovered.png | Bin .../testformspec/textures/testformspec_item.png | Bin .../testformspec/textures/testformspec_node.png | Bin .../textures/testformspec_pressed.png | Bin .../{minimal => devtest}/mods/testnodes/README.md | 0 .../mods/testnodes/drawtypes.lua | 0 .../{minimal => devtest}/mods/testnodes/init.lua | 0 .../{minimal => devtest}/mods/testnodes/light.lua | 0 .../mods/testnodes/liquids.lua | 0 .../mods/testnodes/meshes.lua | 0 .../{minimal => devtest}/mods/testnodes/mod.conf | 0 .../mods/testnodes/models/testnodes_ocorner.obj | 0 .../mods/testnodes/models/testnodes_pyramid.obj | 0 .../mods/testnodes/nodeboxes.lua | 0 .../mods/testnodes/param2.lua | 0 .../mods/testnodes/properties.lua | 0 .../mods/testnodes/settingtypes.txt | 0 .../mods/testnodes/textures.lua | 0 .../mods/testnodes/textures/testnodes_1.png | Bin .../mods/testnodes/textures/testnodes_1g.png | Bin .../mods/testnodes/textures/testnodes_1w.png | Bin .../mods/testnodes/textures/testnodes_1wg.png | Bin .../mods/testnodes/textures/testnodes_2.png | Bin .../mods/testnodes/textures/testnodes_2g.png | Bin .../mods/testnodes/textures/testnodes_2w.png | Bin .../mods/testnodes/textures/testnodes_2wg.png | Bin .../mods/testnodes/textures/testnodes_3.png | Bin .../mods/testnodes/textures/testnodes_3g.png | Bin .../mods/testnodes/textures/testnodes_3w.png | Bin .../mods/testnodes/textures/testnodes_3wg.png | Bin .../mods/testnodes/textures/testnodes_4.png | Bin .../mods/testnodes/textures/testnodes_4g.png | Bin .../mods/testnodes/textures/testnodes_4w.png | Bin .../mods/testnodes/textures/testnodes_4wg.png | Bin .../mods/testnodes/textures/testnodes_5.png | Bin .../mods/testnodes/textures/testnodes_5g.png | Bin .../mods/testnodes/textures/testnodes_5w.png | Bin .../mods/testnodes/textures/testnodes_5wg.png | Bin .../mods/testnodes/textures/testnodes_6.png | Bin .../mods/testnodes/textures/testnodes_6g.png | Bin .../mods/testnodes/textures/testnodes_6w.png | Bin .../mods/testnodes/textures/testnodes_6wg.png | Bin .../mods/testnodes/textures/testnodes_airlike.png | Bin .../testnodes/textures/testnodes_allfaces.png | Bin .../textures/testnodes_allfaces_optional.png | Bin .../mods/testnodes/textures/testnodes_alpha.png | Bin .../testnodes/textures/testnodes_alpha128.png | Bin .../testnodes/textures/testnodes_alpha191.png | Bin .../mods/testnodes/textures/testnodes_alpha64.png | Bin .../mods/testnodes/textures/testnodes_anim.png | Bin .../textures/testnodes_attached_bottom.png | Bin .../textures/testnodes_attached_side.png | Bin .../testnodes/textures/testnodes_attached_top.png | Bin .../textures/testnodes_attachedw_bottom.png | Bin .../textures/testnodes_attachedw_side.png | Bin .../textures/testnodes_attachedw_top.png | Bin .../mods/testnodes/textures/testnodes_bouncy.png | Bin .../testnodes/textures/testnodes_buildable_to.png | Bin .../textures/testnodes_climbable_nojump_side.png | Bin .../textures/testnodes_climbable_side.png | Bin .../mods/testnodes/textures/testnodes_damage.png | Bin .../testnodes/textures/testnodes_damage_neg.png | Bin .../testnodes/textures/testnodes_drowning.png | Bin .../textures/testnodes_fall_damage_minus.png | Bin .../textures/testnodes_fall_damage_plus.png | Bin .../testnodes/textures/testnodes_fencelike.png | Bin .../testnodes/textures/testnodes_firelike.png | Bin .../testnodes/textures/testnodes_glasslike.png | Bin .../textures/testnodes_glasslike_detail.png | Bin .../textures/testnodes_glasslike_framed.png | Bin .../textures/testnodes_glasslike_framed2.png | Bin .../testnodes_glasslike_framed_optional.png | Bin .../textures/testnodes_glasslikeliquid.png | Bin .../mods/testnodes/textures/testnodes_light.png | Bin .../mods/testnodes/textures/testnodes_light_1.png | Bin .../testnodes/textures/testnodes_light_10.png | Bin .../testnodes/textures/testnodes_light_11.png | Bin .../testnodes/textures/testnodes_light_12.png | Bin .../testnodes/textures/testnodes_light_13.png | Bin .../testnodes/textures/testnodes_light_14.png | Bin .../mods/testnodes/textures/testnodes_light_2.png | Bin .../mods/testnodes/textures/testnodes_light_3.png | Bin .../mods/testnodes/textures/testnodes_light_4.png | Bin .../mods/testnodes/textures/testnodes_light_5.png | Bin .../mods/testnodes/textures/testnodes_light_6.png | Bin .../mods/testnodes/textures/testnodes_light_7.png | Bin .../mods/testnodes/textures/testnodes_light_8.png | Bin .../mods/testnodes/textures/testnodes_light_9.png | Bin .../textures/testnodes_line_crossing.png | Bin .../testnodes/textures/testnodes_line_curved.png | Bin .../textures/testnodes_line_straight.png | Bin .../textures/testnodes_line_t_junction.png | Bin .../mods/testnodes/textures/testnodes_liquid.png | Bin .../textures/testnodes_liquidflowing.png | Bin .../textures/testnodes_liquidflowing_r0.png | Bin .../textures/testnodes_liquidflowing_r1.png | Bin .../textures/testnodes_liquidflowing_r2.png | Bin .../textures/testnodes_liquidflowing_r3.png | Bin .../textures/testnodes_liquidflowing_r4.png | Bin .../textures/testnodes_liquidflowing_r5.png | Bin .../textures/testnodes_liquidflowing_r6.png | Bin .../textures/testnodes_liquidflowing_r7.png | Bin .../textures/testnodes_liquidflowing_r8.png | Bin .../testnodes/textures/testnodes_liquidsource.png | Bin .../textures/testnodes_liquidsource_r0.png | Bin .../textures/testnodes_liquidsource_r1.png | Bin .../textures/testnodes_liquidsource_r2.png | Bin .../textures/testnodes_liquidsource_r3.png | Bin .../textures/testnodes_liquidsource_r4.png | Bin .../textures/testnodes_liquidsource_r5.png | Bin .../textures/testnodes_liquidsource_r6.png | Bin .../textures/testnodes_liquidsource_r7.png | Bin .../textures/testnodes_liquidsource_r8.png | Bin .../testnodes/textures/testnodes_mesh_stripes.png | Bin .../textures/testnodes_mesh_stripes2.png | Bin .../textures/testnodes_mesh_stripes3.png | Bin .../textures/testnodes_mesh_stripes4.png | Bin .../mods/testnodes/textures/testnodes_node.png | Bin .../testnodes/textures/testnodes_node_falling.png | Bin .../mods/testnodes/textures/testnodes_nodebox.png | Bin .../testnodes/textures/testnodes_nojump_side.png | Bin .../testnodes/textures/testnodes_nojump_top.png | Bin .../mods/testnodes/textures/testnodes_normal.png | Bin .../mods/testnodes/textures/testnodes_normal1.png | Bin .../mods/testnodes/textures/testnodes_normal2.png | Bin .../mods/testnodes/textures/testnodes_normal3.png | Bin .../mods/testnodes/textures/testnodes_normal4.png | Bin .../mods/testnodes/textures/testnodes_normal5.png | Bin .../mods/testnodes/textures/testnodes_normal6.png | Bin .../textures/testnodes_palette_facedir.png | Bin .../testnodes/textures/testnodes_palette_full.png | Bin .../textures/testnodes_palette_wallmounted.png | Bin .../testnodes/textures/testnodes_plantlike.png | Bin .../textures/testnodes_plantlike_degrotate.png | Bin .../textures/testnodes_plantlike_leveled.png | Bin .../textures/testnodes_plantlike_meshoptions.png | Bin .../textures/testnodes_plantlike_rooted.png | Bin .../textures/testnodes_plantlike_rooted_base.png | Bin ...nodes_plantlike_rooted_base_side_degrotate.png | Bin ...stnodes_plantlike_rooted_base_side_leveled.png | Bin ...des_plantlike_rooted_base_side_meshoptions.png | Bin ...estnodes_plantlike_rooted_base_side_waving.png | Bin .../testnodes_plantlike_rooted_degrotate.png | Bin .../testnodes_plantlike_rooted_leveled.png | Bin .../testnodes_plantlike_rooted_meshoptions.png | Bin .../testnodes_plantlike_rooted_waving.png | Bin .../textures/testnodes_plantlike_waving.png | Bin .../textures/testnodes_rail2_crossing.png | Bin .../testnodes/textures/testnodes_rail2_curved.png | Bin .../textures/testnodes_rail2_straight.png | Bin .../textures/testnodes_rail2_t_junction.png | Bin .../textures/testnodes_rail_crossing.png | Bin .../testnodes/textures/testnodes_rail_curved.png | Bin .../textures/testnodes_rail_straight.png | Bin .../textures/testnodes_rail_t_junction.png | Bin .../testnodes/textures/testnodes_signlike.png | Bin .../testnodes/textures/testnodes_slippery.png | Bin .../textures/testnodes_street_crossing.png | Bin .../textures/testnodes_street_curved.png | Bin .../textures/testnodes_street_straight.png | Bin .../textures/testnodes_street_t_junction.png | Bin .../textures/testnodes_sunlight_filter.png | Bin .../textures/testnodes_torchlike_ceiling.png | Bin .../textures/testnodes_torchlike_floor.png | Bin .../textures/testnodes_torchlike_wall.png | Bin .../mods/testpathfinder/README.md | 0 .../mods/testpathfinder/init.lua | 0 .../mods/testpathfinder/mod.conf | 0 .../textures/testpathfinder_testpathfinder.png | Bin .../textures/testpathfinder_waypoint.png | Bin .../textures/testpathfinder_waypoint_end.png | Bin .../textures/testpathfinder_waypoint_start.png | Bin .../{minimal => devtest}/mods/testtools/README.md | 0 .../{minimal => devtest}/mods/testtools/init.lua | 0 .../{minimal => devtest}/mods/testtools/mod.conf | 0 .../textures/testtools_entity_rotator.png | Bin .../textures/testtools_entity_scaler.png | Bin .../textures/testtools_entity_spawner.png | Bin .../textures/testtools_falling_node_tool.png | Bin .../testtools/textures/testtools_node_setter.png | Bin .../textures/testtools_object_attacher.png | Bin .../textures/testtools_object_editor.png | Bin .../testtools/textures/testtools_object_mover.png | Bin .../testtools/textures/testtools_param2tool.png | Bin .../mods/testtools/textures/testtools_remover.png | Bin games/{minimal => devtest}/mods/tiled/init.lua | 0 games/{minimal => devtest}/mods/tiled/mod.conf | 0 .../mods/tiled/textures/tiled_tiled.png | Bin .../mods/unittests/crafting.lua | 0 .../mods/unittests/crafting_prepare.lua | 0 .../{minimal => devtest}/mods/unittests/init.lua | 0 .../{minimal => devtest}/mods/unittests/mod.conf | 0 .../mods/unittests/player.lua | 0 .../mods/unittests/random.lua | 0 .../unittests/textures/unittests_coal_lump.png | Bin .../unittests/textures/unittests_iron_lump.png | Bin .../textures/unittests_repairable_tool.png | Bin .../unittests/textures/unittests_steel_ingot.png | Bin .../mods/unittests/textures/unittests_stick.png | Bin .../mods/unittests/textures/unittests_torch.png | Bin .../textures/unittests_unrepairable_tool.png | Bin .../mods/util_commands/init.lua | 0 .../mods/util_commands/mod.conf | 0 games/{minimal => devtest}/screenshot.png | Bin games/{minimal => devtest}/settingtypes.txt | 0 games/minimal/LICENSE.txt | 4 ---- games/minimal/menu/header.png | Bin 210 -> 0 bytes src/unittest/CMakeLists.txt | 2 +- src/unittest/test_servermodmanager.cpp | 10 +++++----- util/test_multiplayer.sh | 2 +- 371 files changed, 25 insertions(+), 25 deletions(-) create mode 100644 games/devtest/LICENSE.txt rename games/{minimal => devtest}/README.md (98%) rename games/{minimal => devtest}/game.conf (80%) rename games/{minimal => devtest}/menu/background.png (100%) create mode 100644 games/devtest/menu/header.png rename games/{minimal => devtest}/menu/icon.png (100%) rename games/{minimal => devtest}/mods/basenodes/init.lua (100%) rename games/{minimal => devtest}/mods/basenodes/mod.conf (100%) rename games/{minimal => devtest}/mods/basenodes/textures/basenodes_dirt_with_grass_bottom.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/basenodes_dirt_with_snow.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/basenodes_dirt_with_snow_bottom.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/basenodes_snow_sheet.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_apple.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_cobble.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_desert_sand.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_desert_stone.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_dirt.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_grass.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_grass_side.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_gravel.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_ice.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_junglegrass.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_jungleleaves.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_jungletree.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_jungletree_top.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_lava.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_lava_flowing.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_leaves.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_mossycobble.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_pine_needles.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_pine_tree.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_pine_tree_top.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_river_water.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_river_water_flowing.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_sand.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_snow.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_snow_side.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_stone.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_tree.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_tree_top.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_water.png (100%) rename games/{minimal => devtest}/mods/basenodes/textures/default_water_flowing.png (100%) rename games/{minimal => devtest}/mods/basetools/init.lua (100%) rename games/{minimal => devtest}/mods/basetools/mod.conf (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_dirtpick.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_firesword.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_icesword.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_mesepick.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_steelaxe.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_steeldagger.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_steelpick.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_steelpick_l1.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_steelpick_l2.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_steelshears.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_steelshovel.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_steelsword.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_stoneaxe.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_stonepick.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_stoneshears.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_stoneshovel.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_stonesword.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_woodaxe.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_woodpick.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_woodshears.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_woodshovel.png (100%) rename games/{minimal => devtest}/mods/basetools/textures/basetools_woodsword.png (100%) rename games/{minimal => devtest}/mods/bucket/init.lua (100%) rename games/{minimal => devtest}/mods/bucket/mod.conf (100%) rename games/{minimal => devtest}/mods/bucket/textures/bucket.png (100%) rename games/{minimal => devtest}/mods/bucket/textures/bucket_lava.png (100%) rename games/{minimal => devtest}/mods/bucket/textures/bucket_water.png (100%) rename games/{minimal => devtest}/mods/chest/init.lua (100%) rename games/{minimal => devtest}/mods/chest/mod.conf (100%) rename games/{minimal => devtest}/mods/chest/textures/chest_chest.png (100%) rename games/{minimal => devtest}/mods/chest_of_everything/init.lua (100%) rename games/{minimal => devtest}/mods/chest_of_everything/mod.conf (100%) rename games/{minimal => devtest}/mods/chest_of_everything/textures/chest_of_everything_chest.png (100%) rename games/{minimal => devtest}/mods/dignodes/init.lua (100%) rename games/{minimal => devtest}/mods/dignodes/mod.conf (100%) rename games/{minimal => devtest}/mods/dignodes/textures/dignodes_choppy.png (100%) rename games/{minimal => devtest}/mods/dignodes/textures/dignodes_cracky.png (100%) rename games/{minimal => devtest}/mods/dignodes/textures/dignodes_crumbly.png (100%) rename games/{minimal => devtest}/mods/dignodes/textures/dignodes_dig_immediate.png (100%) rename games/{minimal => devtest}/mods/dignodes/textures/dignodes_none.png (100%) rename games/{minimal => devtest}/mods/dignodes/textures/dignodes_rating1.png (100%) rename games/{minimal => devtest}/mods/dignodes/textures/dignodes_rating2.png (100%) rename games/{minimal => devtest}/mods/dignodes/textures/dignodes_rating3.png (100%) rename games/{minimal => devtest}/mods/experimental/commands.lua (100%) rename games/{minimal => devtest}/mods/experimental/detached.lua (100%) rename games/{minimal => devtest}/mods/experimental/init.lua (100%) rename games/{minimal => devtest}/mods/experimental/items.lua (100%) rename games/{minimal => devtest}/mods/experimental/mod.conf (100%) rename games/{minimal => devtest}/mods/experimental/textures/experimental_callback_node.png (100%) rename games/{minimal => devtest}/mods/experimental/textures/experimental_particle_sheet.png (100%) rename games/{minimal => devtest}/mods/experimental/textures/experimental_particle_vertical.png (100%) rename games/{minimal => devtest}/mods/experimental/textures/experimental_tester_tool_1.png (100%) rename games/{minimal => devtest}/mods/give_initial_stuff/init.lua (100%) rename games/{minimal => devtest}/mods/give_initial_stuff/mod.conf (100%) rename games/{minimal => devtest}/mods/initial_message/init.lua (66%) rename games/{minimal => devtest}/mods/initial_message/mod.conf (100%) rename games/{minimal => devtest}/mods/mapgen/init.lua (100%) rename games/{minimal => devtest}/mods/mapgen/mod.conf (100%) rename games/{minimal => devtest}/mods/modchannels/init.lua (100%) rename games/{minimal => devtest}/mods/modchannels/mod.conf (100%) rename games/{minimal => devtest}/mods/soundstuff/init.lua (100%) rename games/{minimal => devtest}/mods/soundstuff/mod.conf (100%) rename games/{minimal => devtest}/mods/soundstuff/sounds/soundstuff_mono.ogg (100%) rename games/{minimal => devtest}/mods/soundstuff/textures/soundstuff_eat.png (100%) rename games/{minimal => devtest}/mods/soundstuff/textures/soundstuff_node_blank.png (100%) rename games/{minimal => devtest}/mods/soundstuff/textures/soundstuff_node_climbable.png (100%) rename games/{minimal => devtest}/mods/soundstuff/textures/soundstuff_node_dig.png (100%) rename games/{minimal => devtest}/mods/soundstuff/textures/soundstuff_node_dug.png (100%) rename games/{minimal => devtest}/mods/soundstuff/textures/soundstuff_node_fall.png (100%) rename games/{minimal => devtest}/mods/soundstuff/textures/soundstuff_node_footstep.png (100%) rename games/{minimal => devtest}/mods/soundstuff/textures/soundstuff_node_place.png (100%) rename games/{minimal => devtest}/mods/soundstuff/textures/soundstuff_node_place_failed.png (100%) rename games/{minimal => devtest}/mods/soundstuff/textures/soundstuff_node_sound.png (100%) rename games/{minimal => devtest}/mods/stairs/init.lua (100%) rename games/{minimal => devtest}/mods/stairs/mod.conf (100%) rename games/{minimal => devtest}/mods/testentities/armor.lua (100%) rename games/{minimal => devtest}/mods/testentities/callbacks.lua (100%) rename games/{minimal => devtest}/mods/testentities/init.lua (100%) rename games/{minimal => devtest}/mods/testentities/mod.conf (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_armorball.png (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_callback.png (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_callback_step.png (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_cube1.png (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_cube2.png (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_cube3.png (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_cube4.png (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_cube5.png (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_cube6.png (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_dungeon_master.png (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_sprite.png (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_upright_sprite1.png (100%) rename games/{minimal => devtest}/mods/testentities/textures/testentities_upright_sprite2.png (100%) rename games/{minimal => devtest}/mods/testentities/visuals.lua (100%) rename games/{minimal => devtest}/mods/testfood/init.lua (100%) rename games/{minimal => devtest}/mods/testfood/mod.conf (100%) rename games/{minimal => devtest}/mods/testfood/textures/testfood_bad.png (100%) rename games/{minimal => devtest}/mods/testfood/textures/testfood_bad2.png (100%) rename games/{minimal => devtest}/mods/testfood/textures/testfood_good.png (100%) rename games/{minimal => devtest}/mods/testfood/textures/testfood_good2.png (100%) rename games/{minimal => devtest}/mods/testformspec/callbacks.lua (100%) rename games/{minimal => devtest}/mods/testformspec/dummy_items.lua (100%) rename games/{minimal => devtest}/mods/testformspec/formspec.lua (100%) rename games/{minimal => devtest}/mods/testformspec/init.lua (100%) rename games/{minimal => devtest}/mods/testformspec/mod.conf (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_animation.jpg (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_animation.png (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_bg.png (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_bg_9slice.png (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_bg_9slice_hovered.png (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_bg_9slice_pressed.png (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_bg_hovered.png (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_bg_pressed.png (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_button_image.png (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_hovered.png (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_item.png (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_node.png (100%) rename games/{minimal => devtest}/mods/testformspec/textures/testformspec_pressed.png (100%) rename games/{minimal => devtest}/mods/testnodes/README.md (100%) rename games/{minimal => devtest}/mods/testnodes/drawtypes.lua (100%) rename games/{minimal => devtest}/mods/testnodes/init.lua (100%) rename games/{minimal => devtest}/mods/testnodes/light.lua (100%) rename games/{minimal => devtest}/mods/testnodes/liquids.lua (100%) rename games/{minimal => devtest}/mods/testnodes/meshes.lua (100%) rename games/{minimal => devtest}/mods/testnodes/mod.conf (100%) rename games/{minimal => devtest}/mods/testnodes/models/testnodes_ocorner.obj (100%) rename games/{minimal => devtest}/mods/testnodes/models/testnodes_pyramid.obj (100%) rename games/{minimal => devtest}/mods/testnodes/nodeboxes.lua (100%) rename games/{minimal => devtest}/mods/testnodes/param2.lua (100%) rename games/{minimal => devtest}/mods/testnodes/properties.lua (100%) rename games/{minimal => devtest}/mods/testnodes/settingtypes.txt (100%) rename games/{minimal => devtest}/mods/testnodes/textures.lua (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_1.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_1g.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_1w.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_1wg.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_2.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_2g.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_2w.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_2wg.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_3.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_3g.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_3w.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_3wg.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_4.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_4g.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_4w.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_4wg.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_5.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_5g.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_5w.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_5wg.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_6.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_6g.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_6w.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_6wg.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_airlike.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_allfaces.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_allfaces_optional.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_alpha.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_alpha128.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_alpha191.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_alpha64.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_anim.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_attached_bottom.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_attached_side.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_attached_top.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_attachedw_bottom.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_attachedw_side.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_attachedw_top.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_bouncy.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_buildable_to.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_climbable_nojump_side.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_climbable_side.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_damage.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_damage_neg.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_drowning.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_fall_damage_minus.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_fall_damage_plus.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_fencelike.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_firelike.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_glasslike.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_glasslike_detail.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_glasslike_framed.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_glasslike_framed2.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_glasslike_framed_optional.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_glasslikeliquid.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_1.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_10.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_11.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_12.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_13.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_14.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_2.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_3.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_4.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_5.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_6.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_7.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_8.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_light_9.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_line_crossing.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_line_curved.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_line_straight.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_line_t_junction.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquid.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidflowing.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidflowing_r0.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidflowing_r1.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidflowing_r2.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidflowing_r3.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidflowing_r4.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidflowing_r5.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidflowing_r6.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidflowing_r7.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidflowing_r8.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidsource.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidsource_r0.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidsource_r1.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidsource_r2.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidsource_r3.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidsource_r4.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidsource_r5.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidsource_r6.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidsource_r7.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_liquidsource_r8.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_mesh_stripes.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_mesh_stripes2.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_mesh_stripes3.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_mesh_stripes4.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_node.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_node_falling.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_nodebox.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_nojump_side.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_nojump_top.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_normal.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_normal1.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_normal2.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_normal3.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_normal4.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_normal5.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_normal6.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_palette_facedir.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_palette_full.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_palette_wallmounted.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_degrotate.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_leveled.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_meshoptions.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_rooted.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_rooted_base.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_degrotate.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_leveled.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_meshoptions.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_waving.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_rooted_degrotate.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_rooted_leveled.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_rooted_meshoptions.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_rooted_waving.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_plantlike_waving.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_rail2_crossing.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_rail2_curved.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_rail2_straight.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_rail2_t_junction.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_rail_crossing.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_rail_curved.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_rail_straight.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_rail_t_junction.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_signlike.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_slippery.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_street_crossing.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_street_curved.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_street_straight.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_street_t_junction.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_sunlight_filter.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_torchlike_ceiling.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_torchlike_floor.png (100%) rename games/{minimal => devtest}/mods/testnodes/textures/testnodes_torchlike_wall.png (100%) rename games/{minimal => devtest}/mods/testpathfinder/README.md (100%) rename games/{minimal => devtest}/mods/testpathfinder/init.lua (100%) rename games/{minimal => devtest}/mods/testpathfinder/mod.conf (100%) rename games/{minimal => devtest}/mods/testpathfinder/textures/testpathfinder_testpathfinder.png (100%) rename games/{minimal => devtest}/mods/testpathfinder/textures/testpathfinder_waypoint.png (100%) rename games/{minimal => devtest}/mods/testpathfinder/textures/testpathfinder_waypoint_end.png (100%) rename games/{minimal => devtest}/mods/testpathfinder/textures/testpathfinder_waypoint_start.png (100%) rename games/{minimal => devtest}/mods/testtools/README.md (100%) rename games/{minimal => devtest}/mods/testtools/init.lua (100%) rename games/{minimal => devtest}/mods/testtools/mod.conf (100%) rename games/{minimal => devtest}/mods/testtools/textures/testtools_entity_rotator.png (100%) rename games/{minimal => devtest}/mods/testtools/textures/testtools_entity_scaler.png (100%) rename games/{minimal => devtest}/mods/testtools/textures/testtools_entity_spawner.png (100%) rename games/{minimal => devtest}/mods/testtools/textures/testtools_falling_node_tool.png (100%) rename games/{minimal => devtest}/mods/testtools/textures/testtools_node_setter.png (100%) rename games/{minimal => devtest}/mods/testtools/textures/testtools_object_attacher.png (100%) rename games/{minimal => devtest}/mods/testtools/textures/testtools_object_editor.png (100%) rename games/{minimal => devtest}/mods/testtools/textures/testtools_object_mover.png (100%) rename games/{minimal => devtest}/mods/testtools/textures/testtools_param2tool.png (100%) rename games/{minimal => devtest}/mods/testtools/textures/testtools_remover.png (100%) rename games/{minimal => devtest}/mods/tiled/init.lua (100%) rename games/{minimal => devtest}/mods/tiled/mod.conf (100%) rename games/{minimal => devtest}/mods/tiled/textures/tiled_tiled.png (100%) rename games/{minimal => devtest}/mods/unittests/crafting.lua (100%) rename games/{minimal => devtest}/mods/unittests/crafting_prepare.lua (100%) rename games/{minimal => devtest}/mods/unittests/init.lua (100%) rename games/{minimal => devtest}/mods/unittests/mod.conf (100%) rename games/{minimal => devtest}/mods/unittests/player.lua (100%) rename games/{minimal => devtest}/mods/unittests/random.lua (100%) rename games/{minimal => devtest}/mods/unittests/textures/unittests_coal_lump.png (100%) rename games/{minimal => devtest}/mods/unittests/textures/unittests_iron_lump.png (100%) rename games/{minimal => devtest}/mods/unittests/textures/unittests_repairable_tool.png (100%) rename games/{minimal => devtest}/mods/unittests/textures/unittests_steel_ingot.png (100%) rename games/{minimal => devtest}/mods/unittests/textures/unittests_stick.png (100%) rename games/{minimal => devtest}/mods/unittests/textures/unittests_torch.png (100%) rename games/{minimal => devtest}/mods/unittests/textures/unittests_unrepairable_tool.png (100%) rename games/{minimal => devtest}/mods/util_commands/init.lua (100%) rename games/{minimal => devtest}/mods/util_commands/mod.conf (100%) rename games/{minimal => devtest}/screenshot.png (100%) rename games/{minimal => devtest}/settingtypes.txt (100%) delete mode 100644 games/minimal/LICENSE.txt delete mode 100644 games/minimal/menu/header.png diff --git a/CMakeLists.txt b/CMakeLists.txt index ae842918b..a5f644652 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -167,7 +167,7 @@ endif() install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/minetest_game" DESTINATION "${SHAREDIR}/games/" COMPONENT "SUBGAME_MINETEST_GAME" OPTIONAL PATTERN ".git*" EXCLUDE ) -install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/minimal" DESTINATION "${SHAREDIR}/games/" +install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/games/devtest" DESTINATION "${SHAREDIR}/games/" COMPONENT "SUBGAME_MINIMAL" OPTIONAL PATTERN ".git*" EXCLUDE ) if(BUILD_CLIENT) @@ -254,8 +254,8 @@ cpack_add_component(SUBGAME_MINETEST_GAME ) cpack_add_component(SUBGAME_MINIMAL - DISPLAY_NAME "Minimal development test" - DESCRIPTION "A minimal subgame helping to develop the engine." + DISPLAY_NAME "Development Test" + DESCRIPTION "A minimal test game helping to develop the engine." DISABLED #DISABLED does not mean it is disabled, and is just not selected by default. GROUP "Subgames" ) diff --git a/README.md b/README.md index 202ba4fe2..6a3c11f40 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,7 @@ Download source (this is the URL to the latest of source repository, which might git clone --depth 1 https://github.com/minetest/minetest.git cd minetest -Download minetest_game (otherwise only the "Minimal development test" game is available) using Git: +Download minetest_game (otherwise only the "Development Test" game is available) using Git: git clone --depth 1 https://github.com/minetest/minetest_game.git games/minetest_game diff --git a/builtin/mainmenu/dlg_create_world.lua b/builtin/mainmenu/dlg_create_world.lua index 0d977a17c..36df23cce 100644 --- a/builtin/mainmenu/dlg_create_world.lua +++ b/builtin/mainmenu/dlg_create_world.lua @@ -304,13 +304,13 @@ local function create_world_formspec(dialogdata) label_spflags = "label[0,"..y_start..";" .. fgettext("Mapgen-specific flags") .. "]" end - -- Warning if only minimal is installed - local minimal_only = "" + -- Warning if only devtest is installed + local devtest_only = "" local gamelist_height = 2.3 - if #pkgmgr.games == 1 and pkgmgr.games[1].id == "minimal" then - minimal_only = "box[0,0;5.8,1.7;#ff8800]" .. + if #pkgmgr.games == 1 and pkgmgr.games[1].id == "devtest" then + devtest_only = "box[0,0;5.8,1.7;#ff8800]" .. "textarea[0.3,0;6,1.8;;;".. - fgettext("Warning: The minimal development test is meant for developers.") .. "\n" .. + fgettext("Warning: The Development Test is meant for developers.") .. "\n" .. fgettext("Download a game, such as Minetest Game, from minetest.net") .. "]" gamelist_height = 0.5 end @@ -335,7 +335,7 @@ local function create_world_formspec(dialogdata) "textlist[0,3.85;5.8,"..gamelist_height..";games;" .. pkgmgr.gamelist() .. ";" .. gameidx .. ";false]" .. "container[0,4.5]" .. - minimal_only .. + devtest_only .. "container_end[]" .. "container_end[]" .. diff --git a/doc/lua_api.txt b/doc/lua_api.txt index a77c7567e..c4310aa5b 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1069,7 +1069,7 @@ Node drawtypes There are a bunch of different looking node types. -Look for examples in `games/minimal` or `games/minetest_game`. +Look for examples in `games/devtest` or `games/minetest_game`. * `normal` * A node-sized cube. diff --git a/games/devtest/LICENSE.txt b/games/devtest/LICENSE.txt new file mode 100644 index 000000000..71bd0e596 --- /dev/null +++ b/games/devtest/LICENSE.txt @@ -0,0 +1,4 @@ +License information for Development Test +---------------------------------------- + +The same license as for Minetest applies. diff --git a/games/minimal/README.md b/games/devtest/README.md similarity index 98% rename from games/minimal/README.md rename to games/devtest/README.md index a94530498..a7e93cf11 100644 --- a/games/minimal/README.md +++ b/games/devtest/README.md @@ -1,4 +1,4 @@ -# Minimal development test +# Development Test (devtest) This is a basic testing environment that contains a bunch of things to test the engine, but it could also be used as a minimal testbed for testing out mods. diff --git a/games/minimal/game.conf b/games/devtest/game.conf similarity index 80% rename from games/minimal/game.conf rename to games/devtest/game.conf index ae76cf7ad..d6e382ad7 100644 --- a/games/minimal/game.conf +++ b/games/devtest/game.conf @@ -1,2 +1,2 @@ -name = Minimal development test +name = Development Test description = Testing environment to help with testing the engine features of Minetest. It can also be helpful in mod development. diff --git a/games/minimal/menu/background.png b/games/devtest/menu/background.png similarity index 100% rename from games/minimal/menu/background.png rename to games/devtest/menu/background.png diff --git a/games/devtest/menu/header.png b/games/devtest/menu/header.png new file mode 100644 index 0000000000000000000000000000000000000000..c80ed71f18e0b647a5c686d80428e89a7c3c6a39 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^`+!)2gAGW!7`o>HDYhhUcNZWH1V5d3*8?fe0*}aI z1_r((Aj~*bn@<`j$X?><>&pI^M@EoW@B8wade@HA$$wVOP%WZ*>el$0n;XaLG3uVqfrqQKP2eVx_0` zl%Q+%x3kyI*H-`0{r^>A-zK>r+mx%Vrusen68ArI9$Qho(f<76dG$c9{i5fuOx?0~ zm;GB|@%{0VAKxA?soDB5;_RH%tk*v;J$rtZ`!Vw|`^WEotys>r_w)C-%q{P?`{?hz zc5Lz8`06=tsx};ZF5CW*@$vkNmwS!&Z!6#D9T#c4Z(F&2)n7xqgg-pSRn_;_JUR%?SJ~Pg`K07X7Uoti2{jRTa>c6;>&z_#WALP*BO&{h* s-xlq^uX2~UhyTkDf$P!C$JjldbJsn#@$t-DYXJ&ePgg&ebxsLQ06s*nb^rhX literal 0 HcmV?d00001 diff --git a/games/minimal/menu/icon.png b/games/devtest/menu/icon.png similarity index 100% rename from games/minimal/menu/icon.png rename to games/devtest/menu/icon.png diff --git a/games/minimal/mods/basenodes/init.lua b/games/devtest/mods/basenodes/init.lua similarity index 100% rename from games/minimal/mods/basenodes/init.lua rename to games/devtest/mods/basenodes/init.lua diff --git a/games/minimal/mods/basenodes/mod.conf b/games/devtest/mods/basenodes/mod.conf similarity index 100% rename from games/minimal/mods/basenodes/mod.conf rename to games/devtest/mods/basenodes/mod.conf diff --git a/games/minimal/mods/basenodes/textures/basenodes_dirt_with_grass_bottom.png b/games/devtest/mods/basenodes/textures/basenodes_dirt_with_grass_bottom.png similarity index 100% rename from games/minimal/mods/basenodes/textures/basenodes_dirt_with_grass_bottom.png rename to games/devtest/mods/basenodes/textures/basenodes_dirt_with_grass_bottom.png diff --git a/games/minimal/mods/basenodes/textures/basenodes_dirt_with_snow.png b/games/devtest/mods/basenodes/textures/basenodes_dirt_with_snow.png similarity index 100% rename from games/minimal/mods/basenodes/textures/basenodes_dirt_with_snow.png rename to games/devtest/mods/basenodes/textures/basenodes_dirt_with_snow.png diff --git a/games/minimal/mods/basenodes/textures/basenodes_dirt_with_snow_bottom.png b/games/devtest/mods/basenodes/textures/basenodes_dirt_with_snow_bottom.png similarity index 100% rename from games/minimal/mods/basenodes/textures/basenodes_dirt_with_snow_bottom.png rename to games/devtest/mods/basenodes/textures/basenodes_dirt_with_snow_bottom.png diff --git a/games/minimal/mods/basenodes/textures/basenodes_snow_sheet.png b/games/devtest/mods/basenodes/textures/basenodes_snow_sheet.png similarity index 100% rename from games/minimal/mods/basenodes/textures/basenodes_snow_sheet.png rename to games/devtest/mods/basenodes/textures/basenodes_snow_sheet.png diff --git a/games/minimal/mods/basenodes/textures/default_apple.png b/games/devtest/mods/basenodes/textures/default_apple.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_apple.png rename to games/devtest/mods/basenodes/textures/default_apple.png diff --git a/games/minimal/mods/basenodes/textures/default_cobble.png b/games/devtest/mods/basenodes/textures/default_cobble.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_cobble.png rename to games/devtest/mods/basenodes/textures/default_cobble.png diff --git a/games/minimal/mods/basenodes/textures/default_desert_sand.png b/games/devtest/mods/basenodes/textures/default_desert_sand.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_desert_sand.png rename to games/devtest/mods/basenodes/textures/default_desert_sand.png diff --git a/games/minimal/mods/basenodes/textures/default_desert_stone.png b/games/devtest/mods/basenodes/textures/default_desert_stone.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_desert_stone.png rename to games/devtest/mods/basenodes/textures/default_desert_stone.png diff --git a/games/minimal/mods/basenodes/textures/default_dirt.png b/games/devtest/mods/basenodes/textures/default_dirt.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_dirt.png rename to games/devtest/mods/basenodes/textures/default_dirt.png diff --git a/games/minimal/mods/basenodes/textures/default_grass.png b/games/devtest/mods/basenodes/textures/default_grass.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_grass.png rename to games/devtest/mods/basenodes/textures/default_grass.png diff --git a/games/minimal/mods/basenodes/textures/default_grass_side.png b/games/devtest/mods/basenodes/textures/default_grass_side.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_grass_side.png rename to games/devtest/mods/basenodes/textures/default_grass_side.png diff --git a/games/minimal/mods/basenodes/textures/default_gravel.png b/games/devtest/mods/basenodes/textures/default_gravel.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_gravel.png rename to games/devtest/mods/basenodes/textures/default_gravel.png diff --git a/games/minimal/mods/basenodes/textures/default_ice.png b/games/devtest/mods/basenodes/textures/default_ice.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_ice.png rename to games/devtest/mods/basenodes/textures/default_ice.png diff --git a/games/minimal/mods/basenodes/textures/default_junglegrass.png b/games/devtest/mods/basenodes/textures/default_junglegrass.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_junglegrass.png rename to games/devtest/mods/basenodes/textures/default_junglegrass.png diff --git a/games/minimal/mods/basenodes/textures/default_jungleleaves.png b/games/devtest/mods/basenodes/textures/default_jungleleaves.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_jungleleaves.png rename to games/devtest/mods/basenodes/textures/default_jungleleaves.png diff --git a/games/minimal/mods/basenodes/textures/default_jungletree.png b/games/devtest/mods/basenodes/textures/default_jungletree.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_jungletree.png rename to games/devtest/mods/basenodes/textures/default_jungletree.png diff --git a/games/minimal/mods/basenodes/textures/default_jungletree_top.png b/games/devtest/mods/basenodes/textures/default_jungletree_top.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_jungletree_top.png rename to games/devtest/mods/basenodes/textures/default_jungletree_top.png diff --git a/games/minimal/mods/basenodes/textures/default_lava.png b/games/devtest/mods/basenodes/textures/default_lava.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_lava.png rename to games/devtest/mods/basenodes/textures/default_lava.png diff --git a/games/minimal/mods/basenodes/textures/default_lava_flowing.png b/games/devtest/mods/basenodes/textures/default_lava_flowing.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_lava_flowing.png rename to games/devtest/mods/basenodes/textures/default_lava_flowing.png diff --git a/games/minimal/mods/basenodes/textures/default_leaves.png b/games/devtest/mods/basenodes/textures/default_leaves.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_leaves.png rename to games/devtest/mods/basenodes/textures/default_leaves.png diff --git a/games/minimal/mods/basenodes/textures/default_mossycobble.png b/games/devtest/mods/basenodes/textures/default_mossycobble.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_mossycobble.png rename to games/devtest/mods/basenodes/textures/default_mossycobble.png diff --git a/games/minimal/mods/basenodes/textures/default_pine_needles.png b/games/devtest/mods/basenodes/textures/default_pine_needles.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_pine_needles.png rename to games/devtest/mods/basenodes/textures/default_pine_needles.png diff --git a/games/minimal/mods/basenodes/textures/default_pine_tree.png b/games/devtest/mods/basenodes/textures/default_pine_tree.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_pine_tree.png rename to games/devtest/mods/basenodes/textures/default_pine_tree.png diff --git a/games/minimal/mods/basenodes/textures/default_pine_tree_top.png b/games/devtest/mods/basenodes/textures/default_pine_tree_top.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_pine_tree_top.png rename to games/devtest/mods/basenodes/textures/default_pine_tree_top.png diff --git a/games/minimal/mods/basenodes/textures/default_river_water.png b/games/devtest/mods/basenodes/textures/default_river_water.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_river_water.png rename to games/devtest/mods/basenodes/textures/default_river_water.png diff --git a/games/minimal/mods/basenodes/textures/default_river_water_flowing.png b/games/devtest/mods/basenodes/textures/default_river_water_flowing.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_river_water_flowing.png rename to games/devtest/mods/basenodes/textures/default_river_water_flowing.png diff --git a/games/minimal/mods/basenodes/textures/default_sand.png b/games/devtest/mods/basenodes/textures/default_sand.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_sand.png rename to games/devtest/mods/basenodes/textures/default_sand.png diff --git a/games/minimal/mods/basenodes/textures/default_snow.png b/games/devtest/mods/basenodes/textures/default_snow.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_snow.png rename to games/devtest/mods/basenodes/textures/default_snow.png diff --git a/games/minimal/mods/basenodes/textures/default_snow_side.png b/games/devtest/mods/basenodes/textures/default_snow_side.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_snow_side.png rename to games/devtest/mods/basenodes/textures/default_snow_side.png diff --git a/games/minimal/mods/basenodes/textures/default_stone.png b/games/devtest/mods/basenodes/textures/default_stone.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_stone.png rename to games/devtest/mods/basenodes/textures/default_stone.png diff --git a/games/minimal/mods/basenodes/textures/default_tree.png b/games/devtest/mods/basenodes/textures/default_tree.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_tree.png rename to games/devtest/mods/basenodes/textures/default_tree.png diff --git a/games/minimal/mods/basenodes/textures/default_tree_top.png b/games/devtest/mods/basenodes/textures/default_tree_top.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_tree_top.png rename to games/devtest/mods/basenodes/textures/default_tree_top.png diff --git a/games/minimal/mods/basenodes/textures/default_water.png b/games/devtest/mods/basenodes/textures/default_water.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_water.png rename to games/devtest/mods/basenodes/textures/default_water.png diff --git a/games/minimal/mods/basenodes/textures/default_water_flowing.png b/games/devtest/mods/basenodes/textures/default_water_flowing.png similarity index 100% rename from games/minimal/mods/basenodes/textures/default_water_flowing.png rename to games/devtest/mods/basenodes/textures/default_water_flowing.png diff --git a/games/minimal/mods/basetools/init.lua b/games/devtest/mods/basetools/init.lua similarity index 100% rename from games/minimal/mods/basetools/init.lua rename to games/devtest/mods/basetools/init.lua diff --git a/games/minimal/mods/basetools/mod.conf b/games/devtest/mods/basetools/mod.conf similarity index 100% rename from games/minimal/mods/basetools/mod.conf rename to games/devtest/mods/basetools/mod.conf diff --git a/games/minimal/mods/basetools/textures/basetools_dirtpick.png b/games/devtest/mods/basetools/textures/basetools_dirtpick.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_dirtpick.png rename to games/devtest/mods/basetools/textures/basetools_dirtpick.png diff --git a/games/minimal/mods/basetools/textures/basetools_firesword.png b/games/devtest/mods/basetools/textures/basetools_firesword.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_firesword.png rename to games/devtest/mods/basetools/textures/basetools_firesword.png diff --git a/games/minimal/mods/basetools/textures/basetools_icesword.png b/games/devtest/mods/basetools/textures/basetools_icesword.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_icesword.png rename to games/devtest/mods/basetools/textures/basetools_icesword.png diff --git a/games/minimal/mods/basetools/textures/basetools_mesepick.png b/games/devtest/mods/basetools/textures/basetools_mesepick.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_mesepick.png rename to games/devtest/mods/basetools/textures/basetools_mesepick.png diff --git a/games/minimal/mods/basetools/textures/basetools_steelaxe.png b/games/devtest/mods/basetools/textures/basetools_steelaxe.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_steelaxe.png rename to games/devtest/mods/basetools/textures/basetools_steelaxe.png diff --git a/games/minimal/mods/basetools/textures/basetools_steeldagger.png b/games/devtest/mods/basetools/textures/basetools_steeldagger.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_steeldagger.png rename to games/devtest/mods/basetools/textures/basetools_steeldagger.png diff --git a/games/minimal/mods/basetools/textures/basetools_steelpick.png b/games/devtest/mods/basetools/textures/basetools_steelpick.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_steelpick.png rename to games/devtest/mods/basetools/textures/basetools_steelpick.png diff --git a/games/minimal/mods/basetools/textures/basetools_steelpick_l1.png b/games/devtest/mods/basetools/textures/basetools_steelpick_l1.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_steelpick_l1.png rename to games/devtest/mods/basetools/textures/basetools_steelpick_l1.png diff --git a/games/minimal/mods/basetools/textures/basetools_steelpick_l2.png b/games/devtest/mods/basetools/textures/basetools_steelpick_l2.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_steelpick_l2.png rename to games/devtest/mods/basetools/textures/basetools_steelpick_l2.png diff --git a/games/minimal/mods/basetools/textures/basetools_steelshears.png b/games/devtest/mods/basetools/textures/basetools_steelshears.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_steelshears.png rename to games/devtest/mods/basetools/textures/basetools_steelshears.png diff --git a/games/minimal/mods/basetools/textures/basetools_steelshovel.png b/games/devtest/mods/basetools/textures/basetools_steelshovel.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_steelshovel.png rename to games/devtest/mods/basetools/textures/basetools_steelshovel.png diff --git a/games/minimal/mods/basetools/textures/basetools_steelsword.png b/games/devtest/mods/basetools/textures/basetools_steelsword.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_steelsword.png rename to games/devtest/mods/basetools/textures/basetools_steelsword.png diff --git a/games/minimal/mods/basetools/textures/basetools_stoneaxe.png b/games/devtest/mods/basetools/textures/basetools_stoneaxe.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_stoneaxe.png rename to games/devtest/mods/basetools/textures/basetools_stoneaxe.png diff --git a/games/minimal/mods/basetools/textures/basetools_stonepick.png b/games/devtest/mods/basetools/textures/basetools_stonepick.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_stonepick.png rename to games/devtest/mods/basetools/textures/basetools_stonepick.png diff --git a/games/minimal/mods/basetools/textures/basetools_stoneshears.png b/games/devtest/mods/basetools/textures/basetools_stoneshears.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_stoneshears.png rename to games/devtest/mods/basetools/textures/basetools_stoneshears.png diff --git a/games/minimal/mods/basetools/textures/basetools_stoneshovel.png b/games/devtest/mods/basetools/textures/basetools_stoneshovel.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_stoneshovel.png rename to games/devtest/mods/basetools/textures/basetools_stoneshovel.png diff --git a/games/minimal/mods/basetools/textures/basetools_stonesword.png b/games/devtest/mods/basetools/textures/basetools_stonesword.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_stonesword.png rename to games/devtest/mods/basetools/textures/basetools_stonesword.png diff --git a/games/minimal/mods/basetools/textures/basetools_woodaxe.png b/games/devtest/mods/basetools/textures/basetools_woodaxe.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_woodaxe.png rename to games/devtest/mods/basetools/textures/basetools_woodaxe.png diff --git a/games/minimal/mods/basetools/textures/basetools_woodpick.png b/games/devtest/mods/basetools/textures/basetools_woodpick.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_woodpick.png rename to games/devtest/mods/basetools/textures/basetools_woodpick.png diff --git a/games/minimal/mods/basetools/textures/basetools_woodshears.png b/games/devtest/mods/basetools/textures/basetools_woodshears.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_woodshears.png rename to games/devtest/mods/basetools/textures/basetools_woodshears.png diff --git a/games/minimal/mods/basetools/textures/basetools_woodshovel.png b/games/devtest/mods/basetools/textures/basetools_woodshovel.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_woodshovel.png rename to games/devtest/mods/basetools/textures/basetools_woodshovel.png diff --git a/games/minimal/mods/basetools/textures/basetools_woodsword.png b/games/devtest/mods/basetools/textures/basetools_woodsword.png similarity index 100% rename from games/minimal/mods/basetools/textures/basetools_woodsword.png rename to games/devtest/mods/basetools/textures/basetools_woodsword.png diff --git a/games/minimal/mods/bucket/init.lua b/games/devtest/mods/bucket/init.lua similarity index 100% rename from games/minimal/mods/bucket/init.lua rename to games/devtest/mods/bucket/init.lua diff --git a/games/minimal/mods/bucket/mod.conf b/games/devtest/mods/bucket/mod.conf similarity index 100% rename from games/minimal/mods/bucket/mod.conf rename to games/devtest/mods/bucket/mod.conf diff --git a/games/minimal/mods/bucket/textures/bucket.png b/games/devtest/mods/bucket/textures/bucket.png similarity index 100% rename from games/minimal/mods/bucket/textures/bucket.png rename to games/devtest/mods/bucket/textures/bucket.png diff --git a/games/minimal/mods/bucket/textures/bucket_lava.png b/games/devtest/mods/bucket/textures/bucket_lava.png similarity index 100% rename from games/minimal/mods/bucket/textures/bucket_lava.png rename to games/devtest/mods/bucket/textures/bucket_lava.png diff --git a/games/minimal/mods/bucket/textures/bucket_water.png b/games/devtest/mods/bucket/textures/bucket_water.png similarity index 100% rename from games/minimal/mods/bucket/textures/bucket_water.png rename to games/devtest/mods/bucket/textures/bucket_water.png diff --git a/games/minimal/mods/chest/init.lua b/games/devtest/mods/chest/init.lua similarity index 100% rename from games/minimal/mods/chest/init.lua rename to games/devtest/mods/chest/init.lua diff --git a/games/minimal/mods/chest/mod.conf b/games/devtest/mods/chest/mod.conf similarity index 100% rename from games/minimal/mods/chest/mod.conf rename to games/devtest/mods/chest/mod.conf diff --git a/games/minimal/mods/chest/textures/chest_chest.png b/games/devtest/mods/chest/textures/chest_chest.png similarity index 100% rename from games/minimal/mods/chest/textures/chest_chest.png rename to games/devtest/mods/chest/textures/chest_chest.png diff --git a/games/minimal/mods/chest_of_everything/init.lua b/games/devtest/mods/chest_of_everything/init.lua similarity index 100% rename from games/minimal/mods/chest_of_everything/init.lua rename to games/devtest/mods/chest_of_everything/init.lua diff --git a/games/minimal/mods/chest_of_everything/mod.conf b/games/devtest/mods/chest_of_everything/mod.conf similarity index 100% rename from games/minimal/mods/chest_of_everything/mod.conf rename to games/devtest/mods/chest_of_everything/mod.conf diff --git a/games/minimal/mods/chest_of_everything/textures/chest_of_everything_chest.png b/games/devtest/mods/chest_of_everything/textures/chest_of_everything_chest.png similarity index 100% rename from games/minimal/mods/chest_of_everything/textures/chest_of_everything_chest.png rename to games/devtest/mods/chest_of_everything/textures/chest_of_everything_chest.png diff --git a/games/minimal/mods/dignodes/init.lua b/games/devtest/mods/dignodes/init.lua similarity index 100% rename from games/minimal/mods/dignodes/init.lua rename to games/devtest/mods/dignodes/init.lua diff --git a/games/minimal/mods/dignodes/mod.conf b/games/devtest/mods/dignodes/mod.conf similarity index 100% rename from games/minimal/mods/dignodes/mod.conf rename to games/devtest/mods/dignodes/mod.conf diff --git a/games/minimal/mods/dignodes/textures/dignodes_choppy.png b/games/devtest/mods/dignodes/textures/dignodes_choppy.png similarity index 100% rename from games/minimal/mods/dignodes/textures/dignodes_choppy.png rename to games/devtest/mods/dignodes/textures/dignodes_choppy.png diff --git a/games/minimal/mods/dignodes/textures/dignodes_cracky.png b/games/devtest/mods/dignodes/textures/dignodes_cracky.png similarity index 100% rename from games/minimal/mods/dignodes/textures/dignodes_cracky.png rename to games/devtest/mods/dignodes/textures/dignodes_cracky.png diff --git a/games/minimal/mods/dignodes/textures/dignodes_crumbly.png b/games/devtest/mods/dignodes/textures/dignodes_crumbly.png similarity index 100% rename from games/minimal/mods/dignodes/textures/dignodes_crumbly.png rename to games/devtest/mods/dignodes/textures/dignodes_crumbly.png diff --git a/games/minimal/mods/dignodes/textures/dignodes_dig_immediate.png b/games/devtest/mods/dignodes/textures/dignodes_dig_immediate.png similarity index 100% rename from games/minimal/mods/dignodes/textures/dignodes_dig_immediate.png rename to games/devtest/mods/dignodes/textures/dignodes_dig_immediate.png diff --git a/games/minimal/mods/dignodes/textures/dignodes_none.png b/games/devtest/mods/dignodes/textures/dignodes_none.png similarity index 100% rename from games/minimal/mods/dignodes/textures/dignodes_none.png rename to games/devtest/mods/dignodes/textures/dignodes_none.png diff --git a/games/minimal/mods/dignodes/textures/dignodes_rating1.png b/games/devtest/mods/dignodes/textures/dignodes_rating1.png similarity index 100% rename from games/minimal/mods/dignodes/textures/dignodes_rating1.png rename to games/devtest/mods/dignodes/textures/dignodes_rating1.png diff --git a/games/minimal/mods/dignodes/textures/dignodes_rating2.png b/games/devtest/mods/dignodes/textures/dignodes_rating2.png similarity index 100% rename from games/minimal/mods/dignodes/textures/dignodes_rating2.png rename to games/devtest/mods/dignodes/textures/dignodes_rating2.png diff --git a/games/minimal/mods/dignodes/textures/dignodes_rating3.png b/games/devtest/mods/dignodes/textures/dignodes_rating3.png similarity index 100% rename from games/minimal/mods/dignodes/textures/dignodes_rating3.png rename to games/devtest/mods/dignodes/textures/dignodes_rating3.png diff --git a/games/minimal/mods/experimental/commands.lua b/games/devtest/mods/experimental/commands.lua similarity index 100% rename from games/minimal/mods/experimental/commands.lua rename to games/devtest/mods/experimental/commands.lua diff --git a/games/minimal/mods/experimental/detached.lua b/games/devtest/mods/experimental/detached.lua similarity index 100% rename from games/minimal/mods/experimental/detached.lua rename to games/devtest/mods/experimental/detached.lua diff --git a/games/minimal/mods/experimental/init.lua b/games/devtest/mods/experimental/init.lua similarity index 100% rename from games/minimal/mods/experimental/init.lua rename to games/devtest/mods/experimental/init.lua diff --git a/games/minimal/mods/experimental/items.lua b/games/devtest/mods/experimental/items.lua similarity index 100% rename from games/minimal/mods/experimental/items.lua rename to games/devtest/mods/experimental/items.lua diff --git a/games/minimal/mods/experimental/mod.conf b/games/devtest/mods/experimental/mod.conf similarity index 100% rename from games/minimal/mods/experimental/mod.conf rename to games/devtest/mods/experimental/mod.conf diff --git a/games/minimal/mods/experimental/textures/experimental_callback_node.png b/games/devtest/mods/experimental/textures/experimental_callback_node.png similarity index 100% rename from games/minimal/mods/experimental/textures/experimental_callback_node.png rename to games/devtest/mods/experimental/textures/experimental_callback_node.png diff --git a/games/minimal/mods/experimental/textures/experimental_particle_sheet.png b/games/devtest/mods/experimental/textures/experimental_particle_sheet.png similarity index 100% rename from games/minimal/mods/experimental/textures/experimental_particle_sheet.png rename to games/devtest/mods/experimental/textures/experimental_particle_sheet.png diff --git a/games/minimal/mods/experimental/textures/experimental_particle_vertical.png b/games/devtest/mods/experimental/textures/experimental_particle_vertical.png similarity index 100% rename from games/minimal/mods/experimental/textures/experimental_particle_vertical.png rename to games/devtest/mods/experimental/textures/experimental_particle_vertical.png diff --git a/games/minimal/mods/experimental/textures/experimental_tester_tool_1.png b/games/devtest/mods/experimental/textures/experimental_tester_tool_1.png similarity index 100% rename from games/minimal/mods/experimental/textures/experimental_tester_tool_1.png rename to games/devtest/mods/experimental/textures/experimental_tester_tool_1.png diff --git a/games/minimal/mods/give_initial_stuff/init.lua b/games/devtest/mods/give_initial_stuff/init.lua similarity index 100% rename from games/minimal/mods/give_initial_stuff/init.lua rename to games/devtest/mods/give_initial_stuff/init.lua diff --git a/games/minimal/mods/give_initial_stuff/mod.conf b/games/devtest/mods/give_initial_stuff/mod.conf similarity index 100% rename from games/minimal/mods/give_initial_stuff/mod.conf rename to games/devtest/mods/give_initial_stuff/mod.conf diff --git a/games/minimal/mods/initial_message/init.lua b/games/devtest/mods/initial_message/init.lua similarity index 66% rename from games/minimal/mods/initial_message/init.lua rename to games/devtest/mods/initial_message/init.lua index f92f4d3cf..59e9f5f4b 100644 --- a/games/minimal/mods/initial_message/init.lua +++ b/games/devtest/mods/initial_message/init.lua @@ -3,7 +3,7 @@ minetest.register_on_joinplayer(function(player) if not player or not player:is_player() then return end - minetest.chat_send_player(player:get_player_name(), "This is the \"Minimal development Test\" [minimal], meant only for testing and development. Use Minetest Game for the real thing.") + minetest.chat_send_player(player:get_player_name(), "This is the \"Development Test\" [devtest], meant only for testing and development. Use Minetest Game for the real thing.") end minetest.after(2.0, cb, player) end) diff --git a/games/minimal/mods/initial_message/mod.conf b/games/devtest/mods/initial_message/mod.conf similarity index 100% rename from games/minimal/mods/initial_message/mod.conf rename to games/devtest/mods/initial_message/mod.conf diff --git a/games/minimal/mods/mapgen/init.lua b/games/devtest/mods/mapgen/init.lua similarity index 100% rename from games/minimal/mods/mapgen/init.lua rename to games/devtest/mods/mapgen/init.lua diff --git a/games/minimal/mods/mapgen/mod.conf b/games/devtest/mods/mapgen/mod.conf similarity index 100% rename from games/minimal/mods/mapgen/mod.conf rename to games/devtest/mods/mapgen/mod.conf diff --git a/games/minimal/mods/modchannels/init.lua b/games/devtest/mods/modchannels/init.lua similarity index 100% rename from games/minimal/mods/modchannels/init.lua rename to games/devtest/mods/modchannels/init.lua diff --git a/games/minimal/mods/modchannels/mod.conf b/games/devtest/mods/modchannels/mod.conf similarity index 100% rename from games/minimal/mods/modchannels/mod.conf rename to games/devtest/mods/modchannels/mod.conf diff --git a/games/minimal/mods/soundstuff/init.lua b/games/devtest/mods/soundstuff/init.lua similarity index 100% rename from games/minimal/mods/soundstuff/init.lua rename to games/devtest/mods/soundstuff/init.lua diff --git a/games/minimal/mods/soundstuff/mod.conf b/games/devtest/mods/soundstuff/mod.conf similarity index 100% rename from games/minimal/mods/soundstuff/mod.conf rename to games/devtest/mods/soundstuff/mod.conf diff --git a/games/minimal/mods/soundstuff/sounds/soundstuff_mono.ogg b/games/devtest/mods/soundstuff/sounds/soundstuff_mono.ogg similarity index 100% rename from games/minimal/mods/soundstuff/sounds/soundstuff_mono.ogg rename to games/devtest/mods/soundstuff/sounds/soundstuff_mono.ogg diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_eat.png b/games/devtest/mods/soundstuff/textures/soundstuff_eat.png similarity index 100% rename from games/minimal/mods/soundstuff/textures/soundstuff_eat.png rename to games/devtest/mods/soundstuff/textures/soundstuff_eat.png diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_blank.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_blank.png similarity index 100% rename from games/minimal/mods/soundstuff/textures/soundstuff_node_blank.png rename to games/devtest/mods/soundstuff/textures/soundstuff_node_blank.png diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_climbable.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_climbable.png similarity index 100% rename from games/minimal/mods/soundstuff/textures/soundstuff_node_climbable.png rename to games/devtest/mods/soundstuff/textures/soundstuff_node_climbable.png diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_dig.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_dig.png similarity index 100% rename from games/minimal/mods/soundstuff/textures/soundstuff_node_dig.png rename to games/devtest/mods/soundstuff/textures/soundstuff_node_dig.png diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_dug.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_dug.png similarity index 100% rename from games/minimal/mods/soundstuff/textures/soundstuff_node_dug.png rename to games/devtest/mods/soundstuff/textures/soundstuff_node_dug.png diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_fall.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_fall.png similarity index 100% rename from games/minimal/mods/soundstuff/textures/soundstuff_node_fall.png rename to games/devtest/mods/soundstuff/textures/soundstuff_node_fall.png diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_footstep.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_footstep.png similarity index 100% rename from games/minimal/mods/soundstuff/textures/soundstuff_node_footstep.png rename to games/devtest/mods/soundstuff/textures/soundstuff_node_footstep.png diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_place.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_place.png similarity index 100% rename from games/minimal/mods/soundstuff/textures/soundstuff_node_place.png rename to games/devtest/mods/soundstuff/textures/soundstuff_node_place.png diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_place_failed.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_place_failed.png similarity index 100% rename from games/minimal/mods/soundstuff/textures/soundstuff_node_place_failed.png rename to games/devtest/mods/soundstuff/textures/soundstuff_node_place_failed.png diff --git a/games/minimal/mods/soundstuff/textures/soundstuff_node_sound.png b/games/devtest/mods/soundstuff/textures/soundstuff_node_sound.png similarity index 100% rename from games/minimal/mods/soundstuff/textures/soundstuff_node_sound.png rename to games/devtest/mods/soundstuff/textures/soundstuff_node_sound.png diff --git a/games/minimal/mods/stairs/init.lua b/games/devtest/mods/stairs/init.lua similarity index 100% rename from games/minimal/mods/stairs/init.lua rename to games/devtest/mods/stairs/init.lua diff --git a/games/minimal/mods/stairs/mod.conf b/games/devtest/mods/stairs/mod.conf similarity index 100% rename from games/minimal/mods/stairs/mod.conf rename to games/devtest/mods/stairs/mod.conf diff --git a/games/minimal/mods/testentities/armor.lua b/games/devtest/mods/testentities/armor.lua similarity index 100% rename from games/minimal/mods/testentities/armor.lua rename to games/devtest/mods/testentities/armor.lua diff --git a/games/minimal/mods/testentities/callbacks.lua b/games/devtest/mods/testentities/callbacks.lua similarity index 100% rename from games/minimal/mods/testentities/callbacks.lua rename to games/devtest/mods/testentities/callbacks.lua diff --git a/games/minimal/mods/testentities/init.lua b/games/devtest/mods/testentities/init.lua similarity index 100% rename from games/minimal/mods/testentities/init.lua rename to games/devtest/mods/testentities/init.lua diff --git a/games/minimal/mods/testentities/mod.conf b/games/devtest/mods/testentities/mod.conf similarity index 100% rename from games/minimal/mods/testentities/mod.conf rename to games/devtest/mods/testentities/mod.conf diff --git a/games/minimal/mods/testentities/textures/testentities_armorball.png b/games/devtest/mods/testentities/textures/testentities_armorball.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_armorball.png rename to games/devtest/mods/testentities/textures/testentities_armorball.png diff --git a/games/minimal/mods/testentities/textures/testentities_callback.png b/games/devtest/mods/testentities/textures/testentities_callback.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_callback.png rename to games/devtest/mods/testentities/textures/testentities_callback.png diff --git a/games/minimal/mods/testentities/textures/testentities_callback_step.png b/games/devtest/mods/testentities/textures/testentities_callback_step.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_callback_step.png rename to games/devtest/mods/testentities/textures/testentities_callback_step.png diff --git a/games/minimal/mods/testentities/textures/testentities_cube1.png b/games/devtest/mods/testentities/textures/testentities_cube1.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_cube1.png rename to games/devtest/mods/testentities/textures/testentities_cube1.png diff --git a/games/minimal/mods/testentities/textures/testentities_cube2.png b/games/devtest/mods/testentities/textures/testentities_cube2.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_cube2.png rename to games/devtest/mods/testentities/textures/testentities_cube2.png diff --git a/games/minimal/mods/testentities/textures/testentities_cube3.png b/games/devtest/mods/testentities/textures/testentities_cube3.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_cube3.png rename to games/devtest/mods/testentities/textures/testentities_cube3.png diff --git a/games/minimal/mods/testentities/textures/testentities_cube4.png b/games/devtest/mods/testentities/textures/testentities_cube4.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_cube4.png rename to games/devtest/mods/testentities/textures/testentities_cube4.png diff --git a/games/minimal/mods/testentities/textures/testentities_cube5.png b/games/devtest/mods/testentities/textures/testentities_cube5.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_cube5.png rename to games/devtest/mods/testentities/textures/testentities_cube5.png diff --git a/games/minimal/mods/testentities/textures/testentities_cube6.png b/games/devtest/mods/testentities/textures/testentities_cube6.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_cube6.png rename to games/devtest/mods/testentities/textures/testentities_cube6.png diff --git a/games/minimal/mods/testentities/textures/testentities_dungeon_master.png b/games/devtest/mods/testentities/textures/testentities_dungeon_master.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_dungeon_master.png rename to games/devtest/mods/testentities/textures/testentities_dungeon_master.png diff --git a/games/minimal/mods/testentities/textures/testentities_sprite.png b/games/devtest/mods/testentities/textures/testentities_sprite.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_sprite.png rename to games/devtest/mods/testentities/textures/testentities_sprite.png diff --git a/games/minimal/mods/testentities/textures/testentities_upright_sprite1.png b/games/devtest/mods/testentities/textures/testentities_upright_sprite1.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_upright_sprite1.png rename to games/devtest/mods/testentities/textures/testentities_upright_sprite1.png diff --git a/games/minimal/mods/testentities/textures/testentities_upright_sprite2.png b/games/devtest/mods/testentities/textures/testentities_upright_sprite2.png similarity index 100% rename from games/minimal/mods/testentities/textures/testentities_upright_sprite2.png rename to games/devtest/mods/testentities/textures/testentities_upright_sprite2.png diff --git a/games/minimal/mods/testentities/visuals.lua b/games/devtest/mods/testentities/visuals.lua similarity index 100% rename from games/minimal/mods/testentities/visuals.lua rename to games/devtest/mods/testentities/visuals.lua diff --git a/games/minimal/mods/testfood/init.lua b/games/devtest/mods/testfood/init.lua similarity index 100% rename from games/minimal/mods/testfood/init.lua rename to games/devtest/mods/testfood/init.lua diff --git a/games/minimal/mods/testfood/mod.conf b/games/devtest/mods/testfood/mod.conf similarity index 100% rename from games/minimal/mods/testfood/mod.conf rename to games/devtest/mods/testfood/mod.conf diff --git a/games/minimal/mods/testfood/textures/testfood_bad.png b/games/devtest/mods/testfood/textures/testfood_bad.png similarity index 100% rename from games/minimal/mods/testfood/textures/testfood_bad.png rename to games/devtest/mods/testfood/textures/testfood_bad.png diff --git a/games/minimal/mods/testfood/textures/testfood_bad2.png b/games/devtest/mods/testfood/textures/testfood_bad2.png similarity index 100% rename from games/minimal/mods/testfood/textures/testfood_bad2.png rename to games/devtest/mods/testfood/textures/testfood_bad2.png diff --git a/games/minimal/mods/testfood/textures/testfood_good.png b/games/devtest/mods/testfood/textures/testfood_good.png similarity index 100% rename from games/minimal/mods/testfood/textures/testfood_good.png rename to games/devtest/mods/testfood/textures/testfood_good.png diff --git a/games/minimal/mods/testfood/textures/testfood_good2.png b/games/devtest/mods/testfood/textures/testfood_good2.png similarity index 100% rename from games/minimal/mods/testfood/textures/testfood_good2.png rename to games/devtest/mods/testfood/textures/testfood_good2.png diff --git a/games/minimal/mods/testformspec/callbacks.lua b/games/devtest/mods/testformspec/callbacks.lua similarity index 100% rename from games/minimal/mods/testformspec/callbacks.lua rename to games/devtest/mods/testformspec/callbacks.lua diff --git a/games/minimal/mods/testformspec/dummy_items.lua b/games/devtest/mods/testformspec/dummy_items.lua similarity index 100% rename from games/minimal/mods/testformspec/dummy_items.lua rename to games/devtest/mods/testformspec/dummy_items.lua diff --git a/games/minimal/mods/testformspec/formspec.lua b/games/devtest/mods/testformspec/formspec.lua similarity index 100% rename from games/minimal/mods/testformspec/formspec.lua rename to games/devtest/mods/testformspec/formspec.lua diff --git a/games/minimal/mods/testformspec/init.lua b/games/devtest/mods/testformspec/init.lua similarity index 100% rename from games/minimal/mods/testformspec/init.lua rename to games/devtest/mods/testformspec/init.lua diff --git a/games/minimal/mods/testformspec/mod.conf b/games/devtest/mods/testformspec/mod.conf similarity index 100% rename from games/minimal/mods/testformspec/mod.conf rename to games/devtest/mods/testformspec/mod.conf diff --git a/games/minimal/mods/testformspec/textures/testformspec_animation.jpg b/games/devtest/mods/testformspec/textures/testformspec_animation.jpg similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_animation.jpg rename to games/devtest/mods/testformspec/textures/testformspec_animation.jpg diff --git a/games/minimal/mods/testformspec/textures/testformspec_animation.png b/games/devtest/mods/testformspec/textures/testformspec_animation.png similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_animation.png rename to games/devtest/mods/testformspec/textures/testformspec_animation.png diff --git a/games/minimal/mods/testformspec/textures/testformspec_bg.png b/games/devtest/mods/testformspec/textures/testformspec_bg.png similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_bg.png rename to games/devtest/mods/testformspec/textures/testformspec_bg.png diff --git a/games/minimal/mods/testformspec/textures/testformspec_bg_9slice.png b/games/devtest/mods/testformspec/textures/testformspec_bg_9slice.png similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_bg_9slice.png rename to games/devtest/mods/testformspec/textures/testformspec_bg_9slice.png diff --git a/games/minimal/mods/testformspec/textures/testformspec_bg_9slice_hovered.png b/games/devtest/mods/testformspec/textures/testformspec_bg_9slice_hovered.png similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_bg_9slice_hovered.png rename to games/devtest/mods/testformspec/textures/testformspec_bg_9slice_hovered.png diff --git a/games/minimal/mods/testformspec/textures/testformspec_bg_9slice_pressed.png b/games/devtest/mods/testformspec/textures/testformspec_bg_9slice_pressed.png similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_bg_9slice_pressed.png rename to games/devtest/mods/testformspec/textures/testformspec_bg_9slice_pressed.png diff --git a/games/minimal/mods/testformspec/textures/testformspec_bg_hovered.png b/games/devtest/mods/testformspec/textures/testformspec_bg_hovered.png similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_bg_hovered.png rename to games/devtest/mods/testformspec/textures/testformspec_bg_hovered.png diff --git a/games/minimal/mods/testformspec/textures/testformspec_bg_pressed.png b/games/devtest/mods/testformspec/textures/testformspec_bg_pressed.png similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_bg_pressed.png rename to games/devtest/mods/testformspec/textures/testformspec_bg_pressed.png diff --git a/games/minimal/mods/testformspec/textures/testformspec_button_image.png b/games/devtest/mods/testformspec/textures/testformspec_button_image.png similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_button_image.png rename to games/devtest/mods/testformspec/textures/testformspec_button_image.png diff --git a/games/minimal/mods/testformspec/textures/testformspec_hovered.png b/games/devtest/mods/testformspec/textures/testformspec_hovered.png similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_hovered.png rename to games/devtest/mods/testformspec/textures/testformspec_hovered.png diff --git a/games/minimal/mods/testformspec/textures/testformspec_item.png b/games/devtest/mods/testformspec/textures/testformspec_item.png similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_item.png rename to games/devtest/mods/testformspec/textures/testformspec_item.png diff --git a/games/minimal/mods/testformspec/textures/testformspec_node.png b/games/devtest/mods/testformspec/textures/testformspec_node.png similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_node.png rename to games/devtest/mods/testformspec/textures/testformspec_node.png diff --git a/games/minimal/mods/testformspec/textures/testformspec_pressed.png b/games/devtest/mods/testformspec/textures/testformspec_pressed.png similarity index 100% rename from games/minimal/mods/testformspec/textures/testformspec_pressed.png rename to games/devtest/mods/testformspec/textures/testformspec_pressed.png diff --git a/games/minimal/mods/testnodes/README.md b/games/devtest/mods/testnodes/README.md similarity index 100% rename from games/minimal/mods/testnodes/README.md rename to games/devtest/mods/testnodes/README.md diff --git a/games/minimal/mods/testnodes/drawtypes.lua b/games/devtest/mods/testnodes/drawtypes.lua similarity index 100% rename from games/minimal/mods/testnodes/drawtypes.lua rename to games/devtest/mods/testnodes/drawtypes.lua diff --git a/games/minimal/mods/testnodes/init.lua b/games/devtest/mods/testnodes/init.lua similarity index 100% rename from games/minimal/mods/testnodes/init.lua rename to games/devtest/mods/testnodes/init.lua diff --git a/games/minimal/mods/testnodes/light.lua b/games/devtest/mods/testnodes/light.lua similarity index 100% rename from games/minimal/mods/testnodes/light.lua rename to games/devtest/mods/testnodes/light.lua diff --git a/games/minimal/mods/testnodes/liquids.lua b/games/devtest/mods/testnodes/liquids.lua similarity index 100% rename from games/minimal/mods/testnodes/liquids.lua rename to games/devtest/mods/testnodes/liquids.lua diff --git a/games/minimal/mods/testnodes/meshes.lua b/games/devtest/mods/testnodes/meshes.lua similarity index 100% rename from games/minimal/mods/testnodes/meshes.lua rename to games/devtest/mods/testnodes/meshes.lua diff --git a/games/minimal/mods/testnodes/mod.conf b/games/devtest/mods/testnodes/mod.conf similarity index 100% rename from games/minimal/mods/testnodes/mod.conf rename to games/devtest/mods/testnodes/mod.conf diff --git a/games/minimal/mods/testnodes/models/testnodes_ocorner.obj b/games/devtest/mods/testnodes/models/testnodes_ocorner.obj similarity index 100% rename from games/minimal/mods/testnodes/models/testnodes_ocorner.obj rename to games/devtest/mods/testnodes/models/testnodes_ocorner.obj diff --git a/games/minimal/mods/testnodes/models/testnodes_pyramid.obj b/games/devtest/mods/testnodes/models/testnodes_pyramid.obj similarity index 100% rename from games/minimal/mods/testnodes/models/testnodes_pyramid.obj rename to games/devtest/mods/testnodes/models/testnodes_pyramid.obj diff --git a/games/minimal/mods/testnodes/nodeboxes.lua b/games/devtest/mods/testnodes/nodeboxes.lua similarity index 100% rename from games/minimal/mods/testnodes/nodeboxes.lua rename to games/devtest/mods/testnodes/nodeboxes.lua diff --git a/games/minimal/mods/testnodes/param2.lua b/games/devtest/mods/testnodes/param2.lua similarity index 100% rename from games/minimal/mods/testnodes/param2.lua rename to games/devtest/mods/testnodes/param2.lua diff --git a/games/minimal/mods/testnodes/properties.lua b/games/devtest/mods/testnodes/properties.lua similarity index 100% rename from games/minimal/mods/testnodes/properties.lua rename to games/devtest/mods/testnodes/properties.lua diff --git a/games/minimal/mods/testnodes/settingtypes.txt b/games/devtest/mods/testnodes/settingtypes.txt similarity index 100% rename from games/minimal/mods/testnodes/settingtypes.txt rename to games/devtest/mods/testnodes/settingtypes.txt diff --git a/games/minimal/mods/testnodes/textures.lua b/games/devtest/mods/testnodes/textures.lua similarity index 100% rename from games/minimal/mods/testnodes/textures.lua rename to games/devtest/mods/testnodes/textures.lua diff --git a/games/minimal/mods/testnodes/textures/testnodes_1.png b/games/devtest/mods/testnodes/textures/testnodes_1.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_1.png rename to games/devtest/mods/testnodes/textures/testnodes_1.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_1g.png b/games/devtest/mods/testnodes/textures/testnodes_1g.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_1g.png rename to games/devtest/mods/testnodes/textures/testnodes_1g.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_1w.png b/games/devtest/mods/testnodes/textures/testnodes_1w.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_1w.png rename to games/devtest/mods/testnodes/textures/testnodes_1w.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_1wg.png b/games/devtest/mods/testnodes/textures/testnodes_1wg.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_1wg.png rename to games/devtest/mods/testnodes/textures/testnodes_1wg.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_2.png b/games/devtest/mods/testnodes/textures/testnodes_2.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_2.png rename to games/devtest/mods/testnodes/textures/testnodes_2.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_2g.png b/games/devtest/mods/testnodes/textures/testnodes_2g.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_2g.png rename to games/devtest/mods/testnodes/textures/testnodes_2g.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_2w.png b/games/devtest/mods/testnodes/textures/testnodes_2w.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_2w.png rename to games/devtest/mods/testnodes/textures/testnodes_2w.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_2wg.png b/games/devtest/mods/testnodes/textures/testnodes_2wg.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_2wg.png rename to games/devtest/mods/testnodes/textures/testnodes_2wg.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_3.png b/games/devtest/mods/testnodes/textures/testnodes_3.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_3.png rename to games/devtest/mods/testnodes/textures/testnodes_3.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_3g.png b/games/devtest/mods/testnodes/textures/testnodes_3g.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_3g.png rename to games/devtest/mods/testnodes/textures/testnodes_3g.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_3w.png b/games/devtest/mods/testnodes/textures/testnodes_3w.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_3w.png rename to games/devtest/mods/testnodes/textures/testnodes_3w.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_3wg.png b/games/devtest/mods/testnodes/textures/testnodes_3wg.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_3wg.png rename to games/devtest/mods/testnodes/textures/testnodes_3wg.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_4.png b/games/devtest/mods/testnodes/textures/testnodes_4.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_4.png rename to games/devtest/mods/testnodes/textures/testnodes_4.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_4g.png b/games/devtest/mods/testnodes/textures/testnodes_4g.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_4g.png rename to games/devtest/mods/testnodes/textures/testnodes_4g.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_4w.png b/games/devtest/mods/testnodes/textures/testnodes_4w.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_4w.png rename to games/devtest/mods/testnodes/textures/testnodes_4w.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_4wg.png b/games/devtest/mods/testnodes/textures/testnodes_4wg.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_4wg.png rename to games/devtest/mods/testnodes/textures/testnodes_4wg.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_5.png b/games/devtest/mods/testnodes/textures/testnodes_5.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_5.png rename to games/devtest/mods/testnodes/textures/testnodes_5.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_5g.png b/games/devtest/mods/testnodes/textures/testnodes_5g.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_5g.png rename to games/devtest/mods/testnodes/textures/testnodes_5g.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_5w.png b/games/devtest/mods/testnodes/textures/testnodes_5w.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_5w.png rename to games/devtest/mods/testnodes/textures/testnodes_5w.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_5wg.png b/games/devtest/mods/testnodes/textures/testnodes_5wg.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_5wg.png rename to games/devtest/mods/testnodes/textures/testnodes_5wg.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_6.png b/games/devtest/mods/testnodes/textures/testnodes_6.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_6.png rename to games/devtest/mods/testnodes/textures/testnodes_6.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_6g.png b/games/devtest/mods/testnodes/textures/testnodes_6g.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_6g.png rename to games/devtest/mods/testnodes/textures/testnodes_6g.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_6w.png b/games/devtest/mods/testnodes/textures/testnodes_6w.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_6w.png rename to games/devtest/mods/testnodes/textures/testnodes_6w.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_6wg.png b/games/devtest/mods/testnodes/textures/testnodes_6wg.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_6wg.png rename to games/devtest/mods/testnodes/textures/testnodes_6wg.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_airlike.png b/games/devtest/mods/testnodes/textures/testnodes_airlike.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_airlike.png rename to games/devtest/mods/testnodes/textures/testnodes_airlike.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_allfaces.png b/games/devtest/mods/testnodes/textures/testnodes_allfaces.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_allfaces.png rename to games/devtest/mods/testnodes/textures/testnodes_allfaces.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_allfaces_optional.png b/games/devtest/mods/testnodes/textures/testnodes_allfaces_optional.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_allfaces_optional.png rename to games/devtest/mods/testnodes/textures/testnodes_allfaces_optional.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_alpha.png b/games/devtest/mods/testnodes/textures/testnodes_alpha.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_alpha.png rename to games/devtest/mods/testnodes/textures/testnodes_alpha.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_alpha128.png b/games/devtest/mods/testnodes/textures/testnodes_alpha128.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_alpha128.png rename to games/devtest/mods/testnodes/textures/testnodes_alpha128.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_alpha191.png b/games/devtest/mods/testnodes/textures/testnodes_alpha191.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_alpha191.png rename to games/devtest/mods/testnodes/textures/testnodes_alpha191.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_alpha64.png b/games/devtest/mods/testnodes/textures/testnodes_alpha64.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_alpha64.png rename to games/devtest/mods/testnodes/textures/testnodes_alpha64.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_anim.png b/games/devtest/mods/testnodes/textures/testnodes_anim.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_anim.png rename to games/devtest/mods/testnodes/textures/testnodes_anim.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_attached_bottom.png b/games/devtest/mods/testnodes/textures/testnodes_attached_bottom.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_attached_bottom.png rename to games/devtest/mods/testnodes/textures/testnodes_attached_bottom.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_attached_side.png b/games/devtest/mods/testnodes/textures/testnodes_attached_side.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_attached_side.png rename to games/devtest/mods/testnodes/textures/testnodes_attached_side.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_attached_top.png b/games/devtest/mods/testnodes/textures/testnodes_attached_top.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_attached_top.png rename to games/devtest/mods/testnodes/textures/testnodes_attached_top.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_attachedw_bottom.png b/games/devtest/mods/testnodes/textures/testnodes_attachedw_bottom.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_attachedw_bottom.png rename to games/devtest/mods/testnodes/textures/testnodes_attachedw_bottom.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_attachedw_side.png b/games/devtest/mods/testnodes/textures/testnodes_attachedw_side.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_attachedw_side.png rename to games/devtest/mods/testnodes/textures/testnodes_attachedw_side.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_attachedw_top.png b/games/devtest/mods/testnodes/textures/testnodes_attachedw_top.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_attachedw_top.png rename to games/devtest/mods/testnodes/textures/testnodes_attachedw_top.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_bouncy.png b/games/devtest/mods/testnodes/textures/testnodes_bouncy.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_bouncy.png rename to games/devtest/mods/testnodes/textures/testnodes_bouncy.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_buildable_to.png b/games/devtest/mods/testnodes/textures/testnodes_buildable_to.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_buildable_to.png rename to games/devtest/mods/testnodes/textures/testnodes_buildable_to.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_climbable_nojump_side.png b/games/devtest/mods/testnodes/textures/testnodes_climbable_nojump_side.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_climbable_nojump_side.png rename to games/devtest/mods/testnodes/textures/testnodes_climbable_nojump_side.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_climbable_side.png b/games/devtest/mods/testnodes/textures/testnodes_climbable_side.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_climbable_side.png rename to games/devtest/mods/testnodes/textures/testnodes_climbable_side.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_damage.png b/games/devtest/mods/testnodes/textures/testnodes_damage.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_damage.png rename to games/devtest/mods/testnodes/textures/testnodes_damage.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_damage_neg.png b/games/devtest/mods/testnodes/textures/testnodes_damage_neg.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_damage_neg.png rename to games/devtest/mods/testnodes/textures/testnodes_damage_neg.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_drowning.png b/games/devtest/mods/testnodes/textures/testnodes_drowning.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_drowning.png rename to games/devtest/mods/testnodes/textures/testnodes_drowning.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_fall_damage_minus.png b/games/devtest/mods/testnodes/textures/testnodes_fall_damage_minus.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_fall_damage_minus.png rename to games/devtest/mods/testnodes/textures/testnodes_fall_damage_minus.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_fall_damage_plus.png b/games/devtest/mods/testnodes/textures/testnodes_fall_damage_plus.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_fall_damage_plus.png rename to games/devtest/mods/testnodes/textures/testnodes_fall_damage_plus.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_fencelike.png b/games/devtest/mods/testnodes/textures/testnodes_fencelike.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_fencelike.png rename to games/devtest/mods/testnodes/textures/testnodes_fencelike.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_firelike.png b/games/devtest/mods/testnodes/textures/testnodes_firelike.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_firelike.png rename to games/devtest/mods/testnodes/textures/testnodes_firelike.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_glasslike.png b/games/devtest/mods/testnodes/textures/testnodes_glasslike.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_glasslike.png rename to games/devtest/mods/testnodes/textures/testnodes_glasslike.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_glasslike_detail.png b/games/devtest/mods/testnodes/textures/testnodes_glasslike_detail.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_glasslike_detail.png rename to games/devtest/mods/testnodes/textures/testnodes_glasslike_detail.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_glasslike_framed.png b/games/devtest/mods/testnodes/textures/testnodes_glasslike_framed.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_glasslike_framed.png rename to games/devtest/mods/testnodes/textures/testnodes_glasslike_framed.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_glasslike_framed2.png b/games/devtest/mods/testnodes/textures/testnodes_glasslike_framed2.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_glasslike_framed2.png rename to games/devtest/mods/testnodes/textures/testnodes_glasslike_framed2.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_glasslike_framed_optional.png b/games/devtest/mods/testnodes/textures/testnodes_glasslike_framed_optional.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_glasslike_framed_optional.png rename to games/devtest/mods/testnodes/textures/testnodes_glasslike_framed_optional.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_glasslikeliquid.png b/games/devtest/mods/testnodes/textures/testnodes_glasslikeliquid.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_glasslikeliquid.png rename to games/devtest/mods/testnodes/textures/testnodes_glasslikeliquid.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light.png b/games/devtest/mods/testnodes/textures/testnodes_light.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light.png rename to games/devtest/mods/testnodes/textures/testnodes_light.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_1.png b/games/devtest/mods/testnodes/textures/testnodes_light_1.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_1.png rename to games/devtest/mods/testnodes/textures/testnodes_light_1.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_10.png b/games/devtest/mods/testnodes/textures/testnodes_light_10.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_10.png rename to games/devtest/mods/testnodes/textures/testnodes_light_10.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_11.png b/games/devtest/mods/testnodes/textures/testnodes_light_11.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_11.png rename to games/devtest/mods/testnodes/textures/testnodes_light_11.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_12.png b/games/devtest/mods/testnodes/textures/testnodes_light_12.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_12.png rename to games/devtest/mods/testnodes/textures/testnodes_light_12.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_13.png b/games/devtest/mods/testnodes/textures/testnodes_light_13.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_13.png rename to games/devtest/mods/testnodes/textures/testnodes_light_13.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_14.png b/games/devtest/mods/testnodes/textures/testnodes_light_14.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_14.png rename to games/devtest/mods/testnodes/textures/testnodes_light_14.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_2.png b/games/devtest/mods/testnodes/textures/testnodes_light_2.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_2.png rename to games/devtest/mods/testnodes/textures/testnodes_light_2.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_3.png b/games/devtest/mods/testnodes/textures/testnodes_light_3.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_3.png rename to games/devtest/mods/testnodes/textures/testnodes_light_3.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_4.png b/games/devtest/mods/testnodes/textures/testnodes_light_4.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_4.png rename to games/devtest/mods/testnodes/textures/testnodes_light_4.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_5.png b/games/devtest/mods/testnodes/textures/testnodes_light_5.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_5.png rename to games/devtest/mods/testnodes/textures/testnodes_light_5.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_6.png b/games/devtest/mods/testnodes/textures/testnodes_light_6.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_6.png rename to games/devtest/mods/testnodes/textures/testnodes_light_6.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_7.png b/games/devtest/mods/testnodes/textures/testnodes_light_7.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_7.png rename to games/devtest/mods/testnodes/textures/testnodes_light_7.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_8.png b/games/devtest/mods/testnodes/textures/testnodes_light_8.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_8.png rename to games/devtest/mods/testnodes/textures/testnodes_light_8.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_light_9.png b/games/devtest/mods/testnodes/textures/testnodes_light_9.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_light_9.png rename to games/devtest/mods/testnodes/textures/testnodes_light_9.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_line_crossing.png b/games/devtest/mods/testnodes/textures/testnodes_line_crossing.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_line_crossing.png rename to games/devtest/mods/testnodes/textures/testnodes_line_crossing.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_line_curved.png b/games/devtest/mods/testnodes/textures/testnodes_line_curved.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_line_curved.png rename to games/devtest/mods/testnodes/textures/testnodes_line_curved.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_line_straight.png b/games/devtest/mods/testnodes/textures/testnodes_line_straight.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_line_straight.png rename to games/devtest/mods/testnodes/textures/testnodes_line_straight.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_line_t_junction.png b/games/devtest/mods/testnodes/textures/testnodes_line_t_junction.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_line_t_junction.png rename to games/devtest/mods/testnodes/textures/testnodes_line_t_junction.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquid.png b/games/devtest/mods/testnodes/textures/testnodes_liquid.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquid.png rename to games/devtest/mods/testnodes/textures/testnodes_liquid.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidflowing.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidflowing.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r0.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r0.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r0.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r0.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r1.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r1.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r1.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r1.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r2.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r2.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r2.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r2.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r3.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r3.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r3.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r3.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r4.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r4.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r4.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r4.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r5.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r5.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r5.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r5.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r6.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r6.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r6.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r6.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r7.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r7.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r7.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r7.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r8.png b/games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r8.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidflowing_r8.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidflowing_r8.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidsource.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidsource.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r0.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r0.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidsource_r0.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidsource_r0.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r1.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r1.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidsource_r1.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidsource_r1.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r2.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r2.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidsource_r2.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidsource_r2.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r3.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r3.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidsource_r3.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidsource_r3.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r4.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r4.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidsource_r4.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidsource_r4.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r5.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r5.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidsource_r5.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidsource_r5.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r6.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r6.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidsource_r6.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidsource_r6.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r7.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r7.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidsource_r7.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidsource_r7.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_liquidsource_r8.png b/games/devtest/mods/testnodes/textures/testnodes_liquidsource_r8.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_liquidsource_r8.png rename to games/devtest/mods/testnodes/textures/testnodes_liquidsource_r8.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_mesh_stripes.png b/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_mesh_stripes.png rename to games/devtest/mods/testnodes/textures/testnodes_mesh_stripes.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_mesh_stripes2.png b/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes2.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_mesh_stripes2.png rename to games/devtest/mods/testnodes/textures/testnodes_mesh_stripes2.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_mesh_stripes3.png b/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes3.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_mesh_stripes3.png rename to games/devtest/mods/testnodes/textures/testnodes_mesh_stripes3.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_mesh_stripes4.png b/games/devtest/mods/testnodes/textures/testnodes_mesh_stripes4.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_mesh_stripes4.png rename to games/devtest/mods/testnodes/textures/testnodes_mesh_stripes4.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_node.png b/games/devtest/mods/testnodes/textures/testnodes_node.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_node.png rename to games/devtest/mods/testnodes/textures/testnodes_node.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_node_falling.png b/games/devtest/mods/testnodes/textures/testnodes_node_falling.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_node_falling.png rename to games/devtest/mods/testnodes/textures/testnodes_node_falling.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_nodebox.png b/games/devtest/mods/testnodes/textures/testnodes_nodebox.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_nodebox.png rename to games/devtest/mods/testnodes/textures/testnodes_nodebox.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_nojump_side.png b/games/devtest/mods/testnodes/textures/testnodes_nojump_side.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_nojump_side.png rename to games/devtest/mods/testnodes/textures/testnodes_nojump_side.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_nojump_top.png b/games/devtest/mods/testnodes/textures/testnodes_nojump_top.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_nojump_top.png rename to games/devtest/mods/testnodes/textures/testnodes_nojump_top.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_normal.png b/games/devtest/mods/testnodes/textures/testnodes_normal.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_normal.png rename to games/devtest/mods/testnodes/textures/testnodes_normal.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_normal1.png b/games/devtest/mods/testnodes/textures/testnodes_normal1.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_normal1.png rename to games/devtest/mods/testnodes/textures/testnodes_normal1.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_normal2.png b/games/devtest/mods/testnodes/textures/testnodes_normal2.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_normal2.png rename to games/devtest/mods/testnodes/textures/testnodes_normal2.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_normal3.png b/games/devtest/mods/testnodes/textures/testnodes_normal3.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_normal3.png rename to games/devtest/mods/testnodes/textures/testnodes_normal3.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_normal4.png b/games/devtest/mods/testnodes/textures/testnodes_normal4.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_normal4.png rename to games/devtest/mods/testnodes/textures/testnodes_normal4.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_normal5.png b/games/devtest/mods/testnodes/textures/testnodes_normal5.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_normal5.png rename to games/devtest/mods/testnodes/textures/testnodes_normal5.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_normal6.png b/games/devtest/mods/testnodes/textures/testnodes_normal6.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_normal6.png rename to games/devtest/mods/testnodes/textures/testnodes_normal6.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_palette_facedir.png b/games/devtest/mods/testnodes/textures/testnodes_palette_facedir.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_palette_facedir.png rename to games/devtest/mods/testnodes/textures/testnodes_palette_facedir.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_palette_full.png b/games/devtest/mods/testnodes/textures/testnodes_palette_full.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_palette_full.png rename to games/devtest/mods/testnodes/textures/testnodes_palette_full.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_palette_wallmounted.png b/games/devtest/mods/testnodes/textures/testnodes_palette_wallmounted.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_palette_wallmounted.png rename to games/devtest/mods/testnodes/textures/testnodes_palette_wallmounted.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_degrotate.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_degrotate.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_degrotate.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_degrotate.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_leveled.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_leveled.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_leveled.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_leveled.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_meshoptions.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_meshoptions.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_meshoptions.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_meshoptions.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_degrotate.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_degrotate.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_degrotate.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_degrotate.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_leveled.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_leveled.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_leveled.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_leveled.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_meshoptions.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_meshoptions.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_meshoptions.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_meshoptions.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_waving.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_waving.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_waving.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_base_side_waving.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_degrotate.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_degrotate.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_degrotate.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_degrotate.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_leveled.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_leveled.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_leveled.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_leveled.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_meshoptions.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_meshoptions.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_meshoptions.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_meshoptions.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_waving.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_waving.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_rooted_waving.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_rooted_waving.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_plantlike_waving.png b/games/devtest/mods/testnodes/textures/testnodes_plantlike_waving.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_plantlike_waving.png rename to games/devtest/mods/testnodes/textures/testnodes_plantlike_waving.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail2_crossing.png b/games/devtest/mods/testnodes/textures/testnodes_rail2_crossing.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_rail2_crossing.png rename to games/devtest/mods/testnodes/textures/testnodes_rail2_crossing.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail2_curved.png b/games/devtest/mods/testnodes/textures/testnodes_rail2_curved.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_rail2_curved.png rename to games/devtest/mods/testnodes/textures/testnodes_rail2_curved.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail2_straight.png b/games/devtest/mods/testnodes/textures/testnodes_rail2_straight.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_rail2_straight.png rename to games/devtest/mods/testnodes/textures/testnodes_rail2_straight.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail2_t_junction.png b/games/devtest/mods/testnodes/textures/testnodes_rail2_t_junction.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_rail2_t_junction.png rename to games/devtest/mods/testnodes/textures/testnodes_rail2_t_junction.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail_crossing.png b/games/devtest/mods/testnodes/textures/testnodes_rail_crossing.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_rail_crossing.png rename to games/devtest/mods/testnodes/textures/testnodes_rail_crossing.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail_curved.png b/games/devtest/mods/testnodes/textures/testnodes_rail_curved.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_rail_curved.png rename to games/devtest/mods/testnodes/textures/testnodes_rail_curved.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail_straight.png b/games/devtest/mods/testnodes/textures/testnodes_rail_straight.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_rail_straight.png rename to games/devtest/mods/testnodes/textures/testnodes_rail_straight.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_rail_t_junction.png b/games/devtest/mods/testnodes/textures/testnodes_rail_t_junction.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_rail_t_junction.png rename to games/devtest/mods/testnodes/textures/testnodes_rail_t_junction.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_signlike.png b/games/devtest/mods/testnodes/textures/testnodes_signlike.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_signlike.png rename to games/devtest/mods/testnodes/textures/testnodes_signlike.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_slippery.png b/games/devtest/mods/testnodes/textures/testnodes_slippery.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_slippery.png rename to games/devtest/mods/testnodes/textures/testnodes_slippery.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_street_crossing.png b/games/devtest/mods/testnodes/textures/testnodes_street_crossing.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_street_crossing.png rename to games/devtest/mods/testnodes/textures/testnodes_street_crossing.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_street_curved.png b/games/devtest/mods/testnodes/textures/testnodes_street_curved.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_street_curved.png rename to games/devtest/mods/testnodes/textures/testnodes_street_curved.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_street_straight.png b/games/devtest/mods/testnodes/textures/testnodes_street_straight.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_street_straight.png rename to games/devtest/mods/testnodes/textures/testnodes_street_straight.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_street_t_junction.png b/games/devtest/mods/testnodes/textures/testnodes_street_t_junction.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_street_t_junction.png rename to games/devtest/mods/testnodes/textures/testnodes_street_t_junction.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_sunlight_filter.png b/games/devtest/mods/testnodes/textures/testnodes_sunlight_filter.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_sunlight_filter.png rename to games/devtest/mods/testnodes/textures/testnodes_sunlight_filter.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_torchlike_ceiling.png b/games/devtest/mods/testnodes/textures/testnodes_torchlike_ceiling.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_torchlike_ceiling.png rename to games/devtest/mods/testnodes/textures/testnodes_torchlike_ceiling.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_torchlike_floor.png b/games/devtest/mods/testnodes/textures/testnodes_torchlike_floor.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_torchlike_floor.png rename to games/devtest/mods/testnodes/textures/testnodes_torchlike_floor.png diff --git a/games/minimal/mods/testnodes/textures/testnodes_torchlike_wall.png b/games/devtest/mods/testnodes/textures/testnodes_torchlike_wall.png similarity index 100% rename from games/minimal/mods/testnodes/textures/testnodes_torchlike_wall.png rename to games/devtest/mods/testnodes/textures/testnodes_torchlike_wall.png diff --git a/games/minimal/mods/testpathfinder/README.md b/games/devtest/mods/testpathfinder/README.md similarity index 100% rename from games/minimal/mods/testpathfinder/README.md rename to games/devtest/mods/testpathfinder/README.md diff --git a/games/minimal/mods/testpathfinder/init.lua b/games/devtest/mods/testpathfinder/init.lua similarity index 100% rename from games/minimal/mods/testpathfinder/init.lua rename to games/devtest/mods/testpathfinder/init.lua diff --git a/games/minimal/mods/testpathfinder/mod.conf b/games/devtest/mods/testpathfinder/mod.conf similarity index 100% rename from games/minimal/mods/testpathfinder/mod.conf rename to games/devtest/mods/testpathfinder/mod.conf diff --git a/games/minimal/mods/testpathfinder/textures/testpathfinder_testpathfinder.png b/games/devtest/mods/testpathfinder/textures/testpathfinder_testpathfinder.png similarity index 100% rename from games/minimal/mods/testpathfinder/textures/testpathfinder_testpathfinder.png rename to games/devtest/mods/testpathfinder/textures/testpathfinder_testpathfinder.png diff --git a/games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint.png b/games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint.png similarity index 100% rename from games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint.png rename to games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint.png diff --git a/games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint_end.png b/games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint_end.png similarity index 100% rename from games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint_end.png rename to games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint_end.png diff --git a/games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint_start.png b/games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint_start.png similarity index 100% rename from games/minimal/mods/testpathfinder/textures/testpathfinder_waypoint_start.png rename to games/devtest/mods/testpathfinder/textures/testpathfinder_waypoint_start.png diff --git a/games/minimal/mods/testtools/README.md b/games/devtest/mods/testtools/README.md similarity index 100% rename from games/minimal/mods/testtools/README.md rename to games/devtest/mods/testtools/README.md diff --git a/games/minimal/mods/testtools/init.lua b/games/devtest/mods/testtools/init.lua similarity index 100% rename from games/minimal/mods/testtools/init.lua rename to games/devtest/mods/testtools/init.lua diff --git a/games/minimal/mods/testtools/mod.conf b/games/devtest/mods/testtools/mod.conf similarity index 100% rename from games/minimal/mods/testtools/mod.conf rename to games/devtest/mods/testtools/mod.conf diff --git a/games/minimal/mods/testtools/textures/testtools_entity_rotator.png b/games/devtest/mods/testtools/textures/testtools_entity_rotator.png similarity index 100% rename from games/minimal/mods/testtools/textures/testtools_entity_rotator.png rename to games/devtest/mods/testtools/textures/testtools_entity_rotator.png diff --git a/games/minimal/mods/testtools/textures/testtools_entity_scaler.png b/games/devtest/mods/testtools/textures/testtools_entity_scaler.png similarity index 100% rename from games/minimal/mods/testtools/textures/testtools_entity_scaler.png rename to games/devtest/mods/testtools/textures/testtools_entity_scaler.png diff --git a/games/minimal/mods/testtools/textures/testtools_entity_spawner.png b/games/devtest/mods/testtools/textures/testtools_entity_spawner.png similarity index 100% rename from games/minimal/mods/testtools/textures/testtools_entity_spawner.png rename to games/devtest/mods/testtools/textures/testtools_entity_spawner.png diff --git a/games/minimal/mods/testtools/textures/testtools_falling_node_tool.png b/games/devtest/mods/testtools/textures/testtools_falling_node_tool.png similarity index 100% rename from games/minimal/mods/testtools/textures/testtools_falling_node_tool.png rename to games/devtest/mods/testtools/textures/testtools_falling_node_tool.png diff --git a/games/minimal/mods/testtools/textures/testtools_node_setter.png b/games/devtest/mods/testtools/textures/testtools_node_setter.png similarity index 100% rename from games/minimal/mods/testtools/textures/testtools_node_setter.png rename to games/devtest/mods/testtools/textures/testtools_node_setter.png diff --git a/games/minimal/mods/testtools/textures/testtools_object_attacher.png b/games/devtest/mods/testtools/textures/testtools_object_attacher.png similarity index 100% rename from games/minimal/mods/testtools/textures/testtools_object_attacher.png rename to games/devtest/mods/testtools/textures/testtools_object_attacher.png diff --git a/games/minimal/mods/testtools/textures/testtools_object_editor.png b/games/devtest/mods/testtools/textures/testtools_object_editor.png similarity index 100% rename from games/minimal/mods/testtools/textures/testtools_object_editor.png rename to games/devtest/mods/testtools/textures/testtools_object_editor.png diff --git a/games/minimal/mods/testtools/textures/testtools_object_mover.png b/games/devtest/mods/testtools/textures/testtools_object_mover.png similarity index 100% rename from games/minimal/mods/testtools/textures/testtools_object_mover.png rename to games/devtest/mods/testtools/textures/testtools_object_mover.png diff --git a/games/minimal/mods/testtools/textures/testtools_param2tool.png b/games/devtest/mods/testtools/textures/testtools_param2tool.png similarity index 100% rename from games/minimal/mods/testtools/textures/testtools_param2tool.png rename to games/devtest/mods/testtools/textures/testtools_param2tool.png diff --git a/games/minimal/mods/testtools/textures/testtools_remover.png b/games/devtest/mods/testtools/textures/testtools_remover.png similarity index 100% rename from games/minimal/mods/testtools/textures/testtools_remover.png rename to games/devtest/mods/testtools/textures/testtools_remover.png diff --git a/games/minimal/mods/tiled/init.lua b/games/devtest/mods/tiled/init.lua similarity index 100% rename from games/minimal/mods/tiled/init.lua rename to games/devtest/mods/tiled/init.lua diff --git a/games/minimal/mods/tiled/mod.conf b/games/devtest/mods/tiled/mod.conf similarity index 100% rename from games/minimal/mods/tiled/mod.conf rename to games/devtest/mods/tiled/mod.conf diff --git a/games/minimal/mods/tiled/textures/tiled_tiled.png b/games/devtest/mods/tiled/textures/tiled_tiled.png similarity index 100% rename from games/minimal/mods/tiled/textures/tiled_tiled.png rename to games/devtest/mods/tiled/textures/tiled_tiled.png diff --git a/games/minimal/mods/unittests/crafting.lua b/games/devtest/mods/unittests/crafting.lua similarity index 100% rename from games/minimal/mods/unittests/crafting.lua rename to games/devtest/mods/unittests/crafting.lua diff --git a/games/minimal/mods/unittests/crafting_prepare.lua b/games/devtest/mods/unittests/crafting_prepare.lua similarity index 100% rename from games/minimal/mods/unittests/crafting_prepare.lua rename to games/devtest/mods/unittests/crafting_prepare.lua diff --git a/games/minimal/mods/unittests/init.lua b/games/devtest/mods/unittests/init.lua similarity index 100% rename from games/minimal/mods/unittests/init.lua rename to games/devtest/mods/unittests/init.lua diff --git a/games/minimal/mods/unittests/mod.conf b/games/devtest/mods/unittests/mod.conf similarity index 100% rename from games/minimal/mods/unittests/mod.conf rename to games/devtest/mods/unittests/mod.conf diff --git a/games/minimal/mods/unittests/player.lua b/games/devtest/mods/unittests/player.lua similarity index 100% rename from games/minimal/mods/unittests/player.lua rename to games/devtest/mods/unittests/player.lua diff --git a/games/minimal/mods/unittests/random.lua b/games/devtest/mods/unittests/random.lua similarity index 100% rename from games/minimal/mods/unittests/random.lua rename to games/devtest/mods/unittests/random.lua diff --git a/games/minimal/mods/unittests/textures/unittests_coal_lump.png b/games/devtest/mods/unittests/textures/unittests_coal_lump.png similarity index 100% rename from games/minimal/mods/unittests/textures/unittests_coal_lump.png rename to games/devtest/mods/unittests/textures/unittests_coal_lump.png diff --git a/games/minimal/mods/unittests/textures/unittests_iron_lump.png b/games/devtest/mods/unittests/textures/unittests_iron_lump.png similarity index 100% rename from games/minimal/mods/unittests/textures/unittests_iron_lump.png rename to games/devtest/mods/unittests/textures/unittests_iron_lump.png diff --git a/games/minimal/mods/unittests/textures/unittests_repairable_tool.png b/games/devtest/mods/unittests/textures/unittests_repairable_tool.png similarity index 100% rename from games/minimal/mods/unittests/textures/unittests_repairable_tool.png rename to games/devtest/mods/unittests/textures/unittests_repairable_tool.png diff --git a/games/minimal/mods/unittests/textures/unittests_steel_ingot.png b/games/devtest/mods/unittests/textures/unittests_steel_ingot.png similarity index 100% rename from games/minimal/mods/unittests/textures/unittests_steel_ingot.png rename to games/devtest/mods/unittests/textures/unittests_steel_ingot.png diff --git a/games/minimal/mods/unittests/textures/unittests_stick.png b/games/devtest/mods/unittests/textures/unittests_stick.png similarity index 100% rename from games/minimal/mods/unittests/textures/unittests_stick.png rename to games/devtest/mods/unittests/textures/unittests_stick.png diff --git a/games/minimal/mods/unittests/textures/unittests_torch.png b/games/devtest/mods/unittests/textures/unittests_torch.png similarity index 100% rename from games/minimal/mods/unittests/textures/unittests_torch.png rename to games/devtest/mods/unittests/textures/unittests_torch.png diff --git a/games/minimal/mods/unittests/textures/unittests_unrepairable_tool.png b/games/devtest/mods/unittests/textures/unittests_unrepairable_tool.png similarity index 100% rename from games/minimal/mods/unittests/textures/unittests_unrepairable_tool.png rename to games/devtest/mods/unittests/textures/unittests_unrepairable_tool.png diff --git a/games/minimal/mods/util_commands/init.lua b/games/devtest/mods/util_commands/init.lua similarity index 100% rename from games/minimal/mods/util_commands/init.lua rename to games/devtest/mods/util_commands/init.lua diff --git a/games/minimal/mods/util_commands/mod.conf b/games/devtest/mods/util_commands/mod.conf similarity index 100% rename from games/minimal/mods/util_commands/mod.conf rename to games/devtest/mods/util_commands/mod.conf diff --git a/games/minimal/screenshot.png b/games/devtest/screenshot.png similarity index 100% rename from games/minimal/screenshot.png rename to games/devtest/screenshot.png diff --git a/games/minimal/settingtypes.txt b/games/devtest/settingtypes.txt similarity index 100% rename from games/minimal/settingtypes.txt rename to games/devtest/settingtypes.txt diff --git a/games/minimal/LICENSE.txt b/games/minimal/LICENSE.txt deleted file mode 100644 index 108c66abf..000000000 --- a/games/minimal/LICENSE.txt +++ /dev/null @@ -1,4 +0,0 @@ -License information for Developer Test --------------------------------------- - -The same license as for Minetest applies. diff --git a/games/minimal/menu/header.png b/games/minimal/menu/header.png deleted file mode 100644 index db864d6b7805ca41d711f4f8e72c4df134441e71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^EkMk}$P6TBX0`_cDYgKg5Z7nVp8fy--_XVTCQyX2 zB*-t=*Q5KXH;_~1>Eakt!I-STzk!9rz+!`efd#`&CK(f8`GBbgf9Kn+?LYXS zQ-1fkqo1Xe`qwkK{(E=-j6&vtGdIeNjUKIC$j2-kAS-{kpS^}hUV`7i;7&e6=O6YY zJ7>0)zqxpL_OKtw`e*y&-@bo!r~b3s*VS)#+~mx-oSE^@T@`1W{+e8%D;PXo{an^L HB{Ts5E96Qf diff --git a/src/unittest/CMakeLists.txt b/src/unittest/CMakeLists.txt index 82f9a4a13..5703b8906 100644 --- a/src/unittest/CMakeLists.txt +++ b/src/unittest/CMakeLists.txt @@ -43,7 +43,7 @@ set (UNITTEST_CLIENT_SRCS PARENT_SCOPE) set (TEST_WORLDDIR ${CMAKE_CURRENT_SOURCE_DIR}/test_world) -set (TEST_SUBGAME_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../games/minimal) +set (TEST_SUBGAME_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../games/devtest) configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/test_config.h.in" diff --git a/src/unittest/test_servermodmanager.cpp b/src/unittest/test_servermodmanager.cpp index 0757323f4..799936757 100644 --- a/src/unittest/test_servermodmanager.cpp +++ b/src/unittest/test_servermodmanager.cpp @@ -88,7 +88,7 @@ void TestServerModManager::testCreation() { std::string path = std::string(TEST_WORLDDIR) + DIR_DELIM + "world.mt"; Settings world_config; - world_config.set("gameid", "minimal"); + world_config.set("gameid", "devtest"); UASSERTEQ(bool, world_config.updateConfigFile(path.c_str()), true); ServerModManager sm(TEST_WORLDDIR); } @@ -118,10 +118,10 @@ void TestServerModManager::testGetMods() const auto &mods = sm.getMods(); UASSERTEQ(bool, mods.empty(), false); - // Ensure we found default mod inside the test folder + // Ensure we found basenodes mod (part of devtest) bool default_found = false; for (const auto &m : mods) { - if (m.name == "default") + if (m.name == "basenodes") default_found = true; // Verify if paths are not empty @@ -135,7 +135,7 @@ void TestServerModManager::testGetModspec() { ServerModManager sm(std::string(TEST_WORLDDIR)); UASSERTEQ(const ModSpec *, sm.getModSpec("wrongmod"), NULL); - UASSERT(sm.getModSpec("default") != NULL); + UASSERT(sm.getModSpec("basenodes") != NULL); } void TestServerModManager::testGetModNamesWrongDir() @@ -152,7 +152,7 @@ void TestServerModManager::testGetModNames() std::vector result; sm.getModNames(result); UASSERTEQ(bool, result.empty(), false); - UASSERT(std::find(result.begin(), result.end(), "default") != result.end()); + UASSERT(std::find(result.begin(), result.end(), "basenodes") != result.end()); } void TestServerModManager::testGetModMediaPathsWrongDir() diff --git a/util/test_multiplayer.sh b/util/test_multiplayer.sh index 9ebfe73be..176cf11d9 100755 --- a/util/test_multiplayer.sh +++ b/util/test_multiplayer.sh @@ -1,6 +1,6 @@ #!/bin/bash dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -gameid=minimal +gameid=devtest minetest=$dir/../bin/minetest testspath=$dir/../tests worldpath=$testspath/testworld_$gameid From 1afd6d682af3c9c1d568ba7ea2dc0b5b998090aa Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 26 May 2020 19:49:02 +0200 Subject: [PATCH 235/424] Devtest: Fix crash in player unittest (#9937) Happened if player unittests run when player has exactly 3 HP --- games/devtest/mods/unittests/player.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/games/devtest/mods/unittests/player.lua b/games/devtest/mods/unittests/player.lua index 10781a95f..4a681310d 100644 --- a/games/devtest/mods/unittests/player.lua +++ b/games/devtest/mods/unittests/player.lua @@ -3,6 +3,9 @@ -- local expect = nil local function run_hpchangereason_tests(player) + local old_hp = player:get_hp() + + player:set_hp(20) expect = { type = "set_hp", from = "mod" } player:set_hp(3) assert(expect == nil) @@ -15,7 +18,7 @@ local function run_hpchangereason_tests(player) player:set_hp(10, { type = "fall", df = 3458973454 }) assert(expect == nil) - player:set_hp(20) + player:set_hp(old_hp) end local function run_player_meta_tests(player) From 871392481120759188ff9655cbd7ae6d05992db5 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 26 May 2020 21:31:54 +0100 Subject: [PATCH 236/424] Fix devtest being ignored by .gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9ab69b30e..33d764f76 100644 --- a/.gitignore +++ b/.gitignore @@ -40,7 +40,7 @@ build/.cmake/ ## Non-static Minetest directories or symlinks to these /bin/ /games/* -!/games/minimal/ +!/games/devtest/ /cache /textures/* !/textures/base/ From ba553e22e4d93bb094891d7296c3a32cf3340bd7 Mon Sep 17 00:00:00 2001 From: Paramat Date: Tue, 26 May 2020 23:11:33 +0100 Subject: [PATCH 237/424] Devtest game: Update biome registrations (#9936) --- games/devtest/mods/mapgen/init.lua | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/games/devtest/mods/mapgen/init.lua b/games/devtest/mods/mapgen/init.lua index 13a186a50..a5f9128fb 100644 --- a/games/devtest/mods/mapgen/init.lua +++ b/games/devtest/mods/mapgen/init.lua @@ -61,8 +61,13 @@ if minetest.settings:get_bool("devtest_register_biomes", true) then depth_top = 1, node_filler = "basenodes:dirt", depth_filler = 1, - y_min = 5, + node_riverbed = "basenodes:sand", + depth_riverbed = 2, + node_dungeon = "basenodes:cobble", + node_dungeon_alt = "basenodes:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 31000, + y_min = 4, heat_point = 50, humidity_point = 50, }) @@ -72,9 +77,27 @@ if minetest.settings:get_bool("devtest_register_biomes", true) then node_top = "basenodes:sand", depth_top = 1, node_filler = "basenodes:sand", - depth_filler = 2, + depth_filler = 3, + node_riverbed = "basenodes:sand", + depth_riverbed = 2, + node_cave_liquid = "basenodes:water_source", + node_dungeon = "basenodes:cobble", + node_dungeon_alt = "basenodes:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = 3, + y_min = -255, + heat_point = 50, + humidity_point = 50, + }) + + minetest.register_biome({ + name = "mapgen:grassland_under", + node_cave_liquid = {"basenodes:water_source", "basenodes:lava_source"}, + node_dungeon = "basenodes:cobble", + node_dungeon_alt = "basenodes:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, y_min = -31000, - y_max = 4, heat_point = 50, humidity_point = 50, }) From 58f523e363099d377d2927f16244073d104c07e9 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 27 May 2020 00:17:23 +0200 Subject: [PATCH 238/424] Fix liquids refusing to flow in X+ or Z+ in some cases (#9874) Applies when a different: - falling liquid is neighboring - liquid is below --- src/map.cpp | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/map.cpp b/src/map.cpp index 677cbc869..7c776b070 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -478,6 +478,16 @@ void Map::PrintInfo(std::ostream &out) #define WATER_DROP_BOOST 4 +const static v3s16 liquid_6dirs[6] = { + // order: upper before same level before lower + v3s16( 0, 1, 0), + v3s16( 0, 0, 1), + v3s16( 1, 0, 0), + v3s16( 0, 0,-1), + v3s16(-1, 0, 0), + v3s16( 0,-1, 0) +}; + enum NeighborType : u8 { NEIGHBOR_UPPER, NEIGHBOR_SAME_LEVEL, @@ -587,7 +597,6 @@ void Map::transformLiquids(std::map &modified_blocks, /* Collect information about the environment */ - const v3s16 *dirs = g_6dirs; NodeNeighbor sources[6]; // surrounding sources int num_sources = 0; NodeNeighbor flows[6]; // surrounding flowing liquid nodes @@ -601,16 +610,16 @@ void Map::transformLiquids(std::map &modified_blocks, for (u16 i = 0; i < 6; i++) { NeighborType nt = NEIGHBOR_SAME_LEVEL; switch (i) { - case 1: + case 0: nt = NEIGHBOR_UPPER; break; - case 4: + case 5: nt = NEIGHBOR_LOWER; break; default: break; } - v3s16 npos = p0 + dirs[i]; + v3s16 npos = p0 + liquid_6dirs[i]; NodeNeighbor nb(getNode(npos), nt, npos); const ContentFeatures &cfnb = m_nodedef->get(nb.n); switch (m_nodedef->get(nb.n.getContent()).liquid_type) { @@ -646,14 +655,18 @@ void Map::transformLiquids(std::map &modified_blocks, neutrals[num_neutrals++] = nb; } else { // Do not count bottom source, it will screw things up - if(dirs[i].Y != -1) + if(nt != NEIGHBOR_LOWER) sources[num_sources++] = nb; } break; case LIQUID_FLOWING: - // if this node is not (yet) of a liquid type, choose the first liquid type we encounter - if (liquid_kind == CONTENT_AIR) - liquid_kind = cfnb.liquid_alternative_flowing_id; + if (nb.t != NEIGHBOR_SAME_LEVEL || + (nb.n.param2 & LIQUID_FLOW_DOWN_MASK) != LIQUID_FLOW_DOWN_MASK) { + // if this node is not (yet) of a liquid type, choose the first liquid type we encounter + // but exclude falling liquids on the same level, they cannot flow here anyway + if (liquid_kind == CONTENT_AIR) + liquid_kind = cfnb.liquid_alternative_flowing_id; + } if (cfnb.liquid_alternative_flowing_id != liquid_kind) { neutrals[num_neutrals++] = nb; } else { From f90ca96c7386f7be35850e923bf413a9acc4b04c Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Wed, 27 May 2020 17:02:09 +0100 Subject: [PATCH 239/424] Make ContentDB downloads not block the UI (#9948) --- builtin/mainmenu/dlg_contentstore.lua | 63 ++++++++++----------------- 1 file changed, 22 insertions(+), 41 deletions(-) diff --git a/builtin/mainmenu/dlg_contentstore.lua b/builtin/mainmenu/dlg_contentstore.lua index 3f01d4474..9af16ac86 100644 --- a/builtin/mainmenu/dlg_contentstore.lua +++ b/builtin/mainmenu/dlg_contentstore.lua @@ -46,14 +46,12 @@ local filter_types_type = { local function download_package(param) if core.download_file(param.package.url, param.filename) then return { - package = param.package, filename = param.filename, successful = true, } else core.log("error", "downloading " .. dump(param.package.url) .. " failed") return { - package = param.package, successful = false, } end @@ -67,9 +65,9 @@ local function start_install(calling_dialog, package) local function callback(result) if result.successful then - local path, msg = pkgmgr.install(result.package.type, - result.filename, result.package.name, - result.package.path) + local path, msg = pkgmgr.install(package.type, + result.filename, package.name, + package.path) if not path then gamedata.errormessage = msg else @@ -77,33 +75,33 @@ local function start_install(calling_dialog, package) local conf_path local name_is_title = false - if result.package.type == "mod" then + if package.type == "mod" then local actual_type = pkgmgr.get_folder_type(path) if actual_type.type == "modpack" then conf_path = path .. DIR_DELIM .. "modpack.conf" else conf_path = path .. DIR_DELIM .. "mod.conf" end - elseif result.package.type == "game" then + elseif package.type == "game" then conf_path = path .. DIR_DELIM .. "game.conf" name_is_title = true - elseif result.package.type == "txp" then + elseif package.type == "txp" then conf_path = path .. DIR_DELIM .. "texture_pack.conf" end if conf_path then local conf = Settings(conf_path) if name_is_title then - conf:set("name", result.package.title) + conf:set("name", package.title) else - conf:set("title", result.package.title) - conf:set("name", result.package.name) + conf:set("title", package.title) + conf:set("name", package.name) end if not conf:get("description") then - conf:set("description", result.package.short_description) + conf:set("description", package.short_description) end - conf:set("author", result.package.author) - conf:set("release", result.package.release) + conf:set("author", package.author) + conf:set("release", package.release) conf:write() end end @@ -112,37 +110,17 @@ local function start_install(calling_dialog, package) gamedata.errormessage = fgettext("Failed to download $1", package.name) end - if gamedata.errormessage == nil then - core.button_handler({btn_hidden_close_download=result}) - else - core.button_handler({btn_hidden_close_download={successful=false}}) - end + package.downloading = false + ui.update() end + package.downloading = true + if not core.handle_async(download_package, params, callback) then core.log("error", "ERROR: async event failed") gamedata.errormessage = fgettext("Failed to download $1", package.name) + return end - - local new_dlg = dialog_create("store_downloading", - function(data) - return "size[7,2]label[0.25,0.75;" .. - fgettext("Downloading and installing $1, please wait...", data.title) .. "]" - end, - function(this,fields) - if fields["btn_hidden_close_download"] ~= nil then - this:delete() - return true - end - - return false - end, - nil) - - new_dlg:set_parent(calling_dialog) - new_dlg.data.title = package.title - calling_dialog:hide() - new_dlg:show() end local function get_screenshot(package) @@ -392,9 +370,12 @@ function store.get_formspec(dlgdata) minetest.colorize("#BFBFBF", " by " .. package.author)) formspec[#formspec + 1] = "]" - -- buttons local description_width = 7.5 - if not package.path then + if package.downloading then + formspec[#formspec + 1] = "label[8.4,0.2;" + formspec[#formspec + 1] = fgettext("Downloading...") + formspec[#formspec + 1] = "]" + elseif not package.path then formspec[#formspec + 1] = "button[8.4,0;1.5,1;install_" formspec[#formspec + 1] = tostring(i) formspec[#formspec + 1] = ";" From 03dae5fba6c4211290bf828b8268099415c68986 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 27 May 2020 15:10:47 +0200 Subject: [PATCH 240/424] Fix falling entity not falling through players --- builtin/game/falling.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtin/game/falling.lua b/builtin/game/falling.lua index cdbb13acc..714506a5f 100644 --- a/builtin/game/falling.lua +++ b/builtin/game/falling.lua @@ -323,7 +323,7 @@ core.register_entity(":__builtin:falling_node", { z = vel.z }) self.object:set_pos(vector.add(self.object:get_pos(), - {x = 0, y = -0.2, z = 0})) + {x = 0, y = -0.5, z = 0})) end return elseif bcn.name == "ignore" then From 2fd5f38c45a3b57a9ea2d566aa50f9e5c33794d2 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 27 May 2020 15:41:28 +0200 Subject: [PATCH 241/424] Change item entity collisionbox so that they don't sink into the ground --- builtin/game/item_entity.lua | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/builtin/game/item_entity.lua b/builtin/game/item_entity.lua index 5d2cd7c76..20dd18044 100644 --- a/builtin/game/item_entity.lua +++ b/builtin/game/item_entity.lua @@ -27,8 +27,6 @@ core.register_entity(":__builtin:item", { visual = "wielditem", visual_size = {x = 0.4, y = 0.4}, textures = {""}, - spritediv = {x = 1, y = 1}, - initial_sprite_basepos = {x = 0, y = 0}, is_visible = false, }, @@ -56,7 +54,6 @@ core.register_entity(":__builtin:item", { local max_count = stack:get_stack_max() local count = math.min(stack:get_count(), max_count) local size = 0.2 + 0.1 * (count / max_count) ^ (1 / 3) - local coll_height = size * 0.75 local def = core.registered_nodes[itemname] local glow = def and math.floor(def.light_source / 2 + 0.5) @@ -65,9 +62,7 @@ core.register_entity(":__builtin:item", { visual = "wielditem", textures = {itemname}, visual_size = {x = size, y = size}, - collisionbox = {-size, -coll_height, -size, - size, coll_height, size}, - selectionbox = {-size, -size, -size, size, size, size}, + collisionbox = {-size, -size, -size, size, size, size}, automatic_rotate = math.pi * 0.5 * 0.2 / size, wield_item = self.itemstring, glow = glow, From 471e567657dfd75a994a1b54d7a23cf4541a6bed Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 26 May 2020 17:38:31 +0200 Subject: [PATCH 242/424] Value copy / allocation optimizations mostly in server, SAO and serialize code --- src/client/game.cpp | 2 +- src/client/sky.cpp | 4 +-- src/client/sky.h | 2 +- src/content/mods.cpp | 2 +- src/content/mods.h | 2 +- src/script/cpp_api/s_node.cpp | 2 +- src/script/cpp_api/s_node.h | 2 +- src/server.cpp | 43 ++++++++++++++----------------- src/server/luaentity_sao.cpp | 15 ++++------- src/server/player_sao.cpp | 7 ++--- src/server/serveractiveobject.cpp | 2 +- src/server/serverinventorymgr.h | 2 +- src/serverenvironment.cpp | 8 +++--- src/serverenvironment.h | 4 +-- src/tool.cpp | 2 +- src/util/serialize.cpp | 17 ++++++------ 16 files changed, 52 insertions(+), 64 deletions(-) diff --git a/src/client/game.cpp b/src/client/game.cpp index e7663a113..cdf4da21e 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -2806,7 +2806,7 @@ void Game::handleClientEvent_SetSky(ClientEvent *event, CameraOrientation *cam) // Shows the mesh skybox sky->setVisible(true); // Update mesh based skybox colours if applicable. - sky->setSkyColors(*event->set_sky); + sky->setSkyColors(event->set_sky->sky_color); sky->setHorizonTint( event->set_sky->fog_sun_tint, event->set_sky->fog_moon_tint, diff --git a/src/client/sky.cpp b/src/client/sky.cpp index d21b56fcc..2e0cbca86 100644 --- a/src/client/sky.cpp +++ b/src/client/sky.cpp @@ -907,9 +907,9 @@ void Sky::setStarCount(u16 star_count, bool force_update) } } -void Sky::setSkyColors(const SkyboxParams sky) +void Sky::setSkyColors(const SkyColor &sky_color) { - m_sky_params.sky_color = sky.sky_color; + m_sky_params.sky_color = sky_color; } void Sky::setHorizonTint(video::SColor sun_tint, video::SColor moon_tint, diff --git a/src/client/sky.h b/src/client/sky.h index 8637f96d4..3227e8f59 100644 --- a/src/client/sky.h +++ b/src/client/sky.h @@ -94,7 +94,7 @@ public: m_bgcolor = bgcolor; m_skycolor = skycolor; } - void setSkyColors(const SkyboxParams sky); + void setSkyColors(const SkyColor &sky_color); void setHorizonTint(video::SColor sun_tint, video::SColor moon_tint, std::string use_sun_tint); void setInClouds(bool clouds) { m_in_clouds = clouds; } diff --git a/src/content/mods.cpp b/src/content/mods.cpp index 676666f78..95ab0290a 100644 --- a/src/content/mods.cpp +++ b/src/content/mods.cpp @@ -167,7 +167,7 @@ std::map getModsInPath( return result; } -std::vector flattenMods(std::map mods) +std::vector flattenMods(const std::map &mods) { std::vector result; for (const auto &it : mods) { diff --git a/src/content/mods.h b/src/content/mods.h index 6e2506dbf..b3500fbc8 100644 --- a/src/content/mods.h +++ b/src/content/mods.h @@ -68,7 +68,7 @@ std::map getModsInPath( const std::string &path, bool part_of_modpack = false); // replaces modpack Modspecs with their content -std::vector flattenMods(std::map mods); +std::vector flattenMods(const std::map &mods); // a ModConfiguration is a subset of installed mods, expected to have // all dependencies fullfilled, so it can be used as a list of mods to diff --git a/src/script/cpp_api/s_node.cpp b/src/script/cpp_api/s_node.cpp index d93a4c3ad..e0f9bcd78 100644 --- a/src/script/cpp_api/s_node.cpp +++ b/src/script/cpp_api/s_node.cpp @@ -94,7 +94,7 @@ struct EnumString ScriptApiNode::es_NodeBoxType[] = }; bool ScriptApiNode::node_on_punch(v3s16 p, MapNode node, - ServerActiveObject *puncher, PointedThing pointed) + ServerActiveObject *puncher, const PointedThing &pointed) { SCRIPTAPI_PRECHECKHEADER diff --git a/src/script/cpp_api/s_node.h b/src/script/cpp_api/s_node.h index e7c0c01d1..81b44f0f0 100644 --- a/src/script/cpp_api/s_node.h +++ b/src/script/cpp_api/s_node.h @@ -36,7 +36,7 @@ public: virtual ~ScriptApiNode() = default; bool node_on_punch(v3s16 p, MapNode node, - ServerActiveObject *puncher, PointedThing pointed); + ServerActiveObject *puncher, const PointedThing &pointed); bool node_on_dig(v3s16 p, MapNode node, ServerActiveObject *digger); void node_on_construct(v3s16 p, MapNode node); diff --git a/src/server.cpp b/src/server.cpp index 8c62584c8..6ecbd7097 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -718,34 +718,35 @@ void Server::AsyncRunStep(bool initial_step) std::unordered_map*> buffered_messages; // Get active object messages from environment + ActiveObjectMessage aom(0); + u32 aom_count = 0; for(;;) { - ActiveObjectMessage aom = m_env->getActiveObjectMessage(); - if (aom.id == 0) + if (!m_env->getActiveObjectMessage(&aom)) break; std::vector* message_list = nullptr; - std::unordered_map* >::iterator n; - n = buffered_messages.find(aom.id); + auto n = buffered_messages.find(aom.id); if (n == buffered_messages.end()) { message_list = new std::vector; buffered_messages[aom.id] = message_list; - } - else { + } else { message_list = n->second; } - message_list->push_back(aom); + message_list->push_back(std::move(aom)); + aom_count++; } - m_aom_buffer_counter->increment(buffered_messages.size()); + m_aom_buffer_counter->increment(aom_count); m_clients.lock(); const RemoteClientMap &clients = m_clients.getClientList(); // Route data to every client + std::string reliable_data, unreliable_data; for (const auto &client_it : clients) { + reliable_data.clear(); + unreliable_data.clear(); RemoteClient *client = client_it.second; PlayerSAO *player = getPlayerSAO(client->peer_id); - std::string reliable_data; - std::string unreliable_data; // Go through all objects in message buffer for (const auto &buffered_message : buffered_messages) { // If object does not exist or is not known by client, skip it @@ -770,19 +771,15 @@ void Server::AsyncRunStep(bool initial_step) client->m_known_objects.end()) continue; } - // Compose the full new data with header - std::string new_data; - // Add object id - char buf[2]; - writeU16((u8*)&buf[0], aom.id); - new_data.append(buf, 2); - // Add data - new_data += serializeString(aom.datastring); - // Add data to buffer - if (aom.reliable) - reliable_data += new_data; - else - unreliable_data += new_data; + + // Add full new data to appropriate buffer + std::string &buffer = aom.reliable ? reliable_data : unreliable_data; + char idbuf[2]; + writeU16((u8*) idbuf, aom.id); + // u16 id + // std::string data + buffer.append(idbuf, sizeof(idbuf)); + buffer.append(serializeString(aom.datastring)); } } /* diff --git a/src/server/luaentity_sao.cpp b/src/server/luaentity_sao.cpp index 51e1ca90e..8174da265 100644 --- a/src/server/luaentity_sao.cpp +++ b/src/server/luaentity_sao.cpp @@ -119,8 +119,7 @@ void LuaEntitySAO::step(float dtime, bool send_recommended) m_properties_sent = true; std::string str = getPropertyPacket(); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, str); } // If attached, check that our parent is still there. If it isn't, detach. @@ -228,16 +227,14 @@ void LuaEntitySAO::step(float dtime, bool send_recommended) m_animation_sent = true; std::string str = generateUpdateAnimationCommand(); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, str); } if (!m_animation_speed_sent) { m_animation_speed_sent = true; std::string str = generateUpdateAnimationSpeedCommand(); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, str); } if (!m_bone_position_sent) { @@ -247,8 +244,7 @@ void LuaEntitySAO::step(float dtime, bool send_recommended) std::string str = generateUpdateBonePositionCommand((*ii).first, (*ii).second.X, (*ii).second.Y); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, str); } } @@ -256,8 +252,7 @@ void LuaEntitySAO::step(float dtime, bool send_recommended) m_attachment_sent = true; std::string str = generateUpdateAttachmentCommand(); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, str); } } diff --git a/src/server/player_sao.cpp b/src/server/player_sao.cpp index a4d0f4ce7..3ea3536e2 100644 --- a/src/server/player_sao.cpp +++ b/src/server/player_sao.cpp @@ -223,8 +223,7 @@ void PlayerSAO::step(float dtime, bool send_recommended) m_properties_sent = true; std::string str = getPropertyPacket(); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, str); m_env->getScriptIface()->player_event(this, "properties_changed"); } @@ -324,10 +323,8 @@ void PlayerSAO::step(float dtime, bool send_recommended) if (!m_attachment_sent) { m_attachment_sent = true; - std::string str = generateUpdateAttachmentCommand(); // create message and add to list - ActiveObjectMessage aom(getId(), true, str); - m_messages_out.push(aom); + m_messages_out.emplace(getId(), true, generateUpdateAttachmentCommand()); } } diff --git a/src/server/serveractiveobject.cpp b/src/server/serveractiveobject.cpp index 8345ebd47..fdcb13bd8 100644 --- a/src/server/serveractiveobject.cpp +++ b/src/server/serveractiveobject.cpp @@ -75,7 +75,7 @@ std::string ServerActiveObject::generateUpdateNametagAttributesCommand(const vid void ServerActiveObject::dumpAOMessagesToQueue(std::queue &queue) { while (!m_messages_out.empty()) { - queue.push(m_messages_out.front()); + queue.push(std::move(m_messages_out.front())); m_messages_out.pop(); } } \ No newline at end of file diff --git a/src/server/serverinventorymgr.h b/src/server/serverinventorymgr.h index d0aac4dae..ccf6d3b2e 100644 --- a/src/server/serverinventorymgr.h +++ b/src/server/serverinventorymgr.h @@ -57,4 +57,4 @@ private: ServerEnvironment *m_env = nullptr; std::unordered_map m_detached_inventories; -}; \ No newline at end of file +}; diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index d485c32e8..222b4d203 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -1603,14 +1603,14 @@ void ServerEnvironment::setStaticForActiveObjectsInBlock( } } -ActiveObjectMessage ServerEnvironment::getActiveObjectMessage() +bool ServerEnvironment::getActiveObjectMessage(ActiveObjectMessage *dest) { if(m_active_object_messages.empty()) - return ActiveObjectMessage(0); + return false; - ActiveObjectMessage message = m_active_object_messages.front(); + *dest = std::move(m_active_object_messages.front()); m_active_object_messages.pop(); - return message; + return true; } void ServerEnvironment::getSelectedActiveObjects( diff --git a/src/serverenvironment.h b/src/serverenvironment.h index e2f1a3784..4b453d39a 100644 --- a/src/serverenvironment.h +++ b/src/serverenvironment.h @@ -289,9 +289,9 @@ public: /* Get the next message emitted by some active object. - Returns a message with id=0 if no messages are available. + Returns false if no messages are available, true otherwise. */ - ActiveObjectMessage getActiveObjectMessage(); + bool getActiveObjectMessage(ActiveObjectMessage *dest); virtual void getSelectedActiveObjects( const core::line3d &shootline_on_map, diff --git a/src/tool.cpp b/src/tool.cpp index d911c518f..22e41d28e 100644 --- a/src/tool.cpp +++ b/src/tool.cpp @@ -130,7 +130,7 @@ void ToolCapabilities::serializeJson(std::ostream &os) const root["punch_attack_uses"] = punch_attack_uses; Json::Value groupcaps_object; - for (auto groupcap : groupcaps) { + for (const auto &groupcap : groupcaps) { groupcap.second.toJson(groupcaps_object[groupcap.first]); } root["groupcaps"] = groupcaps_object; diff --git a/src/util/serialize.cpp b/src/util/serialize.cpp index f0e177d57..5b276668d 100644 --- a/src/util/serialize.cpp +++ b/src/util/serialize.cpp @@ -110,6 +110,7 @@ std::string serializeString(const std::string &plain) if (plain.size() > STRING_MAX_LEN) throw SerializationError("String too long for serializeString"); + s.reserve(2 + plain.size()); writeU16((u8 *)&buf[0], plain.size()); s.append(buf, 2); @@ -131,13 +132,11 @@ std::string deSerializeString(std::istream &is) if (s_size == 0) return s; - Buffer buf2(s_size); - is.read(&buf2[0], s_size); + s.resize(s_size); + is.read(&s[0], s_size); if (is.gcount() != s_size) throw SerializationError("deSerializeString: couldn't read all chars"); - s.reserve(s_size); - s.append(&buf2[0], s_size); return s; } @@ -152,6 +151,7 @@ std::string serializeWideString(const std::wstring &plain) if (plain.size() > WIDE_STRING_MAX_LEN) throw SerializationError("String too long for serializeWideString"); + s.reserve(2 + 2 * plain.size()); writeU16((u8 *)buf, plain.size()); s.append(buf, 2); @@ -196,13 +196,14 @@ std::wstring deSerializeWideString(std::istream &is) std::string serializeLongString(const std::string &plain) { + std::string s; char buf[4]; if (plain.size() > LONG_STRING_MAX_LEN) throw SerializationError("String too long for serializeLongString"); + s.reserve(4 + plain.size()); writeU32((u8*)&buf[0], plain.size()); - std::string s; s.append(buf, 4); s.append(plain); return s; @@ -227,13 +228,11 @@ std::string deSerializeLongString(std::istream &is) "string too long: " + itos(s_size) + " bytes"); } - Buffer buf2(s_size); - is.read(&buf2[0], s_size); + s.resize(s_size); + is.read(&s[0], s_size); if ((u32)is.gcount() != s_size) throw SerializationError("deSerializeLongString: couldn't read all chars"); - s.reserve(s_size); - s.append(&buf2[0], s_size); return s; } From 9a64a9fd9427fc3b62d4dc9bf1ca7c15477ebc5a Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Fri, 29 May 2020 00:52:48 +0100 Subject: [PATCH 243/424] Update ContentDB dialog (#9949) --- LICENSE.txt | 6 ++ builtin/mainmenu/dlg_contentstore.lua | 86 ++++++++++++++------------ textures/base/pack/end_icon.png | Bin 0 -> 908 bytes textures/base/pack/next_icon.png | Bin 0 -> 714 bytes textures/base/pack/prev_icon.png | Bin 0 -> 714 bytes textures/base/pack/start_icon.png | Bin 0 -> 912 bytes 6 files changed, 53 insertions(+), 39 deletions(-) create mode 100644 textures/base/pack/end_icon.png create mode 100644 textures/base/pack/next_icon.png create mode 100644 textures/base/pack/prev_icon.png create mode 100644 textures/base/pack/start_icon.png diff --git a/LICENSE.txt b/LICENSE.txt index 994e024c9..f5c51833b 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -21,6 +21,12 @@ ShadowNinja: paramat: textures/base/pack/menu_header.png + textures/base/pack/next_icon.png + textures/base/pack/prev_icon.png + +rubenwardy, paramat: + textures/base/pack/start_icon.png + textures/base/pack/end_icon.png erlehmann: misc/minetest-icon-24x24.png diff --git a/builtin/mainmenu/dlg_contentstore.lua b/builtin/mainmenu/dlg_contentstore.lua index 9af16ac86..76c398f5a 100644 --- a/builtin/mainmenu/dlg_contentstore.lua +++ b/builtin/mainmenu/dlg_contentstore.lua @@ -303,34 +303,35 @@ function store.get_formspec(dlgdata) cur_page = 1 end + local W = 15.75 + local H = 9.5 + local formspec if #store.packages_full > 0 then formspec = { - "size[12,7;true]", + "formspec_version[3]", + "size[15.75,9.5]", "position[0.5,0.55]", - "field[0.2,0.1;7.8,1;search_string;;", - core.formspec_escape(search_string), "]", + "container[0.375,0.375]", + "field[0,0;10.225,0.8;search_string;;", core.formspec_escape(search_string), "]", "field_close_on_enter[search_string;false]", - "button[7.7,-0.2;2,1;search;", - fgettext("Search"), "]", - "dropdown[9.7,-0.1;2.4;type;", - table.concat(filter_types_titles, ","), - ";", filter_type, "]", - -- "textlist[0,1;2.4,5.6;a;", - -- table.concat(taglist, ","), "]", + "button[10.225,0;2,0.8;search;", fgettext("Search"), "]", + "dropdown[12.6,0;2.4,0.8;type;", table.concat(filter_types_titles, ","), ";", filter_type, "]", + "container_end[]", -- Page nav buttons - "container[0,", - num_per_page + 1.5, "]", - "button[-0.1,0;3,1;back;", - fgettext("Back to Main Menu"), "]", - "button[7.1,0;1,1;pstart;<<]", - "button[8.1,0;1,1;pback;<]", - "label[9.2,0.2;", - tonumber(cur_page), " / ", - tonumber(dlgdata.pagemax), "]", - "button[10.1,0;1,1;pnext;>]", - "button[11.1,0;1,1;pend;>>]", + "container[0,", H - 0.8 - 0.375, "]", + "button[0.375,0;4,0.8;back;", fgettext("Back to Main Menu"), "]", + + "container[", W - 0.375 - 0.8*4 - 2, ",0]", + "image_button[0,0;0.8,0.8;", defaulttexturedir, "start_icon.png;pstart;]", + "image_button[0.8,0;0.8,0.8;", defaulttexturedir, "prev_icon.png;pback;]", + "style[pagenum;border=false]", + "button[1.6,0;2,0.8;pagenum;", tonumber(cur_page), " / ", tonumber(dlgdata.pagemax), "]", + "image_button[3.6,0;0.8,0.8;", defaulttexturedir, "next_icon.png;pnext;]", + "image_button[4.4,0;0.8,0.8;", defaulttexturedir, "end_icon.png;pend;]", + "container_end[]", + "container_end[]", } @@ -341,75 +342,82 @@ function store.get_formspec(dlgdata) end else formspec = { - "size[12,7;true]", + "size[12,7]", "position[0.5,0.55]", "label[4,3;", fgettext("No packages could be retrieved"), "]", - "button[-0.1,", - num_per_page + 1.5, - ";3,1;back;", - fgettext("Back to Main Menu"), "]", + "container[0,", H - 0.8 - 0.375, "]", + "button[0,0;4,0.8;back;", fgettext("Back to Main Menu"), "]", + "container_end[]", } end local start_idx = (cur_page - 1) * num_per_page + 1 for i=start_idx, math.min(#store.packages, start_idx+num_per_page-1) do local package = store.packages[i] - formspec[#formspec + 1] = "container[0.5," - formspec[#formspec + 1] = (i - start_idx) * 1.1 + 1 + formspec[#formspec + 1] = "container[0.375," + formspec[#formspec + 1] = (i - start_idx) * 1.375 + (2*0.375 + 0.8) formspec[#formspec + 1] = "]" -- image - formspec[#formspec + 1] = "image[-0.4,0;1.5,1;" + formspec[#formspec + 1] = "image[0,0;1.5,1;" formspec[#formspec + 1] = core.formspec_escape(get_screenshot(package)) formspec[#formspec + 1] = "]" -- title - formspec[#formspec + 1] = "label[1,-0.1;" + formspec[#formspec + 1] = "label[1.875,0.1;" formspec[#formspec + 1] = core.formspec_escape( minetest.colorize(mt_color_green, package.title) .. minetest.colorize("#BFBFBF", " by " .. package.author)) formspec[#formspec + 1] = "]" - local description_width = 7.5 + -- buttons + local description_width = W - 0.375*5 - 1 - 2*1.5 + formspec[#formspec + 1] = "container[" + formspec[#formspec + 1] = W - 0.375*2 + formspec[#formspec + 1] = ",0.1]" + if package.downloading then - formspec[#formspec + 1] = "label[8.4,0.2;" + formspec[#formspec + 1] = "style[download;border=false]" + + formspec[#formspec + 1] = "button[-3.5,0;2,0.8;download;" formspec[#formspec + 1] = fgettext("Downloading...") formspec[#formspec + 1] = "]" elseif not package.path then - formspec[#formspec + 1] = "button[8.4,0;1.5,1;install_" + formspec[#formspec + 1] = "button[-3,0;1.5,0.8;install_" formspec[#formspec + 1] = tostring(i) formspec[#formspec + 1] = ";" formspec[#formspec + 1] = fgettext("Install") formspec[#formspec + 1] = "]" else if package.installed_release < package.release then - description_width = 6 + description_width = description_width - 1.5 -- The install_ action also handles updating - formspec[#formspec + 1] = "button[6.9,0;1.5,1;install_" + formspec[#formspec + 1] = "button[-4.5,0;1.5,0.8;install_" formspec[#formspec + 1] = tostring(i) formspec[#formspec + 1] = ";" formspec[#formspec + 1] = fgettext("Update") formspec[#formspec + 1] = "]" end - formspec[#formspec + 1] = "button[8.4,0;1.5,1;uninstall_" + formspec[#formspec + 1] = "button[-3,0;1.5,0.8;uninstall_" formspec[#formspec + 1] = tostring(i) formspec[#formspec + 1] = ";" formspec[#formspec + 1] = fgettext("Uninstall") formspec[#formspec + 1] = "]" end - formspec[#formspec + 1] = "button[9.9,0;1.5,1;view_" + formspec[#formspec + 1] = "button[-1.5,0;1.5,0.8;view_" formspec[#formspec + 1] = tostring(i) formspec[#formspec + 1] = ";" formspec[#formspec + 1] = fgettext("View") formspec[#formspec + 1] = "]" + formspec[#formspec + 1] = "container_end[]" -- description - formspec[#formspec + 1] = "textarea[1.25,0.3;" + formspec[#formspec + 1] = "textarea[1.855,0.3;" formspec[#formspec + 1] = tostring(description_width) - formspec[#formspec + 1] = ",1;;;" + formspec[#formspec + 1] = ",0.8;;;" formspec[#formspec + 1] = core.formspec_escape(package.short_description) formspec[#formspec + 1] = "]" diff --git a/textures/base/pack/end_icon.png b/textures/base/pack/end_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb4d52a0d19f421424b43478cb3e4d0d710c1b4 GIT binary patch literal 908 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&T@COFaRt)v+_m00B2eMo~fS z6%98wG_dVX>eM~<`(J;`ie-1?efP~wF;1@*E6$rSg>~l~1&$^ds-LJY(zBy&%Fd^~ zn3QQ-1v~2V~&XQF^2y@CeMev#WyyvReX;rPq$!~zSrCWaF^+S~FO&M5*zmikdj6r+9Bezj-8^Y(^i}9L zduMX=+P&N-D=@CL=yx~*LQmNoEdx^2uj iVhWGiCWRvp*sFI2JN@~Y_#T-07(8A5T-G@yGywq89R<$- literal 0 HcmV?d00001 diff --git a/textures/base/pack/next_icon.png b/textures/base/pack/next_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..03f960917cfa90b54f94ae60cba0ce82d202f2e8 GIT binary patch literal 714 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&%?a=caRt)<2P>GYa3KZgKI4)g zzhDMtHg-;KNohF+MI{wg6H_yDOKV%d(8#FhnAo_aoc!*d-Z@K_u2{Kh?bU0y?%aL& z^vB=z>l^1WFfgw2ba4!+xb=3{>#!yVkygPaMw?g9lA5a8db73Rd;RtcN{urghG)OO z8uh!n@$*{a*)tzDJm*ww5pd!F694<+_P-BivfE#=`c8;DfIV zgchiN3~!ivWG_ReXcp5Pm20dTwiz4-RTo4QzAR8}sF%9U^z^dCeFa_~#x0GS4EHAL zFx^nO#j?P23ztH1f;fYe1xtZv3Fm=HFGL(vFX}R!a%^Wfw!oWV(hU?3>Ay%Jba$k&wc+rgO&yHcFP|xpX`}pvzz-aJOCXg+m$V0XjpE-I%t6|TK==D!egbQ~weEWJqDs^s4+rX|0A7uv3@Q*~G!U%P4H)%A8!7hk<+nelZy)0JOK z8Mf~;kIY^1b#M3Yr*k6jTieJN*C%{9JmEKYJ0zTef&FiWe!+)lk9JOaG#41@44$rj JF6*2UngEY&hi?D? literal 0 HcmV?d00001 diff --git a/textures/base/pack/prev_icon.png b/textures/base/pack/prev_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..71509e71a738b351fcb0ec91437e7eaa175308b1 GIT binary patch literal 714 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&%?a=caRt)<2P>GYa3KZgKI4)g zzhDMtHg-;KNohF+MI{wg6H_yDOKV%d(8#FhnAo_aoc!*d-Z@K_u2{Kh?bU0y?%aL& z^vB=z>l^1WFfgw2ba4!+h2fp@jEXndkl|BBm;>X_F59XHMb?Fw|+eOao*brhySGfD=1I0e!9+J=h^%6 z`nkvFJXL?09k?&%=DD3(Ha?%vZxUi|dHnj#;x$JYzJ9Kcs}D_T`1Ld0wYXNXVZP7j zXFt6e%f9O~-+1HCwc+l3fdzm6s4}em+sRP%ouB>7dwE`oJN6P6D*v-EJp7>+UH)F4 zDH-X{n`+nvZ>-!lqzOggE_}0#p@tvJXqOP9fKvC^;hRgp1 z8XhF9yD!fqF!%oc%Vg4}8*OVmQOZ za$tuG$AY*=UseWi8!()=_bUFnn}O-YeO3{N-7XRi+g)TFHoGV|>~&Fb*y*C-u+>G! zVWW#d!VVXcgbgkh3--I%EZFYC=n$^J_=3ZQA-9odfvN!08uP~^rr14u|qB)@t8l{ePt*`xOGA4b4PXYh3O Kb6Mw<&;$S*k&Lqd literal 0 HcmV?d00001 diff --git a/textures/base/pack/start_icon.png b/textures/base/pack/start_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3830fb3ae493b622db421f8470b74dc910a0ece4 GIT binary patch literal 912 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU=H_maSW-r^>*%A?<1p4;3%lS0OC(wTvj`;bVP3N&-(9g~wc7QWt^3aQXCDyTz&VFm{Xk~$YmEar zzLAV&4a^DRKlo~5%96dV1~%Muf5P`cs$#O#XE}?kq`8$ZOKYC+H7 zxMadN!JU@hp9%ao~+_CD$9~_5*Rpo~5r}%<$R&cz$s3HY1b$9aFa2 z;^*sB%j$)?Gd`1^_&Zbg9`iQizCUY9MG`g&T6!pNx_-opYeR&9behyp*H;=1jsA>0 zHCzb~f*F|SGg*8RJuq=SL*Cb2ItN06+j{P&%ctCWCAuTpnD+pTK{u17F(v2B#wa1Y4zVB})oSbc!|L7_Br{9~3C3LR^i z`7c-9|Ml#8R6|$O4YygW@5&ec+$y@@(B$o3RUFda&3tox$Inofjk`xeBU3zhA;o=5X5op2&l;u*+8eg(_UT{qLP&_&?on+4a`7FR$?w z9Q@HK8Gq?s{n@Ykotat$+zgKiAM-!E!_Quh>3j^A)h2EZ#W}|%`WsJA;Z(bxF7c*` z!Cd8sL20e(_U7xcvkSAzg(RGIbQ#L|vL5n2CCf2)snlw&fc}{YvxJ2Hc<%o%xKA=f zn^TXQ^>A>)lyfRpf)3e#D;uN_8Y~H)U&HRYzcK$n;WH~PgLH#8%dab3e)oXq2UpFh z7+_TJv`xP2cxH=r#{vBZ#XuzikMABdeZ0IPY$JDIgB8o+E~XVsS2QKU1RO*c spE_op{M#U|*b+GTbq7A+A^nqmqFmf#8}S8Jz?{b5>FVdQ&MBb@08B=O*Z=?k literal 0 HcmV?d00001 From 65a6a316d081d3951438bbbcfce74c9c65db407a Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 26 May 2020 02:11:19 +0200 Subject: [PATCH 244/424] Add minetest.is_creative_enabled --- builtin/common/misc_helpers.lua | 10 ++-------- builtin/game/item.lua | 2 +- builtin/game/misc.lua | 6 ++++++ doc/lua_api.txt | 7 +++++++ games/devtest/mods/util_commands/init.lua | 2 +- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua index 1a0c71efd..a88adf96d 100644 --- a/builtin/common/misc_helpers.lua +++ b/builtin/common/misc_helpers.lua @@ -345,18 +345,12 @@ if INIT == "game" then --Wrapper for rotate_and_place() to check for sneak and assume Creative mode --implies infinite stacks when performing a 6d rotation. -------------------------------------------------------------------------------- - local creative_mode_cache = core.settings:get_bool("creative_mode") - local function is_creative(name) - return creative_mode_cache or - core.check_player_privs(name, {creative = true}) - end - core.rotate_node = function(itemstack, placer, pointed_thing) local name = placer and placer:get_player_name() or "" local invert_wall = placer and placer:get_player_control().sneak or false return core.rotate_and_place(itemstack, placer, pointed_thing, - is_creative(name), - {invert_wall = invert_wall}, true) + core.is_creative_enabled(name), + {invert_wall = invert_wall}, true) end end diff --git a/builtin/game/item.lua b/builtin/game/item.lua index 3aaa71ef2..f680ce0d4 100644 --- a/builtin/game/item.lua +++ b/builtin/game/item.lua @@ -582,7 +582,7 @@ function core.node_dig(pos, node, digger) wielded = wdef.after_use(wielded, digger, node, dp) or wielded else -- Wear out tool - if not core.settings:get_bool("creative_mode") then + if not core.is_creative_enabled(diggername) then wielded:add_wear(dp.wear) if wielded:get_count() == 0 and wdef.sound and wdef.sound.breaks then core.sound_play(wdef.sound.breaks, { diff --git a/builtin/game/misc.lua b/builtin/game/misc.lua index 0ed11ada0..341e613c2 100644 --- a/builtin/game/misc.lua +++ b/builtin/game/misc.lua @@ -164,6 +164,12 @@ function core.record_protection_violation(pos, name) end end +-- To be overridden by Creative mods + +local creative_mode_cache = core.settings:get_bool("creative_mode") +function core.is_creative_enabled(name) + return creative_mode_cache +end -- Checks if specified volume intersects a protected volume diff --git a/doc/lua_api.txt b/doc/lua_api.txt index c4310aa5b..bb9df5373 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -5475,6 +5475,13 @@ Misc. * `minetest.record_protection_violation(pos, name)` * This function calls functions registered with `minetest.register_on_protection_violation`. +* `minetest.is_creative_enabled(name)`: returns boolean + * Returning `true` means that Creative Mode is enabled for player `name`. + * `name` will be `""` for non-players or if the player is unknown. + * This function should be overridden by Creative Mode-related mods to + implement a per-player Creative Mode. + * By default, this function returns `true` if the setting + `creative_mode` is `true` and `false` otherwise. * `minetest.is_area_protected(pos1, pos2, player_name, interval)` * Returns the position of the first node that `player_name` may not modify in the specified cuboid between `pos1` and `pos2`. diff --git a/games/devtest/mods/util_commands/init.lua b/games/devtest/mods/util_commands/init.lua index ad8d3f9ba..3a0e91a41 100644 --- a/games/devtest/mods/util_commands/init.lua +++ b/games/devtest/mods/util_commands/init.lua @@ -66,7 +66,7 @@ if s_infplace == "true" then elseif s_infplace == "false" then infplace = false else - infplace = minetest.settings:get_bool("creative_mode", false) + infplace = minetest.is_creative_enabled("") end minetest.register_chatcommand("infplace", { From 34862a644256f2717923de6d35288114a84acd19 Mon Sep 17 00:00:00 2001 From: MoNTE48 Date: Wed, 11 Dec 2019 20:03:12 +0100 Subject: [PATCH 245/424] Add disable_jump check for the player's feet --- doc/lua_api.txt | 1 + games/devtest/mods/testnodes/properties.lua | 11 +++++++++-- src/client/localplayer.cpp | 4 +++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index bb9df5373..8c81b7020 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1666,6 +1666,7 @@ to games. * `2`: the node always gets the digging time 0.5 seconds (rail, sign) * `3`: the node always gets the digging time 0 seconds (torch) * `disable_jump`: Player (and possibly other things) cannot jump from node + or if their feet are in the node. Note: not supported for `new_move = false` * `fall_damage_add_percent`: damage speed = `speed * (1 + value/100)` * `falling_node`: if there is no walkable block under the node it will fall * `float`: the node will not fall through liquids diff --git a/games/devtest/mods/testnodes/properties.lua b/games/devtest/mods/testnodes/properties.lua index e169d4b08..01846a5f0 100644 --- a/games/devtest/mods/testnodes/properties.lua +++ b/games/devtest/mods/testnodes/properties.lua @@ -56,11 +56,18 @@ minetest.register_node("testnodes:attached_wallmounted", { minetest.register_node("testnodes:nojump", { description = S("Non-jumping Node"), groups = {disable_jump=1, dig_immediate=3}, - - tiles = {"testnodes_nojump_top.png", "testnodes_nojump_side.png"}, }) +-- Jump disabled plant +minetest.register_node("testnodes:nojump_walkable", { + description = S("Non-jumping Plant Node"), + drawtype = "plantlike", + groups = {disable_jump=1, dig_immediate=3}, + walkable = false, + tiles = {"testnodes_nojump_top.png"}, +}) + -- Climbable up and down with jump and sneak keys minetest.register_node("testnodes:climbable", { description = S("Climbable Node"), diff --git a/src/client/localplayer.cpp b/src/client/localplayer.cpp index c20c3619f..011898bcf 100644 --- a/src/client/localplayer.cpp +++ b/src/client/localplayer.cpp @@ -436,9 +436,11 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d, Check properties of the node on which the player is standing */ const ContentFeatures &f = nodemgr->get(map->getNode(m_standing_node)); + const ContentFeatures &f1 = nodemgr->get(map->getNode(m_standing_node + v3s16(0, 1, 0))); // Determine if jumping is possible - m_disable_jump = itemgroup_get(f.groups, "disable_jump"); + m_disable_jump = itemgroup_get(f.groups, "disable_jump") || + itemgroup_get(f1.groups, "disable_jump"); m_can_jump = ((touching_ground && !is_climbing) || sneak_can_jump) && !m_disable_jump; // Jump key pressed while jumping off from a bouncy block From db7c262ee85c5bcae68354280848218dbf14bf55 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 25 May 2020 23:36:45 +0200 Subject: [PATCH 246/424] content_cao: Do not expire visuals when not necessary fixes #6572 --- src/client/content_cao.cpp | 42 +++++++++++++++++++++++++++++--------- src/client/content_cao.h | 3 ++- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index cdc12f041..947c1a279 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -1457,13 +1457,23 @@ void GenericCAO::updateAttachments() } } -void GenericCAO::readAOMessageProperties(std::istream &is) +bool GenericCAO::visualExpiryRequired(const ObjectProperties &new_) const { - // Reset object properties first - m_prop = ObjectProperties(); - - // Then read the whole new stream - m_prop.deSerialize(is); + const ObjectProperties &old = m_prop; + // Ordered to compare primitive types before std::vectors + return old.backface_culling != new_.backface_culling || + old.initial_sprite_basepos != new_.initial_sprite_basepos || + old.is_visible != new_.is_visible || + old.mesh != new_.mesh || + old.nametag != new_.nametag || + old.nametag_color != new_.nametag_color || + old.spritediv != new_.spritediv || + old.use_texture_alpha != new_.use_texture_alpha || + old.visual != new_.visual || + old.visual_size != new_.visual_size || + old.wield_item != new_.wield_item || + old.colors != new_.colors || + old.textures != new_.textures; } void GenericCAO::processMessage(const std::string &data) @@ -1473,14 +1483,21 @@ void GenericCAO::processMessage(const std::string &data) // command u8 cmd = readU8(is); if (cmd == AO_CMD_SET_PROPERTIES) { - readAOMessageProperties(is); + ObjectProperties newprops; + newprops.deSerialize(is); + + // Check what exactly changed + bool expire_visuals = visualExpiryRequired(newprops); + + // Apply changes + m_prop = std::move(newprops); m_selection_box = m_prop.selectionbox; m_selection_box.MinEdge *= BS; m_selection_box.MaxEdge *= BS; - m_tx_size.X = 1.0 / m_prop.spritediv.X; - m_tx_size.Y = 1.0 / m_prop.spritediv.Y; + m_tx_size.X = 1.0f / m_prop.spritediv.X; + m_tx_size.Y = 1.0f / m_prop.spritediv.Y; if(!m_initial_tx_basepos_set){ m_initial_tx_basepos_set = true; @@ -1500,7 +1517,12 @@ void GenericCAO::processMessage(const std::string &data) if ((m_is_player && !m_is_local_player) && m_prop.nametag.empty()) m_prop.nametag = m_name; - expireVisuals(); + if (expire_visuals) { + expireVisuals(); + } else { + infostream << "GenericCAO: properties updated but expiring visuals" + << " not necessary" << std::endl; + } } else if (cmd == AO_CMD_UPDATE_POSITION) { // Not sent by the server if this object is an attachment. // We might however get here if the server notices the object being detached before the client. diff --git a/src/client/content_cao.h b/src/client/content_cao.h index c53b81433..03a355204 100644 --- a/src/client/content_cao.h +++ b/src/client/content_cao.h @@ -68,7 +68,6 @@ struct SmoothTranslatorWrappedv3f : SmoothTranslator class GenericCAO : public ClientActiveObject { private: - void readAOMessageProperties(std::istream &is); // Only set at initialization std::string m_name = ""; bool m_is_player = false; @@ -131,6 +130,8 @@ private: // Settings bool m_enable_shaders = false; + bool visualExpiryRequired(const ObjectProperties &newprops) const; + public: GenericCAO(Client *client, ClientEnvironment *env); From 4c8e1c320054ee0dc5d8ec821a6b4cd69002aa09 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 26 May 2020 16:05:06 +0200 Subject: [PATCH 247/424] Clean up CAO nametag handling and remove deprecated AO_CMD AO_CMD_UPDATE_NAMETAG_ATTRIBUTES was deprecated in 9eee3c3f465c071bb9908749cf48be3c131a1bdf (0.4.14) --- src/activeobject.h | 3 +- src/client/content_cao.cpp | 57 +++++++++++++++++++------------ src/client/content_cao.h | 2 ++ src/server/player_sao.cpp | 4 +-- src/server/serveractiveobject.cpp | 13 +------ 5 files changed, 42 insertions(+), 37 deletions(-) diff --git a/src/activeobject.h b/src/activeobject.h index c83243f86..85e160d10 100644 --- a/src/activeobject.h +++ b/src/activeobject.h @@ -66,7 +66,8 @@ enum ActiveObjectCommand { AO_CMD_SET_BONE_POSITION, AO_CMD_ATTACH_TO, AO_CMD_SET_PHYSICS_OVERRIDE, - AO_CMD_UPDATE_NAMETAG_ATTRIBUTES, + AO_CMD_OBSOLETE1, + // ^ UPDATE_NAMETAG_ATTRIBUTES deprecated since 0.4.14, removed in 5.3.0 AO_CMD_SPAWN_INFANT, AO_CMD_SET_ANIMATION_SPEED }; diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index 947c1a279..dde31899b 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -776,15 +776,7 @@ void GenericCAO::addToScene(ITextureSource *tsrc) if (node && m_matrixnode) node->setParent(m_matrixnode); - if (node && !m_prop.nametag.empty() && !m_is_local_player) { - // Add nametag - v3f pos; - pos.Y = m_prop.selectionbox.MaxEdge.Y + 0.3f; - m_nametag = m_client->getCamera()->addNametag(node, - m_prop.nametag, m_prop.nametag_color, - pos); - } - + updateNametag(); updateNodePos(); updateAnimation(); updateBonePosition(); @@ -872,6 +864,38 @@ v3s16 GenericCAO::getLightPosition() return floatToInt(m_position, BS); } +void GenericCAO::updateNametag() +{ + if (m_is_local_player) // No nametag for local player + return; + + if (m_prop.nametag.empty()) { + // Delete nametag + if (m_nametag) { + m_client->getCamera()->removeNametag(m_nametag); + m_nametag = nullptr; + } + return; + } + + scene::ISceneNode *node = getSceneNode(); + if (!node) + return; + + v3f pos; + pos.Y = m_prop.selectionbox.MaxEdge.Y + 0.3f; + if (!m_nametag) { + // Add nametag + m_nametag = m_client->getCamera()->addNametag(node, + m_prop.nametag, m_prop.nametag_color, pos); + } else { + // Update nametag + m_nametag->nametag_text = m_prop.nametag; + m_nametag->nametag_color = m_prop.nametag_color; + m_nametag->nametag_pos = pos; + } +} + void GenericCAO::updateNodePos() { if (getParent() != NULL) @@ -1465,8 +1489,6 @@ bool GenericCAO::visualExpiryRequired(const ObjectProperties &new_) const old.initial_sprite_basepos != new_.initial_sprite_basepos || old.is_visible != new_.is_visible || old.mesh != new_.mesh || - old.nametag != new_.nametag || - old.nametag_color != new_.nametag_color || old.spritediv != new_.spritediv || old.use_texture_alpha != new_.use_texture_alpha || old.visual != new_.visual || @@ -1516,6 +1538,7 @@ void GenericCAO::processMessage(const std::string &data) if ((m_is_player && !m_is_local_player) && m_prop.nametag.empty()) m_prop.nametag = m_name; + updateNametag(); if (expire_visuals) { expireVisuals(); @@ -1694,22 +1717,14 @@ void GenericCAO::processMessage(const std::string &data) int rating = readS16(is); m_armor_groups[name] = rating; } - } else if (cmd == AO_CMD_UPDATE_NAMETAG_ATTRIBUTES) { - // Deprecated, for backwards compatibility only. - readU8(is); // version - m_prop.nametag_color = readARGB8(is); - if (m_nametag != NULL) { - m_nametag->nametag_color = m_prop.nametag_color; - v3f pos; - pos.Y = m_prop.collisionbox.MaxEdge.Y + 0.3f; - m_nametag->nametag_pos = pos; - } } else if (cmd == AO_CMD_SPAWN_INFANT) { u16 child_id = readU16(is); u8 type = readU8(is); // maybe this will be useful later (void)type; addAttachmentChild(child_id); + } else if (cmd == AO_CMD_OBSOLETE1) { + // Don't do anything and also don't log a warning } else { warningstream << FUNCTION_NAME << ": unknown command or outdated client \"" diff --git a/src/client/content_cao.h b/src/client/content_cao.h index 03a355204..8e2a13ea8 100644 --- a/src/client/content_cao.h +++ b/src/client/content_cao.h @@ -244,6 +244,8 @@ public: v3s16 getLightPosition(); + void updateNametag(); + void updateNodePos(); void step(float dtime, ClientEnvironment *env); diff --git a/src/server/player_sao.cpp b/src/server/player_sao.cpp index 3ea3536e2..9ea0743f7 100644 --- a/src/server/player_sao.cpp +++ b/src/server/player_sao.cpp @@ -127,9 +127,7 @@ std::string PlayerSAO::getClientInitializationData(u16 protocol_version) } msg_os << serializeLongString(generateUpdateAttachmentCommand()); // 4 msg_os << serializeLongString(generateUpdatePhysicsOverrideCommand()); // 5 - // (AO_CMD_UPDATE_NAMETAG_ATTRIBUTES) : Deprecated, for backwards compatibility only. - msg_os << serializeLongString(generateUpdateNametagAttributesCommand(m_prop.nametag_color)); // 6 - int message_count = 6 + m_bone_position.size(); + int message_count = 5 + m_bone_position.size(); for (std::unordered_set::const_iterator ii = m_attachment_child_ids.begin(); ii != m_attachment_child_ids.end(); ++ii) { if (ServerActiveObject *obj = m_env->getActiveObject(*ii)) { diff --git a/src/server/serveractiveobject.cpp b/src/server/serveractiveobject.cpp index fdcb13bd8..dbf25e3bc 100644 --- a/src/server/serveractiveobject.cpp +++ b/src/server/serveractiveobject.cpp @@ -61,21 +61,10 @@ std::string ServerActiveObject::generateUpdateInfantCommand(u16 infant_id, u16 p return os.str(); } -std::string ServerActiveObject::generateUpdateNametagAttributesCommand(const video::SColor &color) const -{ - std::ostringstream os(std::ios::binary); - // command - writeU8(os, AO_CMD_UPDATE_NAMETAG_ATTRIBUTES); - // parameters - writeU8(os, 1); // version for forward compatibility - writeARGB8(os, color); - return os.str(); -} - void ServerActiveObject::dumpAOMessagesToQueue(std::queue &queue) { while (!m_messages_out.empty()) { queue.push(std::move(m_messages_out.front())); m_messages_out.pop(); } -} \ No newline at end of file +} From 51de4ae297c3dc3380bf5d12288afc75f6de2f30 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 30 May 2020 01:46:57 +0200 Subject: [PATCH 248/424] Devtest: Fix missing/incorrect liquid properties (#9955) --- games/devtest/mods/testnodes/drawtypes.lua | 23 ++++++++++++++++------ games/devtest/mods/testnodes/textures.lua | 6 ++++++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/games/devtest/mods/testnodes/drawtypes.lua b/games/devtest/mods/testnodes/drawtypes.lua index 35fda960f..6bf57fa37 100644 --- a/games/devtest/mods/testnodes/drawtypes.lua +++ b/games/devtest/mods/testnodes/drawtypes.lua @@ -330,8 +330,7 @@ minetest.register_node("testnodes:plantlike_rooted_degrotate", { groups = { dig_immediate = 3 }, }) --- Demonstrative liquid nodes, source and flowing form. This is only the --- drawtype, no physical liquid properties are used +-- Demonstrative liquid nodes, source and flowing form. minetest.register_node("testnodes:liquid", { description = S("Source Liquid Drawtype Test Node"), drawtype = "liquid", @@ -347,6 +346,9 @@ minetest.register_node("testnodes:liquid", { walkable = false, + liquidtype = "source", + liquid_range = 1, + liquid_viscosity = 0, liquid_alternative_flowing = "testnodes:liquid_flowing", liquid_alternative_source = "testnodes:liquid", groups = { dig_immediate = 3 }, @@ -367,6 +369,9 @@ minetest.register_node("testnodes:liquid_flowing", { walkable = false, + liquidtype = "flowing", + liquid_range = 1, + liquid_viscosity = 0, liquid_alternative_flowing = "testnodes:liquid_flowing", liquid_alternative_source = "testnodes:liquid", groups = { dig_immediate = 3 }, @@ -387,8 +392,11 @@ minetest.register_node("testnodes:liquid_waving", { walkable = false, - liquid_alternative_flowing = "testnodes:liquid_flowing", - liquid_alternative_source = "testnodes:liquid", + liquidtype = "source", + liquid_range = 1, + liquid_viscosity = 0, + liquid_alternative_flowing = "testnodes:liquid_flowing_waving", + liquid_alternative_source = "testnodes:liquid_waving", groups = { dig_immediate = 3 }, }) minetest.register_node("testnodes:liquid_flowing_waving", { @@ -408,8 +416,11 @@ minetest.register_node("testnodes:liquid_flowing_waving", { walkable = false, - liquid_alternative_flowing = "testnodes:liquid_flowing", - liquid_alternative_source = "testnodes:liquid", + liquidtype = "flowing", + liquid_range = 1, + liquid_viscosity = 0, + liquid_alternative_flowing = "testnodes:liquid_flowing_waving", + liquid_alternative_source = "testnodes:liquid_waving", groups = { dig_immediate = 3 }, }) diff --git a/games/devtest/mods/testnodes/textures.lua b/games/devtest/mods/testnodes/textures.lua index f5db9ccbf..6ffef8fe9 100644 --- a/games/devtest/mods/testnodes/textures.lua +++ b/games/devtest/mods/testnodes/textures.lua @@ -62,6 +62,12 @@ for a=1,#alphas do }, alpha = alpha, + + liquidtype = "source", + liquid_range = 0, + liquid_viscosity = 0, + liquid_alternative_source = "testnodes:alpha_"..alpha, + liquid_alternative_flowing = "testnodes:alpha_"..alpha, groups = { dig_immediate = 3 }, }) end From f849917bbe9c5eff51bee0a3125eabed16efb172 Mon Sep 17 00:00:00 2001 From: Hugues Ross Date: Mon, 1 Jun 2020 09:22:04 -0400 Subject: [PATCH 249/424] imageScaleNNAA: Fix image clipping on rect- instead of image dimensions (#9896) Fixes GUI scaling filters applied on animated images and 9slice backgrounds. --- src/client/imagefilters.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/client/imagefilters.cpp b/src/client/imagefilters.cpp index dd029628f..0fa501410 100644 --- a/src/client/imagefilters.cpp +++ b/src/client/imagefilters.cpp @@ -91,7 +91,7 @@ void imageScaleNNAA(video::IImage *src, const core::rect &srcrect, video::I u32 dy, dx; video::SColor pxl; - // Cache rectsngle boundaries. + // Cache rectangle boundaries. double sox = srcrect.UpperLeftCorner.X * 1.0; double soy = srcrect.UpperLeftCorner.Y * 1.0; double sw = srcrect.getWidth() * 1.0; @@ -107,15 +107,15 @@ void imageScaleNNAA(video::IImage *src, const core::rect &srcrect, video::I // Do some basic clipping, and for mirrored/flipped rects, // make sure min/max are in the right order. minsx = sox + (dx * sw / dim.Width); - minsx = rangelim(minsx, 0, sw); + minsx = rangelim(minsx, 0, sox + sw); maxsx = minsx + sw / dim.Width; - maxsx = rangelim(maxsx, 0, sw); + maxsx = rangelim(maxsx, 0, sox + sw); if (minsx > maxsx) SWAP(double, minsx, maxsx); minsy = soy + (dy * sh / dim.Height); - minsy = rangelim(minsy, 0, sh); + minsy = rangelim(minsy, 0, soy + sh); maxsy = minsy + sh / dim.Height; - maxsy = rangelim(maxsy, 0, sh); + maxsy = rangelim(maxsy, 0, soy + sh); if (minsy > maxsy) SWAP(double, minsy, maxsy); From a08d18acad345363780f5286300d65b39ea9c9f9 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Mon, 1 Jun 2020 19:01:47 +0200 Subject: [PATCH 250/424] ContentCAO: Update light of all attached entities (#9975) --- src/client/clientenvironment.cpp | 30 +++-------------------- src/client/clientobject.h | 6 ++--- src/client/content_cao.cpp | 42 ++++++++++++-------------------- src/client/content_cao.h | 4 +-- 4 files changed, 22 insertions(+), 60 deletions(-) diff --git a/src/client/clientenvironment.cpp b/src/client/clientenvironment.cpp index 6840f2db3..44ea1e4a1 100644 --- a/src/client/clientenvironment.cpp +++ b/src/client/clientenvironment.cpp @@ -320,21 +320,8 @@ void ClientEnvironment::step(float dtime) // Step object cao->step(dtime, this); - if (update_lighting) { - // Update lighting - u8 light = 0; - bool pos_ok; - - // Get node at head - v3s16 p = cao->getLightPosition(); - MapNode n = this->m_map->getNode(p, &pos_ok); - if (pos_ok) - light = n.getLightBlend(day_night_ratio, m_client->ndef()); - else - light = blend_light(day_night_ratio, LIGHT_SUN, 0); - - cao->updateLight(light); - } + if (update_lighting) + cao->updateLight(day_night_ratio); }; m_ao_manager.step(dtime, cb_state); @@ -402,18 +389,7 @@ u16 ClientEnvironment::addActiveObject(ClientActiveObject *object) object->addToScene(m_texturesource); // Update lighting immediately - u8 light = 0; - bool pos_ok; - - // Get node at head - v3s16 p = object->getLightPosition(); - MapNode n = m_map->getNode(p, &pos_ok); - if (pos_ok) - light = n.getLightBlend(getDayNightRatio(), m_client->ndef()); - else - light = blend_light(getDayNightRatio(), LIGHT_SUN, 0); - - object->updateLight(light); + object->updateLight(getDayNightRatio()); return object->getId(); } diff --git a/src/client/clientobject.h b/src/client/clientobject.h index 12e0db35b..8e64b8406 100644 --- a/src/client/clientobject.h +++ b/src/client/clientobject.h @@ -41,10 +41,10 @@ public: virtual void addToScene(ITextureSource *tsrc) {} virtual void removeFromScene(bool permanent) {} - // 0 <= light_at_pos <= LIGHT_SUN - virtual void updateLight(u8 light_at_pos) {} - virtual void updateLightNoCheck(u8 light_at_pos) {} + + virtual void updateLight(u32 day_night_ratio) {} virtual v3s16 getLightPosition() { return v3s16(0, 0, 0); } + virtual bool getCollisionBox(aabb3f *toset) const { return false; } virtual bool getSelectionBox(aabb3f *toset) const { return false; } virtual bool collideWithObjects() const { return false; } diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index dde31899b..d0682e51e 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -181,7 +181,7 @@ public: void addToScene(ITextureSource *tsrc); void removeFromScene(bool permanent); - void updateLight(u8 light_at_pos); + void updateLight(u32 day_night_ratio); v3s16 getLightPosition(); void updateNodePos(); @@ -254,7 +254,7 @@ void TestCAO::removeFromScene(bool permanent) m_node = NULL; } -void TestCAO::updateLight(u8 light_at_pos) +void TestCAO::updateLight(u32 day_night_ratio) { } @@ -784,34 +784,22 @@ void GenericCAO::addToScene(ITextureSource *tsrc) setNodeLight(m_last_light); } -void GenericCAO::updateLight(u8 light_at_pos) +void GenericCAO::updateLight(u32 day_night_ratio) { - // Don't update light of attached one - if (getParent() != NULL) { - return; - } + u8 light_at_pos = 0; + bool pos_ok; - updateLightNoCheck(light_at_pos); + v3s16 p = getLightPosition(); + MapNode n = m_env->getMap().getNode(p, &pos_ok); + if (pos_ok) + light_at_pos = n.getLightBlend(day_night_ratio, m_client->ndef()); + else + light_at_pos = blend_light(day_night_ratio, LIGHT_SUN, 0); - // Update light of all children - for (u16 i : m_attachment_child_ids) { - ClientActiveObject *obj = m_env->getActiveObject(i); - if (obj) { - obj->updateLightNoCheck(light_at_pos); - } - } -} - -void GenericCAO::updateLightNoCheck(u8 light_at_pos) -{ - if (m_glow < 0) - return; - - u8 li = decode_light(light_at_pos + m_glow); - - if (li != m_last_light) { - m_last_light = li; - setNodeLight(li); + u8 light = decode_light(light_at_pos); + if (light != m_last_light) { + m_last_light = light; + setNodeLight(light); } } diff --git a/src/client/content_cao.h b/src/client/content_cao.h index 8e2a13ea8..7693dd3d2 100644 --- a/src/client/content_cao.h +++ b/src/client/content_cao.h @@ -236,9 +236,7 @@ public: m_visuals_expired = true; } - void updateLight(u8 light_at_pos); - - void updateLightNoCheck(u8 light_at_pos); + void updateLight(u32 day_night_ratio); void setNodeLight(u8 light); From 42a9b45c21ad407689950e3a4c90cb3894142260 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Mon, 1 Jun 2020 19:02:15 +0200 Subject: [PATCH 251/424] Lua API: Log incorrect parameter types as error (#9954) Incorrect parameter types are logged as errors, taking coercion into account. This is a workaround to ensure mod compatibility. Duplicate warnings are ignored per server instance. --- src/script/common/c_converter.cpp | 32 ++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/script/common/c_converter.cpp b/src/script/common/c_converter.cpp index 279d8b1a5..de0cdfbf4 100644 --- a/src/script/common/c_converter.cpp +++ b/src/script/common/c_converter.cpp @@ -28,6 +28,7 @@ extern "C" { #include "common/c_converter.h" #include "common/c_internal.h" #include "constants.h" +#include #define CHECK_TYPE(index, name, type) { \ @@ -458,11 +459,36 @@ size_t read_stringlist(lua_State *L, int index, std::vector *result bool check_field_or_nil(lua_State *L, int index, int type, const char *fieldname) { - if (lua_isnil(L, index)) + static thread_local std::set warned_msgs; + + int t = lua_type(L, index); + if (t == LUA_TNIL) return false; - CHECK_TYPE(index, std::string("field \"") + fieldname + '"', type); - return true; + if (t == type) + return true; + + // Check coercion types + if (type == LUA_TNUMBER) { + if (lua_isnumber(L, index)) + return true; + } else if (type == LUA_TSTRING) { + if (lua_isstring(L, index)) + return true; + } + + // Types mismatch. Log unique line. + std::string backtrace = std::string("Invalid field ") + fieldname + + " (expected " + lua_typename(L, type) + + " got " + lua_typename(L, t) + ").\n" + script_get_backtrace(L); + + u64 hash = murmur_hash_64_ua(backtrace.data(), backtrace.length(), 0xBADBABE); + if (warned_msgs.find(hash) == warned_msgs.end()) { + errorstream << backtrace << std::endl; + warned_msgs.insert(hash); + } + + return false; } bool getstringfield(lua_State *L, int table, From 0e698e63b3bc27551fda9bd4e66f72501413b4e6 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 1 Jun 2020 21:19:35 +0200 Subject: [PATCH 252/424] Fix autoscale_mode segfault if tile doesn't have texture closes #9965 --- src/nodedef.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/nodedef.cpp b/src/nodedef.cpp index cb841e544..a84338752 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -608,8 +608,9 @@ static void fillTileAttribs(ITextureSource *tsrc, TileLayer *layer, layer->material_type = material_type; bool has_scale = tiledef.scale > 0; - if (((tsettings.autoscale_mode == AUTOSCALE_ENABLE) && !has_scale) || - (tsettings.autoscale_mode == AUTOSCALE_FORCE)) { + bool use_autoscale = tsettings.autoscale_mode == AUTOSCALE_FORCE || + (tsettings.autoscale_mode == AUTOSCALE_ENABLE && !has_scale); + if (use_autoscale && layer->texture) { auto texture_size = layer->texture->getOriginalSize(); float base_size = tsettings.node_texture_size; float size = std::fmin(texture_size.Width, texture_size.Height); From c1e01bc638637efa788b5698238a465406bc3f5e Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Thu, 4 Jun 2020 19:31:46 +0200 Subject: [PATCH 253/424] Move shared parameters sending to UnitSAO (#9968) Better header sorting by topic Make UnitSAO-specific parameters private Skip redundant recursive entity sending code (since ~5.2.0) --- src/client/content_cao.cpp | 1 + src/server/luaentity_sao.cpp | 71 ++++++++----------------------- src/server/player_sao.cpp | 57 +++++++------------------ src/server/serveractiveobject.cpp | 7 ++- src/server/unit_sao.cpp | 33 ++++++++++++++ src/server/unit_sao.h | 56 +++++++++++++++--------- 6 files changed, 110 insertions(+), 115 deletions(-) diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index d0682e51e..702d089af 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -475,6 +475,7 @@ void GenericCAO::setAttachment(int parent_id, const std::string &bone, v3f posit parent->addAttachmentChild(m_id); } + updateAttachments(); } diff --git a/src/server/luaentity_sao.cpp b/src/server/luaentity_sao.cpp index 8174da265..d504c42ca 100644 --- a/src/server/luaentity_sao.cpp +++ b/src/server/luaentity_sao.cpp @@ -123,12 +123,11 @@ void LuaEntitySAO::step(float dtime, bool send_recommended) } // If attached, check that our parent is still there. If it isn't, detach. - if(m_attachment_parent_id && !isAttached()) - { - m_attachment_parent_id = 0; - m_attachment_bone = ""; - m_attachment_position = v3f(0,0,0); - m_attachment_rotation = v3f(0,0,0); + if (m_attachment_parent_id && !isAttached()) { + // This is handled when objects are removed from the map + warningstream << "LuaEntitySAO::step() id=" << m_id << + " is attached to nonexistent parent. This is a bug." << std::endl; + clearParentAttachment(); sendPosition(false, true); } @@ -217,43 +216,7 @@ void LuaEntitySAO::step(float dtime, bool send_recommended) } } - if (!m_armor_groups_sent) { - m_armor_groups_sent = true; - // create message and add to list - m_messages_out.emplace(getId(), true, generateUpdateArmorGroupsCommand()); - } - - if (!m_animation_sent) { - m_animation_sent = true; - std::string str = generateUpdateAnimationCommand(); - // create message and add to list - m_messages_out.emplace(getId(), true, str); - } - - if (!m_animation_speed_sent) { - m_animation_speed_sent = true; - std::string str = generateUpdateAnimationSpeedCommand(); - // create message and add to list - m_messages_out.emplace(getId(), true, str); - } - - if (!m_bone_position_sent) { - m_bone_position_sent = true; - for (std::unordered_map>::const_iterator - ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii){ - std::string str = generateUpdateBonePositionCommand((*ii).first, - (*ii).second.X, (*ii).second.Y); - // create message and add to list - m_messages_out.emplace(getId(), true, str); - } - } - - if (!m_attachment_sent) { - m_attachment_sent = true; - std::string str = generateUpdateAttachmentCommand(); - // create message and add to list - m_messages_out.emplace(getId(), true, str); - } + sendOutdatedData(); } std::string LuaEntitySAO::getClientInitializationData(u16 protocol_version) @@ -273,20 +236,19 @@ std::string LuaEntitySAO::getClientInitializationData(u16 protocol_version) msg_os << serializeLongString(getPropertyPacket()); // message 1 msg_os << serializeLongString(generateUpdateArmorGroupsCommand()); // 2 msg_os << serializeLongString(generateUpdateAnimationCommand()); // 3 - for (std::unordered_map>::const_iterator - ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) { - msg_os << serializeLongString(generateUpdateBonePositionCommand((*ii).first, - (*ii).second.X, (*ii).second.Y)); // m_bone_position.size + for (const auto &bone_pos : m_bone_position) { + msg_os << serializeLongString(generateUpdateBonePositionCommand( + bone_pos.first, bone_pos.second.X, bone_pos.second.Y)); // m_bone_position.size } msg_os << serializeLongString(generateUpdateAttachmentCommand()); // 4 + int message_count = 4 + m_bone_position.size(); - for (std::unordered_set::const_iterator ii = m_attachment_child_ids.begin(); - (ii != m_attachment_child_ids.end()); ++ii) { - if (ServerActiveObject *obj = m_env->getActiveObject(*ii)) { + + for (const auto &id : getAttachmentChildIds()) { + if (ServerActiveObject *obj = m_env->getActiveObject(id)) { message_count++; - // TODO after a protocol bump: only send the object initialization data - // to older clients (superfluous since this message exists) - msg_os << serializeLongString(obj->generateUpdateInfantCommand(*ii, protocol_version)); + msg_os << serializeLongString(obj->generateUpdateInfantCommand( + id, protocol_version)); } } @@ -294,7 +256,8 @@ std::string LuaEntitySAO::getClientInitializationData(u16 protocol_version) message_count++; writeU8(os, message_count); - os.write(msg_os.str().c_str(), msg_os.str().size()); + std::string serialized = msg_os.str(); + os.write(serialized.c_str(), serialized.size()); // return result return os.str(); diff --git a/src/server/player_sao.cpp b/src/server/player_sao.cpp index 9ea0743f7..67efed210 100644 --- a/src/server/player_sao.cpp +++ b/src/server/player_sao.cpp @@ -120,24 +120,26 @@ std::string PlayerSAO::getClientInitializationData(u16 protocol_version) msg_os << serializeLongString(getPropertyPacket()); // message 1 msg_os << serializeLongString(generateUpdateArmorGroupsCommand()); // 2 msg_os << serializeLongString(generateUpdateAnimationCommand()); // 3 - for (std::unordered_map>::const_iterator - ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) { - msg_os << serializeLongString(generateUpdateBonePositionCommand((*ii).first, - (*ii).second.X, (*ii).second.Y)); // m_bone_position.size + for (const auto &bone_pos : m_bone_position) { + msg_os << serializeLongString(generateUpdateBonePositionCommand( + bone_pos.first, bone_pos.second.X, bone_pos.second.Y)); // m_bone_position.size } msg_os << serializeLongString(generateUpdateAttachmentCommand()); // 4 msg_os << serializeLongString(generateUpdatePhysicsOverrideCommand()); // 5 + int message_count = 5 + m_bone_position.size(); - for (std::unordered_set::const_iterator ii = m_attachment_child_ids.begin(); - ii != m_attachment_child_ids.end(); ++ii) { - if (ServerActiveObject *obj = m_env->getActiveObject(*ii)) { + + for (const auto &id : getAttachmentChildIds()) { + if (ServerActiveObject *obj = m_env->getActiveObject(id)) { message_count++; - msg_os << serializeLongString(obj->generateUpdateInfantCommand(*ii, protocol_version)); + msg_os << serializeLongString(obj->generateUpdateInfantCommand( + id, protocol_version)); } } writeU8(os, message_count); - os.write(msg_os.str().c_str(), msg_os.str().size()); + std::string serialized = msg_os.str(); + os.write(serialized.c_str(), serialized.size()); // return result return os.str(); @@ -227,10 +229,10 @@ void PlayerSAO::step(float dtime, bool send_recommended) // If attached, check that our parent is still there. If it isn't, detach. if (m_attachment_parent_id && !isAttached()) { - m_attachment_parent_id = 0; - m_attachment_bone = ""; - m_attachment_position = v3f(0.0f, 0.0f, 0.0f); - m_attachment_rotation = v3f(0.0f, 0.0f, 0.0f); + // This is handled when objects are removed from the map + warningstream << "PlayerSAO::step() id=" << m_id << + " is attached to nonexistent parent. This is a bug." << std::endl; + clearParentAttachment(); setBasePosition(m_last_good_position); m_env->getGameDef()->SendMovePlayer(m_peer_id); } @@ -290,40 +292,13 @@ void PlayerSAO::step(float dtime, bool send_recommended) m_messages_out.emplace(getId(), false, str); } - if (!m_armor_groups_sent) { - m_armor_groups_sent = true; - // create message and add to list - m_messages_out.emplace(getId(), true, generateUpdateArmorGroupsCommand()); - } - if (!m_physics_override_sent) { m_physics_override_sent = true; // create message and add to list m_messages_out.emplace(getId(), true, generateUpdatePhysicsOverrideCommand()); } - if (!m_animation_sent) { - m_animation_sent = true; - // create message and add to list - m_messages_out.emplace(getId(), true, generateUpdateAnimationCommand()); - } - - if (!m_bone_position_sent) { - m_bone_position_sent = true; - for (std::unordered_map>::const_iterator - ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) { - std::string str = generateUpdateBonePositionCommand((*ii).first, - (*ii).second.X, (*ii).second.Y); - // create message and add to list - m_messages_out.emplace(getId(), true, str); - } - } - - if (!m_attachment_sent) { - m_attachment_sent = true; - // create message and add to list - m_messages_out.emplace(getId(), true, generateUpdateAttachmentCommand()); - } + sendOutdatedData(); } std::string PlayerSAO::generateUpdatePhysicsOverrideCommand() const diff --git a/src/server/serveractiveobject.cpp b/src/server/serveractiveobject.cpp index dbf25e3bc..3341dc008 100644 --- a/src/server/serveractiveobject.cpp +++ b/src/server/serveractiveobject.cpp @@ -57,7 +57,12 @@ std::string ServerActiveObject::generateUpdateInfantCommand(u16 infant_id, u16 p // parameters writeU16(os, infant_id); writeU8(os, getSendType()); - os << serializeLongString(getClientInitializationData(protocol_version)); + if (protocol_version < 38) { + // Clients since 4aa9a66 so no longer need this data + // Version 38 is the first bump after that commit. + // See also: ClientEnvironment::addActiveObject + os << serializeLongString(getClientInitializationData(protocol_version)); + } return os.str(); } diff --git a/src/server/unit_sao.cpp b/src/server/unit_sao.cpp index 74b0508b8..ef0e87f2c 100644 --- a/src/server/unit_sao.cpp +++ b/src/server/unit_sao.cpp @@ -88,6 +88,39 @@ void UnitSAO::getBonePosition(const std::string &bone, v3f *position, v3f *rotat *rotation = m_bone_position[bone].Y; } +// clang-format off +void UnitSAO::sendOutdatedData() +{ + if (!m_armor_groups_sent) { + m_armor_groups_sent = true; + m_messages_out.emplace(getId(), true, generateUpdateArmorGroupsCommand()); + } + + if (!m_animation_sent) { + m_animation_sent = true; + m_animation_speed_sent = true; + m_messages_out.emplace(getId(), true, generateUpdateAnimationCommand()); + } else if (!m_animation_speed_sent) { + // Animation speed is also sent when 'm_animation_sent == false' + m_animation_speed_sent = true; + m_messages_out.emplace(getId(), true, generateUpdateAnimationSpeedCommand()); + } + + if (!m_bone_position_sent) { + m_bone_position_sent = true; + for (const auto &bone_pos : m_bone_position) { + m_messages_out.emplace(getId(), true, generateUpdateBonePositionCommand( + bone_pos.first, bone_pos.second.X, bone_pos.second.Y)); + } + } + + if (!m_attachment_sent) { + m_attachment_sent = true; + m_messages_out.emplace(getId(), true, generateUpdateAttachmentCommand()); + } +} +// clang-format on + void UnitSAO::setAttachment( int parent_id, const std::string &bone, v3f position, v3f rotation) { diff --git a/src/server/unit_sao.h b/src/server/unit_sao.h index c73115855..3cb7f0ad5 100644 --- a/src/server/unit_sao.h +++ b/src/server/unit_sao.h @@ -29,6 +29,11 @@ public: UnitSAO(ServerEnvironment *env, v3f pos); virtual ~UnitSAO() = default; + u16 getHP() const { return m_hp; } + // Use a function, if isDead can be defined by other conditions + bool isDead() const { return m_hp == 0; } + + // Rotation void setRotation(v3f rotation) { m_rotation = rotation; } const v3f &getRotation() const { return m_rotation; } v3f getRadRotation() { return m_rotation * core::DEGTORAD; } @@ -36,26 +41,28 @@ public: // Deprecated f32 getRadYawDep() const { return (m_rotation.Y + 90.) * core::DEGTORAD; } - u16 getHP() const { return m_hp; } - // Use a function, if isDead can be defined by other conditions - bool isDead() const { return m_hp == 0; } - - inline bool isAttached() const { return getParent(); } - + // Armor groups inline bool isImmortal() const { return itemgroup_get(getArmorGroups(), "immortal"); } - void setArmorGroups(const ItemGroupList &armor_groups); const ItemGroupList &getArmorGroups() const; + + // Animation void setAnimation(v2f frame_range, float frame_speed, float frame_blend, bool frame_loop); void getAnimation(v2f *frame_range, float *frame_speed, float *frame_blend, bool *frame_loop); void setAnimationSpeed(float frame_speed); + + // Bone position void setBonePosition(const std::string &bone, v3f position, v3f rotation); void getBonePosition(const std::string &bone, v3f *position, v3f *rotation); + + // Attachments + ServerActiveObject *getParent() const; + inline bool isAttached() const { return getParent(); } void setAttachment(int parent_id, const std::string &bone, v3f position, v3f rotation); void getAttachment(int *parent_id, std::string *bone, v3f *position, @@ -65,10 +72,13 @@ public: void addAttachmentChild(int child_id); void removeAttachmentChild(int child_id); const std::unordered_set &getAttachmentChildIds() const; - ServerActiveObject *getParent() const; + + // Object properties ObjectProperties *accessObjectProperties(); void notifyObjectPropertiesModified(); + void sendOutdatedData(); + // Update packets std::string generateUpdateAttachmentCommand() const; std::string generateUpdateAnimationSpeedCommand() const; std::string generateUpdateAnimationCommand() const; @@ -77,21 +87,36 @@ public: const v3f &velocity, const v3f &acceleration, const v3f &rotation, bool do_interpolate, bool is_movement_end, f32 update_interval); std::string generateSetPropertiesCommand(const ObjectProperties &prop) const; - void sendPunchCommand(); static std::string generateUpdateBonePositionCommand(const std::string &bone, const v3f &position, const v3f &rotation); + void sendPunchCommand(); protected: u16 m_hp = 1; v3f m_rotation; + ItemGroupList m_armor_groups; + + // Object properties bool m_properties_sent = true; ObjectProperties m_prop; - ItemGroupList m_armor_groups; + // Stores position and rotation for each bone name + std::unordered_map> m_bone_position; + + int m_attachment_parent_id = 0; + +private: + void onAttach(int parent_id); + void onDetach(int parent_id); + + std::string generatePunchCommand(u16 result_hp) const; + + // Armor groups bool m_armor_groups_sent = false; + // Animation v2f m_animation_range; float m_animation_speed = 0.0f; float m_animation_blend = 0.0f; @@ -99,20 +124,13 @@ protected: bool m_animation_sent = false; bool m_animation_speed_sent = false; - // Stores position and rotation for each bone name - std::unordered_map> m_bone_position; + // Bone positions bool m_bone_position_sent = false; - int m_attachment_parent_id = 0; + // Attachments std::unordered_set m_attachment_child_ids; std::string m_attachment_bone = ""; v3f m_attachment_position; v3f m_attachment_rotation; bool m_attachment_sent = false; - -private: - void onAttach(int parent_id); - void onDetach(int parent_id); - - std::string generatePunchCommand(u16 result_hp) const; }; From 850af80089b3415265c4b4b744448509f776a52d Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Thu, 4 Jun 2020 21:53:26 +0100 Subject: [PATCH 254/424] Add buttons to ContentDB in game bar and configure world (#9944) --- builtin/mainmenu/dlg_config_world.lua | 95 +++++++++++++++----------- builtin/mainmenu/dlg_contentstore.lua | 11 +++ builtin/mainmenu/tab_local.lua | 12 ++++ textures/base/pack/plus.png | Bin 0 -> 763 bytes 4 files changed, 79 insertions(+), 39 deletions(-) create mode 100644 textures/base/pack/plus.png diff --git a/builtin/mainmenu/dlg_config_world.lua b/builtin/mainmenu/dlg_config_world.lua index 97218df9c..2cf70c9c9 100644 --- a/builtin/mainmenu/dlg_config_world.lua +++ b/builtin/mainmenu/dlg_config_world.lua @@ -23,7 +23,49 @@ local function modname_valid(name) return not name:find("[^a-z0-9_]") end +local function init_data(data) + data.list = filterlist.create( + pkgmgr.preparemodlist, + pkgmgr.comparemod, + function(element, uid) + if element.name == uid then + return true + end + end, + function(element, criteria) + if criteria.hide_game and + element.is_game_content then + return false + end + + if criteria.hide_modpackcontents and + element.modpack ~= nil then + return false + end + return true + end, + { + worldpath = data.worldspec.path, + gameid = data.worldspec.gameid + }) + + if data.selected_mod > data.list:size() then + data.selected_mod = 0 + end + + data.list:set_filtercriteria({ + hide_game = data.hide_gamemods, + hide_modpackcontents = data.hide_modpackcontents + }) + data.list:add_sort_mechanism("alphabetic", sort_mod_list) + data.list:set_sortmode("alphabetic") +end + local function get_formspec(data) + if not data.list then + init_data(data) + end + local mod = data.list:get_list()[data.selected_mod] or {name = ""} local retval = @@ -85,11 +127,14 @@ local function get_formspec(data) end end end + retval = retval .. "button[3.25,7;2.5,0.5;btn_config_world_save;" .. fgettext("Save") .. "]" .. "button[5.75,7;2.5,0.5;btn_config_world_cancel;" .. - fgettext("Cancel") .. "]" + fgettext("Cancel") .. "]" .. + "button[9,7;2.5,0.5;btn_config_world_cdb;" .. + fgettext("Find More Mods") .. "]" if mod.name ~= "" and not mod.is_game_content then if mod.is_modpack then @@ -198,6 +243,16 @@ local function handle_buttons(this, fields) return true end + if fields.btn_config_world_cdb then + this.data.list = nil + + local dlg = create_store_dlg("mod") + dlg:set_parent(this) + this:hide() + dlg:show() + return true + end + if fields.btn_enable_all_mods then local list = this.data.list:get_raw_list() @@ -247,43 +302,5 @@ function create_configure_world_dlg(worldidx) return end - dlg.data.list = filterlist.create( - pkgmgr.preparemodlist, - pkgmgr.comparemod, - function(element, uid) - if element.name == uid then - return true - end - end, - function(element, criteria) - if criteria.hide_game and - element.is_game_content then - return false - end - - if criteria.hide_modpackcontents and - element.modpack ~= nil then - return false - end - return true - end, - { - worldpath = dlg.data.worldspec.path, - gameid = dlg.data.worldspec.gameid - } - ) - - - if dlg.data.selected_mod > dlg.data.list:size() then - dlg.data.selected_mod = 0 - end - - dlg.data.list:set_filtercriteria({ - hide_game = dlg.data.hide_gamemods, - hide_modpackcontents = dlg.data.hide_modpackcontents - }) - dlg.data.list:add_sort_mechanism("alphabetic", sort_mod_list) - dlg.data.list:set_sortmode("alphabetic") - return dlg end diff --git a/builtin/mainmenu/dlg_contentstore.lua b/builtin/mainmenu/dlg_contentstore.lua index 76c398f5a..8ac4dba68 100644 --- a/builtin/mainmenu/dlg_contentstore.lua +++ b/builtin/mainmenu/dlg_contentstore.lua @@ -513,6 +513,17 @@ function create_store_dlg(type) search_string = "" cur_page = 1 + + if type then + -- table.indexof does not work on tables that contain `nil` + for i, v in pairs(filter_types_type) do + if v == type then + filter_type = i + break + end + end + end + store.filter_packages(search_string) return dialog_create("store", diff --git a/builtin/mainmenu/tab_local.lua b/builtin/mainmenu/tab_local.lua index cd6cbea46..a21cf12b1 100644 --- a/builtin/mainmenu/tab_local.lua +++ b/builtin/mainmenu/tab_local.lua @@ -35,6 +35,15 @@ if enable_gamebar then end local function game_buttonbar_button_handler(fields) + if fields.game_open_cdb then + local maintab = ui.find_by_name("maintab") + local dlg = create_store_dlg("game") + dlg:set_parent(maintab) + maintab:hide() + dlg:show() + return true + end + for key,value in pairs(fields) do for j=1,#pkgmgr.games,1 do if ("game_btnbar_" .. pkgmgr.games[j].id == key) then @@ -87,6 +96,9 @@ if enable_gamebar then end btnbar:add_button(btn_name, text, image, tooltip) end + + local plus_image = core.formspec_escape(defaulttexturedir .. "plus.png") + btnbar:add_button("game_open_cdb", "", plus_image, fgettext("Install games from ContentDB")) end else function current_game() diff --git a/textures/base/pack/plus.png b/textures/base/pack/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..64680b5698f487d5e2806ce6093297184f8f2526 GIT binary patch literal 763 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&%?$7faRt)<2O9u8>0r%KO`zip zOM?7@85kIum|57^Id}!d#3iKU^h{m7e0&3AYnv9W+qh}-)?KGAK79K8#mje}zW@07 z>(AeR(ZzioKur%kT^vIyZoQp(a$1vtfNQXeqiYC@jKmQ}_YjMJ|BsgjG{${niz|;V zf2b5$a9;3poR^|RTOt%aJMYM~gW(`6hn_9?o!DB^DR^UfjIwr=RQCC?DW}}byoXF5)-(JUT2$Zmp_!vz|5@vAa%^Z| i;6@=5km5)FBkRHo#qO#MF(tr+!r Date: Fri, 5 Jun 2020 07:22:19 +0600 Subject: [PATCH 255/424] Show Toast in UI thread and fix unpacking on Android 10 (#9900) --- .../net/minetest/minetest/CopyZipTask.java | 23 ++++++++++++------- .../net/minetest/minetest/MainActivity.java | 7 ++++++ .../net/minetest/minetest/UnzipService.java | 11 +++++---- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java b/build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java index d6e9d9ee1..6d4b6ab0f 100644 --- a/build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java +++ b/build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java @@ -20,11 +20,12 @@ with this program; if not, write to the Free Software Foundation, Inc., package net.minetest.minetest; -import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.widget.Toast; +import androidx.appcompat.app.AppCompatActivity; + import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -33,10 +34,10 @@ import java.lang.ref.WeakReference; public class CopyZipTask extends AsyncTask { - private final WeakReference contextRef; + private final WeakReference activityRef; - CopyZipTask(Context context) { - contextRef = new WeakReference<>(context); + CopyZipTask(AppCompatActivity activity) { + activityRef = new WeakReference<>(activity); } protected String doInBackground(String... params) { @@ -51,11 +52,14 @@ public class CopyZipTask extends AsyncTask { private void copyAsset(String zipName) { String filename = zipName.substring(zipName.lastIndexOf("/") + 1); - try (InputStream in = contextRef.get().getAssets().open(filename); + try (InputStream in = activityRef.get().getAssets().open(filename); OutputStream out = new FileOutputStream(zipName)) { copyFile(in, out); } catch (IOException e) { - Toast.makeText(contextRef.get(), e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); + AppCompatActivity activity = activityRef.get(); + if (activity != null) { + activity.runOnUiThread(() -> Toast.makeText(activityRef.get(), e.getLocalizedMessage(), Toast.LENGTH_LONG).show()); + } cancel(true); } } @@ -68,8 +72,11 @@ public class CopyZipTask extends AsyncTask { } private void startUnzipService(String file) { - Intent intent = new Intent(contextRef.get(), UnzipService.class); + Intent intent = new Intent(activityRef.get(), UnzipService.class); intent.putExtra(UnzipService.EXTRA_KEY_IN_FILE, file); - contextRef.get().startService(intent); + AppCompatActivity activity = activityRef.get(); + if (activity != null) { + activity.startService(intent); + } } } diff --git a/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java b/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java index 1e60beb55..2aa50d9ad 100644 --- a/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java +++ b/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java @@ -43,6 +43,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static net.minetest.minetest.UnzipService.ACTION_FAILURE; import static net.minetest.minetest.UnzipService.ACTION_PROGRESS; import static net.minetest.minetest.UnzipService.ACTION_UPDATE; import static net.minetest.minetest.UnzipService.FAILURE; @@ -71,6 +72,7 @@ public class MainActivity extends AppCompatActivity { } mTextView.setVisibility(View.VISIBLE); } else if (progress == FAILURE) { + Toast.makeText(MainActivity.this, intent.getStringExtra(ACTION_FAILURE), Toast.LENGTH_LONG).show(); finish(); } else if (progress == SUCCESS) startNative(); @@ -138,6 +140,11 @@ public class MainActivity extends AppCompatActivity { startActivity(intent); } + @Override + public void onBackPressed() { + // Prevent abrupt interruption when copy game files from assets + } + @Override protected void onDestroy() { super.onDestroy(); diff --git a/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java b/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java index 6356dff19..b69f7f36e 100644 --- a/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java +++ b/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java @@ -42,20 +42,21 @@ import java.util.zip.ZipInputStream; public class UnzipService extends IntentService { public static final String ACTION_UPDATE = "net.minetest.minetest.UPDATE"; public static final String ACTION_PROGRESS = "net.minetest.minetest.PROGRESS"; + public static final String ACTION_FAILURE = "net.minetest.minetest.FAILURE"; public static final String EXTRA_KEY_IN_FILE = "file"; public static final int SUCCESS = -1; public static final int FAILURE = -2; - private static final String TAG = "UnzipService"; private final int id = 1; private NotificationManager mNotifyManager; private boolean isSuccess = true; + private String failureMessage; public UnzipService() { super("net.minetest.minetest.UnzipService"); } private void isDir(String dir, String location) { - File f = new File(location + dir); + File f = new File(location, dir); if (!f.isDirectory()) f.mkdirs(); } @@ -99,7 +100,8 @@ public class UnzipService extends IntentService { private void unzip(Intent intent) { String zip = intent.getStringExtra(EXTRA_KEY_IN_FILE); - String location = Environment.getExternalStorageDirectory() + "/Minetest/"; + isDir("Minetest", Environment.getExternalStorageDirectory().toString()); + String location = Environment.getExternalStorageDirectory() + File.separator + "Minetest" + File.separator; int per = 0; int size = getSummarySize(zip); File zipFile = new File(zip); @@ -124,13 +126,14 @@ public class UnzipService extends IntentService { } } catch (IOException e) { isSuccess = false; - Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); + failureMessage = e.getLocalizedMessage(); } } private void publishProgress(int progress) { Intent intentUpdate = new Intent(ACTION_UPDATE); intentUpdate.putExtra(ACTION_PROGRESS, progress); + if (!isSuccess) intentUpdate.putExtra(ACTION_FAILURE, failureMessage); sendBroadcast(intentUpdate); } From 08c0b7696a8b15759c8fc203cc90fde21c2c76a9 Mon Sep 17 00:00:00 2001 From: ANAND Date: Fri, 5 Jun 2020 23:34:14 +0530 Subject: [PATCH 256/424] TestBan: Clean up properly after completing test (#9994) --- src/unittest/test_ban.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/unittest/test_ban.cpp b/src/unittest/test_ban.cpp index 2a95b945f..bab2b9ee8 100644 --- a/src/unittest/test_ban.cpp +++ b/src/unittest/test_ban.cpp @@ -61,6 +61,9 @@ void TestBan::runTests(IGameDef *gamedef) reinitTestEnv(); TEST(testGetBanDescription); + + // Delete leftover files + reinitTestEnv(); } // This module is stateful due to disk writes, add helper to remove files From 7ec0e3df35a11b66b48eababf0123170f2453a50 Mon Sep 17 00:00:00 2001 From: Maksim Date: Fri, 5 Jun 2020 21:42:33 +0200 Subject: [PATCH 257/424] Fix HUD scaling (#9721) This resolves HUD scaling issues on Android and desktops with custom DPI settings. --- src/client/hud.cpp | 65 ++++++++++++++++++++++++++++++---------------- src/client/hud.h | 1 + 2 files changed, 44 insertions(+), 22 deletions(-) diff --git a/src/client/hud.cpp b/src/client/hud.cpp index 4edc229b2..31e633bc2 100644 --- a/src/client/hud.cpp +++ b/src/client/hud.cpp @@ -51,6 +51,7 @@ Hud::Hud(gui::IGUIEnvironment *guienv, Client *client, LocalPlayer *player, this->inventory = inventory; m_hud_scaling = g_settings->getFloat("hud_scaling"); + m_scale_factor = m_hud_scaling * RenderingEngine::getDisplayDensity(); m_hotbar_imagesize = std::floor(HOTBAR_IMAGE_SIZE * RenderingEngine::getDisplayDensity() + 0.5f); m_hotbar_imagesize *= m_hud_scaling; @@ -213,9 +214,7 @@ void Hud::drawItems(v2s32 upperleftpos, v2s32 screen_offset, s32 itemcount, } // Position of upper left corner of bar - v2s32 pos = screen_offset; - pos.X *= m_hud_scaling * RenderingEngine::getDisplayDensity(); - pos.Y *= m_hud_scaling * RenderingEngine::getDisplayDensity(); + v2s32 pos = screen_offset * m_scale_factor; pos += upperleftpos; // Store hotbar_image in member variable, used by drawItem() @@ -320,20 +319,40 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) switch (e->type) { case HUD_ELEM_TEXT: { irr::gui::IGUIFont *textfont = font; + unsigned int font_size = g_fontengine->getDefaultFontSize(); + if (e->size.X > 0) - textfont = g_fontengine->getFont( - e->size.X * g_fontengine->getDefaultFontSize()); + font_size *= e->size.X; + + if (font_size != g_fontengine->getDefaultFontSize()) + textfont = g_fontengine->getFont(font_size); video::SColor color(255, (e->number >> 16) & 0xFF, (e->number >> 8) & 0xFF, (e->number >> 0) & 0xFF); - core::rect size(0, 0, e->scale.X, text_height * e->scale.Y); std::wstring text = unescape_translate(utf8_to_wide(e->text)); core::dimension2d textsize = textfont->getDimension(text.c_str()); +#ifdef __ANDROID__ + // The text size on Android is not proportional with the actual scaling + irr::gui::IGUIFont *font_scaled = font_size <= 3 ? + textfont : g_fontengine->getFont(font_size - 3); + if (e->offset.X < -20) + textsize = font_scaled->getDimension(text.c_str()); +#endif v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2), (e->align.Y - 1.0) * (textsize.Height / 2)); - v2s32 offs(e->offset.X, e->offset.Y); - textfont->draw(text.c_str(), size + pos + offset + offs, color); + core::rect size(0, 0, e->scale.X * m_scale_factor, + text_height * e->scale.Y * m_scale_factor); + v2s32 offs(e->offset.X * m_scale_factor, + e->offset.Y * m_scale_factor); +#ifdef __ANDROID__ + if (e->offset.X < -20) + font_scaled->draw(text.c_str(), size + pos + offset + offs, color); + else +#endif + { + textfont->draw(text.c_str(), size + pos + offset + offs, color); + } break; } case HUD_ELEM_STATBAR: { v2s32 offs(e->offset.X, e->offset.Y); @@ -385,8 +404,8 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) const video::SColor color(255, 255, 255, 255); const video::SColor colors[] = {color, color, color, color}; core::dimension2di imgsize(texture->getOriginalSize()); - v2s32 dstsize(imgsize.Width * e->scale.X, - imgsize.Height * e->scale.Y); + v2s32 dstsize(imgsize.Width * e->scale.X * m_scale_factor, + imgsize.Height * e->scale.Y * m_scale_factor); if (e->scale.X < 0) dstsize.X = m_screensize.X * (e->scale.X * -0.01); if (e->scale.Y < 0) @@ -394,7 +413,8 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) v2s32 offset((e->align.X - 1.0) * dstsize.X / 2, (e->align.Y - 1.0) * dstsize.Y / 2); core::rect rect(0, 0, dstsize.X, dstsize.Y); - rect += pos + offset + v2s32(e->offset.X, e->offset.Y); + rect += pos + offset + v2s32(e->offset.X * m_scale_factor, + e->offset.Y * m_scale_factor); draw2DImageFilterScaled(driver, texture, rect, core::rect(core::position2d(0,0), imgsize), NULL, colors, true); @@ -427,12 +447,15 @@ void Hud::drawStatbar(v2s32 pos, u16 corner, u16 drawdir, core::dimension2di dstd; if (size == v2s32()) { dstd = srcd; + dstd.Height *= m_scale_factor; + dstd.Width *= m_scale_factor; + offset.X *= m_scale_factor; + offset.Y *= m_scale_factor; } else { - float size_factor = m_hud_scaling * RenderingEngine::getDisplayDensity(); - dstd.Height = size.Y * size_factor; - dstd.Width = size.X * size_factor; - offset.X *= size_factor; - offset.Y *= size_factor; + dstd.Height = size.Y * m_scale_factor; + dstd.Width = size.X * m_scale_factor; + offset.X *= m_scale_factor; + offset.Y *= m_scale_factor; } v2s32 p = pos; @@ -555,7 +578,7 @@ void Hud::drawHotbar(u16 playeritem) { v2s32 pos = centerlowerpos - v2s32(width / 2, m_hotbar_imagesize + m_padding * 3); const v2u32 &window_size = RenderingEngine::get_instance()->getWindowSize(); - if ( (float) width / (float) window_size.X <= + if ((float) width / (float) window_size.X <= g_settings->getFloat("hud_hotbar_max_width")) { if (player->hud_flags & HUD_FLAG_HOTBAR_VISIBLE) { drawItems(pos, v2s32(0, 0), hotbar_itemcount, 0, mainlist, playeritem + 1, 0); @@ -607,12 +630,10 @@ void Hud::drawSelectionMesh() // Draw 3D selection boxes video::SMaterial oldmaterial = driver->getMaterial2D(); driver->setMaterial(m_selection_material); - for (std::vector::const_iterator - i = m_selection_boxes.begin(); - i != m_selection_boxes.end(); ++i) { + for (auto & selection_box : m_selection_boxes) { aabb3f box = aabb3f( - i->MinEdge + m_selection_pos_with_offset, - i->MaxEdge + m_selection_pos_with_offset); + selection_box.MinEdge + m_selection_pos_with_offset, + selection_box.MaxEdge + m_selection_pos_with_offset); u32 r = (selectionbox_argb.getRed() * m_selection_mesh_color.getRed() / 255); diff --git a/src/client/hud.h b/src/client/hud.h index e2abf326c..6f4c54626 100644 --- a/src/client/hud.h +++ b/src/client/hud.h @@ -92,6 +92,7 @@ private: void drawItem(const ItemStack &item, const core::rect &rect, bool selected); float m_hud_scaling; // cached minetest setting + float m_scale_factor; v3s16 m_camera_offset; v2u32 m_screensize; v2s32 m_displaycenter; From 60bab8b2d7b61383188c10f5d931dc7b5522d042 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sat, 6 Jun 2020 17:17:08 +0100 Subject: [PATCH 258/424] Add HTTP API to main menu (#9998) --- builtin/fstk/dialog.lua | 19 ++ builtin/fstk/ui.lua | 2 +- builtin/init.lua | 1 + builtin/mainmenu/dlg_contentstore.lua | 49 ++--- doc/fst_api.txt | 7 +- doc/menu_lua_api.txt | 271 ++++++++++++++++++-------- src/script/lua_api/l_http.cpp | 44 ++++- src/script/lua_api/l_http.h | 6 + src/script/scripting_mainmenu.cpp | 2 + 9 files changed, 289 insertions(+), 112 deletions(-) diff --git a/builtin/fstk/dialog.lua b/builtin/fstk/dialog.lua index df887f413..ea57df1d2 100644 --- a/builtin/fstk/dialog.lua +++ b/builtin/fstk/dialog.lua @@ -67,3 +67,22 @@ function dialog_create(name,get_formspec,buttonhandler,eventhandler) ui.add(self) return self end + +function messagebox(name, message) + return dialog_create(name, + function() + return ([[ + formspec_version[3] + size[8,3] + textarea[0.375,0.375;7.25,1.2;;;%s] + button[3,1.825;2,0.8;ok;%s] + ]]):format(message, fgettext("OK")) + end, + function(this, fields) + if fields.ok then + this:delete() + return true + end + end, + nil) +end diff --git a/builtin/fstk/ui.lua b/builtin/fstk/ui.lua index 884100543..6d26aabf0 100644 --- a/builtin/fstk/ui.lua +++ b/builtin/fstk/ui.lua @@ -85,7 +85,7 @@ function ui.update() "box[0.5,1.2;13,5;#000]", ("textarea[0.5,1.2;13,5;;%s;%s]"):format( error_title, error_message), - "button[5,6.6;4,1;btn_error_confirm;" .. fgettext("Ok") .. "]" + "button[5,6.6;4,1;btn_error_confirm;" .. fgettext("OK") .. "]" } else local active_toplevel_ui_elements = 0 diff --git a/builtin/init.lua b/builtin/init.lua index f76174be7..75bb3db85 100644 --- a/builtin/init.lua +++ b/builtin/init.lua @@ -36,6 +36,7 @@ dofile(commonpath .. "misc_helpers.lua") if INIT == "game" then dofile(gamepath .. "init.lua") + assert(not core.get_http_api) elseif INIT == "mainmenu" then local mm_script = core.settings:get("main_menu_script") if mm_script and mm_script ~= "" then diff --git a/builtin/mainmenu/dlg_contentstore.lua b/builtin/mainmenu/dlg_contentstore.lua index 8ac4dba68..ae119f48f 100644 --- a/builtin/mainmenu/dlg_contentstore.lua +++ b/builtin/mainmenu/dlg_contentstore.lua @@ -1,5 +1,5 @@ --Minetest ---Copyright (C) 2018 rubenwardy +--Copyright (C) 2018-20 rubenwardy -- --This program is free software; you can redistribute it and/or modify --it under the terms of the GNU Lesser General Public License as published by @@ -15,8 +15,18 @@ --with this program; if not, write to the Free Software Foundation, Inc., --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +if not minetest.get_http_api then + function create_store_dlg() + return messagebox("store", + fgettext("ContentDB is not available when Minetest was compiled without cURL")) + end + return +end + local store = { packages = {}, packages_full = {} } +local http = minetest.get_http_api() + -- Screenshot local screenshot_dir = core.get_cache_path() .. DIR_DELIM .. "cdb" assert(core.create_dir(screenshot_dir)) @@ -171,11 +181,6 @@ local function get_screenshot(package) end function store.load() - local tmpdir = os.tempfolder() - local target = tmpdir .. DIR_DELIM .. "packages.json" - - assert(core.create_dir(tmpdir)) - local version = core.get_version() local base_url = core.settings:get("contentdb_url") local url = base_url .. @@ -189,31 +194,29 @@ function store.load() end end - core.download_file(url, target) + local timeout = tonumber(minetest.settings:get("curl_file_download_timeout")) + local response = http.fetch_sync({ url = url, timeout = timeout }) + if not response.succeeded then + return + end - local file = io.open(target, "r") - if file then - store.packages_full = core.parse_json(file:read("*all")) or {} - file:close() + store.packages_full = core.parse_json(response.data) or {} - for _, package in pairs(store.packages_full) do - package.url = base_url .. "/packages/" .. + for _, package in pairs(store.packages_full) do + package.url = base_url .. "/packages/" .. package.author .. "/" .. package.name .. "/releases/" .. package.release .. "/download/" - local name_len = #package.name - if package.type == "game" and name_len > 5 and package.name:sub(name_len - 4) == "_game" then - package.id = package.author:lower() .. "/" .. package.name:sub(1, name_len - 5) - else - package.id = package.author:lower() .. "/" .. package.name - end + local name_len = #package.name + if package.type == "game" and name_len > 5 and package.name:sub(name_len - 4) == "_game" then + package.id = package.author:lower() .. "/" .. package.name:sub(1, name_len - 5) + else + package.id = package.author:lower() .. "/" .. package.name end - - store.packages = store.packages_full - store.loaded = true end - core.delete_dir(tmpdir) + store.packages = store.packages_full + store.loaded = true end function store.update_paths() diff --git a/doc/fst_api.txt b/doc/fst_api.txt index c8bcb1e91..6f9aa14b3 100644 --- a/doc/fst_api.txt +++ b/doc/fst_api.txt @@ -101,6 +101,9 @@ dialog_create(name, cbf_formspec, cbf_button_handler, cbf_events) ^ cbf_events: function to handle events function(dialog, event) +messagebox(name, message) +^ creates a message dialog + Class reference dialog: methods: @@ -113,13 +116,13 @@ methods: ^ hide dialog - delete() ^ delete dialog from ui - + members: - data ^ variable data attached to this dialog - parent ^ parent component to return to on exit - + File: fst/buttonbar.lua ----------------------- diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt index 485c50110..4eccf5d10 100644 --- a/doc/menu_lua_api.txt +++ b/doc/menu_lua_api.txt @@ -3,34 +3,53 @@ Minetest Lua Mainmenu API Reference 5.3.0 Introduction ------------- + The main menu is defined as a formspec by Lua in builtin/mainmenu/ Description of formspec language to show your menu is in lua_api.txt + Callbacks --------- + core.buttonhandler(fields): called when a button is pressed. ^ fields = {name1 = value1, name2 = value2, ...} core.event_handler(event) ^ event: "MenuQuit", "KeyEnter", "ExitButton" or "EditBoxEnter" + Gamedata -------- + The "gamedata" table is read when calling core.start(). It should contain: { - playername = , - password = , - address = , - port = , - selected_world = , -- 0 for client mode - singleplayer = , + playername = , + password = , + address = , + port = , + selected_world = , -- 0 for client mode + singleplayer = , } + Functions --------- + core.start() core.close() +core.get_min_supp_proto() +^ returns the minimum supported network protocol version +core.get_max_supp_proto() +^ returns the maximum supported network protocol version +core.open_url(url) +^ opens the URL in a web browser, returns false on failure. +^ Must begin with http:// or https:// +core.get_version() (possible in async calls) +^ returns current core version + + +Filesystem +---------- -Filesystem: core.get_builtin_path() ^ returns path to builtin root core.create_dir(absolute_path) (possible in async calls) @@ -48,12 +67,6 @@ core.extract_zip(zipfile,destination) [unzip within path required] ^ zipfile to extract ^ destination folder to extract to ^ returns true/false -core.download_file(url,target) (possible in async calls) -^ url to download -^ target to store to -^ returns true/false -core.get_version() (possible in async calls) -^ returns current core version core.sound_play(spec, looped) -> handle ^ spec = SimpleSoundSpec (see lua-api.txt) ^ looped = bool @@ -67,7 +80,82 @@ core.get_mapgen_names([include_hidden=false]) -> table of map generator algorith registered in the core (possible in async calls) core.get_cache_path() -> path of cache -Formspec: + +HTTP Requests +------------- + +* core.download_file(url, target) (possible in async calls) + * url to download, and target to store to + * returns true/false +* `minetest.get_http_api()` (possible in async calls) + * returns `HTTPApiTable` containing http functions. + * The returned table contains the functions `fetch_sync`, `fetch_async` and + `fetch_async_get` described below. + * Function only exists if minetest server was built with cURL support. +* `HTTPApiTable.fetch_sync(HTTPRequest req)`: returns HTTPRequestResult + * Performs given request synchronously +* `HTTPApiTable.fetch_async(HTTPRequest req)`: returns handle + * Performs given request asynchronously and returns handle for + `HTTPApiTable.fetch_async_get` +* `HTTPApiTable.fetch_async_get(handle)`: returns HTTPRequestResult + * Return response data for given asynchronous HTTP request + +### `HTTPRequest` definition + +Used by `HTTPApiTable.fetch` and `HTTPApiTable.fetch_async`. + + { + url = "http://example.org", + + timeout = 10, + -- Timeout for connection in seconds. Default is 3 seconds. + + post_data = "Raw POST request data string" OR {field1 = "data1", field2 = "data2"}, + -- Optional, if specified a POST request with post_data is performed. + -- Accepts both a string and a table. If a table is specified, encodes + -- table as x-www-form-urlencoded key-value pairs. + -- If post_data is not specified, a GET request is performed instead. + + user_agent = "ExampleUserAgent", + -- Optional, if specified replaces the default minetest user agent with + -- given string + + extra_headers = { "Accept-Language: en-us", "Accept-Charset: utf-8" }, + -- Optional, if specified adds additional headers to the HTTP request. + -- You must make sure that the header strings follow HTTP specification + -- ("Key: Value"). + + multipart = boolean + -- Optional, if true performs a multipart HTTP request. + -- Default is false. + } + +### `HTTPRequestResult` definition + +Passed to `HTTPApiTable.fetch` callback. Returned by +`HTTPApiTable.fetch_async_get`. + + { + completed = true, + -- If true, the request has finished (either succeeded, failed or timed + -- out) + + succeeded = true, + -- If true, the request was successful + + timeout = false, + -- If true, the request timed out + + code = 200, + -- HTTP status code + + data = "response" + } + + +Formspec +-------- + core.update_formspec(formspec) core.get_table_index(tablename) -> index ^ can also handle textlists @@ -82,7 +170,10 @@ core.explode_textlist_event(string) -> table core.set_formspec_prepend(formspec) ^ string to be added to every mainmenu formspec, to be used for theming. -GUI: + +GUI +--- + core.set_background(type, texturepath,[tile],[minsize]) ^ type: "background", "overlay", "header" or "footer" ^ tile: tile the image instead of scaling (background only) @@ -102,86 +193,96 @@ core.show_path_select_dialog(formname, caption, is_file_select) ^ returns nil or selected file/folder core.get_screen_info() ^ returns { - density = , - display_width = , - display_height = , - window_width = , - window_height = - } + density = , + display_width = , + display_height = , + window_width = , + window_height = + } -### Content and Packages + +Content and Packages +-------------------- Content - an installed mod, modpack, game, or texture pack (txt) Package - content which is downloadable from the content db, may or may not be installed. * core.get_modpath() (possible in async calls) - * returns path to global modpath + * returns path to global modpath * core.get_clientmodpath() (possible in async calls) - * returns path to global client-side modpath + * returns path to global client-side modpath * core.get_gamepath() (possible in async calls) - * returns path to global gamepath + * returns path to global gamepath * core.get_texturepath() (possible in async calls) - * returns path to default textures + * returns path to default textures * core.get_game(index) - * returns: + * returns: - { - id = , - path = , - gamemods_path = , - name = , - menuicon_path = , - author = "author", - DEPRECATED: - addon_mods_paths = {[1] = ,}, - } + { + id = , + path = , + gamemods_path = , + name = , + menuicon_path = , + author = "author", + DEPRECATED: + addon_mods_paths = {[1] = ,}, + } * core.get_games() -> table of all games in upper format (possible in async calls) * core.get_content_info(path) - * returns + * returns - { - name = "name of content", - type = "mod" or "modpack" or "game" or "txp", - description = "description", - author = "author", - path = "path/to/content", - depends = {"mod", "names"}, -- mods only - optional_depends = {"mod", "names"}, -- mods only - } + { + name = "name of content", + type = "mod" or "modpack" or "game" or "txp", + description = "description", + author = "author", + path = "path/to/content", + depends = {"mod", "names"}, -- mods only + optional_depends = {"mod", "names"}, -- mods only + } -Favorites: +Favorites +--------- + core.get_favorites(location) -> list of favorites (possible in async calls) ^ location: "local" or "online" ^ returns { - [1] = { - clients = , - clients_max = , - version = , - password = , - creative = , - damage = , - pvp = , - description = , - name = , - address =

, - port = - clients_list = - mods = - }, - ... + [1] = { + clients = , + clients_max = , + version = , + password = , + creative = , + damage = , + pvp = , + description = , + name = , + address =
, + port = + clients_list = + mods = + }, + ... } core.delete_favorite(id, location) -> success -Logging: + +Logging +------- + core.debug(line) (possible in async calls) ^ Always printed to stderr and logfile (print() is redirected here) core.log(line) (possible in async calls) core.log(loglevel, line) (possible in async calls) ^ loglevel one of "error", "action", "info", "verbose" -Settings: + +Settings +-------- + core.settings:set(name, value) core.settings:get(name) -> string or nil (possible in async calls) core.settings:set_bool(name, value) @@ -191,19 +292,25 @@ core.settings:save() -> nil, save all settings to config file For a complete list of methods of the Settings object see [lua_api.txt](https://github.com/minetest/minetest/blob/master/doc/lua_api.txt) -Worlds: + +Worlds +------ + core.get_worlds() -> list of worlds (possible in async calls) ^ returns { - [1] = { - path = , - name = , - gameid = , - }, + [1] = { + path = , + name = , + gameid = , + }, } core.create_world(worldname, gameid) core.delete_world(index) -Helpers: + +Helpers +------- + core.get_us_time() ^ returns time with microsecond precision core.gettext(string) -> string @@ -228,18 +335,10 @@ minetest.encode_base64(string) (possible in async calls) minetest.decode_base64(string) (possible in async calls) ^ Decodes a string encoded in base64. -Version compat: -core.get_min_supp_proto() -^ returns the minimum supported network protocol version -core.get_max_supp_proto() -^ returns the maximum supported network protocol version -Other: -core.open_url(url) -^ opens the URL in a web browser, returns false on failure. -^ Must begin with http:// or https:// +Async +----- -Async: core.handle_async(async_job,parameters,finished) ^ execute a function asynchronously ^ async_job is a function receiving one parameter and returning one parameter @@ -250,11 +349,13 @@ core.handle_async(async_job,parameters,finished) Limitations of Async operations -No access to global lua variables, don't even try -Limited set of available functions - e.g. No access to functions modifying menu like core.start,core.close, - core.show_path_select_dialog + e.g. No access to functions modifying menu like core.start,core.close, + core.show_path_select_dialog + Background music ---------------- + The main menu supports background music. It looks for a `main_menu` sound in `$USER_PATH/sounds`. The same naming conventions as for normal sounds apply. diff --git a/src/script/lua_api/l_http.cpp b/src/script/lua_api/l_http.cpp index 2ff651cb5..73b4586e0 100644 --- a/src/script/lua_api/l_http.cpp +++ b/src/script/lua_api/l_http.cpp @@ -83,6 +83,24 @@ void ModApiHttp::push_http_fetch_result(lua_State *L, HTTPFetchResult &res, bool setstringfield(L, -1, "data", res.data); } +// http_api.fetch_sync(HTTPRequest definition) +int ModApiHttp::l_http_fetch_sync(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + + HTTPFetchRequest req; + read_http_fetch_request(L, req); + + infostream << "Mod performs HTTP request with URL " << req.url << std::endl; + + HTTPFetchResult res; + httpfetch_sync(req, res); + + push_http_fetch_result(L, res, true); + + return 1; +} + // http_api.fetch_async(HTTPRequest definition) int ModApiHttp::l_http_fetch_async(lua_State *L) { @@ -180,11 +198,35 @@ int ModApiHttp::l_request_http_api(lua_State *L) return 1; } + +int ModApiHttp::l_get_http_api(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + + lua_newtable(L); + HTTP_API(fetch_async); + HTTP_API(fetch_async_get); + HTTP_API(fetch_sync); + + return 1; +} + #endif void ModApiHttp::Initialize(lua_State *L, int top) { #if USE_CURL - API_FCT(request_http_api); + + bool isMainmenu = false; +#ifndef SERVER + isMainmenu = ModApiBase::getGuiEngine(L) != nullptr; +#endif + + if (isMainmenu) { + API_FCT(get_http_api); + } else { + API_FCT(request_http_api); + } + #endif } diff --git a/src/script/lua_api/l_http.h b/src/script/lua_api/l_http.h index 3d9cdad29..c665235a9 100644 --- a/src/script/lua_api/l_http.h +++ b/src/script/lua_api/l_http.h @@ -32,6 +32,9 @@ private: static void read_http_fetch_request(lua_State *L, HTTPFetchRequest &req); static void push_http_fetch_result(lua_State *L, HTTPFetchResult &res, bool completed = true); + // http_fetch_sync({url=, timeout=, post_data=}) + static int l_http_fetch_sync(lua_State *L); + // http_fetch_async({url=, timeout=, post_data=}) static int l_http_fetch_async(lua_State *L); @@ -40,6 +43,9 @@ private: // request_http_api() static int l_request_http_api(lua_State *L); + + // get_http_api() + static int l_get_http_api(lua_State *L); #endif public: diff --git a/src/script/scripting_mainmenu.cpp b/src/script/scripting_mainmenu.cpp index b6068439a..08858b1a5 100644 --- a/src/script/scripting_mainmenu.cpp +++ b/src/script/scripting_mainmenu.cpp @@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "content/mods.h" #include "cpp_api/s_internal.h" #include "lua_api/l_base.h" +#include "lua_api/l_http.h" #include "lua_api/l_mainmenu.h" #include "lua_api/l_sound.h" #include "lua_api/l_util.h" @@ -67,6 +68,7 @@ void MainMenuScripting::initializeModApi(lua_State *L, int top) ModApiMainMenu::Initialize(L, top); ModApiUtil::Initialize(L, top); ModApiSound::Initialize(L, top); + ModApiHttp::Initialize(L, top); asyncEngine.registerStateInitializer(registerLuaClasses); asyncEngine.registerStateInitializer(ModApiMainMenu::InitializeAsync); From 36099ba947e6a54429c9fdd45ef1fc6dcc86389b Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sat, 6 Jun 2020 17:59:39 +0100 Subject: [PATCH 259/424] Fix incorrect extension used for ContentDB thumbnails --- builtin/mainmenu/dlg_contentstore.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/builtin/mainmenu/dlg_contentstore.lua b/builtin/mainmenu/dlg_contentstore.lua index ae119f48f..b5c330f8f 100644 --- a/builtin/mainmenu/dlg_contentstore.lua +++ b/builtin/mainmenu/dlg_contentstore.lua @@ -133,6 +133,11 @@ local function start_install(calling_dialog, package) end end +local function get_file_extension(path) + local parts = path:split(".") + return parts[#parts] +end + local function get_screenshot(package) if not package.thumbnail then return defaulttexturedir .. "no_screenshot.png" @@ -141,8 +146,9 @@ local function get_screenshot(package) end -- Get tmp screenshot path + local ext = get_file_extension(package.thumbnail) local filepath = screenshot_dir .. DIR_DELIM .. - package.type .. "-" .. package.author .. "-" .. package.name .. ".png" + ("%s-%s-%s.%s"):format(package.type, package.author, package.name, ext) -- Return if already downloaded local file = io.open(filepath, "r") From e746607d0f8531e3a8b12cc45294aecf36217b17 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Sat, 6 Jun 2020 23:25:18 +0300 Subject: [PATCH 260/424] Restore visual_scale support for nodeboxes (and allfaces) (#9906) --- doc/lua_api.txt | 2 +- src/client/content_mapblock.cpp | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 8c81b7020..898531880 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -6941,7 +6941,7 @@ Used by `minetest.register_node`. visual_scale = 1.0, -- Supported for drawtypes "plantlike", "signlike", "torchlike", - -- "firelike", "mesh". + -- "firelike", "mesh", "nodebox", "allfaces". -- For plantlike and firelike, the image will start at the bottom of the -- node. For torchlike, the image will start at the surface to which the -- node "attaches". For the other drawtypes the image will be centered diff --git a/src/client/content_mapblock.cpp b/src/client/content_mapblock.cpp index 50efd2e40..f7d20001f 100644 --- a/src/client/content_mapblock.cpp +++ b/src/client/content_mapblock.cpp @@ -366,6 +366,7 @@ void MapblockMeshGenerator::generateCuboidTextureCoords(const aabb3f &box, f32 * void MapblockMeshGenerator::drawAutoLightedCuboid(aabb3f box, const f32 *txc, TileSpec *tiles, int tile_count) { + bool scale = std::fabs(f->visual_scale - 1.0f) > 1e-3f; f32 texture_coord_buf[24]; f32 dx1 = box.MinEdge.X; f32 dy1 = box.MinEdge.Y; @@ -373,6 +374,14 @@ void MapblockMeshGenerator::drawAutoLightedCuboid(aabb3f box, const f32 *txc, f32 dx2 = box.MaxEdge.X; f32 dy2 = box.MaxEdge.Y; f32 dz2 = box.MaxEdge.Z; + if (scale) { + if (!txc) { // generate texture coords before scaling + generateCuboidTextureCoords(box, texture_coord_buf); + txc = texture_coord_buf; + } + box.MinEdge *= f->visual_scale; + box.MaxEdge *= f->visual_scale; + } box.MinEdge += origin; box.MaxEdge += origin; if (!txc) { @@ -1323,7 +1332,7 @@ void MapblockMeshGenerator::drawNodeboxNode() std::vector boxes; n.getNodeBoxes(nodedef, &boxes, neighbors_set); - for (const auto &box : boxes) + for (auto &box : boxes) drawAutoLightedCuboid(box, nullptr, tiles, 6); } From 8fc9e7eb117849202b87bf3d764cd3eac6f68c74 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sun, 7 Jun 2020 14:17:32 +0200 Subject: [PATCH 261/424] GenericCAO: Fix glow not working since a08d18a --- src/client/content_cao.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index 702d089af..855729642 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -787,6 +787,9 @@ void GenericCAO::addToScene(ITextureSource *tsrc) void GenericCAO::updateLight(u32 day_night_ratio) { + if (m_glow < 0) + return; + u8 light_at_pos = 0; bool pos_ok; @@ -797,7 +800,7 @@ void GenericCAO::updateLight(u32 day_night_ratio) else light_at_pos = blend_light(day_night_ratio, LIGHT_SUN, 0); - u8 light = decode_light(light_at_pos); + u8 light = decode_light(light_at_pos + m_glow); if (light != m_last_light) { m_last_light = light; setNodeLight(light); From fe1f72ab0ac8bcc233c91eb5b2d71bd2d2574cf8 Mon Sep 17 00:00:00 2001 From: Danila Shutov Date: Sun, 7 Jun 2020 19:14:00 +0300 Subject: [PATCH 262/424] Recalculate mesh normals for CAOs (#10000) --- src/client/content_cao.cpp | 8 ++++++++ src/client/mesh.cpp | 20 ++++++++++++++++++++ src/client/mesh.h | 6 ++++++ 3 files changed, 34 insertions(+) diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index 855729642..a6ce06d20 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -726,6 +726,14 @@ void GenericCAO::addToScene(ITextureSource *tsrc) addAnimatedMeshSceneNode(mesh, m_matrixnode); m_animated_meshnode->grab(); mesh->drop(); // The scene node took hold of it + + if (!checkMeshNormals(mesh)) { + infostream << "GenericCAO: recalculating normals for mesh " + << m_prop.mesh << std::endl; + m_smgr->getMeshManipulator()-> + recalculateNormals(mesh, true, false); + } + m_animated_meshnode->animateJoints(); // Needed for some animations m_animated_meshnode->setScale(m_prop.visual_size); diff --git a/src/client/mesh.cpp b/src/client/mesh.cpp index 4d73ead8a..91781373c 100644 --- a/src/client/mesh.cpp +++ b/src/client/mesh.cpp @@ -328,6 +328,26 @@ void recalculateBoundingBox(scene::IMesh *src_mesh) src_mesh->setBoundingBox(bbox); } +bool checkMeshNormals(scene::IMesh *mesh) +{ + u32 buffer_count = mesh->getMeshBufferCount(); + + for (u32 i = 0; i < buffer_count; i++) { + scene::IMeshBuffer *buffer = mesh->getMeshBuffer(i); + + // Here we intentionally check only first normal, assuming that if buffer + // has it valid, then most likely all other ones are fine too. We can + // check all of the normals to have length, but it seems like an overkill + // hurting the performance and covering only really weird broken models. + f32 length = buffer->getNormal(0).getLength(); + + if (!isfinite(length) || fabs(length) < 1e-10) + return false; + } + + return true; +} + scene::IMeshBuffer* cloneMeshBuffer(scene::IMeshBuffer *mesh_buffer) { switch (mesh_buffer->getVertexType()) { diff --git a/src/client/mesh.h b/src/client/mesh.h index 0c4094de2..103c61e45 100644 --- a/src/client/mesh.h +++ b/src/client/mesh.h @@ -121,6 +121,12 @@ scene::IMesh* convertNodeboxesToMesh(const std::vector &boxes, */ void recalculateBoundingBox(scene::IMesh *src_mesh); +/* + Check if mesh has valid normals and return true if it does. + We assume normal to be valid when it's 0 < length < Inf. and not NaN + */ +bool checkMeshNormals(scene::IMesh *mesh); + /* Vertex cache optimization according to the Forsyth paper: http://home.comcast.net/~tom_forsyth/papers/fast_vert_cache_opt.html From 09f9e465e760cb8fd791222405a9e5e68a676ba0 Mon Sep 17 00:00:00 2001 From: Paul Ouellette Date: Sat, 6 Jun 2020 14:52:26 -0400 Subject: [PATCH 263/424] Fix Lua panic when error() message is not a string --- src/script/cpp_api/s_base.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/script/cpp_api/s_base.cpp b/src/script/cpp_api/s_base.cpp index df07206d7..f965975a3 100644 --- a/src/script/cpp_api/s_base.cpp +++ b/src/script/cpp_api/s_base.cpp @@ -187,7 +187,9 @@ void ScriptApiBase::loadScript(const std::string &script_path) } ok = ok && !lua_pcall(L, 0, 0, error_handler); if (!ok) { - std::string error_msg = readParam(L, -1); + const char *error_msg = lua_tostring(L, -1); + if (!error_msg) + error_msg = "(error object is not a string)"; lua_pop(L, 2); // Pop error message and error handler throw ModError("Failed to load and run script from " + script_path + ":\n" + error_msg); @@ -219,7 +221,9 @@ void ScriptApiBase::loadModFromMemory(const std::string &mod_name) if (ok) ok = !lua_pcall(L, 0, 0, error_handler); if (!ok) { - std::string error_msg = luaL_checkstring(L, -1); + const char *error_msg = lua_tostring(L, -1); + if (!error_msg) + error_msg = "(error object is not a string)"; lua_pop(L, 2); // Pop error message and error handler throw ModError("Failed to load and run mod \"" + mod_name + "\":\n" + error_msg); From 0ab580810c6ccebfd57497b9565e3e396d250d70 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 7 Jun 2020 20:43:42 +0200 Subject: [PATCH 264/424] Reset touching_ground when in free_move This corrects local player animation after enabling fly while standing on ground. --- src/client/localplayer.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/client/localplayer.cpp b/src/client/localplayer.cpp index 011898bcf..1e7040d57 100644 --- a/src/client/localplayer.cpp +++ b/src/client/localplayer.cpp @@ -200,6 +200,8 @@ void LocalPlayer::move(f32 dtime, Environment *env, f32 pos_max_d, if (noclip && free_move) { position += m_speed * dtime; setPosition(position); + + touching_ground = false; added_velocity = v3f(0.0f); // ignored return; } @@ -787,6 +789,8 @@ void LocalPlayer::old_move(f32 dtime, Environment *env, f32 pos_max_d, if (free_move) { position += m_speed * dtime; setPosition(position); + + touching_ground = false; m_sneak_node_exists = false; added_velocity = v3f(0.0f); return; From a21f9bb7e62b461154a25599a8507ca035fdd463 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 8 Jun 2020 17:15:02 +0200 Subject: [PATCH 265/424] devtest: Improve tool and formspec usability also fix the yawsprite test entity --- games/devtest/mods/basetools/init.lua | 1 + games/devtest/mods/testentities/visuals.lua | 6 +++--- games/devtest/mods/testtools/init.lua | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/games/devtest/mods/basetools/init.lua b/games/devtest/mods/basetools/init.lua index d9d9afb07..c5b4cd76c 100644 --- a/games/devtest/mods/basetools/init.lua +++ b/games/devtest/mods/basetools/init.lua @@ -54,6 +54,7 @@ minetest.register_tool("basetools:pick_mese", { choppy={times={[1]=0.0, [2]=0.0, [3]=0.0}, maxlevel=255}, dig_immediate={times={[1]=0.0, [2]=0.0, [3]=0.0}, maxlevel=255}, }, + damage_groups = {fleshy=100}, }, }) diff --git a/games/devtest/mods/testentities/visuals.lua b/games/devtest/mods/testentities/visuals.lua index de346fd68..314f51657 100644 --- a/games/devtest/mods/testentities/visuals.lua +++ b/games/devtest/mods/testentities/visuals.lua @@ -66,9 +66,9 @@ minetest.register_entity("testentities:yawsprite", { textures = {"testentities_dungeon_master.png^[makealpha:128,0,0^[makealpha:128,128,0"}, spritediv = {x=6, y=5}, initial_sprite_basepos = {x=0, y=0}, - on_activate = function(self, staticdata) - self.object:set_sprite({x=0, y=0}, 1, 0, true) - end, }, + on_activate = function(self, staticdata) + self.object:set_sprite({x=0, y=0}, 1, 0, true) + end, }) diff --git a/games/devtest/mods/testtools/init.lua b/games/devtest/mods/testtools/init.lua index a63c98377..d68a086b9 100644 --- a/games/devtest/mods/testtools/init.lua +++ b/games/devtest/mods/testtools/init.lua @@ -429,6 +429,7 @@ local editor_formspec = function(playername, obj, value, sel) "label[0,0;"..F(title).."]".. "textlist[0,0.5;9,7.5;object_props;"..list..";"..sel..";false]".. "field[0.2,8.75;8,1;value;"..F(S("Value"))..";"..F(value).."]".. + "field_close_on_enter[value;false]".. "button[8,8.5;1,1;submit;"..F(S("Submit")).."]" ) end @@ -665,7 +666,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) return end end - if fields.submit then + if fields.key_enter_field == "value" or fields.submit then local props = selected_objects[name]:get_properties() local keys = property_formspec_data[name] if (not property_formspec_index[name]) or (not props) then From 3cee55f2b4df39fcbf870c2467b51c3d82075874 Mon Sep 17 00:00:00 2001 From: MoNTE48 Date: Thu, 16 Apr 2020 18:49:30 +0200 Subject: [PATCH 266/424] Hide tooltip after ETIE_LEFT_UP (for touch control) --- src/gui/guiFormSpecMenu.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index 49133f1cb..0bb401251 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -3560,6 +3560,10 @@ void GUIFormSpecMenu::showTooltip(const std::wstring &text, tooltip_offset_y = 0; if (m_pointer.X > (s32)screenSize.X / 2) tooltip_offset_x = -(tooltip_offset_x + tooltip_width); + + // Hide tooltip after ETIE_LEFT_UP + if (m_pointer.X == 0) + return; #endif // Calculate and set the tooltip position From 756dc89ede7daa640fe6391ee2c51e78864c0d5c Mon Sep 17 00:00:00 2001 From: Maksim Date: Sun, 31 May 2020 22:27:50 +0200 Subject: [PATCH 267/424] Fix real keyboard movements on touchscreen devices --- src/gui/touchscreengui.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gui/touchscreengui.cpp b/src/gui/touchscreengui.cpp index 94e331f72..4df5979e1 100644 --- a/src/gui/touchscreengui.cpp +++ b/src/gui/touchscreengui.cpp @@ -1211,7 +1211,12 @@ void TouchScreenGUI::step(float dtime) } // joystick - applyJoystickStatus(); + for (unsigned int i = 0; i < 4; i++) { + if (m_joystick_status[i]) { + applyJoystickStatus(); + break; + } + } // if a new placed pointer isn't moved for some time start digging if ((m_move_id != -1) && From 0d8e5bf587ab497b3c84a6e0c6bf15c01ae03f0a Mon Sep 17 00:00:00 2001 From: MoNTE48 Date: Thu, 16 Apr 2020 18:49:07 +0200 Subject: [PATCH 268/424] TouchScreen Control: fix some bugs, cleanup --- src/gui/modalMenu.cpp | 59 ++++++++++++++----------------------------- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/src/gui/modalMenu.cpp b/src/gui/modalMenu.cpp index 8fb6c6f0f..a6fe7ebaf 100644 --- a/src/gui/modalMenu.cpp +++ b/src/gui/modalMenu.cpp @@ -28,8 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "touchscreengui.h" #endif -// clang-format off -GUIModalMenu::GUIModalMenu(gui::IGUIEnvironment* env, gui::IGUIElement* parent, s32 id, +GUIModalMenu::GUIModalMenu(gui::IGUIEnvironment *env, gui::IGUIElement *parent, s32 id, IMenuManager *menumgr) : IGUIElement(gui::EGUIET_ELEMENT, env, parent, id, core::rect(0, 0, 100, 100)), @@ -153,8 +152,8 @@ bool GUIModalMenu::preprocessEvent(const SEvent &event) if (((gui::IGUIEditBox *)hovered)->isPasswordBox()) type = 3; - porting::showInputDialog(gettext("ok"), "", - wide_to_utf8(((gui::IGUIEditBox *)hovered)->getText()), type); + porting::showInputDialog(gettext("OK"), "", + wide_to_utf8(((gui::IGUIEditBox *)hovered)->getText()), type); return retval; } } @@ -167,18 +166,17 @@ bool GUIModalMenu::preprocessEvent(const SEvent &event) if (!root) { errorstream << "GUIModalMenu::preprocessEvent" - << " unable to get root element" << std::endl; + << " unable to get root element" << std::endl; return false; } - gui::IGUIElement *hovered = root->getElementFromPoint( - core::position2d(event.TouchInput.X, event.TouchInput.Y)); + gui::IGUIElement *hovered = + root->getElementFromPoint(core::position2d( + event.TouchInput.X, event.TouchInput.Y)); translated.MouseInput.X = event.TouchInput.X; translated.MouseInput.Y = event.TouchInput.Y; translated.MouseInput.Control = false; - bool dont_send_event = false; - if (event.TouchInput.touchedCount == 1) { switch (event.TouchInput.Event) { case ETIE_PRESSED_DOWN: @@ -205,11 +203,7 @@ bool GUIModalMenu::preprocessEvent(const SEvent &event) m_down_pos = v2s32(0, 0); break; default: - dont_send_event = true; - // this is not supposed to happen - errorstream << "GUIModalMenu::preprocessEvent" - << " unexpected usecase Event=" - << event.TouchInput.Event << std::endl; + break; } } else if ((event.TouchInput.touchedCount == 2) && (event.TouchInput.Event == ETIE_PRESSED_DOWN)) { @@ -219,50 +213,37 @@ bool GUIModalMenu::preprocessEvent(const SEvent &event) translated.MouseInput.ButtonStates = EMBSM_LEFT | EMBSM_RIGHT; translated.MouseInput.X = m_pointer.X; translated.MouseInput.Y = m_pointer.Y; - if (hovered) { + if (hovered) hovered->OnEvent(translated); - } translated.MouseInput.Event = EMIE_RMOUSE_LEFT_UP; translated.MouseInput.ButtonStates = EMBSM_LEFT; - if (hovered) { + if (hovered) hovered->OnEvent(translated); - } - dont_send_event = true; - } - // ignore unhandled 2 touch events ... accidental moving for example - else if (event.TouchInput.touchedCount == 2) { - dont_send_event = true; - } - else if (event.TouchInput.touchedCount > 2) { - errorstream << "GUIModalMenu::preprocessEvent" - << " to many multitouch events " - << event.TouchInput.touchedCount << " ignoring them" - << std::endl; - } - if (dont_send_event) { + return true; + } else { + // ignore unhandled 2 touch events (accidental moving for example) return true; } // check if translated event needs to be preprocessed again - if (preprocessEvent(translated)) { + if (preprocessEvent(translated)) return true; - } + if (hovered) { grab(); bool retval = hovered->OnEvent(translated); - if (event.TouchInput.Event == ETIE_LEFT_UP) { + if (event.TouchInput.Event == ETIE_LEFT_UP) // reset pointer m_pointer = v2s32(0, 0); - } + drop(); return retval; } } - // clang-format on #endif return false; } @@ -271,14 +252,12 @@ bool GUIModalMenu::preprocessEvent(const SEvent &event) bool GUIModalMenu::hasAndroidUIInput() { // no dialog shown - if (m_jni_field_name.empty()) { + if (m_jni_field_name.empty()) return false; - } // still waiting - if (porting::getInputDialogState() == -1) { + if (porting::getInputDialogState() == -1) return true; - } // no value abort dialog processing if (porting::getInputDialogState() != 0) { From b9f618746c0f673ea1f851bb2473fb3ca9410093 Mon Sep 17 00:00:00 2001 From: MoNTE48 Date: Thu, 16 Apr 2020 17:37:40 +0200 Subject: [PATCH 269/424] TouchScreenGUI: fix some bugs, cleanup --- src/client/game.cpp | 4 + src/gui/touchscreengui.cpp | 414 ++++++++++++++----------------------- src/gui/touchscreengui.h | 55 +++-- 3 files changed, 183 insertions(+), 290 deletions(-) diff --git a/src/client/game.cpp b/src/client/game.cpp index cdf4da21e..139742cec 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -1173,6 +1173,10 @@ void Game::shutdown() if (formspec) formspec->quitMenu(); +#ifdef HAVE_TOUCHSCREENGUI + g_touchscreengui->hide(); +#endif + showOverlayMessage(N_("Shutting down..."), 0, 0, false); if (clouds) diff --git a/src/gui/touchscreengui.cpp b/src/gui/touchscreengui.cpp index 4df5979e1..3ee9e4a64 100644 --- a/src/gui/touchscreengui.cpp +++ b/src/gui/touchscreengui.cpp @@ -34,19 +34,16 @@ with this program; if not, write to the Free Software Foundation, Inc., #include -// Very slow button repeat frequency (in seconds) -#define SLOW_BUTTON_REPEAT (1.0f) - using namespace irr::core; -const char **touchgui_button_imagenames = (const char *[]) { +const char **button_imagenames = (const char *[]) { "jump_btn.png", "down.png", "zoom.png", "aux_btn.png" }; -const char **touchgui_joystick_imagenames = (const char *[]) { +const char **joystick_imagenames = (const char *[]) { "joystick_off.png", "joystick_bg.png", "joystick_center.png" @@ -113,15 +110,17 @@ static irr::EKEY_CODE id2keycode(touch_gui_button_id id) case range_id: key = "rangeselect"; break; + default: + break; } - assert(key != ""); + assert(!key.empty()); return keyname_to_keycode(g_settings->get("keymap_" + key).c_str()); } TouchScreenGUI *g_touchscreengui; static void load_button_texture(button_info *btn, const char *path, - rect button_rect, ISimpleTextureSource *tsrc, video::IVideoDriver *driver) + const rect &button_rect, ISimpleTextureSource *tsrc, video::IVideoDriver *driver) { unsigned int tid; video::ITexture *texture = guiScalingImageButton(driver, @@ -141,7 +140,7 @@ static void load_button_texture(button_info *btn, const char *path, } btn->guibutton->setDrawBorder(false); btn->guibutton->setText(L""); - } + } } AutoHideButtonBar::AutoHideButtonBar(IrrlichtDevice *device, @@ -153,8 +152,8 @@ AutoHideButtonBar::AutoHideButtonBar(IrrlichtDevice *device, } void AutoHideButtonBar::init(ISimpleTextureSource *tsrc, - const char *starter_img, int button_id, v2s32 UpperLeft, - v2s32 LowerRight, autohide_button_bar_dir dir, float timeout) + const char *starter_img, int button_id, const v2s32 &UpperLeft, + const v2s32 &LowerRight, autohide_button_bar_dir dir, float timeout) { m_texturesource = tsrc; @@ -166,7 +165,7 @@ void AutoHideButtonBar::init(ISimpleTextureSource *tsrc, irr::core::rect current_button = rect(UpperLeft.X, UpperLeft.Y, LowerRight.X, LowerRight.Y); - m_starter.guibutton = m_guienv->addButton(current_button, 0, button_id, L"", 0); + m_starter.guibutton = m_guienv->addButton(current_button, nullptr, button_id, L"", nullptr); m_starter.guibutton->grab(); m_starter.repeatcounter = -1; m_starter.keycode = KEY_OEM_8; // use invalid keycode as it's not relevant @@ -201,16 +200,14 @@ void AutoHideButtonBar::addButton(touch_gui_button_id button_id, } int button_size = 0; - if ((m_dir == AHBB_Dir_Top_Bottom) || (m_dir == AHBB_Dir_Bottom_Top)) { + if ((m_dir == AHBB_Dir_Top_Bottom) || (m_dir == AHBB_Dir_Bottom_Top)) button_size = m_lower_right.X - m_upper_left.X; - } else { + else button_size = m_lower_right.Y - m_upper_left.Y; - } irr::core::rect current_button; if ((m_dir == AHBB_Dir_Right_Left) || (m_dir == AHBB_Dir_Left_Right)) { - int x_start = 0; int x_end = 0; @@ -227,8 +224,8 @@ void AutoHideButtonBar::addButton(touch_gui_button_id button_id, current_button = rect(x_start, m_upper_left.Y, x_end, m_lower_right.Y); } else { - int y_start = 0; - int y_end = 0; + double y_start = 0; + double y_end = 0; if (m_dir == AHBB_Dir_Top_Bottom) { y_start = m_lower_right.X + (button_size * 1.25 * m_buttons.size()) @@ -240,12 +237,13 @@ void AutoHideButtonBar::addButton(touch_gui_button_id button_id, y_start = y_end - button_size; } - current_button = rect(m_upper_left.X, y_start, m_lower_right.Y, - y_end); + current_button = rect(m_upper_left.X, y_start, + m_lower_right.Y, y_end); } - button_info *btn = new button_info(); - btn->guibutton = m_guienv->addButton(current_button, 0, button_id, caption, 0); + auto *btn = new button_info(); + btn->guibutton = m_guienv->addButton(current_button, + nullptr, button_id, caption, nullptr); btn->guibutton->grab(); btn->guibutton->setVisible(false); btn->guibutton->setEnabled(false); @@ -275,26 +273,23 @@ bool AutoHideButtonBar::isButton(const SEvent &event) { IGUIElement *rootguielement = m_guienv->getRootGUIElement(); - if (rootguielement == NULL) { + if (rootguielement == nullptr) return false; - } gui::IGUIElement *element = rootguielement->getElementFromPoint( core::position2d(event.TouchInput.X, event.TouchInput.Y)); - if (element == NULL) { + if (element == nullptr) return false; - } if (m_active) { // check for all buttons in vector - - std::vector::iterator iter = m_buttons.begin(); + auto iter = m_buttons.begin(); while (iter != m_buttons.end()) { if ((*iter)->guibutton == element) { - SEvent *translated = new SEvent(); + auto *translated = new SEvent(); memset(translated, 0, sizeof(SEvent)); translated->EventType = irr::EET_KEY_INPUT_EVENT; translated->KeyInput.Key = (*iter)->keycode; @@ -341,7 +336,7 @@ bool AutoHideButtonBar::isButton(const SEvent &event) m_active = true; m_timeout = 0; - std::vector::iterator iter = m_buttons.begin(); + auto iter = m_buttons.begin(); while (iter != m_buttons.end()) { (*iter)->guibutton->setVisible(true); @@ -355,41 +350,13 @@ bool AutoHideButtonBar::isButton(const SEvent &event) return false; } -bool AutoHideButtonBar::isReleaseButton(int eventID) -{ - std::vector::iterator id = std::find(m_starter.ids.begin(), - m_starter.ids.end(), eventID); - - if (id != m_starter.ids.end()) { - m_starter.ids.erase(id); - return true; - } - - std::vector::iterator iter = m_buttons.begin(); - - while (iter != m_buttons.end()) { - std::vector::iterator id = std::find((*iter)->ids.begin(), - (*iter)->ids.end(), eventID); - - if (id != (*iter)->ids.end()) { - (*iter)->ids.erase(id); - // TODO handle settings button release - return true; - } - ++iter; - } - - return false; -} - void AutoHideButtonBar::step(float dtime) { if (m_active) { m_timeout += dtime; - if (m_timeout > m_timeout_value) { + if (m_timeout > m_timeout_value) deactivate(); - } } } @@ -401,11 +368,11 @@ void AutoHideButtonBar::deactivate() } m_active = false; - std::vector::iterator iter = m_buttons.begin(); + auto iter = m_buttons.begin(); while (iter != m_buttons.end()) { - (*iter)->guibutton->setVisible(false); - (*iter)->guibutton->setEnabled(false); + (*iter)->guibutton->setVisible(false); + (*iter)->guibutton->setEnabled(false); ++iter; } } @@ -416,7 +383,7 @@ void AutoHideButtonBar::hide() m_starter.guibutton->setVisible(false); m_starter.guibutton->setEnabled(false); - std::vector::iterator iter = m_buttons.begin(); + auto iter = m_buttons.begin(); while (iter != m_buttons.end()) { (*iter)->guibutton->setVisible(false); @@ -430,7 +397,7 @@ void AutoHideButtonBar::show() m_visible = true; if (m_active) { - std::vector::iterator iter = m_buttons.begin(); + auto iter = m_buttons.begin(); while (iter != m_buttons.end()) { (*iter)->guibutton->setVisible(true); @@ -450,24 +417,26 @@ TouchScreenGUI::TouchScreenGUI(IrrlichtDevice *device, IEventReceiver *receiver) m_settingsbar(device, receiver), m_rarecontrolsbar(device, receiver) { - for (unsigned int i=0; i < after_last_element_id; i++) { - m_buttons[i].guibutton = 0; - m_buttons[i].repeatcounter = -1; - m_buttons[i].repeatdelay = BUTTON_REPEAT_DELAY; + for (auto &button : m_buttons) { + button.guibutton = nullptr; + button.repeatcounter = -1; + button.repeatdelay = BUTTON_REPEAT_DELAY; } m_touchscreen_threshold = g_settings->getU16("touchscreen_threshold"); m_fixed_joystick = g_settings->getBool("fixed_virtual_joystick"); m_joystick_triggers_special1 = g_settings->getBool("virtual_joystick_triggers_aux"); m_screensize = m_device->getVideoDriver()->getScreenSize(); + button_size = MYMIN(m_screensize.Y / 4.5f, + porting::getDisplayDensity() * + g_settings->getFloat("hud_scaling") * 65.0f); } -void TouchScreenGUI::initButton(touch_gui_button_id id, rect button_rect, - std::wstring caption, bool immediate_release, float repeat_delay) +void TouchScreenGUI::initButton(touch_gui_button_id id, const rect &button_rect, + const std::wstring &caption, bool immediate_release, float repeat_delay) { - button_info *btn = &m_buttons[id]; - btn->guibutton = m_guienv->addButton(button_rect, 0, id, caption.c_str()); + btn->guibutton = m_guienv->addButton(button_rect, nullptr, id, caption.c_str()); btn->guibutton->grab(); btn->repeatcounter = -1; btn->repeatdelay = repeat_delay; @@ -475,42 +444,29 @@ void TouchScreenGUI::initButton(touch_gui_button_id id, rect button_rect, btn->immediate_release = immediate_release; btn->ids.clear(); - load_button_texture(btn, touchgui_button_imagenames[id], button_rect, + load_button_texture(btn, button_imagenames[id], button_rect, m_texturesource, m_device->getVideoDriver()); } -button_info *TouchScreenGUI::initJoystickButton(touch_gui_button_id id, rect button_rect, - int texture_id, bool visible) +button_info *TouchScreenGUI::initJoystickButton(touch_gui_button_id id, + const rect &button_rect, int texture_id, bool visible) { - button_info *btn = new button_info(); - btn->guibutton = m_guienv->addButton(button_rect, 0, id, L"O"); + auto *btn = new button_info(); + btn->guibutton = m_guienv->addButton(button_rect, nullptr, id, L"O"); btn->guibutton->setVisible(visible); btn->guibutton->grab(); btn->ids.clear(); - load_button_texture(btn, touchgui_joystick_imagenames[texture_id], button_rect, - m_texturesource, m_device->getVideoDriver()); + load_button_texture(btn, joystick_imagenames[texture_id], + button_rect, m_texturesource, m_device->getVideoDriver()); return btn; } -static int getMaxControlPadSize(float density) { - return 200 * density * g_settings->getFloat("hud_scaling"); -} - -int TouchScreenGUI::getGuiButtonSize() -{ - u32 control_pad_size = MYMIN((2 * m_screensize.Y) / 3, - getMaxControlPadSize(porting::getDisplayDensity())); - - return control_pad_size / 3; -} - void TouchScreenGUI::init(ISimpleTextureSource *tsrc) { assert(tsrc); - u32 button_size = getGuiButtonSize(); m_visible = true; m_texturesource = tsrc; @@ -608,35 +564,31 @@ void TouchScreenGUI::init(ISimpleTextureSource *tsrc) m_rarecontrolsbar.addButton(chat_id, L"Chat", "chat_btn.png"); m_rarecontrolsbar.addButton(inventory_id, L"inv", "inventory_btn.png"); m_rarecontrolsbar.addButton(drop_id, L"drop", "drop_btn.png"); - } touch_gui_button_id TouchScreenGUI::getButtonID(s32 x, s32 y) { IGUIElement *rootguielement = m_guienv->getRootGUIElement(); - if (rootguielement != NULL) { + if (rootguielement != nullptr) { gui::IGUIElement *element = rootguielement->getElementFromPoint(core::position2d(x, y)); - if (element) { - for (unsigned int i=0; i < after_last_element_id; i++) { - if (element == m_buttons[i].guibutton) { + if (element) + for (unsigned int i = 0; i < after_last_element_id; i++) + if (element == m_buttons[i].guibutton) return (touch_gui_button_id) i; - } - } - } } + return after_last_element_id; } -touch_gui_button_id TouchScreenGUI::getButtonID(int eventID) +touch_gui_button_id TouchScreenGUI::getButtonID(size_t eventID) { - for (unsigned int i=0; i < after_last_element_id; i++) { + for (unsigned int i = 0; i < after_last_element_id; i++) { button_info *btn = &m_buttons[i]; - std::vector::iterator id = - std::find(btn->ids.begin(), btn->ids.end(), eventID); + auto id = std::find(btn->ids.begin(), btn->ids.end(), eventID); if (id != btn->ids.end()) return (touch_gui_button_id) i; @@ -648,55 +600,30 @@ touch_gui_button_id TouchScreenGUI::getButtonID(int eventID) bool TouchScreenGUI::isHUDButton(const SEvent &event) { // check if hud item is pressed - for (std::map >::iterator iter = m_hud_rects.begin(); - iter != m_hud_rects.end(); ++iter) { - if (iter->second.isPointInside( - v2s32(event.TouchInput.X, - event.TouchInput.Y) - )) { - if ( iter->first < 8) { - SEvent *translated = new SEvent(); - memset(translated, 0, sizeof(SEvent)); - translated->EventType = irr::EET_KEY_INPUT_EVENT; - translated->KeyInput.Key = (irr::EKEY_CODE) (KEY_KEY_1 + iter->first); - translated->KeyInput.Control = false; - translated->KeyInput.Shift = false; - translated->KeyInput.PressedDown = true; - m_receiver->OnEvent(*translated); - m_hud_ids[event.TouchInput.ID] = translated->KeyInput.Key; - delete translated; - return true; - } + for (auto &hud_rect : m_hud_rects) { + if (hud_rect.second.isPointInside(v2s32(event.TouchInput.X, + event.TouchInput.Y))) { + auto *translated = new SEvent(); + memset(translated, 0, sizeof(SEvent)); + translated->EventType = irr::EET_KEY_INPUT_EVENT; + translated->KeyInput.Key = (irr::EKEY_CODE) (KEY_KEY_1 + hud_rect.first); + translated->KeyInput.Control = false; + translated->KeyInput.Shift = false; + translated->KeyInput.PressedDown = true; + m_receiver->OnEvent(*translated); + m_hud_ids[event.TouchInput.ID] = translated->KeyInput.Key; + delete translated; + return true; } } return false; } -bool TouchScreenGUI::isReleaseHUDButton(int eventID) -{ - std::map::iterator iter = m_hud_ids.find(eventID); - - if (iter != m_hud_ids.end()) { - SEvent *translated = new SEvent(); - memset(translated, 0, sizeof(SEvent)); - translated->EventType = irr::EET_KEY_INPUT_EVENT; - translated->KeyInput.Key = iter->second; - translated->KeyInput.PressedDown = false; - translated->KeyInput.Control = false; - translated->KeyInput.Shift = false; - m_receiver->OnEvent(*translated); - m_hud_ids.erase(iter); - delete translated; - return true; - } - return false; -} - void TouchScreenGUI::handleButtonEvent(touch_gui_button_id button, - int eventID, bool action) + size_t eventID, bool action) { button_info *btn = &m_buttons[button]; - SEvent *translated = new SEvent(); + auto *translated = new SEvent(); memset(translated, 0, sizeof(SEvent)); translated->EventType = irr::EET_KEY_INPUT_EVENT; translated->KeyInput.Key = btn->keycode; @@ -717,16 +644,16 @@ void TouchScreenGUI::handleButtonEvent(touch_gui_button_id button, translated->KeyInput.Key = btn->keycode; m_receiver->OnEvent(*translated); } + // remove event if ((!action) || (btn->immediate_release)) { - - std::vector::iterator pos = - std::find(btn->ids.begin(), btn->ids.end(), eventID); + auto pos = std::find(btn->ids.begin(), btn->ids.end(), eventID); // has to be in touch list assert(pos != btn->ids.end()); btn->ids.erase(pos); - if (btn->ids.size() > 0) { return; } + if (!btn->ids.empty()) + return; translated->KeyInput.PressedDown = false; btn->repeatcounter = -1; @@ -735,30 +662,21 @@ void TouchScreenGUI::handleButtonEvent(touch_gui_button_id button, delete translated; } - -void TouchScreenGUI::handleReleaseEvent(int evt_id) +void TouchScreenGUI::handleReleaseEvent(size_t evt_id) { touch_gui_button_id button = getButtonID(evt_id); - // handle button events + if (button != after_last_element_id) { + // handle button events handleButtonEvent(button, evt_id, false); - } - // handle hud button events - else if (isReleaseHUDButton(evt_id)) { - // nothing to do here - } else if (m_settingsbar.isReleaseButton(evt_id)) { - // nothing to do here - } else if (m_rarecontrolsbar.isReleaseButton(evt_id)) { - // nothing to do here - } - // handle the point used for moving view - else if (evt_id == m_move_id) { + } else if (evt_id == m_move_id) { + // handle the point used for moving view m_move_id = -1; // if this pointer issued a mouse event issue symmetric release here if (m_move_sent_as_mouse_event) { - SEvent *translated = new SEvent; + auto *translated = new SEvent; memset(translated, 0, sizeof(SEvent)); translated->EventType = EET_MOUSE_INPUT_EVENT; translated->MouseInput.X = m_move_downlocation.X; @@ -769,32 +687,31 @@ void TouchScreenGUI::handleReleaseEvent(int evt_id) translated->MouseInput.Event = EMIE_LMOUSE_LEFT_UP; m_receiver->OnEvent(*translated); delete translated; - } - else { + } else { // do double tap detection doubleTapDetection(); } } + // handle joystick else if (evt_id == m_joystick_id) { m_joystick_id = -1; // reset joystick - for (unsigned int i = 0; i < 4; i ++) + for (unsigned int i = 0; i < 4; i++) m_joystick_status[i] = false; applyJoystickStatus(); m_joystick_btn_off->guibutton->setVisible(true); m_joystick_btn_bg->guibutton->setVisible(false); m_joystick_btn_center->guibutton->setVisible(false); - } - else { + } else { infostream << "TouchScreenGUI::translateEvent released unknown button: " << evt_id << std::endl; } - for (std::vector::iterator iter = m_known_ids.begin(); + for (auto iter = m_known_ids.begin(); iter != m_known_ids.end(); ++iter) { if (iter->id == evt_id) { m_known_ids.erase(iter); @@ -806,18 +723,19 @@ void TouchScreenGUI::handleReleaseEvent(int evt_id) void TouchScreenGUI::translateEvent(const SEvent &event) { if (!m_visible) { - infostream << "TouchScreenGUI::translateEvent got event but not visible?!" << std::endl; + infostream + << "TouchScreenGUI::translateEvent got event but not visible!" + << std::endl; return; } - if (event.EventType != EET_TOUCH_INPUT_EVENT) { + if (event.EventType != EET_TOUCH_INPUT_EVENT) return; - } if (event.TouchInput.Event == ETIE_PRESSED_DOWN) { - - /* add to own copy of eventlist ... - * android would provide this information but irrlicht guys don't + /* + * Add to own copy of event list... + * android would provide this information but Irrlicht guys don't * wanna design a efficient interface */ id_status toadd; @@ -826,7 +744,7 @@ void TouchScreenGUI::translateEvent(const SEvent &event) toadd.Y = event.TouchInput.Y; m_known_ids.push_back(toadd); - int eventID = event.TouchInput.ID; + size_t eventID = event.TouchInput.ID; touch_gui_button_id button = getButtonID(event.TouchInput.X, event.TouchInput.Y); @@ -846,21 +764,19 @@ void TouchScreenGUI::translateEvent(const SEvent &event) } else if (m_rarecontrolsbar.isButton(event)) { m_settingsbar.deactivate(); // already handled in isSettingsBarButton() - } - // handle non button events - else { + } else { + // handle non button events m_settingsbar.deactivate(); m_rarecontrolsbar.deactivate(); - u32 button_size = getGuiButtonSize(); - s32 dxj = event.TouchInput.X - button_size * 5 / 2; - s32 dyj = event.TouchInput.Y - m_screensize.Y + button_size * 5 / 2; + s32 dxj = event.TouchInput.X - button_size * 5.0f / 2.0f; + s32 dyj = event.TouchInput.Y - m_screensize.Y + button_size * 5.0f / 2.0f; /* Select joystick when left 1/3 of screen dragged or * when joystick tapped (fixed joystick position) */ if ((m_fixed_joystick && dxj * dxj + dyj * dyj <= button_size * button_size * 1.5 * 1.5) || - (!m_fixed_joystick && event.TouchInput.X < m_screensize.X / 3)) { + (!m_fixed_joystick && event.TouchInput.X < m_screensize.X / 3.0f)) { // If we don't already have a starting point for joystick make this the one. if (m_joystick_id == -1) { m_joystick_id = event.TouchInput.ID; @@ -871,14 +787,14 @@ void TouchScreenGUI::translateEvent(const SEvent &event) m_joystick_btn_center->guibutton->setVisible(true); // If it's a fixed joystick, don't move the joystick "button". - if (!m_fixed_joystick) { + if (!m_fixed_joystick) m_joystick_btn_bg->guibutton->setRelativePosition(v2s32( - event.TouchInput.X - button_size * 3 / 2, - event.TouchInput.Y - button_size * 3 / 2)); - } + event.TouchInput.X - button_size * 3.0f / 2.0f, + event.TouchInput.Y - button_size * 3.0f / 2.0f)); + m_joystick_btn_center->guibutton->setRelativePosition(v2s32( - event.TouchInput.X - button_size / 2, - event.TouchInput.Y - button_size / 2)); + event.TouchInput.X - button_size / 2.0f, + event.TouchInput.Y - button_size / 2.0f)); } } else { // If we don't already have a moving point make this the moving one. @@ -895,17 +811,15 @@ void TouchScreenGUI::translateEvent(const SEvent &event) m_pointerpos[event.TouchInput.ID] = v2s32(event.TouchInput.X, event.TouchInput.Y); } else if (event.TouchInput.Event == ETIE_LEFT_UP) { - verbosestream << "Up event for pointerid: " << event.TouchInput.ID << std::endl; + verbosestream + << "Up event for pointerid: " << event.TouchInput.ID << std::endl; handleReleaseEvent(event.TouchInput.ID); - } - else { + } else { assert(event.TouchInput.Event == ETIE_MOVED); - int move_idx = event.TouchInput.ID; if (m_pointerpos[event.TouchInput.ID] == - v2s32(event.TouchInput.X, event.TouchInput.Y)) { + v2s32(event.TouchInput.X, event.TouchInput.Y)) return; - } if (m_move_id != -1) { if ((event.TouchInput.ID == m_move_id) && @@ -928,9 +842,7 @@ void TouchScreenGUI::translateEvent(const SEvent &event) s32 dy = Y - m_pointerpos[event.TouchInput.ID].Y; // adapt to similar behaviour as pc screen - double d = g_settings->getFloat("mouse_sensitivity") * 4; - double old_yaw = m_camera_yaw_change; - double old_pitch = m_camera_pitch; + double d = g_settings->getFloat("mouse_sensitivity") * 3.0f; m_camera_yaw_change -= dx * d; m_camera_pitch = MYMIN(MYMAX(m_camera_pitch + (dy * d), -180), 180); @@ -942,8 +854,7 @@ void TouchScreenGUI::translateEvent(const SEvent &event) ->getRayFromScreenCoordinates(v2s32(X, Y)); m_pointerpos[event.TouchInput.ID] = v2s32(X, Y); } - } - else if ((event.TouchInput.ID == m_move_id) && + } else if ((event.TouchInput.ID == m_move_id) && (m_move_sent_as_mouse_event)) { m_shootline = m_device ->getSceneManager() @@ -954,7 +865,6 @@ void TouchScreenGUI::translateEvent(const SEvent &event) } if (m_joystick_id != -1 && event.TouchInput.ID == m_joystick_id) { - u32 button_size = getGuiButtonSize(); s32 X = event.TouchInput.X; s32 Y = event.TouchInput.Y; @@ -967,8 +877,8 @@ void TouchScreenGUI::translateEvent(const SEvent &event) double distance_sq = dx * dx + dy * dy; - s32 dxj = event.TouchInput.X - button_size * 5 / 2; - s32 dyj = event.TouchInput.Y - m_screensize.Y + button_size * 5 / 2; + s32 dxj = event.TouchInput.X - button_size * 5.0f / 2.0f; + s32 dyj = event.TouchInput.Y - m_screensize.Y + button_size * 5.0f / 2.0f; bool inside_joystick = (dxj * dxj + dyj * dyj <= button_size * button_size * 1.5 * 1.5); if (m_joystick_has_really_moved || @@ -986,8 +896,8 @@ void TouchScreenGUI::translateEvent(const SEvent &event) angle = fmod(angle + 180 + 22.5, 360); // reset state before applying - for (unsigned int i = 0; i < 5; i ++) - m_joystick_status[i] = false; + for (bool & joystick_status : m_joystick_status) + joystick_status = false; if (distance <= m_touchscreen_threshold) { // do nothing @@ -1016,8 +926,8 @@ void TouchScreenGUI::translateEvent(const SEvent &event) if (distance > button_size) { m_joystick_status[j_special1] = true; // move joystick "button" - s32 ndx = (s32) button_size * dx / distance - (s32) button_size / 2; - s32 ndy = (s32) button_size * dy / distance - (s32) button_size / 2; + s32 ndx = button_size * dx / distance - button_size / 2.0f; + s32 ndy = button_size * dy / distance - button_size / 2.0f; if (m_fixed_joystick) { m_joystick_btn_center->guibutton->setRelativePosition(v2s32( button_size * 5 / 2 + ndx, @@ -1028,64 +938,54 @@ void TouchScreenGUI::translateEvent(const SEvent &event) m_pointerpos[event.TouchInput.ID].Y + ndy)); } } else { - m_joystick_btn_center->guibutton->setRelativePosition(v2s32( - X - button_size / 2, Y - button_size / 2)); + m_joystick_btn_center->guibutton->setRelativePosition( + v2s32(X - button_size / 2, Y - button_size / 2)); } } } - if (m_move_id == -1 && m_joystick_id == -1) { + if (m_move_id == -1 && m_joystick_id == -1) handleChangedButton(event); - } } } void TouchScreenGUI::handleChangedButton(const SEvent &event) { for (unsigned int i = 0; i < after_last_element_id; i++) { - - if (m_buttons[i].ids.empty()) { + if (m_buttons[i].ids.empty()) continue; - } - for (std::vector::iterator iter = m_buttons[i].ids.begin(); + + for (auto iter = m_buttons[i].ids.begin(); iter != m_buttons[i].ids.end(); ++iter) { - if (event.TouchInput.ID == *iter) { - int current_button_id = getButtonID(event.TouchInput.X, event.TouchInput.Y); - if (current_button_id == i) { + if (current_button_id == i) continue; - } // remove old button handleButtonEvent((touch_gui_button_id) i, *iter, false); - if (current_button_id == after_last_element_id) { + if (current_button_id == after_last_element_id) return; - } + handleButtonEvent((touch_gui_button_id) current_button_id, *iter, true); return; - } } } int current_button_id = getButtonID(event.TouchInput.X, event.TouchInput.Y); - if (current_button_id == after_last_element_id) { + if (current_button_id == after_last_element_id) return; - } button_info *btn = &m_buttons[current_button_id]; if (std::find(btn->ids.begin(), btn->ids.end(), event.TouchInput.ID) == btn->ids.end()) - { handleButtonEvent((touch_gui_button_id) current_button_id, event.TouchInput.ID, true); - } - } bool TouchScreenGUI::doubleTapDetection() @@ -1102,14 +1002,15 @@ bool TouchScreenGUI::doubleTapDetection() return false; double distance = sqrt( - (m_key_events[0].x - m_key_events[1].x) * (m_key_events[0].x - m_key_events[1].x) + - (m_key_events[0].y - m_key_events[1].y) * (m_key_events[0].y - m_key_events[1].y)); - + (m_key_events[0].x - m_key_events[1].x) * + (m_key_events[0].x - m_key_events[1].x) + + (m_key_events[0].y - m_key_events[1].y) * + (m_key_events[0].y - m_key_events[1].y)); if (distance > (20 + m_touchscreen_threshold)) return false; - SEvent *translated = new SEvent(); + auto *translated = new SEvent(); memset(translated, 0, sizeof(SEvent)); translated->EventType = EET_MOUSE_INPUT_EVENT; translated->MouseInput.X = m_key_events[0].x; @@ -1129,21 +1030,20 @@ bool TouchScreenGUI::doubleTapDetection() m_receiver->OnEvent(*translated); translated->MouseInput.ButtonStates = 0; - translated->MouseInput.Event = EMIE_RMOUSE_LEFT_UP; + translated->MouseInput.Event = EMIE_RMOUSE_LEFT_UP; verbosestream << "TouchScreenGUI::translateEvent right click release" << std::endl; m_receiver->OnEvent(*translated); delete translated; return true; - } void TouchScreenGUI::applyJoystickStatus() { - for (unsigned int i = 0; i < 5; i ++) { + for (unsigned int i = 0; i < 5; i++) { if (i == 4 && !m_joystick_triggers_special1) continue; - SEvent translated{}; + SEvent translated; translated.EventType = irr::EET_KEY_INPUT_EVENT; translated.KeyInput.Key = id2keycode(m_joystick_names[i]); translated.KeyInput.PressedDown = false; @@ -1158,50 +1058,48 @@ void TouchScreenGUI::applyJoystickStatus() TouchScreenGUI::~TouchScreenGUI() { - for (unsigned int i = 0; i < after_last_element_id; i++) { - button_info *btn = &m_buttons[i]; - if (btn->guibutton) { - btn->guibutton->drop(); - btn->guibutton = NULL; + for (auto &button : m_buttons) { + if (button.guibutton) { + button.guibutton->drop(); + button.guibutton = nullptr; } } if (m_joystick_btn_off->guibutton) { m_joystick_btn_off->guibutton->drop(); - m_joystick_btn_off->guibutton = NULL; + m_joystick_btn_off->guibutton = nullptr; } if (m_joystick_btn_bg->guibutton) { m_joystick_btn_bg->guibutton->drop(); - m_joystick_btn_bg->guibutton = NULL; + m_joystick_btn_bg->guibutton = nullptr; } if (m_joystick_btn_center->guibutton) { m_joystick_btn_center->guibutton->drop(); - m_joystick_btn_center->guibutton = NULL; + m_joystick_btn_center->guibutton = nullptr; } } void TouchScreenGUI::step(float dtime) { // simulate keyboard repeats - for (unsigned int i = 0; i < after_last_element_id; i++) { - button_info *btn = &m_buttons[i]; - - if (btn->ids.size() > 0) { - btn->repeatcounter += dtime; + for (auto &button : m_buttons) { + if (!button.ids.empty()) { + button.repeatcounter += dtime; // in case we're moving around digging does not happen if (m_move_id != -1) m_move_has_really_moved = true; - if (btn->repeatcounter < btn->repeatdelay) continue; + if (button.repeatcounter < button.repeatdelay) + continue; - btn->repeatcounter = 0; + button.repeatcounter = 0; SEvent translated; memset(&translated, 0, sizeof(SEvent)); translated.EventType = irr::EET_KEY_INPUT_EVENT; - translated.KeyInput.Key = btn->keycode; + translated.KeyInput.Key = button.keycode; translated.KeyInput.PressedDown = false; m_receiver->OnEvent(translated); @@ -1264,22 +1162,18 @@ void TouchScreenGUI::registerHudItem(int index, const rect &rect) void TouchScreenGUI::Toggle(bool visible) { m_visible = visible; - for (unsigned int i = 0; i < after_last_element_id; i++) { - button_info *btn = &m_buttons[i]; - if (btn->guibutton) { - btn->guibutton->setVisible(visible); - } + for (auto &button : m_buttons) { + if (button.guibutton) + button.guibutton->setVisible(visible); } - if (m_joystick_btn_off->guibutton) { + if (m_joystick_btn_off->guibutton) m_joystick_btn_off->guibutton->setVisible(visible); - } // clear all active buttons if (!visible) { - while (m_known_ids.size() > 0) { + while (!m_known_ids.empty()) handleReleaseEvent(m_known_ids.begin()->id); - } m_settingsbar.hide(); m_rarecontrolsbar.hide(); diff --git a/src/gui/touchscreengui.h b/src/gui/touchscreengui.h index 2a3f24a3f..761d33207 100644 --- a/src/gui/touchscreengui.h +++ b/src/gui/touchscreengui.h @@ -80,21 +80,22 @@ typedef enum } autohide_button_bar_dir; #define MIN_DIG_TIME_MS 500 -#define MAX_TOUCH_COUNT 64 #define BUTTON_REPEAT_DELAY 0.2f - #define SETTINGS_BAR_Y_OFFSET 5 #define RARE_CONTROLS_BAR_Y_OFFSET 5 -extern const char **touchgui_button_imagenames; -extern const char **touchgui_joystick_imagenames; +// Very slow button repeat frequency +#define SLOW_BUTTON_REPEAT 1.0f + +extern const char **button_imagenames; +extern const char **joystick_imagenames; struct button_info { float repeatcounter; float repeatdelay; irr::EKEY_CODE keycode; - std::vector ids; + std::vector ids; IGUIButton *guibutton = nullptr; bool immediate_release; @@ -109,8 +110,8 @@ public: AutoHideButtonBar(IrrlichtDevice *device, IEventReceiver *receiver); void init(ISimpleTextureSource *tsrc, const char *starter_img, int button_id, - v2s32 UpperLeft, v2s32 LowerRight, autohide_button_bar_dir dir, - float timeout); + const v2s32 &UpperLeft, const v2s32 &LowerRight, + autohide_button_bar_dir dir, float timeout); ~AutoHideButtonBar(); @@ -125,9 +126,6 @@ public: // detect settings bar button events bool isButton(const SEvent &event); - // handle released hud buttons - bool isReleaseButton(int eventID); - // step handler void step(float dtime); @@ -182,7 +180,7 @@ public: double getPitch() { return m_camera_pitch; } - /*! + /* * Returns a line which describes what the player is pointing at. * The starting point and looking direction are significant, * the line should be scaled to match its length to the actual distance @@ -206,9 +204,10 @@ private: IEventReceiver *m_receiver; ISimpleTextureSource *m_texturesource; v2u32 m_screensize; + s32 button_size; double m_touchscreen_threshold; std::map> m_hud_rects; - std::map m_hud_ids; + std::map m_hud_ids; bool m_visible; // is the gui visible // value in degree @@ -220,7 +219,7 @@ private: forward_id, backward_id, left_id, right_id, special1_id}; bool m_joystick_status[5] = {false, false, false, false, false}; - /*! + /* * A line starting at the camera and pointing towards the * selected object. * The line ends on the camera's far plane. @@ -248,23 +247,24 @@ private: touch_gui_button_id getButtonID(s32 x, s32 y); // gui button by eventID - touch_gui_button_id getButtonID(int eventID); + touch_gui_button_id getButtonID(size_t eventID); // check if a button has changed void handleChangedButton(const SEvent &event); // initialize a button - void initButton(touch_gui_button_id id, rect button_rect, - std::wstring caption, bool immediate_release, + void initButton(touch_gui_button_id id, const rect &button_rect, + const std::wstring &caption, bool immediate_release, float repeat_delay = BUTTON_REPEAT_DELAY); // initialize a joystick button - button_info *initJoystickButton(touch_gui_button_id id, rect button_rect, - int texture_id, bool visible = true); + button_info *initJoystickButton(touch_gui_button_id id, + const rect &button_rect, int texture_id, + bool visible = true); struct id_status { - int id; + size_t id; int X; int Y; }; @@ -273,27 +273,21 @@ private: std::vector m_known_ids; // handle a button event - void handleButtonEvent(touch_gui_button_id bID, int eventID, bool action); + void handleButtonEvent(touch_gui_button_id bID, size_t eventID, bool action); // handle pressed hud buttons bool isHUDButton(const SEvent &event); - // handle released hud buttons - bool isReleaseHUDButton(int eventID); - // handle double taps bool doubleTapDetection(); // handle release event - void handleReleaseEvent(int evt_id); + void handleReleaseEvent(size_t evt_id); // apply joystick status void applyJoystickStatus(); - // get size of regular gui control button - int getGuiButtonSize(); - - // doubleclick detection variables + // double-click detection variables struct key_event { u64 down_time; @@ -302,9 +296,9 @@ private: }; // array for saving last known position of a pointer - v2s32 m_pointerpos[MAX_TOUCH_COUNT]; + std::map m_pointerpos; - // array for doubletap detection + // array for double tap detection key_event m_key_events[2]; // settings bar @@ -313,4 +307,5 @@ private: // rare controls bar AutoHideButtonBar m_rarecontrolsbar; }; + extern TouchScreenGUI *g_touchscreengui; From 09e285f38cd96b4278b921ab82c5266082bb1a0d Mon Sep 17 00:00:00 2001 From: hecktest <42101236+hecktest@users.noreply.github.com> Date: Tue, 9 Jun 2020 19:36:47 +0200 Subject: [PATCH 270/424] Fix player-to-object attachment teleport bug (#10008) Fixes two bugs: * The camera offset was not applied to an object while detaching, briefly placing the irrlicht matrixnode in world space. * When attaching, the matrixnode's absolute position was evaluated without evaluating the parent first, resulting in zeroed positions. --- src/client/content_cao.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index a6ce06d20..79ecccb6f 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -921,7 +921,7 @@ void GenericCAO::step(float dtime, ClientEnvironment *env) m_animated_meshnode->animateJoints(); updateBonePosition(); } - + // Handle model animations and update positions instantly to prevent lags if (m_is_local_player) { LocalPlayer *player = m_env->getLocalPlayer(); @@ -1403,7 +1403,7 @@ void GenericCAO::updateBonePosition() bone->setRotation(it.second.Y); } } - + // search through bones to find mistakenly rotated bones due to bug in Irrlicht for (u32 i = 0; i < m_animated_meshnode->getJointCount(); ++i) { irr::scene::IBoneSceneNode *bone = m_animated_meshnode->getJointNode(i); @@ -1427,7 +1427,7 @@ void GenericCAO::updateBonePosition() // and update the bones transformation. v3f bone_rot = bone->getRelativeTransformation().getRotationDegrees(); float offset = fabsf(bone_rot.X - bone->getRotation().X); - if (offset > 179.9f && offset < 180.1f) { + if (offset > 179.9f && offset < 180.1f) { bone->setRotation(bone_rot); bone->updateAbsolutePosition(); } @@ -1454,15 +1454,17 @@ void GenericCAO::updateAttachments() if (!parent) { // Detach or don't attach if (m_matrixnode) { + v3s16 camera_offset = m_env->getCameraOffset(); v3f old_pos = getPosition(); m_matrixnode->setParent(m_smgr->getRootSceneNode()); - getPosRotMatrix().setTranslation(old_pos); + getPosRotMatrix().setTranslation(old_pos - intToFloat(camera_offset, BS)); m_matrixnode->updateAbsolutePosition(); } } else // Attach { + parent->updateAttachments(); scene::ISceneNode *parent_node = parent->getSceneNode(); scene::IAnimatedMeshSceneNode *parent_animated_mesh_node = parent->getAnimatedMeshSceneNode(); @@ -1472,6 +1474,7 @@ void GenericCAO::updateAttachments() if (m_matrixnode && parent_node) { m_matrixnode->setParent(parent_node); + parent_node->updateAbsolutePosition(); getPosRotMatrix().setTranslation(m_attachment_position); //setPitchYawRoll(getPosRotMatrix(), m_attachment_rotation); // use Irrlicht eulers instead From b16f841756ef86e83710ad2fddf2cd5bafdf4bcc Mon Sep 17 00:00:00 2001 From: Paul Ouellette Date: Tue, 9 Jun 2020 13:37:25 -0400 Subject: [PATCH 271/424] LuaItemStack: Add __tostring metamethod (#8785) * LuaItemStack: Add __tostring metamethod * Clean up LuaItemStack::checkobject --- builtin/common/misc_helpers.lua | 2 ++ src/inventory.cpp | 29 ++++++++++++++++------------- src/inventory.h | 4 ++-- src/script/lua_api/l_item.cpp | 25 ++++++++++++++++++------- src/script/lua_api/l_item.h | 3 +++ 5 files changed, 41 insertions(+), 22 deletions(-) diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua index a88adf96d..e29a9f422 100644 --- a/builtin/common/misc_helpers.lua +++ b/builtin/common/misc_helpers.lua @@ -20,6 +20,8 @@ local function basic_dump(o) -- dump's output is intended for humans. --elseif tp == "function" then -- return string.format("loadstring(%q)", string.dump(o)) + elseif tp == "userdata" then + return tostring(o) else return string.format("<%s>", tp) end diff --git a/src/inventory.cpp b/src/inventory.cpp index 77ecf5876..349ee503d 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -56,28 +56,31 @@ ItemStack::ItemStack(const std::string &name_, u16 count_, count = 1; } -void ItemStack::serialize(std::ostream &os) const +void ItemStack::serialize(std::ostream &os, bool serialize_meta) const { if (empty()) return; // Check how many parts of the itemstring are needed int parts = 1; - if(count != 1) - parts = 2; - if(wear != 0) - parts = 3; if (!metadata.empty()) parts = 4; + else if (wear != 0) + parts = 3; + else if (count != 1) + parts = 2; - os<= 2) - os<<" "<= 3) - os<<" "<= 2) + os << " " << count; + if (parts >= 3) + os << " " << wear; if (parts >= 4) { os << " "; - metadata.serialize(os); + if (serialize_meta) + metadata.serialize(os); + else + os << ""; } } @@ -240,10 +243,10 @@ void ItemStack::deSerialize(const std::string &str, IItemDefManager *itemdef) deSerialize(is, itemdef); } -std::string ItemStack::getItemString() const +std::string ItemStack::getItemString(bool include_meta) const { std::ostringstream os(std::ios::binary); - serialize(os); + serialize(os, include_meta); return os.str(); } diff --git a/src/inventory.h b/src/inventory.h index 2828d3e5a..67a7859ed 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -40,13 +40,13 @@ struct ItemStack ~ItemStack() = default; // Serialization - void serialize(std::ostream &os) const; + void serialize(std::ostream &os, bool serialize_meta = true) const; // Deserialization. Pass itemdef unless you don't want aliases resolved. void deSerialize(std::istream &is, IItemDefManager *itemdef = NULL); void deSerialize(const std::string &s, IItemDefManager *itemdef = NULL); // Returns the string used for inventory - std::string getItemString() const; + std::string getItemString(bool include_meta = true) const; // Returns the tooltip std::string getDescription(IItemDefManager *itemdef) const; diff --git a/src/script/lua_api/l_item.cpp b/src/script/lua_api/l_item.cpp index 0a403acbd..d67cab76f 100644 --- a/src/script/lua_api/l_item.cpp +++ b/src/script/lua_api/l_item.cpp @@ -37,6 +37,15 @@ int LuaItemStack::gc_object(lua_State *L) return 0; } +// __tostring metamethod +int LuaItemStack::mt_tostring(lua_State *L) +{ + LuaItemStack *o = checkobject(L, 1); + std::string itemstring = o->m_stack.getItemString(false); + lua_pushfstring(L, "ItemStack(\"%s\")", itemstring.c_str()); + return 1; +} + // is_empty(self) -> true/false int LuaItemStack::l_is_empty(lua_State *L) { @@ -433,12 +442,9 @@ int LuaItemStack::create(lua_State *L, const ItemStack &item) return 1; } -LuaItemStack* LuaItemStack::checkobject(lua_State *L, int narg) +LuaItemStack *LuaItemStack::checkobject(lua_State *L, int narg) { - luaL_checktype(L, narg, LUA_TUSERDATA); - void *ud = luaL_checkudata(L, narg, className); - if(!ud) luaL_typerror(L, narg, className); - return *(LuaItemStack**)ud; // unbox pointer + return *(LuaItemStack **)luaL_checkudata(L, narg, className); } void LuaItemStack::Register(lua_State *L) @@ -448,9 +454,10 @@ void LuaItemStack::Register(lua_State *L) luaL_newmetatable(L, className); int metatable = lua_gettop(L); + // hide metatable from Lua getmetatable() lua_pushliteral(L, "__metatable"); lua_pushvalue(L, methodtable); - lua_settable(L, metatable); // hide metatable from Lua getmetatable() + lua_settable(L, metatable); lua_pushliteral(L, "__index"); lua_pushvalue(L, methodtable); @@ -460,12 +467,16 @@ void LuaItemStack::Register(lua_State *L) lua_pushcfunction(L, gc_object); lua_settable(L, metatable); + lua_pushliteral(L, "__tostring"); + lua_pushcfunction(L, mt_tostring); + lua_settable(L, metatable); + lua_pop(L, 1); // drop metatable luaL_openlib(L, 0, methods, 0); // fill methodtable lua_pop(L, 1); // drop methodtable - // Can be created from Lua (LuaItemStack(itemstack or itemstring or table or nil)) + // Can be created from Lua (ItemStack(itemstack or itemstring or table or nil)) lua_register(L, className, create_object); } diff --git a/src/script/lua_api/l_item.h b/src/script/lua_api/l_item.h index 6fab58045..98744c071 100644 --- a/src/script/lua_api/l_item.h +++ b/src/script/lua_api/l_item.h @@ -34,6 +34,9 @@ private: // garbage collector static int gc_object(lua_State *L); + // __tostring metamethod + static int mt_tostring(lua_State *L); + // is_empty(self) -> true/false static int l_is_empty(lua_State *L); From 7148834440d10bc211628aa2652e31166bdd58a0 Mon Sep 17 00:00:00 2001 From: NetherEran <55532075+NetherEran@users.noreply.github.com> Date: Tue, 9 Jun 2020 17:38:39 +0000 Subject: [PATCH 272/424] Some vector functions useful for working with rotations (#9572) * added vector.rotate * added vector.forward_from_rotation and vector.up_from_rotation * added vector.forward_up_to_rotatiton * fixed some bugs and formatting with vector functions * shortened name of some new vector functions and added documentation * made vector.rotate not require a unit vector as axis * fixed crash with vector.forward_up_to_rot * renamed new vector functions, made vector.rotate apply a rotation matrix, old vector.rotate is now called vector.rotate_around_axis * documented vector function changes * removed some whitespace to appease luacheck * implemented and fixed optimization of vector.rotate_around_axis by SmallJoker * added some unit tests for rotation vector functions * clarified that rotation vectors are in radians and according to the left hand rule * hopefully appeased luacheck * renamed rotation_to_horizontal to forward_at_rotation, rotation_to_vertical to up_at_rotation * handled cases where sin or cos are 0 in rotation vector functions * added more comments * clarified documentation of rotation vector functions * added more unit tests * changed way in which vector.rotate_around_axis is adjusted for left handed coordinate systems * made vector.rotate_around_axis actually left handed * unrolled matrix multiplication * removed vector.forward_at_rotation and vector.up_at_rotation * prettified vector.rotate_around_axis, made previous commits not break anything * removed references to removed vector.forward_at_rotation and vector.up_at_rotation * removed documentation of removed vector functions * clarified documentation and fixed styling of rotation vector functions * restyled comments minorly * spelling fixes and some hopefully better comments * allowed 'up' to be missing from vector.directions_to_rotation and removed requirement for unit vectors as arguments * made vector.rotate_around_axis() right handed again for consistency * documented previous changes * made matrix multiplication actually multiply * renamed vector.directions_to_rotation() to vector.dir_to_rotation() * optimized a distance comparison * Fixed potential false positive in unit tests. Co-authored-by: NetherEran --- builtin/common/tests/vector_spec.lua | 142 +++++++++++++++++++++++++++ builtin/common/vector.lua | 93 ++++++++++++++++++ doc/lua_api.txt | 18 ++++ 3 files changed, 253 insertions(+) diff --git a/builtin/common/tests/vector_spec.lua b/builtin/common/tests/vector_spec.lua index 79f032f28..6f308a4a8 100644 --- a/builtin/common/tests/vector_spec.lua +++ b/builtin/common/tests/vector_spec.lua @@ -43,4 +43,146 @@ describe("vector", function() it("add()", function() assert.same({ x = 2, y = 4, z = 6 }, vector.add(vector.new(1, 2, 3), { x = 1, y = 2, z = 3 })) end) + + -- This function is needed because of floating point imprecision. + local function almost_equal(a, b) + if type(a) == "number" then + return math.abs(a - b) < 0.00000000001 + end + return vector.distance(a, b) < 0.000000000001 + end + + describe("rotate_around_axis()", function() + it("rotates", function() + assert.True(almost_equal({x = -1, y = 0, z = 0}, + vector.rotate_around_axis({x = 1, y = 0, z = 0}, {x = 0, y = 1, z = 0}, math.pi))) + assert.True(almost_equal({x = 0, y = 1, z = 0}, + vector.rotate_around_axis({x = 0, y = 0, z = 1}, {x = 1, y = 0, z = 0}, math.pi / 2))) + assert.True(almost_equal({x = 4, y = 1, z = 1}, + vector.rotate_around_axis({x = 4, y = 1, z = 1}, {x = 4, y = 1, z = 1}, math.pi / 6))) + end) + it("keeps distance to axis", function() + local rotate1 = {x = 1, y = 3, z = 1} + local axis1 = {x = 1, y = 3, z = 2} + local rotated1 = vector.rotate_around_axis(rotate1, axis1, math.pi / 13) + assert.True(almost_equal(vector.distance(axis1, rotate1), vector.distance(axis1, rotated1))) + local rotate2 = {x = 1, y = 1, z = 3} + local axis2 = {x = 2, y = 6, z = 100} + local rotated2 = vector.rotate_around_axis(rotate2, axis2, math.pi / 23) + assert.True(almost_equal(vector.distance(axis2, rotate2), vector.distance(axis2, rotated2))) + local rotate3 = {x = 1, y = -1, z = 3} + local axis3 = {x = 2, y = 6, z = 100} + local rotated3 = vector.rotate_around_axis(rotate3, axis3, math.pi / 2) + assert.True(almost_equal(vector.distance(axis3, rotate3), vector.distance(axis3, rotated3))) + end) + it("rotates back", function() + local rotate1 = {x = 1, y = 3, z = 1} + local axis1 = {x = 1, y = 3, z = 2} + local rotated1 = vector.rotate_around_axis(rotate1, axis1, math.pi / 13) + rotated1 = vector.rotate_around_axis(rotated1, axis1, -math.pi / 13) + assert.True(almost_equal(rotate1, rotated1)) + local rotate2 = {x = 1, y = 1, z = 3} + local axis2 = {x = 2, y = 6, z = 100} + local rotated2 = vector.rotate_around_axis(rotate2, axis2, math.pi / 23) + rotated2 = vector.rotate_around_axis(rotated2, axis2, -math.pi / 23) + assert.True(almost_equal(rotate2, rotated2)) + local rotate3 = {x = 1, y = -1, z = 3} + local axis3 = {x = 2, y = 6, z = 100} + local rotated3 = vector.rotate_around_axis(rotate3, axis3, math.pi / 2) + rotated3 = vector.rotate_around_axis(rotated3, axis3, -math.pi / 2) + assert.True(almost_equal(rotate3, rotated3)) + end) + it("is right handed", function() + local v_before1 = {x = 0, y = 1, z = -1} + local v_after1 = vector.rotate_around_axis(v_before1, {x = 1, y = 0, z = 0}, math.pi / 4) + assert.True(almost_equal(vector.normalize(vector.cross(v_after1, v_before1)), {x = 1, y = 0, z = 0})) + + local v_before2 = {x = 0, y = 3, z = 4} + local v_after2 = vector.rotate_around_axis(v_before2, {x = 1, y = 0, z = 0}, 2 * math.pi / 5) + assert.True(almost_equal(vector.normalize(vector.cross(v_after2, v_before2)), {x = 1, y = 0, z = 0})) + + local v_before3 = {x = 1, y = 0, z = -1} + local v_after3 = vector.rotate_around_axis(v_before3, {x = 0, y = 1, z = 0}, math.pi / 4) + assert.True(almost_equal(vector.normalize(vector.cross(v_after3, v_before3)), {x = 0, y = 1, z = 0})) + + local v_before4 = {x = 3, y = 0, z = 4} + local v_after4 = vector.rotate_around_axis(v_before4, {x = 0, y = 1, z = 0}, 2 * math.pi / 5) + assert.True(almost_equal(vector.normalize(vector.cross(v_after4, v_before4)), {x = 0, y = 1, z = 0})) + + local v_before5 = {x = 1, y = -1, z = 0} + local v_after5 = vector.rotate_around_axis(v_before5, {x = 0, y = 0, z = 1}, math.pi / 4) + assert.True(almost_equal(vector.normalize(vector.cross(v_after5, v_before5)), {x = 0, y = 0, z = 1})) + + local v_before6 = {x = 3, y = 4, z = 0} + local v_after6 = vector.rotate_around_axis(v_before6, {x = 0, y = 0, z = 1}, 2 * math.pi / 5) + assert.True(almost_equal(vector.normalize(vector.cross(v_after6, v_before6)), {x = 0, y = 0, z = 1})) + end) + end) + + describe("rotate()", function() + it("rotates", function() + assert.True(almost_equal({x = -1, y = 0, z = 0}, + vector.rotate({x = 1, y = 0, z = 0}, {x = 0, y = math.pi, z = 0}))) + assert.True(almost_equal({x = 0, y = -1, z = 0}, + vector.rotate({x = 1, y = 0, z = 0}, {x = 0, y = 0, z = math.pi / 2}))) + assert.True(almost_equal({x = 1, y = 0, z = 0}, + vector.rotate({x = 1, y = 0, z = 0}, {x = math.pi / 123, y = 0, z = 0}))) + end) + it("is counterclockwise", function() + local v_before1 = {x = 0, y = 1, z = -1} + local v_after1 = vector.rotate(v_before1, {x = math.pi / 4, y = 0, z = 0}) + assert.True(almost_equal(vector.normalize(vector.cross(v_after1, v_before1)), {x = 1, y = 0, z = 0})) + + local v_before2 = {x = 0, y = 3, z = 4} + local v_after2 = vector.rotate(v_before2, {x = 2 * math.pi / 5, y = 0, z = 0}) + assert.True(almost_equal(vector.normalize(vector.cross(v_after2, v_before2)), {x = 1, y = 0, z = 0})) + + local v_before3 = {x = 1, y = 0, z = -1} + local v_after3 = vector.rotate(v_before3, {x = 0, y = math.pi / 4, z = 0}) + assert.True(almost_equal(vector.normalize(vector.cross(v_after3, v_before3)), {x = 0, y = 1, z = 0})) + + local v_before4 = {x = 3, y = 0, z = 4} + local v_after4 = vector.rotate(v_before4, {x = 0, y = 2 * math.pi / 5, z = 0}) + assert.True(almost_equal(vector.normalize(vector.cross(v_after4, v_before4)), {x = 0, y = 1, z = 0})) + + local v_before5 = {x = 1, y = -1, z = 0} + local v_after5 = vector.rotate(v_before5, {x = 0, y = 0, z = math.pi / 4}) + assert.True(almost_equal(vector.normalize(vector.cross(v_after5, v_before5)), {x = 0, y = 0, z = 1})) + + local v_before6 = {x = 3, y = 4, z = 0} + local v_after6 = vector.rotate(v_before6, {x = 0, y = 0, z = 2 * math.pi / 5}) + assert.True(almost_equal(vector.normalize(vector.cross(v_after6, v_before6)), {x = 0, y = 0, z = 1})) + end) + end) + + it("dir_to_rotation()", function() + -- Comparing rotations (pitch, yaw, roll) is hard because of certain ambiguities, + -- e.g. (pi, 0, pi) looks exactly the same as (0, pi, 0) + -- So instead we convert the rotation back to vectors and compare these. + local function forward_at_rot(rot) + return vector.rotate(vector.new(0, 0, 1), rot) + end + local function up_at_rot(rot) + return vector.rotate(vector.new(0, 1, 0), rot) + end + local rot1 = vector.dir_to_rotation({x = 1, y = 0, z = 0}, {x = 0, y = 1, z = 0}) + assert.True(almost_equal({x = 1, y = 0, z = 0}, forward_at_rot(rot1))) + assert.True(almost_equal({x = 0, y = 1, z = 0}, up_at_rot(rot1))) + local rot2 = vector.dir_to_rotation({x = 1, y = 1, z = 0}, {x = 0, y = 0, z = 1}) + assert.True(almost_equal({x = 1/math.sqrt(2), y = 1/math.sqrt(2), z = 0}, forward_at_rot(rot2))) + assert.True(almost_equal({x = 0, y = 0, z = 1}, up_at_rot(rot2))) + for i = 1, 1000 do + local rand_vec = vector.new(math.random(), math.random(), math.random()) + if vector.length(rand_vec) ~= 0 then + local rot_1 = vector.dir_to_rotation(rand_vec) + local rot_2 = { + x = math.atan2(rand_vec.y, math.sqrt(rand_vec.z * rand_vec.z + rand_vec.x * rand_vec.x)), + y = -math.atan2(rand_vec.x, rand_vec.z), + z = 0 + } + assert.True(almost_equal(rot_1, rot_2)) + end + end + + end) end) diff --git a/builtin/common/vector.lua b/builtin/common/vector.lua index ca6541eb4..1fd784ce2 100644 --- a/builtin/common/vector.lua +++ b/builtin/common/vector.lua @@ -141,3 +141,96 @@ function vector.sort(a, b) return {x = math.min(a.x, b.x), y = math.min(a.y, b.y), z = math.min(a.z, b.z)}, {x = math.max(a.x, b.x), y = math.max(a.y, b.y), z = math.max(a.z, b.z)} end + +local function sin(x) + if x % math.pi == 0 then + return 0 + else + return math.sin(x) + end +end + +local function cos(x) + if x % math.pi == math.pi / 2 then + return 0 + else + return math.cos(x) + end +end + +function vector.rotate_around_axis(v, axis, angle) + local cosangle = cos(angle) + local sinangle = sin(angle) + axis = vector.normalize(axis) + -- https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula + local dot_axis = vector.multiply(axis, vector.dot(axis, v)) + local cross = vector.cross(v, axis) + return vector.new( + cross.x * sinangle + (v.x - dot_axis.x) * cosangle + dot_axis.x, + cross.y * sinangle + (v.y - dot_axis.y) * cosangle + dot_axis.y, + cross.z * sinangle + (v.z - dot_axis.z) * cosangle + dot_axis.z + ) +end + +function vector.rotate(v, rot) + local sinpitch = sin(-rot.x) + local sinyaw = sin(-rot.y) + local sinroll = sin(-rot.z) + local cospitch = cos(rot.x) + local cosyaw = cos(rot.y) + local cosroll = math.cos(rot.z) + -- Rotation matrix that applies yaw, pitch and roll + local matrix = { + { + sinyaw * sinpitch * sinroll + cosyaw * cosroll, + sinyaw * sinpitch * cosroll - cosyaw * sinroll, + sinyaw * cospitch, + }, + { + cospitch * sinroll, + cospitch * cosroll, + -sinpitch, + }, + { + cosyaw * sinpitch * sinroll - sinyaw * cosroll, + cosyaw * sinpitch * cosroll + sinyaw * sinroll, + cosyaw * cospitch, + }, + } + -- Compute matrix multiplication: `matrix` * `v` + return vector.new( + matrix[1][1] * v.x + matrix[1][2] * v.y + matrix[1][3] * v.z, + matrix[2][1] * v.x + matrix[2][2] * v.y + matrix[2][3] * v.z, + matrix[3][1] * v.x + matrix[3][2] * v.y + matrix[3][3] * v.z + ) +end + +function vector.dir_to_rotation(forward, up) + forward = vector.normalize(forward) + local rot = {x = math.asin(forward.y), y = -math.atan2(forward.x, forward.z), z = 0} + if not up then + return rot + end + assert(vector.dot(forward, up) < 0.000001, + "Invalid vectors passed to vector.dir_to_rotation().") + up = vector.normalize(up) + -- Calculate vector pointing up with roll = 0, just based on forward vector. + local forwup = vector.rotate({x = 0, y = 1, z = 0}, rot) + -- 'forwup' and 'up' are now in a plane with 'forward' as normal. + -- The angle between them is the absolute of the roll value we're looking for. + rot.z = vector.angle(forwup, up) + + -- Since vector.angle never returns a negative value or a value greater + -- than math.pi, rot.z has to be inverted sometimes. + -- To determine wether this is the case, we rotate the up vector back around + -- the forward vector and check if it worked out. + local back = vector.rotate_around_axis(up, forward, -rot.z) + + -- We don't use vector.equals for this because of floating point imprecision. + if (back.x - forwup.x) * (back.x - forwup.x) + + (back.y - forwup.y) * (back.y - forwup.y) + + (back.z - forwup.z) * (back.z - forwup.z) > 0.0000001 then + rot.z = -rot.z + end + return rot +end diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 898531880..ed060c4ad 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -3007,6 +3007,24 @@ For the following functions `x` can be either a vector or a number: * `vector.divide(v, x)`: * Returns a scaled vector or Schur quotient. +For the following functions `a` is an angle in radians and `r` is a rotation +vector ({x = , y = , z = }) where pitch, yaw and roll are +angles in radians. + +* `vector.rotate(v, r)`: + * Applies the rotation `r` to `v` and returns the result. + * `vector.rotate({x = 0, y = 0, z = 1}, r)` and + `vector.rotate({x = 0, y = 1, z = 0}, r)` return vectors pointing + forward and up relative to an entity's rotation `r`. +* `vector.rotate_around_axis(v1, v2, a)`: + * Returns `v1` rotated around axis `v2` by `a` radians according to + the right hand rule. +* `vector.dir_to_rotation(direction[, up])`: + * Returns a rotation vector for `direction` pointing forward using `up` + as the up vector. + * If `up` is omitted, the roll of the returned vector defaults to zero. + * Otherwise `direction` and `up` need to be vectors in a 90 degree angle to each other. + From fe3e69eb4029626cd7ef3f7a1c2beaec13ba7364 Mon Sep 17 00:00:00 2001 From: Danila Shutov Date: Tue, 9 Jun 2020 22:38:09 +0300 Subject: [PATCH 273/424] Fix broken coloring of wielditems (#9969) Fixes a regression that appeared in 5.3.0-dev. --- client/shaders/object_shader/opengl_fragment.glsl | 4 +++- client/shaders/object_shader/opengl_vertex.glsl | 7 ++++++- src/client/wieldmesh.cpp | 10 +++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/client/shaders/object_shader/opengl_fragment.glsl b/client/shaders/object_shader/opengl_fragment.glsl index 32f3e974e..0534dc049 100644 --- a/client/shaders/object_shader/opengl_fragment.glsl +++ b/client/shaders/object_shader/opengl_fragment.glsl @@ -145,8 +145,10 @@ void main(void) vec4 col = vec4(color.rgb, base.a); + col.rgb *= gl_Color.rgb; + col.rgb *= emissiveColor.rgb * vIDiff; - + #ifdef ENABLE_TONE_MAPPING col = applyToneMapping(col); #endif diff --git a/client/shaders/object_shader/opengl_vertex.glsl b/client/shaders/object_shader/opengl_vertex.glsl index 488089392..59171145f 100644 --- a/client/shaders/object_shader/opengl_vertex.glsl +++ b/client/shaders/object_shader/opengl_vertex.glsl @@ -38,7 +38,12 @@ void main(void) lightVec = sunPosition - worldPosition; eyeVec = -(gl_ModelViewMatrix * gl_Vertex).xyz; - vIDiff = directional_ambient(normalize(gl_Normal)); + + // This is intentional comparison with zero without any margin. + // If normal is not equal to zero exactly, then we assume it's a valid, just not normalized vector + vIDiff = length(gl_Normal) == 0.0 + ? 1.0 + : directional_ambient(normalize(gl_Normal)); gl_FrontColor = gl_BackColor = gl_Color; } diff --git a/src/client/wieldmesh.cpp b/src/client/wieldmesh.cpp index 997eb1b5b..8cd3e29a9 100644 --- a/src/client/wieldmesh.cpp +++ b/src/client/wieldmesh.cpp @@ -467,7 +467,11 @@ void WieldMeshSceneNode::setColor(video::SColor c) bc.getGreen() * green / 255, bc.getBlue() * blue / 255); scene::IMeshBuffer *buf = mesh->getMeshBuffer(j); - colorizeMeshBuffer(buf, &buffercolor); + + if (m_enable_shaders) + setMeshBufferColor(buf, buffercolor); + else + colorizeMeshBuffer(buf, &buffercolor); } } @@ -481,9 +485,9 @@ void WieldMeshSceneNode::setNodeLightColor(video::SColor color) video::SMaterial &material = m_meshnode->getMaterial(i); material.EmissiveColor = color; } - } else { - setColor(color); } + + setColor(color); } void WieldMeshSceneNode::render() From 64380cf92e8d0000f75ec372e3e1d09bdccd12e7 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 10 Jun 2020 10:58:13 +0200 Subject: [PATCH 274/424] Fix build error on Ubuntu 16.04 --- src/client/content_mapblock.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/client/content_mapblock.cpp b/src/client/content_mapblock.cpp index f7d20001f..3d06584c4 100644 --- a/src/client/content_mapblock.cpp +++ b/src/client/content_mapblock.cpp @@ -17,6 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include #include "content_mapblock.h" #include "util/numeric.h" #include "util/directiontables.h" From 80d9e9c1834fdc78588ffe2842766c0177227786 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 10 Jun 2020 11:46:14 +0200 Subject: [PATCH 275/424] Fix build error on Ubuntu 16.04 (again) --- src/client/mesh.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/mesh.cpp b/src/client/mesh.cpp index 91781373c..68832849e 100644 --- a/src/client/mesh.cpp +++ b/src/client/mesh.cpp @@ -341,7 +341,7 @@ bool checkMeshNormals(scene::IMesh *mesh) // hurting the performance and covering only really weird broken models. f32 length = buffer->getNormal(0).getLength(); - if (!isfinite(length) || fabs(length) < 1e-10) + if (!std::isfinite(length) || std::fabs(length) < 1e-10f) return false; } From f89794108c49a7a9e992afb9431ae244e4a4fef1 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 10 Jun 2020 16:53:23 +0200 Subject: [PATCH 276/424] content_cao: Do not expire visuals for texture updates --- src/client/content_cao.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index 79ecccb6f..644a71e6e 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -1487,18 +1487,22 @@ void GenericCAO::updateAttachments() bool GenericCAO::visualExpiryRequired(const ObjectProperties &new_) const { const ObjectProperties &old = m_prop; + /* Visuals do not need to be expired for: + * - nametag props: handled by updateNametag() + * - textures: handled by updateTextures() + * - sprite props: handled by updateTexturePos() + * - glow: handled by updateLight() + * - any other properties that do not change appearance + */ // Ordered to compare primitive types before std::vectors return old.backface_culling != new_.backface_culling || - old.initial_sprite_basepos != new_.initial_sprite_basepos || old.is_visible != new_.is_visible || old.mesh != new_.mesh || - old.spritediv != new_.spritediv || old.use_texture_alpha != new_.use_texture_alpha || old.visual != new_.visual || old.visual_size != new_.visual_size || old.wield_item != new_.wield_item || - old.colors != new_.colors || - old.textures != new_.textures; + old.colors != new_.colors; } void GenericCAO::processMessage(const std::string &data) @@ -1513,6 +1517,7 @@ void GenericCAO::processMessage(const std::string &data) // Check what exactly changed bool expire_visuals = visualExpiryRequired(newprops); + bool textures_changed = m_prop.textures != newprops.textures; // Apply changes m_prop = std::move(newprops); @@ -1541,13 +1546,18 @@ void GenericCAO::processMessage(const std::string &data) if ((m_is_player && !m_is_local_player) && m_prop.nametag.empty()) m_prop.nametag = m_name; - updateNametag(); if (expire_visuals) { expireVisuals(); } else { infostream << "GenericCAO: properties updated but expiring visuals" << " not necessary" << std::endl; + if (textures_changed) { + // don't update while punch texture modifier is active + if (m_reset_textures_timer < 0) + updateTextures(m_current_texture_modifier); + } + updateNametag(); } } else if (cmd == AO_CMD_UPDATE_POSITION) { // Not sent by the server if this object is an attachment. From 3f0cbbc372d5f359af18f5cbad37a1b165d3df4e Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 7 Jun 2020 19:58:09 +0200 Subject: [PATCH 277/424] Use multiple light positions for CAO lighting --- src/client/clientobject.h | 1 - src/client/content_cao.cpp | 38 ++++++++++++++++++++++---------------- src/client/content_cao.h | 5 ++++- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/client/clientobject.h b/src/client/clientobject.h index 8e64b8406..ecd8059ef 100644 --- a/src/client/clientobject.h +++ b/src/client/clientobject.h @@ -43,7 +43,6 @@ public: virtual void removeFromScene(bool permanent) {} virtual void updateLight(u32 day_night_ratio) {} - virtual v3s16 getLightPosition() { return v3s16(0, 0, 0); } virtual bool getCollisionBox(aabb3f *toset) const { return false; } virtual bool getSelectionBox(aabb3f *toset) const { return false; } diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index 644a71e6e..eec4e3de0 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -182,7 +182,6 @@ public: void addToScene(ITextureSource *tsrc); void removeFromScene(bool permanent); void updateLight(u32 day_night_ratio); - v3s16 getLightPosition(); void updateNodePos(); void step(float dtime, ClientEnvironment *env); @@ -258,11 +257,6 @@ void TestCAO::updateLight(u32 day_night_ratio) { } -v3s16 TestCAO::getLightPosition() -{ - return floatToInt(m_position, BS); -} - void TestCAO::updateNodePos() { if (!m_node) @@ -799,13 +793,20 @@ void GenericCAO::updateLight(u32 day_night_ratio) return; u8 light_at_pos = 0; - bool pos_ok; + bool pos_ok = false; - v3s16 p = getLightPosition(); - MapNode n = m_env->getMap().getNode(p, &pos_ok); - if (pos_ok) - light_at_pos = n.getLightBlend(day_night_ratio, m_client->ndef()); - else + v3s16 pos[3]; + u16 npos = getLightPosition(pos); + for (u16 i = 0; i < npos; i++) { + bool this_ok; + MapNode n = m_env->getMap().getNode(pos[i], &this_ok); + if (this_ok) { + u8 this_light = n.getLightBlend(day_night_ratio, m_client->ndef()); + light_at_pos = MYMAX(light_at_pos, this_light); + pos_ok = true; + } + } + if (!pos_ok) light_at_pos = blend_light(day_night_ratio, LIGHT_SUN, 0); u8 light = decode_light(light_at_pos + m_glow); @@ -856,12 +857,17 @@ void GenericCAO::setNodeLight(u8 light) } } -v3s16 GenericCAO::getLightPosition() +u16 GenericCAO::getLightPosition(v3s16 *pos) { - if (m_is_player) - return floatToInt(m_position + v3f(0, 0.5 * BS, 0), BS); + const auto &box = m_prop.collisionbox; + pos[0] = floatToInt(m_position + box.MinEdge * BS, BS); + pos[1] = floatToInt(m_position + box.MaxEdge * BS, BS); - return floatToInt(m_position, BS); + // Skip center pos if it falls into the same node as Min or MaxEdge + if ((box.MaxEdge - box.MinEdge).getLengthSQ() < 3.0f) + return 2; + pos[2] = floatToInt(m_position + box.getCenter() * BS, BS); + return 3; } void GenericCAO::updateNametag() diff --git a/src/client/content_cao.h b/src/client/content_cao.h index 7693dd3d2..699148c52 100644 --- a/src/client/content_cao.h +++ b/src/client/content_cao.h @@ -240,7 +240,10 @@ public: void setNodeLight(u8 light); - v3s16 getLightPosition(); + /* Get light position(s). + * returns number of positions written into pos[], which must have space + * for at least 3 vectors. */ + u16 getLightPosition(v3s16 *pos); void updateNametag(); From 982a030f330bd4f4953ed7d4a7f88286f6fd645d Mon Sep 17 00:00:00 2001 From: luk3yx Date: Sat, 13 Jun 2020 04:54:20 +1200 Subject: [PATCH 278/424] Add LevelDB player database (#9982) --- doc/minetest.6 | 6 +- src/database/database-leveldb.cpp | 112 ++++++++++++++++++++++++++++++ src/database/database-leveldb.h | 15 ++++ src/serverenvironment.cpp | 9 ++- 4 files changed, 138 insertions(+), 4 deletions(-) diff --git a/doc/minetest.6 b/doc/minetest.6 index cb5ed57ef..bac70fe1a 100644 --- a/doc/minetest.6 +++ b/doc/minetest.6 @@ -105,12 +105,12 @@ Migrate from current map backend to another. Possible values are sqlite3, leveldb, redis, postgresql, and dummy. .TP .B \-\-migrate-auth -Migrate from current auth backend to another. Possible values are sqlite3 and -files. +Migrate from current auth backend to another. Possible values are sqlite3, +leveldb, and files. .TP .B \-\-migrate-players Migrate from current players backend to another. Possible values are sqlite3, -postgresql, dummy, and files. +leveldb, postgresql, dummy, and files. .TP .B \-\-terminal Display an interactive terminal over ncurses during execution. diff --git a/src/database/database-leveldb.cpp b/src/database/database-leveldb.cpp index 1aab4c43d..1976ae13d 100644 --- a/src/database/database-leveldb.cpp +++ b/src/database/database-leveldb.cpp @@ -26,6 +26,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "log.h" #include "filesys.h" #include "exceptions.h" +#include "remoteplayer.h" +#include "server/player_sao.h" #include "util/serialize.h" #include "util/string.h" @@ -98,6 +100,116 @@ void Database_LevelDB::listAllLoadableBlocks(std::vector &dst) delete it; } +PlayerDatabaseLevelDB::PlayerDatabaseLevelDB(const std::string &savedir) +{ + leveldb::Options options; + options.create_if_missing = true; + leveldb::Status status = leveldb::DB::Open(options, + savedir + DIR_DELIM + "players.db", &m_database); + ENSURE_STATUS_OK(status); +} + +PlayerDatabaseLevelDB::~PlayerDatabaseLevelDB() +{ + delete m_database; +} + +void PlayerDatabaseLevelDB::savePlayer(RemotePlayer *player) +{ + /* + u8 version = 1 + u16 hp + v3f position + f32 pitch + f32 yaw + u16 breath + u32 attribute_count + for each attribute { + std::string name + std::string (long) value + } + std::string (long) serialized_inventory + */ + + std::ostringstream os; + writeU8(os, 1); + + PlayerSAO *sao = player->getPlayerSAO(); + sanity_check(sao); + writeU16(os, sao->getHP()); + writeV3F32(os, sao->getBasePosition()); + writeF32(os, sao->getLookPitch()); + writeF32(os, sao->getRotation().Y); + writeU16(os, sao->getBreath()); + + StringMap stringvars = sao->getMeta().getStrings(); + writeU32(os, stringvars.size()); + for (const auto &it : stringvars) { + os << serializeString(it.first); + os << serializeLongString(it.second); + } + + player->inventory.serialize(os); + + leveldb::Status status = m_database->Put(leveldb::WriteOptions(), + player->getName(), os.str()); + ENSURE_STATUS_OK(status); + player->onSuccessfulSave(); +} + +bool PlayerDatabaseLevelDB::removePlayer(const std::string &name) +{ + leveldb::Status s = m_database->Delete(leveldb::WriteOptions(), name); + return s.ok(); +} + +bool PlayerDatabaseLevelDB::loadPlayer(RemotePlayer *player, PlayerSAO *sao) +{ + std::string raw; + leveldb::Status s = m_database->Get(leveldb::ReadOptions(), + player->getName(), &raw); + if (!s.ok()) + return false; + std::istringstream is(raw); + + if (readU8(is) > 1) + return false; + + sao->setHPRaw(readU16(is)); + sao->setBasePosition(readV3F32(is)); + sao->setLookPitch(readF32(is)); + sao->setPlayerYaw(readF32(is)); + sao->setBreath(readU16(is), false); + + u32 attribute_count = readU32(is); + for (u32 i = 0; i < attribute_count; i++) { + std::string name = deSerializeString(is); + std::string value = deSerializeLongString(is); + sao->getMeta().setString(name, value); + } + sao->getMeta().setModified(false); + + // This should always be last. + try { + player->inventory.deSerialize(is); + } catch (SerializationError &e) { + errorstream << "Failed to deserialize player inventory. player_name=" + << player->getName() << " " << e.what() << std::endl; + } + + return true; +} + +void PlayerDatabaseLevelDB::listPlayers(std::vector &res) +{ + leveldb::Iterator* it = m_database->NewIterator(leveldb::ReadOptions()); + res.clear(); + for (it->SeekToFirst(); it->Valid(); it->Next()) { + res.push_back(it->key().ToString()); + } + delete it; +} + AuthDatabaseLevelDB::AuthDatabaseLevelDB(const std::string &savedir) { leveldb::Options options; diff --git a/src/database/database-leveldb.h b/src/database/database-leveldb.h index a9bd0faa4..61def1256 100644 --- a/src/database/database-leveldb.h +++ b/src/database/database-leveldb.h @@ -45,6 +45,21 @@ private: leveldb::DB *m_database; }; +class PlayerDatabaseLevelDB : public PlayerDatabase +{ +public: + PlayerDatabaseLevelDB(const std::string &savedir); + ~PlayerDatabaseLevelDB(); + + void savePlayer(RemotePlayer *player); + bool loadPlayer(RemotePlayer *player, PlayerSAO *sao); + bool removePlayer(const std::string &name); + void listPlayers(std::vector &res); + +private: + leveldb::DB *m_database; +}; + class AuthDatabaseLevelDB : public AuthDatabase { public: diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 222b4d203..2c6a39ee3 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -2089,6 +2089,7 @@ PlayerDatabase *ServerEnvironment::openPlayerDatabase(const std::string &name, if (name == "dummy") return new Database_Dummy(); + #if USE_POSTGRESQL if (name == "postgresql") { std::string connect_string; @@ -2096,6 +2097,12 @@ PlayerDatabase *ServerEnvironment::openPlayerDatabase(const std::string &name, return new PlayerDatabasePostgreSQL(connect_string); } #endif + +#if USE_LEVELDB + if (name == "leveldb") + return new PlayerDatabaseLevelDB(savedir); +#endif + if (name == "files") return new PlayerDatabaseFiles(savedir + DIR_DELIM + "players"); @@ -2116,7 +2123,7 @@ bool ServerEnvironment::migratePlayersDatabase(const GameParams &game_params, if (!world_mt.exists("player_backend")) { errorstream << "Please specify your current backend in world.mt:" << std::endl - << " player_backend = {files|sqlite3|postgresql}" + << " player_backend = {files|sqlite3|leveldb|postgresql}" << std::endl; return false; } From 2424dfe007e451bb02f87884c2b272cf307d6e7c Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 13 Jun 2020 19:03:26 +0200 Subject: [PATCH 279/424] Server pushing media at runtime (#9961) --- doc/lua_api.txt | 14 ++ src/client/client.cpp | 12 +- src/client/client.h | 9 +- src/client/clientmedia.cpp | 10 +- src/client/clientmedia.h | 5 + src/client/filecache.cpp | 8 ++ src/client/filecache.h | 1 + src/filesys.cpp | 6 + src/network/clientopcodes.cpp | 2 +- src/network/clientpackethandler.cpp | 46 +++++++ src/network/networkprotocol.h | 9 ++ src/network/serveropcodes.cpp | 2 +- src/script/lua_api/l_server.cpp | 22 +++- src/script/lua_api/l_server.h | 3 + src/server.cpp | 195 ++++++++++++++++++---------- src/server.h | 4 + 16 files changed, 263 insertions(+), 85 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index ed060c4ad..cb968958f 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -5217,6 +5217,20 @@ Server * Returns a code (0: successful, 1: no such player, 2: player is connected) * `minetest.remove_player_auth(name)`: remove player authentication data * Returns boolean indicating success (false if player nonexistant) +* `minetest.dynamic_add_media(filepath)` + * Adds the file at the given path to the media sent to clients by the server + on startup and also pushes this file to already connected clients. + The file must be a supported image, sound or model format. It must not be + modified, deleted, moved or renamed after calling this function. + The list of dynamically added media is not persisted. + * Returns boolean indicating success (duplicate files count as error) + * The media will be ready to use (in e.g. entity textures, sound_play) + immediately after calling this function. + Old clients that lack support for this feature will not see the media + unless they reconnect to the server. + * Since media transferred this way does not use client caching or HTTP + transfers, dynamic media should not be used with big files or performance + will suffer. Bans ---- diff --git a/src/client/client.cpp b/src/client/client.cpp index c03c062c6..34f97a9de 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -670,11 +670,9 @@ void Client::step(float dtime) } } -bool Client::loadMedia(const std::string &data, const std::string &filename) +bool Client::loadMedia(const std::string &data, const std::string &filename, + bool from_media_push) { - // Silly irrlicht's const-incorrectness - Buffer data_rw(data.c_str(), data.size()); - std::string name; const char *image_ext[] = { @@ -690,6 +688,9 @@ bool Client::loadMedia(const std::string &data, const std::string &filename) io::IFileSystem *irrfs = RenderingEngine::get_filesystem(); video::IVideoDriver *vdrv = RenderingEngine::get_video_driver(); + // Silly irrlicht's const-incorrectness + Buffer data_rw(data.c_str(), data.size()); + // Create an irrlicht memory file io::IReadFile *rfile = irrfs->createMemoryReadFile( *data_rw, data_rw.getSize(), "_tempreadfile"); @@ -727,7 +728,6 @@ bool Client::loadMedia(const std::string &data, const std::string &filename) ".x", ".b3d", ".md2", ".obj", NULL }; - name = removeStringEnd(filename, model_ext); if (!name.empty()) { verbosestream<<"Client: Storing model into memory: " @@ -744,6 +744,8 @@ bool Client::loadMedia(const std::string &data, const std::string &filename) }; name = removeStringEnd(filename, translate_ext); if (!name.empty()) { + if (from_media_push) + return false; TRACESTREAM(<< "Client: Loading translation: " << "\"" << filename << "\"" << std::endl); g_client_translations->loadTranslation(data); diff --git a/src/client/client.h b/src/client/client.h index 3b1095ac2..733634db1 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -222,6 +222,7 @@ public: void handleCommand_FormspecPrepend(NetworkPacket *pkt); void handleCommand_CSMRestrictionFlags(NetworkPacket *pkt); void handleCommand_PlayerSpeed(NetworkPacket *pkt); + void handleCommand_MediaPush(NetworkPacket *pkt); void ProcessData(NetworkPacket *pkt); @@ -376,7 +377,8 @@ public: // The following set of functions is used by ClientMediaDownloader // Insert a media file appropriately into the appropriate manager - bool loadMedia(const std::string &data, const std::string &filename); + bool loadMedia(const std::string &data, const std::string &filename, + bool from_media_push = false); // Send a request for conventional media transfer void request_media(const std::vector &file_requests); @@ -488,6 +490,7 @@ private: Camera *m_camera = nullptr; Minimap *m_minimap = nullptr; bool m_minimap_disabled_by_server = false; + // Server serialization version u8 m_server_ser_ver; @@ -529,7 +532,6 @@ private: AuthMechanism m_chosen_auth_mech; void *m_auth_data = nullptr; - bool m_access_denied = false; bool m_access_denied_reconnect = false; std::string m_access_denied_reason = ""; @@ -538,7 +540,10 @@ private: bool m_nodedef_received = false; bool m_activeobjects_received = false; bool m_mods_loaded = false; + ClientMediaDownloader *m_media_downloader; + // Set of media filenames pushed by server at runtime + std::unordered_set m_media_pushed_files; // time_of_day speed approximation for old protocol bool m_time_of_day_set = false; diff --git a/src/client/clientmedia.cpp b/src/client/clientmedia.cpp index 6da99bbbf..8cd3b6bcc 100644 --- a/src/client/clientmedia.cpp +++ b/src/client/clientmedia.cpp @@ -35,6 +35,15 @@ static std::string getMediaCacheDir() return porting::path_cache + DIR_DELIM + "media"; } +bool clientMediaUpdateCache(const std::string &raw_hash, const std::string &filedata) +{ + FileCache media_cache(getMediaCacheDir()); + std::string sha1_hex = hex_encode(raw_hash); + if (!media_cache.exists(sha1_hex)) + return media_cache.update(sha1_hex, filedata); + return true; +} + /* ClientMediaDownloader */ @@ -559,7 +568,6 @@ bool ClientMediaDownloader::checkAndLoad( return true; } - /* Minetest Hashset File Format diff --git a/src/client/clientmedia.h b/src/client/clientmedia.h index 92831082c..5a918535b 100644 --- a/src/client/clientmedia.h +++ b/src/client/clientmedia.h @@ -33,6 +33,11 @@ struct HTTPFetchResult; #define MTHASHSET_FILE_SIGNATURE 0x4d544853 // 'MTHS' #define MTHASHSET_FILE_NAME "index.mth" +// Store file into media cache (unless it exists already) +// Validating the hash is responsibility of the caller +bool clientMediaUpdateCache(const std::string &raw_hash, + const std::string &filedata); + class ClientMediaDownloader { public: diff --git a/src/client/filecache.cpp b/src/client/filecache.cpp index 3d1b302a8..46bbe4059 100644 --- a/src/client/filecache.cpp +++ b/src/client/filecache.cpp @@ -82,8 +82,16 @@ bool FileCache::update(const std::string &name, const std::string &data) std::string path = m_dir + DIR_DELIM + name; return updateByPath(path, data); } + bool FileCache::load(const std::string &name, std::ostream &os) { std::string path = m_dir + DIR_DELIM + name; return loadByPath(path, os); } + +bool FileCache::exists(const std::string &name) +{ + std::string path = m_dir + DIR_DELIM + name; + std::ifstream fis(path.c_str(), std::ios_base::binary); + return fis.good(); +} diff --git a/src/client/filecache.h b/src/client/filecache.h index 96e4c8ba1..ea6afc4b2 100644 --- a/src/client/filecache.h +++ b/src/client/filecache.h @@ -33,6 +33,7 @@ public: bool update(const std::string &name, const std::string &data); bool load(const std::string &name, std::ostream &os); + bool exists(const std::string &name); private: std::string m_dir; diff --git a/src/filesys.cpp b/src/filesys.cpp index f61b39b94..0bc351669 100644 --- a/src/filesys.cpp +++ b/src/filesys.cpp @@ -691,6 +691,12 @@ std::string AbsolutePath(const std::string &path) const char *GetFilenameFromPath(const char *path) { const char *filename = strrchr(path, DIR_DELIM_CHAR); + // Consistent with IsDirDelimiter this function handles '/' too + if (DIR_DELIM_CHAR != '/') { + const char *tmp = strrchr(path, '/'); + if (tmp && tmp > filename) + filename = tmp; + } return filename ? filename + 1 : path; } diff --git a/src/network/clientopcodes.cpp b/src/network/clientopcodes.cpp index 0f20047c0..f812a08a1 100644 --- a/src/network/clientopcodes.cpp +++ b/src/network/clientopcodes.cpp @@ -68,7 +68,7 @@ const ToClientCommandHandler toClientCommandTable[TOCLIENT_NUM_MSG_TYPES] = { "TOCLIENT_TIME_OF_DAY", TOCLIENT_STATE_CONNECTED, &Client::handleCommand_TimeOfDay }, // 0x29 { "TOCLIENT_CSM_RESTRICTION_FLAGS", TOCLIENT_STATE_CONNECTED, &Client::handleCommand_CSMRestrictionFlags }, // 0x2A { "TOCLIENT_PLAYER_SPEED", TOCLIENT_STATE_CONNECTED, &Client::handleCommand_PlayerSpeed }, // 0x2B - null_command_handler, + { "TOCLIENT_MEDIA_PUSH", TOCLIENT_STATE_CONNECTED, &Client::handleCommand_MediaPush }, // 0x2C null_command_handler, null_command_handler, { "TOCLIENT_CHAT_MESSAGE", TOCLIENT_STATE_CONNECTED, &Client::handleCommand_ChatMessage }, // 0x2F diff --git a/src/network/clientpackethandler.cpp b/src/network/clientpackethandler.cpp index e000acc92..5934eaf8c 100644 --- a/src/network/clientpackethandler.cpp +++ b/src/network/clientpackethandler.cpp @@ -39,6 +39,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "script/scripting_client.h" #include "util/serialize.h" #include "util/srp.h" +#include "util/sha1.h" #include "tileanimation.h" #include "gettext.h" #include "skyparams.h" @@ -1471,6 +1472,51 @@ void Client::handleCommand_PlayerSpeed(NetworkPacket *pkt) player->addVelocity(added_vel); } +void Client::handleCommand_MediaPush(NetworkPacket *pkt) +{ + std::string raw_hash, filename, filedata; + bool cached; + + *pkt >> raw_hash >> filename >> cached; + filedata = pkt->readLongString(); + + if (raw_hash.size() != 20 || filedata.empty() || filename.empty() || + !string_allowed(filename, TEXTURENAME_ALLOWED_CHARS)) { + throw PacketError("Illegal filename, data or hash"); + } + + verbosestream << "Server pushes media file \"" << filename << "\" with " + << filedata.size() << " bytes of data (cached=" << cached + << ")" << std::endl; + + if (m_media_pushed_files.count(filename) != 0) { + // Silently ignore for synchronization purposes + return; + } + + // Compute and check checksum of data + std::string computed_hash; + { + SHA1 ctx; + ctx.addBytes(filedata.c_str(), filedata.size()); + unsigned char *buf = ctx.getDigest(); + computed_hash.assign((char*) buf, 20); + free(buf); + } + if (raw_hash != computed_hash) { + verbosestream << "Hash of file data mismatches, ignoring." << std::endl; + return; + } + + // Actually load media + loadMedia(filedata, filename, true); + m_media_pushed_files.insert(filename); + + // Cache file for the next time when this client joins the same server + if (cached) + clientMediaUpdateCache(raw_hash, filedata); +} + /* * Mod channels */ diff --git a/src/network/networkprotocol.h b/src/network/networkprotocol.h index ab924f1db..fd683eac9 100644 --- a/src/network/networkprotocol.h +++ b/src/network/networkprotocol.h @@ -323,6 +323,15 @@ enum ToClientCommand v3f added_vel */ + TOCLIENT_MEDIA_PUSH = 0x2C, + /* + std::string raw_hash + std::string filename + bool should_be_cached + u32 len + char filedata[len] + */ + // (oops, there is some gap here) TOCLIENT_CHAT_MESSAGE = 0x2F, diff --git a/src/network/serveropcodes.cpp b/src/network/serveropcodes.cpp index 6ee4ff256..2fc3197c2 100644 --- a/src/network/serveropcodes.cpp +++ b/src/network/serveropcodes.cpp @@ -167,7 +167,7 @@ const ClientCommandFactory clientCommandFactoryTable[TOCLIENT_NUM_MSG_TYPES] = { "TOCLIENT_TIME_OF_DAY", 0, true }, // 0x29 { "TOCLIENT_CSM_RESTRICTION_FLAGS", 0, true }, // 0x2A { "TOCLIENT_PLAYER_SPEED", 0, true }, // 0x2B - null_command_factory, // 0x2C + { "TOCLIENT_MEDIA_PUSH", 0, true }, // 0x2C (sent over channel 1 too) null_command_factory, // 0x2D null_command_factory, // 0x2E { "TOCLIENT_CHAT_MESSAGE", 0, true }, // 0x2F diff --git a/src/script/lua_api/l_server.cpp b/src/script/lua_api/l_server.cpp index b6754938e..6f934bb9d 100644 --- a/src/script/lua_api/l_server.cpp +++ b/src/script/lua_api/l_server.cpp @@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common/c_converter.h" #include "common/c_content.h" #include "cpp_api/s_base.h" +#include "cpp_api/s_security.h" #include "server.h" #include "environment.h" #include "remoteplayer.h" @@ -412,9 +413,6 @@ int ModApiServer::l_get_modnames(lua_State *L) std::vector modlist; getServer(L)->getModNames(modlist); - // Take unsorted items from mods_unsorted and sort them into - // mods_sorted; not great performance but the number of mods on a - // server will likely be small. std::sort(modlist.begin(), modlist.end()); // Package them up for Lua @@ -474,6 +472,23 @@ int ModApiServer::l_sound_fade(lua_State *L) return 0; } +// dynamic_add_media(filepath) +int ModApiServer::l_dynamic_add_media(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + + // Reject adding media before the server has started up + if (!getEnv(L)) + throw LuaError("Dynamic media cannot be added before server has started up"); + + std::string filepath = readParam(L, 1); + CHECK_SECURE_PATH(L, filepath.c_str(), false); + + bool ok = getServer(L)->dynamicAddMedia(filepath); + lua_pushboolean(L, ok); + return 1; +} + // is_singleplayer() int ModApiServer::l_is_singleplayer(lua_State *L) { @@ -538,6 +553,7 @@ void ModApiServer::Initialize(lua_State *L, int top) API_FCT(sound_play); API_FCT(sound_stop); API_FCT(sound_fade); + API_FCT(dynamic_add_media); API_FCT(get_player_information); API_FCT(get_player_privs); diff --git a/src/script/lua_api/l_server.h b/src/script/lua_api/l_server.h index 3aa1785a2..938bfa8ef 100644 --- a/src/script/lua_api/l_server.h +++ b/src/script/lua_api/l_server.h @@ -70,6 +70,9 @@ private: // sound_fade(handle, step, gain) static int l_sound_fade(lua_State *L); + // dynamic_add_media(filepath) + static int l_dynamic_add_media(lua_State *L); + // get_player_privs(name, text) static int l_get_player_privs(lua_State *L); diff --git a/src/server.cpp b/src/server.cpp index 6ecbd7097..fe2bb3840 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -2405,9 +2405,87 @@ bool Server::SendBlock(session_t peer_id, const v3s16 &blockpos) return true; } +bool Server::addMediaFile(const std::string &filename, + const std::string &filepath, std::string *filedata_to, + std::string *digest_to) +{ + // If name contains illegal characters, ignore the file + if (!string_allowed(filename, TEXTURENAME_ALLOWED_CHARS)) { + infostream << "Server: ignoring illegal file name: \"" + << filename << "\"" << std::endl; + return false; + } + // If name is not in a supported format, ignore it + const char *supported_ext[] = { + ".png", ".jpg", ".bmp", ".tga", + ".pcx", ".ppm", ".psd", ".wal", ".rgb", + ".ogg", + ".x", ".b3d", ".md2", ".obj", + // Custom translation file format + ".tr", + NULL + }; + if (removeStringEnd(filename, supported_ext).empty()) { + infostream << "Server: ignoring unsupported file extension: \"" + << filename << "\"" << std::endl; + return false; + } + // Ok, attempt to load the file and add to cache + + // Read data + std::ifstream fis(filepath.c_str(), std::ios_base::binary); + if (!fis.good()) { + errorstream << "Server::addMediaFile(): Could not open \"" + << filename << "\" for reading" << std::endl; + return false; + } + std::string filedata; + bool bad = false; + for (;;) { + char buf[1024]; + fis.read(buf, sizeof(buf)); + std::streamsize len = fis.gcount(); + filedata.append(buf, len); + if (fis.eof()) + break; + if (!fis.good()) { + bad = true; + break; + } + } + if (bad) { + errorstream << "Server::addMediaFile(): Failed to read \"" + << filename << "\"" << std::endl; + return false; + } else if (filedata.empty()) { + errorstream << "Server::addMediaFile(): Empty file \"" + << filepath << "\"" << std::endl; + return false; + } + + SHA1 sha1; + sha1.addBytes(filedata.c_str(), filedata.length()); + + unsigned char *digest = sha1.getDigest(); + std::string sha1_base64 = base64_encode(digest, 20); + std::string sha1_hex = hex_encode((char*) digest, 20); + if (digest_to) + *digest_to = std::string((char*) digest, 20); + free(digest); + + // Put in list + m_media[filename] = MediaInfo(filepath, sha1_base64); + verbosestream << "Server: " << sha1_hex << " is " << filename + << std::endl; + + if (filedata_to) + *filedata_to = std::move(filedata); + return true; +} + void Server::fillMediaCache() { - infostream<<"Server: Calculating media file checksums"< paths; @@ -2419,80 +2497,15 @@ void Server::fillMediaCache() for (const std::string &mediapath : paths) { std::vector dirlist = fs::GetDirListing(mediapath); for (const fs::DirListNode &dln : dirlist) { - if (dln.dir) // Ignode dirs + if (dln.dir) // Ignore dirs continue; - std::string filename = dln.name; - // If name contains illegal characters, ignore the file - if (!string_allowed(filename, TEXTURENAME_ALLOWED_CHARS)) { - infostream<<"Server: ignoring illegal file name: \"" - << filename << "\"" << std::endl; - continue; - } - // If name is not in a supported format, ignore it - const char *supported_ext[] = { - ".png", ".jpg", ".bmp", ".tga", - ".pcx", ".ppm", ".psd", ".wal", ".rgb", - ".ogg", - ".x", ".b3d", ".md2", ".obj", - // Custom translation file format - ".tr", - NULL - }; - if (removeStringEnd(filename, supported_ext).empty()){ - infostream << "Server: ignoring unsupported file extension: \"" - << filename << "\"" << std::endl; - continue; - } - // Ok, attempt to load the file and add to cache - std::string filepath; - filepath.append(mediapath).append(DIR_DELIM).append(filename); - - // Read data - std::ifstream fis(filepath.c_str(), std::ios_base::binary); - if (!fis.good()) { - errorstream << "Server::fillMediaCache(): Could not open \"" - << filename << "\" for reading" << std::endl; - continue; - } - std::ostringstream tmp_os(std::ios_base::binary); - bool bad = false; - for(;;) { - char buf[1024]; - fis.read(buf, 1024); - std::streamsize len = fis.gcount(); - tmp_os.write(buf, len); - if (fis.eof()) - break; - if (!fis.good()) { - bad = true; - break; - } - } - if(bad) { - errorstream<<"Server::fillMediaCache(): Failed to read \"" - << filename << "\"" << std::endl; - continue; - } - if(tmp_os.str().length() == 0) { - errorstream << "Server::fillMediaCache(): Empty file \"" - << filepath << "\"" << std::endl; - continue; - } - - SHA1 sha1; - sha1.addBytes(tmp_os.str().c_str(), tmp_os.str().length()); - - unsigned char *digest = sha1.getDigest(); - std::string sha1_base64 = base64_encode(digest, 20); - std::string sha1_hex = hex_encode((char*)digest, 20); - free(digest); - - // Put in list - m_media[filename] = MediaInfo(filepath, sha1_base64); - verbosestream << "Server: " << sha1_hex << " is " << filename - << std::endl; + std::string filepath = mediapath; + filepath.append(DIR_DELIM).append(dln.name); + addMediaFile(dln.name, filepath); } } + + infostream << "Server: " << m_media.size() << " media files collected" << std::endl; } void Server::sendMediaAnnouncement(session_t peer_id, const std::string &lang_code) @@ -3428,6 +3441,44 @@ void Server::deleteParticleSpawner(const std::string &playername, u32 id) SendDeleteParticleSpawner(peer_id, id); } +bool Server::dynamicAddMedia(const std::string &filepath) +{ + std::string filename = fs::GetFilenameFromPath(filepath.c_str()); + if (m_media.find(filename) != m_media.end()) { + errorstream << "Server::dynamicAddMedia(): file \"" << filename + << "\" already exists in media cache" << std::endl; + return false; + } + + // Load the file and add it to our media cache + std::string filedata, raw_hash; + bool ok = addMediaFile(filename, filepath, &filedata, &raw_hash); + if (!ok) + return false; + + // Push file to existing clients + NetworkPacket pkt(TOCLIENT_MEDIA_PUSH, 0); + pkt << raw_hash << filename << (bool) true; + pkt.putLongString(filedata); + + auto client_ids = m_clients.getClientIDs(CS_DefinitionsSent); + for (session_t client_id : client_ids) { + /* + The network layer only guarantees ordered delivery inside a channel. + Since the very next packet could be one that uses the media, we have + to push the media over ALL channels to ensure it is processed before + it is used. + In practice this means we have to send it twice: + - channel 1 (HUD) + - channel 0 (everything else: e.g. play_sound, object messages) + */ + m_clients.send(client_id, 1, &pkt, true); + m_clients.send(client_id, 0, &pkt, true); + } + + return true; +} + // actions: time-reversed list // Return value: success/failure bool Server::rollbackRevertActions(const std::list &actions, diff --git a/src/server.h b/src/server.h index 27943cc29..f44716531 100644 --- a/src/server.h +++ b/src/server.h @@ -236,6 +236,8 @@ public: void deleteParticleSpawner(const std::string &playername, u32 id); + bool dynamicAddMedia(const std::string &filepath); + ServerInventoryManager *getInventoryMgr() const { return m_inventory_mgr.get(); } void sendDetachedInventory(Inventory *inventory, const std::string &name, session_t peer_id); @@ -435,6 +437,8 @@ private: // Sends blocks to clients (locks env and con on its own) void SendBlocks(float dtime); + bool addMediaFile(const std::string &filename, const std::string &filepath, + std::string *filedata = nullptr, std::string *digest = nullptr); void fillMediaCache(); void sendMediaAnnouncement(session_t peer_id, const std::string &lang_code); void sendRequestedMedia(session_t peer_id, From e7e065f553b430173e9112ad55c7046cfc02f2c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20M=C3=BCller?= <34514239+appgurueu@users.noreply.github.com> Date: Sat, 13 Jun 2020 22:46:20 +0200 Subject: [PATCH 280/424] Exposing the zoom key to Lua API (#9903) Co-authored-by: Raul Ferriz --- doc/lua_api.txt | 7 ++++--- src/client/game.cpp | 5 +++-- src/network/serverpackethandler.cpp | 1 + src/script/lua_api/l_object.cpp | 2 ++ 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index cb968958f..07e9698e8 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -6106,13 +6106,14 @@ object you are working with still exists. * `get_formspec_prepend(formspec)`: returns a formspec string. * `get_player_control()`: returns table with player pressed keys * The table consists of fields with boolean value representing the pressed - keys, the fields are jump, right, left, LMB, RMB, sneak, aux1, down, up. + keys, the fields are jump, right, left, LMB, RMB, sneak, aux1, down, up, zoom. * example: `{jump=false, right=true, left=false, LMB=false, RMB=false, - sneak=true, aux1=false, down=false, up=false}` + sneak=true, aux1=false, down=false, up=false, zoom=false}` + * The `zoom` field is available since 5.3 * `get_player_control_bits()`: returns integer with bit packed player pressed keys. * bit nr/meaning: 0/up, 1/down, 2/left, 3/right, 4/jump, 5/aux1, 6/sneak, - 7/LMB, 8/RMB + 7/LMB, 8/RMB, 9/zoom (zoom available since 5.3) * `set_physics_override(override_table)` * `override_table` is a table with the following fields: * `speed`: multiplier to default walking speed value (default: `1`) diff --git a/src/client/game.cpp b/src/client/game.cpp index 139742cec..069c482ca 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -2490,7 +2490,7 @@ void Game::updatePlayerControl(const CameraOrientation &cam) input->joystick.getAxisWithoutDead(JA_FORWARD_MOVE) ); - u32 keypress_bits = + u32 keypress_bits = ( ( (u32)(isKeyDown(KeyType::FORWARD) & 0x1) << 0) | ( (u32)(isKeyDown(KeyType::BACKWARD) & 0x1) << 1) | ( (u32)(isKeyDown(KeyType::LEFT) & 0x1) << 2) | @@ -2499,7 +2499,8 @@ void Game::updatePlayerControl(const CameraOrientation &cam) ( (u32)(isKeyDown(KeyType::SPECIAL1) & 0x1) << 5) | ( (u32)(isKeyDown(KeyType::SNEAK) & 0x1) << 6) | ( (u32)(input->getLeftState() & 0x1) << 7) | - ( (u32)(input->getRightState() & 0x1) << 8 + ( (u32)(input->getRightState() & 0x1) << 8) | + ( (u32)(isKeyDown(KeyType::ZOOM) & 0x1) << 9) ); #ifdef ANDROID diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index fed3b6f85..b3008bb50 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -501,6 +501,7 @@ void Server::process_PlayerPos(RemotePlayer *player, PlayerSAO *playersao, player->control.sneak = (keyPressed & 64); player->control.LMB = (keyPressed & 128); player->control.RMB = (keyPressed & 256); + player->control.zoom = (keyPressed & 512); if (playersao->checkMovementCheat()) { // Call callbacks diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index 0a9f3117b..e7394133a 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -1459,6 +1459,8 @@ int ObjectRef::l_get_player_control(lua_State *L) lua_setfield(L, -2, "LMB"); lua_pushboolean(L, control.RMB); lua_setfield(L, -2, "RMB"); + lua_pushboolean(L, control.zoom); + lua_setfield(L, -2, "zoom"); return 1; } From 586ad0d24b92d15b8c84577671613749c9896480 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 7 Apr 2020 16:33:24 +0000 Subject: [PATCH 281/424] Added translation using Weblate (Hindi) --- po/hi/minetest.po | 6035 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 6035 insertions(+) create mode 100644 po/hi/minetest.po diff --git a/po/hi/minetest.po b/po/hi/minetest.po new file mode 100644 index 000000000..db961d668 --- /dev/null +++ b/po/hi/minetest.po @@ -0,0 +1,6035 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the minetest package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: minetest\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "You died" +msgstr "" + +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "Respawn" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "The server has requested a reconnect:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Reconnect" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Main menu" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occurred in a Lua script:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occurred:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Ok" +msgstr "" + +#: builtin/mainmenu/common.lua src/client/game.cpp +msgid "Loading..." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Try reenabling public serverlist and check your internet connection." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server supports protocol versions between $1 and $2. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server enforces protocol version $1. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We support protocol versions between version $1 and $2." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We only support protocol version $1." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Protocol version mismatch. " +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "World:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No modpack description provided." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No game description provided." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Mod:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No (optional) dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No hard dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Optional dependencies:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Dependencies:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No optional dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp +msgid "Save" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_delete_content.lua +#: builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp +#: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp +#: src/gui/guiPasswordChange.cpp +msgid "Cancel" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable modpack" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable modpack" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable all" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable all" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "" +"Failed to enable mod \"$1\" as it contains disallowed characters. Only " +"characters [a-z0-9_] are allowed." +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "All packages" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Texture packs" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Failed to download $1" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Downloading and installing $1, please wait..." +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Back" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Install" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Update" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Uninstall" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua +msgid "Search" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Back to Main Menu" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No results" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No packages could be retrieved" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "World name" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Seed" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Game" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Create" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "You have no games installed." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download one from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Warning: The minimal development test is meant for developers." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download a game, such as Minetest Game, from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "A world named \"$1\" already exists" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "No game selected" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "Are you sure you want to delete \"$1\"?" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua +#: src/client/keycode.cpp +msgid "Delete" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "pkgmgr: failed to delete \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "pkgmgr: invalid path \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_world.lua +msgid "Delete World \"$1\"?" +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Accept" +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "" +"This modpack has an explicit name given in its modpack.conf which will " +"override any renaming here." +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Rename Modpack:" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Offset" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Scale" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "2D Noise" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Octaves" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Persistance" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Lacunarity" +msgstr "" + +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "defaults" +msgstr "" + +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "eased" +msgstr "" + +#. ~ "absvalue" is a noise parameter flag. +#. It is short for "absolute value". +#. It can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "absvalue" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be at least $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must not be larger than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select directory" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select file" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "$1 (Enabled)" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a $1 as a texture pack" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Failed to install $1 to $2" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to find a valid mod or modpack" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a modpack as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install Mod: Unable to find suitable folder name for modpack $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a mod as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install Mod: Unable to find real mod name for: $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a game as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install: file: \"$1\"" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install: Unsupported file type \"$1\" or broken archive" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "$1 mods" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Installed Packages:" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Browse online content" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "No package description available" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Rename" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "No dependencies." +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Disable Texture Pack" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Use Texture Pack" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Information:" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Uninstall Package" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Credits" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Active Contributors" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Contributors" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Configure" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "New" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Select World:" +msgstr "" + +#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative Mode" +msgstr "" + +#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +msgid "Enable Damage" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Host Server" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Host Game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Announce Server" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Name/Password" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Bind Address" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Port" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Server Port" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Play Game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "No world created or selected!" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Start Game" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Address / Port" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Connect" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Ping" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative mode" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Damage enabled" +msgstr "" + +#. ~ PvP = Player versus Player +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "PvP enabled" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Join Game" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Simple Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Fancy Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Outlining" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "None" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "2x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "3D Clouds" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Connected Glass" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Screen:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Autosave Screen Size" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Shaders (unavailable)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Reset singleplayer world" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/client/game.cpp +msgid "Change Keys" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "All Settings" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold: (px)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Generate Normal Maps" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Liquids" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Settings" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Start Singleplayer" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Config mods" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Main" +msgstr "" + +#: src/client/client.cpp +msgid "Connection timed out." +msgstr "" + +#: src/client/client.cpp +msgid "Loading textures..." +msgstr "" + +#: src/client/client.cpp +msgid "Rebuilding shaders..." +msgstr "" + +#: src/client/client.cpp +msgid "Initializing nodes..." +msgstr "" + +#: src/client/client.cpp +msgid "Initializing nodes" +msgstr "" + +#: src/client/client.cpp +msgid "Done!" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Main Menu" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Player name too long." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Connection error (timed out?)" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided password file failed to open: " +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Please choose a name!" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "No world selected and no address provided. Nothing to do." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided world path doesn't exist: " +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Could not find or load game \"" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Invalid gamespec." +msgstr "" + +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. +#: src/client/fontengine.cpp +msgid "needs_fallback_font" +msgstr "" + +#: src/client/game.cpp +msgid "Shutting down..." +msgstr "" + +#: src/client/game.cpp +msgid "Creating server..." +msgstr "" + +#: src/client/game.cpp +msgid "Creating client..." +msgstr "" + +#: src/client/game.cpp +msgid "Resolving address..." +msgstr "" + +#: src/client/game.cpp +msgid "Connecting to server..." +msgstr "" + +#: src/client/game.cpp +msgid "Item definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "Node definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "Media..." +msgstr "" + +#: src/client/game.cpp +msgid "KiB/s" +msgstr "" + +#: src/client/game.cpp +msgid "MiB/s" +msgstr "" + +#: src/client/game.cpp +msgid "Client side scripting is disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Sound muted" +msgstr "" + +#: src/client/game.cpp +msgid "Sound unmuted" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Volume changed to %d%%" +msgstr "" + +#: src/client/game.cpp src/gui/modalMenu.cpp +msgid "ok" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode enabled (note: no 'fly' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Pitch move mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Pitch move mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode enabled (note: no 'fast' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode enabled (note: no 'noclip' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Cinematic mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Cinematic mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Automatic forward enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Automatic forward disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x1" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x2" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x4" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x1" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x2" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x4" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap currently disabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "Fog disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fog enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info shown" +msgstr "" + +#: src/client/game.cpp +msgid "Profiler graph shown" +msgstr "" + +#: src/client/game.cpp +msgid "Wireframe shown" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info, profiler graph, and wireframe hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info and profiler graph hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Camera update disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Camera update enabled" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at maximum: %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at minimum: %d" +msgstr "" + +#: src/client/game.cpp +msgid "Enabled unlimited viewing range" +msgstr "" + +#: src/client/game.cpp +msgid "Disabled unlimited viewing range" +msgstr "" + +#: src/client/game.cpp +msgid "Zoom currently disabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "" +"Default Controls:\n" +"No menu visible:\n" +"- single tap: button activate\n" +"- double tap: place/use\n" +"- slide finger: look around\n" +"Menu/Inventory visible:\n" +"- double tap (outside):\n" +" -->close\n" +"- touch stack, touch slot:\n" +" --> move stack\n" +"- touch&drag, tap 2nd finger\n" +" --> place single item to slot\n" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "" +"Controls:\n" +"- %s: move forwards\n" +"- %s: move backwards\n" +"- %s: move left\n" +"- %s: move right\n" +"- %s: jump/climb\n" +"- %s: sneak/go down\n" +"- %s: drop item\n" +"- %s: inventory\n" +"- Mouse: turn/look\n" +"- Mouse left: dig/punch\n" +"- Mouse right: place/use\n" +"- Mouse wheel: select item\n" +"- %s: chat\n" +msgstr "" + +#: src/client/game.cpp +msgid "Continue" +msgstr "" + +#: src/client/game.cpp +msgid "Change Password" +msgstr "" + +#: src/client/game.cpp +msgid "Game paused" +msgstr "" + +#: src/client/game.cpp +msgid "Sound Volume" +msgstr "" + +#: src/client/game.cpp +msgid "Exit to Menu" +msgstr "" + +#: src/client/game.cpp +msgid "Exit to OS" +msgstr "" + +#: src/client/game.cpp +msgid "Game info:" +msgstr "" + +#: src/client/game.cpp +msgid "- Mode: " +msgstr "" + +#: src/client/game.cpp +msgid "Remote server" +msgstr "" + +#: src/client/game.cpp +msgid "- Address: " +msgstr "" + +#: src/client/game.cpp +msgid "Hosting server" +msgstr "" + +#: src/client/game.cpp +msgid "- Port: " +msgstr "" + +#: src/client/game.cpp +msgid "Singleplayer" +msgstr "" + +#: src/client/game.cpp +msgid "On" +msgstr "" + +#: src/client/game.cpp +msgid "Off" +msgstr "" + +#: src/client/game.cpp +msgid "- Damage: " +msgstr "" + +#: src/client/game.cpp +msgid "- Creative Mode: " +msgstr "" + +#. ~ PvP = Player versus Player +#: src/client/game.cpp +msgid "- PvP: " +msgstr "" + +#: src/client/game.cpp +msgid "- Public: " +msgstr "" + +#: src/client/game.cpp +msgid "- Server Name: " +msgstr "" + +#: src/client/game.cpp +msgid "" +"\n" +"Check debug.txt for details." +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat shown" +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat hidden" +msgstr "" + +#: src/client/gameui.cpp +msgid "HUD shown" +msgstr "" + +#: src/client/gameui.cpp +msgid "HUD hidden" +msgstr "" + +#: src/client/gameui.cpp +#, c-format +msgid "Profiler shown (page %d of %d)" +msgstr "" + +#: src/client/gameui.cpp +msgid "Profiler hidden" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "Middle Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "X Button 1" +msgstr "" + +#: src/client/keycode.cpp +msgid "X Button 2" +msgstr "" + +#: src/client/keycode.cpp +msgid "Backspace" +msgstr "" + +#: src/client/keycode.cpp +msgid "Tab" +msgstr "" + +#: src/client/keycode.cpp +msgid "Clear" +msgstr "" + +#: src/client/keycode.cpp +msgid "Return" +msgstr "" + +#: src/client/keycode.cpp +msgid "Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Control" +msgstr "" + +#. ~ Key name, common on Windows keyboards +#: src/client/keycode.cpp +msgid "Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "Pause" +msgstr "" + +#: src/client/keycode.cpp +msgid "Caps Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Space" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page up" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page down" +msgstr "" + +#: src/client/keycode.cpp +msgid "End" +msgstr "" + +#: src/client/keycode.cpp +msgid "Home" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Left" +msgstr "" + +#: src/client/keycode.cpp +msgid "Up" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Right" +msgstr "" + +#: src/client/keycode.cpp +msgid "Down" +msgstr "" + +#. ~ Key name +#: src/client/keycode.cpp +msgid "Select" +msgstr "" + +#. ~ "Print screen" key +#: src/client/keycode.cpp +msgid "Print" +msgstr "" + +#: src/client/keycode.cpp +msgid "Execute" +msgstr "" + +#: src/client/keycode.cpp +msgid "Snapshot" +msgstr "" + +#: src/client/keycode.cpp +msgid "Insert" +msgstr "" + +#: src/client/keycode.cpp +msgid "Help" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 0" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 2" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 3" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 4" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 5" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 6" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 7" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 8" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 9" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad *" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad +" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad ." +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad -" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad /" +msgstr "" + +#: src/client/keycode.cpp +msgid "Num Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Scroll Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Control" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Control" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Escape" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Convert" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Nonconvert" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Accept" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Mode Change" +msgstr "" + +#: src/client/keycode.cpp +msgid "Apps" +msgstr "" + +#: src/client/keycode.cpp +msgid "Sleep" +msgstr "" + +#: src/client/keycode.cpp +msgid "Erase EOF" +msgstr "" + +#: src/client/keycode.cpp +msgid "Play" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Zoom" +msgstr "" + +#: src/client/keycode.cpp +msgid "OEM Clear" +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp +#, c-format +msgid "" +"You are about to join this server with the name \"%s\" for the first time.\n" +"If you proceed, a new account using your credentials will be created on this " +"server.\n" +"Please retype your password and click 'Register and Join' to confirm account " +"creation, or click 'Cancel' to abort." +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp +msgid "Register and Join" +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp +msgid "Passwords do not match!" +msgstr "" + +#: src/gui/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "\"Special\" = climb down" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Double tap \"jump\" to toggle fly" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Automatic jumping" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Key already in use" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "press key" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Forward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Backward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Special" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Jump" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Sneak" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Drop" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inventory" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Prev. item" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Next item" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Change camera" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle minimap" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fly" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle pitchmove" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fast" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle noclip" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Mute" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. volume" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. volume" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Autoforward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Chat" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Screenshot" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Range select" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. range" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. range" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Console" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Command" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Local command" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle HUD" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle chat log" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fog" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Old Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "New Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Confirm Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Change" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Sound Volume: " +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Exit" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Muted" +msgstr "" + +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. +#: src/gui/modalMenu.cpp +msgid "Enter " +msgstr "" + +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). +#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp +msgid "LANG_CODE" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Build inside player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place blocks at the position (feet + eye level) where " +"you stand.\n" +"This is helpful when working with nodeboxes in small areas." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Flying" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Player is able to fly without being affected by gravity.\n" +"This requires the \"fly\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, makes move directions relative to the player's pitch when flying " +"or swimming." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast movement" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Fast movement (via the \"special\" key).\n" +"This requires the \"fast\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled together with fly mode, player is able to fly through solid " +"nodes.\n" +"This requires the \"noclip\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths camera when looking around. Also called look or mouse smoothing.\n" +"Useful for recording videos." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera in cinematic mode. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert vertical mouse movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity multiplier." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key for climbing/descending" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, \"special\" key instead of \"sneak\" key is used for climbing " +"down and\n" +"descending." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double tap jump for fly" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double-tapping the jump key toggles fly mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Always fly and fast" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If disabled, \"special\" key is used to fly fast if both fly and fast mode " +"are\n" +"enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rightclick repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated right clicks when holding the " +"right\n" +"mouse button." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically jump up single-node obstacles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Safe digging and placing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prevent digging and placing from repeating when holding the mouse buttons.\n" +"Enable this when you dig or place too often by accident." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Random input" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random user input (only used for testing)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Continuous forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Continuous forward movement, toggled by autoforward key.\n" +"Press the autoforward key again or the backwards movement to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touch screen threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The length in pixels it takes for touch screen interaction to start." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed virtual joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(Android) Fixes the position of virtual joystick.\n" +"If disabled, virtual joystick will center to first-touch's position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Virtual joystick triggers aux button" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(Android) Use virtual joystick to trigger \"aux\" button.\n" +"If enabled, virtual joystick will also tap \"aux\" button when out of main " +"circle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable joysticks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick ID" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The identifier of the joystick to use" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The type of joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick button repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated events\n" +"when holding down a joystick button combination." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick frustum sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The sensitivity of the joystick axes for moving the\n" +"ingame view frustum around." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player forward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Backward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player backward.\n" +"Will also disable autoforward, when active.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Left key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player left.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Right key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player right.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for jumping.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneak key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for sneaking.\n" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the inventory.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving fast in fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Command key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type local commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Range select key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling unlimited view range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fly key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling flying.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling pitch move mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling noclip mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar next key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the next item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar previous key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the previous item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for muting the game.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inc. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dec. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatic forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling autoforward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling cinematic mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling display of minimap.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for taking screenshots.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Drop item key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for dropping the currently selected item.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View zoom key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key to use view zoom when possible.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 1 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the first hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 2 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the second hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 3 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the third hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 4 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fourth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 5 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fifth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 6 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the sixth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 7 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the seventh hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 8 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the eighth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 9 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the ninth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 10 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the tenth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 11 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 11th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 12 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 12th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 13 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 13th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 14 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 14th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 15 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 15th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 16 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 16th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 17 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 17th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 18 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 18th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 19 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 19th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 20 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 20th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 21 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 21st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 22 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 22nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 23 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 23rd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 24 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 24th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 25 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 25th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 26 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 26th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 27 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 27th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 28 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 28th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 29 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 29th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 30 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 30th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 31 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 31st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 32 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 32nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the HUD.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of chat.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large chat console key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the large chat console.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of fog.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera update toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the camera update. Only used for development\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug info toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of debug info.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the profiler. Used for development.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for switching between first- and third-person camera.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range increase key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range decrease key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Graphics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-Game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable vertex buffer objects.\n" +"This should greatly improve graphics performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to fog out the end of the visible area." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces, if defined special_tiles are used\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect glass" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connects glass if supported by node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooth lighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable smooth lighting with simple ambient occlusion.\n" +"Disable for speed or for different looks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds are a client side effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use 3D cloud look instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Digging particles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Adds particles when digging a node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use mip mapping to scale textures. May slightly increase performance,\n" +"especially when using a high resolution texture pack.\n" +"Gamma correct downscaling is not supported." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anisotropic filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use anisotropic filtering when viewing at textures from an angle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use trilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clean transparent textures" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Filtered textures can blend RGB values with fully-transparent neighbors,\n" +"which PNG optimizers usually discard, sometimes resulting in a dark or\n" +"light edge to transparent textures. Apply this filter to clean that up\n" +"at texture load time." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum texture size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" +"can be blurred, so automatically upscale them with nearest-neighbor\n" +"interpolation to preserve crisp pixels. This sets the minimum texture size\n" +"for the upscaled textures; higher values look sharper, but require more\n" +"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n" +"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" +"enabled.\n" +"This is also used as the base node texture size for world-aligned\n" +"texture autoscaling." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FSAA" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Experimental option, might cause visible spaces between blocks\n" +"when set to higher number than 0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Undersampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Undersampling is similar to using a lower screen resolution, but it applies\n" +"to the game world only, keeping the GUI intact.\n" +"It should give a significant performance boost at the cost of less detailed " +"image.\n" +"Higher values result in a less detailed image." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shaders allow advanced visual effects and may increase performance on some " +"video\n" +"cards.\n" +"This only works with the OpenGL video backend." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shader path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to shader directory. If no path is defined, default location will be " +"used." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables Hable's 'Uncharted 2' filmic tone mapping.\n" +"Simulates the tone curve of photographic film and how this approximates the\n" +"appearance of high dynamic range images. Mid-range contrast is slightly\n" +"enhanced, highlights and shadows are gradually compressed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bumpmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables bumpmapping for textures. Normalmaps need to be supplied by the " +"texture pack\n" +"or need to be auto-generated.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Generate normalmaps" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables on the fly normalmap generation (Emboss effect).\n" +"Requires bumpmapping to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of generated normalmaps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps sampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Defines sampling step of texture.\n" +"A higher value results in smoother normal maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables parallax occlusion mapping.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of parallax." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of parallax occlusion iterations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall scale of parallax occlusion effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion bias" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall bias of parallax occlusion effect, usually scale/2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving Nodes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving liquids (like water).\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The maximum height of the surface of waving liquids.\n" +"4.0 = Wave height is two nodes.\n" +"0.0 = Wave doesn't move at all.\n" +"Default is 1.0 (1/2 node).\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wavelength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of liquid waves.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How fast liquid waves will move. Higher = faster.\n" +"If negative, liquid waves will move backwards.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving leaves" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving leaves.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving plants" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving plants.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Advanced" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Arm inertia" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Arm inertia, gives a more realistic movement of\n" +"the arm when the camera moves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If FPS would go higher than this, limit it by sleeping\n" +"to not waste CPU power for no benefit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS in pause menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS when game is paused." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pause on lost window focus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Open the pause menu when the window's focus is lost. Does not pause if a " +"formspec is\n" +"open." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Viewing range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View distance in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Near plane" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" +"Increasing can reduce artifacting on weaker GPUs.\n" +"0.1 = Default, 0.25 = Good value for weaker tablets." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autosave screen size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save window size automatically when modified." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen BPP" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bits per pixel (aka color depth) in fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VSync" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical screen synchronization." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view in degrees." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Alters the light curve by applying 'gamma correction' to it.\n" +"Higher values make middle and lower light levels brighter.\n" +"Value '1.0' leaves the light curve unaltered.\n" +"This only has significant effect on daylight and artificial\n" +"light, it has very little effect on natural night light." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve low gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at minimum light level.\n" +"Controls the contrast of the lowest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve high gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at maximum light level.\n" +"Controls the contrast of the highest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Strength of light curve boost.\n" +"The 3 'boost' parameters define a range of the light\n" +"curve that is boosted in brightness." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost center" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Center of light curve boost range.\n" +"Where 0.0 is minimum light level, 1.0 is maximum light level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost spread" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Spread of light curve boost range.\n" +"Controls the width of the range to be boosted.\n" +"Standard deviation of the light curve boost Gaussian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to texture directory. All textures are first searched from here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Video driver" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The rendering back-end for Irrlicht.\n" +"A restart is required after changing this.\n" +"Note: On Android, stick with OGLES1 if unsure! App may fail to start " +"otherwise.\n" +"On other platforms, OpenGL is recommended, and it’s the only driver with\n" +"shader support currently." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cloud radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Radius of cloud area stated in number of 64 node cloud squares.\n" +"Values larger than 26 will start to produce sharp cutoffs at cloud area " +"corners." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable view bobbing and amount of view bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fall bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Multiplier for fall bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D support.\n" +"Currently supported:\n" +"- none: no 3d output.\n" +"- anaglyph: cyan/magenta color 3d.\n" +"- interlaced: odd/even line based polarisation screen support.\n" +"- topbottom: split screen top/bottom.\n" +"- sidebyside: split screen side by side.\n" +"- crossview: Cross-eyed 3d\n" +"- pageflip: quadbuffer based 3d.\n" +"Note that the interlaced mode requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box border color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selection box lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Recent Chat Messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of recent chat messages to show" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desynchronize block animation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether node texture animations should be desynchronized per mapblock." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum hotbar width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum proportion of current window to be used for hotbar.\n" +"Useful if there's something to be displayed right or left of hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD scale factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modifies the size of the hudbar elements." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mesh cache" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables caching of facedir rotated meshes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generation delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Delay between mesh updates on the client in ms. Increasing this will slow\n" +"down the rate of mesh updates, thus reducing jitter on slower clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generator's MapBlock cache size in MB" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of the MapBlock cache of the mesh generator. Increasing this will\n" +"increase the cache hit %, reducing the data being copied from the main\n" +"thread, thus reducing jitter." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables minimap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Round minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shape of the minimap. Enabled = round, disabled = square." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"True = 256\n" +"False = 128\n" +"Usable to make minimap smoother on slower machines." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Colored fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ambient occlusion gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The strength (darkness) of node ambient-occlusion shading.\n" +"Lower is darker, Higher is lighter. The valid range of values for this\n" +"setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" +"set to the nearest valid value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog start" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fraction of the visible distance at which fog starts to be rendered" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Opaque liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes all liquids opaque" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World-aligned textures mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Textures on a node may be aligned either to the node or to the world.\n" +"The former mode suits better things like machines, furniture, etc., while\n" +"the latter makes stairs and microblocks fit surroundings better.\n" +"However, as this possibility is new, thus may not be used by older servers,\n" +"this option allows enforcing it for certain node types. Note though that\n" +"that is considered EXPERIMENTAL and may not work properly." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autoscaling mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World-aligned textures may be scaled to span several nodes. However,\n" +"the server may not send the scale you want, especially if you use\n" +"a specially-designed texture pack; with this option, the client tries\n" +"to determine the scale automatically basing on the texture size.\n" +"See also texture_min_size.\n" +"Warning: This option is EXPERIMENTAL!" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Menus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Scale GUI by a user specified value.\n" +"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" +"This will smooth over some of the rough edges, and blend\n" +"pixels when scaling down, at the cost of blurring some\n" +"edge pixels when images are scaled by non-integer sizes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter is true, all GUI images need to be\n" +"filtered in software, but some images are generated directly\n" +"to hardware (e.g. render-to-texture for nodes in inventory)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter txr2img" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter_txr2img is true, copy those images\n" +"from hardware to software for scaling. When false, fall back\n" +"to the old scaling method, for video drivers that don't\n" +"properly support downloading textures back from hardware." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay showing tooltips, stated in milliseconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Append item name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Append item name to tooltip." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FreeType fonts" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether FreeType fonts are used, requires FreeType support to be compiled " +"in.\n" +"If disabled, bitmap and XML vectors fonts are used instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font bold by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font italic by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shadow offset (in pixels) of the default font. If 0, then shadow will not be " +"drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the default font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Regular font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the default font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"The fallback font will be used if the font cannot be loaded." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the monospace font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the monospace font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font is used for e.g. the console and profiler screen." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the fallback font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " +"be drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path of the fallback font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font will be used for certain languages or if the default font is " +"unavailable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot folder" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to save screenshots at." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "DPI" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " +"screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable console window" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Windows systems only: Start Minetest with the command line window in the " +"background.\n" +"Contains the same information as the file debug.txt (default name)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables the sound system.\n" +"If disabled, this completely disables all sounds everywhere and the in-game\n" +"sound controls will be non-functional.\n" +"Changing this setting requires a restart." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volume" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Volume of all sounds.\n" +"Requires the sound system to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to mute sounds. You can unmute sounds at any time, unless the\n" +"sound system is disabled (enable_sound=false).\n" +"In-game, you can toggle the mute state with the mute key or by using the\n" +"pause menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Network" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Address to connect to.\n" +"Leave this blank to start a local server.\n" +"Note that the address field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Port to connect to (UDP).\n" +"Note that the port field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Saving map received from server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save the map received by the client on disk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect to external media server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable usage of remote media server (if provided by server).\n" +"Remote servers offer a significantly faster way to download media (e.g. " +"textures)\n" +"when connecting to the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client modding" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable Lua modding support on client.\n" +"This support is experimental and API can change." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "URL to the server list displayed in the Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist file" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"File in client/serverlist/ that contains your favorite servers displayed in " +"the\n" +"Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum size of the out chat queue" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum size of the out chat queue.\n" +"0 to disable queueing and -1 to make the queue size unlimited." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable register confirmation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable register confirmation when connecting to server.\n" +"If disabled, new account will be registered automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock unload timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Timeout for client to remove unused map data from memory." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of mapblocks for client to be kept in memory.\n" +"Set to -1 for unlimited amount." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show debug info" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server / Singleplayer" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the server, to be displayed when players join and in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server description" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Description of server, to be displayed when players join and in the " +"serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Domain name of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Homepage of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically report to the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce to this serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strip color codes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Remove color codes from incoming chat messages\n" +"Use this to stop players from being able to use color in their messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Network port to listen (UDP).\n" +"This value will be overridden when starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bind address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The network interface that the server listens on." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strict protocol checking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable to disallow old clients from connecting.\n" +"Older clients are compatible in the sense that they will not crash when " +"connecting\n" +"to new servers, but they may not support all new features that you are " +"expecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies URL from which client fetches media instead of using UDP.\n" +"$filename should be accessible from $remote_media$filename via cURL\n" +"(obviously, remote_media should end with a slash).\n" +"Files that are not present will be fetched the usual way." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6 server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable/disable running an IPv6 server.\n" +"Ignored if bind_address is set.\n" +"Needs enable_ipv6 to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum simultaneous block sends per client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks that are simultaneously sent per client.\n" +"The maximum total count is calculated dynamically:\n" +"max_total = ceil((#clients + max_users) * per_client / 4)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay in sending blocks after building" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"To reduce lag, block transfers are slowed down when a player is building " +"something.\n" +"This determines how long they are slowed down after placing or removing a " +"node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. packets per iteration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step, if you have a slow connection\n" +"try reducing it, but don't reduce it to a number below double of targeted\n" +"client number." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default game when creating a new world.\n" +"This will be overridden when creating a world from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day displayed to players connecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum users" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of players that can be connected simultaneously." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map directory" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World directory (everything in the world is stored here).\n" +"Not needed if starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Item entity TTL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Time in seconds for item entity (dropped items) to live.\n" +"Setting it to -1 disables the feature." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Damage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable players getting damage and dying." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Creative" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable creative mode for new created maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed map seed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"A chosen map seed for a new map, leave empty for random.\n" +"Will be overridden when creating a new world in the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default password" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "New users need to input this password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The privileges that new users automatically get.\n" +"See /privs in game for a full list on your server and mod configuration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unlimited player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether players are shown to clients without any range limit.\n" +"Deprecated, use the setting player_transfer_distance instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player versus player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to allow players to damage and kill each other." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mod channels" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod channels support." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Static spawnpoint" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If this is set, players will always (re)spawn at the given position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disallow empty passwords" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, new players cannot join with an empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable anticheat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, disable cheat prevention in multiplayer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rollback recording" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, actions are recorded for rollback.\n" +"This option is only read when server starts." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Format of player chat messages. The following strings are valid " +"placeholders:\n" +"@name, @message, @timestamp (optional)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shutdown message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server shuts down." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crash message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server crashes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ask to reconnect after crash" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to ask clients to reconnect after a (Lua) crash.\n" +"Set this to true if your server is set up to restart automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active object send range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far clients know about objects, stated in mapblocks (16 nodes).\n" +"\n" +"Setting this larger than active_block_range will also cause the server\n" +"to maintain active objects up to this distance in the direction the\n" +"player is looking. (This can avoid mobs suddenly disappearing from view)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The radius of the volume of blocks around every player that is subject to " +"the\n" +"active block stuff, stated in mapblocks (16 nodes).\n" +"In active blocks objects are loaded and ABMs run.\n" +"This is also the minimum range in which active objects (mobs) are " +"maintained.\n" +"This should be configured together with active_object_range." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block send distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are sent to clients, stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum forceloaded blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of forceloaded mapblocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time send interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of sending time of day to clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls length of day/night cycle.\n" +"Examples:\n" +"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World start time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time of day when a new world is started, in millihours (0-23999)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map save interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of saving important changes in the world, stated in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message max length" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set the maximum character length of a chat message sent by clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message count limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amount of messages a player may send per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message kick threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Kick players who sent more than X messages per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Physics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration on ground or when climbing,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration in air" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal acceleration in air when jumping or falling,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration in fast mode,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking and flying speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking, flying and climbing speed in fast mode, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Climbing speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical climbing speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Initial vertical speed when jumping, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease this to increase liquid resistance to movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum liquid resistance. Controls deceleration when entering liquid at\n" +"high speed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid sinking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls sinking speed in liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gravity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration of gravity, in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Deprecated Lua API handling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Handling for deprecated Lua API calls:\n" +"- legacy: (try to) mimic old behaviour (default for release).\n" +"- log: mimic and log backtrace of deprecated call (default for debug).\n" +"- error: abort on usage of deprecated call (suggested for mod developers)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. clearobjects extra blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of extra blocks that can be loaded by /clearobjects at once.\n" +"This is a trade-off between sqlite transaction overhead and\n" +"memory consumption (4096=100MB, as a rule of thumb)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unload unused server data" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How much the server will wait before unloading unused mapblocks.\n" +"Higher value is smoother, but will use more RAM." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum objects per block" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of statically stored objects in a block." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Synchronous SQLite" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dedicated server step" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick and the interval at which objects are generally " +"updated over\n" +"network." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between active block management cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ABM interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between Active Block Modifier (ABM) execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ignore world errors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, invalid world data won't cause the server to shut down.\n" +"Only enable this if you know what you are doing." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid loop max" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max liquids processed per step." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid queue purge time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time (in seconds) that the liquids queue may grow beyond processing\n" +"capacity until an attempt is made to decrease its size by dumping old queue\n" +"items. A value of 0 disables the functionality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update tick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update interval in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block send optimize distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"At this distance the server will aggressively optimize which blocks are sent " +"to\n" +"clients.\n" +"Small values potentially improve performance a lot, at the expense of " +"visible\n" +"rendering glitches (some blocks will not be rendered under water and in " +"caves,\n" +"as well as sometimes on land).\n" +"Setting this to a value greater than max_block_send_distance disables this\n" +"optimization.\n" +"Stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server side occlusion culling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled the server will perform map block occlusion culling based on\n" +"on the eye position of the player. This can reduce the number of blocks\n" +"sent to the client 50-80%. The client will not longer receive most " +"invisible\n" +"so that the utility of noclip mode is reduced." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side modding restrictions" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Restricts the access of certain client-side functions on servers.\n" +"Combine the byteflags below to restrict client-side features, or set to 0\n" +"for no restrictions:\n" +"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n" +"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n" +"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n" +"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n" +"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n" +"csm_restriction_noderange)\n" +"READ_PLAYERINFO: 32 (disable get_player_names call client-side)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side node lookup range restriction" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the CSM restriction for node range is enabled, get_node calls are " +"limited\n" +"to this distance from the player to the node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prevent mods from doing insecure things like running shell commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trusted mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of trusted mods that are allowed to access insecure\n" +"functions even when mod security is on (via request_insecure_environment())." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HTTP mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Load the game profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Load the game profiler to collect game profiling data.\n" +"Provides a /profiler command to access the compiled profile.\n" +"Useful for mod developers and server operators." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default report format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The default format in which profiles are being saved,\n" +"when calling `/profiler save [format]` without format." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Report path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The file path relative to your worldpath in which profiles will be saved to." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrumentation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Entity methods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument the methods of entities on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Active Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Loading Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Loading Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chatcommands" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument chatcommands on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Global callbacks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument global callback functions on registration.\n" +"(anything you pass to a minetest.register_*() function)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Builtin" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument builtin.\n" +"This is usually only needed by core/builtin contributors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Have the profiler instrument itself:\n" +"* Instrument an empty function.\n" +"This estimates the overhead, that instrumentation is adding (+1 function " +"call).\n" +"* Instrument the sampler being used to update the statistics." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client and Server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the player.\n" +"When running a server, clients connecting with this name are admins.\n" +"When starting from the main menu, this is overridden." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Language" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the language. Leave empty to use the system language.\n" +"A restart is required after changing this." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Level of logging to be written to debug.txt:\n" +"- (no logging)\n" +"- none (messages with no level)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log file size threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the file size of debug.txt exceeds the number of megabytes specified in\n" +"this setting when it is opened, the file is moved to debug.txt.1,\n" +"deleting an older debug.txt.1 if it exists.\n" +"debug.txt is only moved if this setting is positive." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable IPv6 support (for both client and server).\n" +"Required for IPv6 connections to work at all." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default timeout for cURL, stated in milliseconds.\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL parallel limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limits number of parallel HTTP requests. Affects:\n" +"- Media fetch if server uses remote_media setting.\n" +"- Serverlist download and server announcement.\n" +"- Downloads performed by main menu (e.g. mod manager).\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum time in ms a file download (e.g. a mod download) may take." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "High-precision FPU" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Changes the main menu UI:\n" +"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, " +"etc.\n" +"- Simple: One singleplayer world, no game or texture pack choosers. May " +"be\n" +"necessary for smaller screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu script" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Replaces the default main menu with a custom one." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Engine profiling data print interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Print the engine's profiling data in regular intervals (in seconds).\n" +"0 = disable. Useful for developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of map generator to be used when creating a new world.\n" +"Creating a world in the main menu will override this.\n" +"Current mapgens in a highly unstable state:\n" +"- The optional floatlands of v7 (disabled by default)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water surface level of the world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block generate distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are generated for clients, stated in mapblocks (16 " +"nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" +"Only mapchunks completely within the mapgen limit are generated.\n" +"Value is stored per-world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome API temperature and humidity noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Temperature variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale temperature variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale humidity variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen v5." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls width of tunnels, a smaller value creates wider tunnels.\n" +"Value >= 10.0 completely disables generation of tunnels and avoids the\n" +"intensive noise calculations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave proportion flooded" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Proportion of large caves that contain liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of cavern upper limit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern taper" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-distance over which caverns expand to full size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines full size of caverns, smaller values create larger caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of biome filler depth." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Factor noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Variation of terrain vertical scale.\n" +"When noise is < -0.55 terrain is near-flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of average terrain surface." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Second of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise that determines number of dungeons per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"The 'snowbiomes' flag enables the new 5 biome system.\n" +"When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" +"the 'jungles' flag is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desert noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Deserts occur when np_biome exceeds this value.\n" +"When the 'snowbiomes' flag is enabled, this is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sandy beaches occur when np_beach exceeds this value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain base noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of lower terrain and seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain higher noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of higher terrain that creates cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Steepness noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height select noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mud noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies depth of biome surface nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas with sandy beaches." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of number of caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines tree areas and tree density." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Apple trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas where trees have apples." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"'ridges' enables the rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain zero level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y of mountain density gradient zero level. Used to shift mountains " +"vertically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain alternative noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain persistence noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Varies roughness of terrain.\n" +"Defines the 'persistence' value for terrain_base and terrain_alt noises." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain and steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of maximum mountain height (in nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge underwater noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines large-scale river channel structure." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining mountain structure and height.\n" +"Also defines structure of floatland mountain terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining structure of river canyon walls." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen Carpathian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the base ground level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the depth of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River valley width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river valley." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Second of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness3 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Third of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness4 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fourth of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rolling hills spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of rolling hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of ridged mountain ranges." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of step mountain ranges." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rolling hill size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of rolling hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridged mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of ridged mountains." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of step mountains." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that locates the river valleys and channels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain variation noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Flat.\n" +"Occasional lakes and hills can be added to the flat world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines location and terrain of optional hills and lakes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Fractal.\n" +"'terrain' enables the generation of non-fractal terrain:\n" +"ocean, islands and underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fractal type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Selects one of 18 fractal types.\n" +"1 = 4D \"Roundy\" Mandelbrot set.\n" +"2 = 4D \"Roundy\" Julia set.\n" +"3 = 4D \"Squarry\" Mandelbrot set.\n" +"4 = 4D \"Squarry\" Julia set.\n" +"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" Julia set.\n" +"7 = 4D \"Variation\" Mandelbrot set.\n" +"8 = 4D \"Variation\" Julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n" +"11 = 3D \"Christmas Tree\" Mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" Julia set.\n" +"13 = 3D \"Mandelbulb\" Mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" Julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" Julia set.\n" +"17 = 4D \"Mandelbulb\" Mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" Julia set." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Increasing this increases the amount of fine detail, but also\n" +"increases processing load.\n" +"At iterations = 20 this mapgen has a similar load to mapgen V7." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) scale of fractal in nodes.\n" +"Actual fractal size will be 2 to 3 times larger.\n" +"These numbers can be made very large, the fractal does\n" +"not have to fit inside the world.\n" +"Increase these to 'zoom' into the detail of the fractal.\n" +"Default is for a vertically-squashed shape suitable for\n" +"an island, set all 3 numbers equal for the raw shape." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" +"Can be used to move a desired point to (0, 0) to create a\n" +"suitable spawn point, or to allow 'zooming in' on a desired\n" +"point by increasing 'scale'.\n" +"The default is tuned for a suitable spawn point for Mandelbrot\n" +"sets with default parameters, it may need altering in other\n" +"situations.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slice w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"W coordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"X component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Y component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Z component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"W component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Seabed noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill': Reduces heat with altitude.\n" +"'humid_rivers': Increases humidity around rivers.\n" +"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n" +"to become shallower and occasionally dry.\n" +"'altitude_dry': Reduces humidity with altitude." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Altitude chill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n" +"enabled. Also the vertical distance over which humidity drops by 10 if\n" +"'altitude_dry' is enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern upper limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How deep to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other biome filler node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base terrain height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n" +"WARNING!: There is no benefit, and there are several dangers, in\n" +"increasing this value above 5.\n" +"Reducing this value increases cave and dungeon density.\n" +"Altering this value is for special usage, leaving it unchanged is\n" +"recommended." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dump the mapgen debug information." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Absolute limit of emerge queues" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of blocks that can be queued for loading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Limit of emerge queues on disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be loaded from file.\n" +"Set to blank for an appropriate amount to be chosen automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Limit of emerge queues to generate" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be generated.\n" +"Set to blank for an appropriate amount to be chosen automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of emerge threads" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of emerge threads to use.\n" +"WARNING: Currently there are multiple bugs that may cause crashes when\n" +"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" +"strongly recommended this value is set to the default '1'.\n" +"Value 0:\n" +"- Automatic selection. The number of emerge threads will be\n" +"- 'number of processors - 2', with a lower limit of 1.\n" +"Any other value:\n" +"- Specifies the number of emerge threads, with a lower limit of 1.\n" +"WARNING: Increasing the number of emerge threads increases engine mapgen\n" +"speed, but this may harm game performance by interfering with other\n" +"processes, especially in singleplayer and/or when running Lua code in\n" +"'on_generated'. For many users the optimum setting may be '1'." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Online Content Repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The URL for the content repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB Flag Blacklist" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of flags to hide in the content repository.\n" +"\"nonfree\" can be used to hide packages which do not qualify as 'free " +"software',\n" +"as defined by the Free Software Foundation.\n" +"You can also specify content ratings.\n" +"These flags are independent from Minetest versions,\n" +"so see a full list at https://content.minetest.net/help/content_flags/" +msgstr "" From 0f44dbe60d24f224b6b66952af5ded81f936b3e5 Mon Sep 17 00:00:00 2001 From: Eyekay49 Date: Tue, 7 Apr 2020 16:43:09 +0000 Subject: [PATCH 282/424] Translated using Weblate (Hindi) Currently translated at 6.5% (85 of 1288 strings) --- po/hi/minetest.po | 896 ++++++++++++++++++++++++---------------------- 1 file changed, 477 insertions(+), 419 deletions(-) diff --git a/po/hi/minetest.po b/po/hi/minetest.po index db961d668..7cc989754 100644 --- a/po/hi/minetest.po +++ b/po/hi/minetest.po @@ -8,114 +8,118 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2020-05-02 07:11+0000\n" +"Last-Translator: Eyekay49 \n" +"Language-Team: Hindi \n" "Language: hi\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 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" -msgstr "" +msgstr "आपकी मौत हो गयी" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" -msgstr "" +msgstr "वापस ज़िंदा होएं" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "सर्वर वापस कनेक्ट करना चाहता है :" #: builtin/fstk/ui.lua msgid "Reconnect" -msgstr "" +msgstr "वापस कनेक्ट करें" #: builtin/fstk/ui.lua msgid "Main menu" -msgstr "" +msgstr "मुख्य पृष्ठ" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" -msgstr "" +msgstr "Lua कोड में यह परेशानी हुई :" #: builtin/fstk/ui.lua msgid "An error occurred:" -msgstr "" +msgstr "एक खराबी हो गयी :" #: builtin/fstk/ui.lua msgid "Ok" -msgstr "" +msgstr "ठीक है" #: builtin/mainmenu/common.lua src/client/game.cpp msgid "Loading..." -msgstr "" +msgstr "लोड हो रहा है ..." #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +"सार्वजनिक सर्वर शृंखला (सर्वर लिस्ट) को 'हां' करें और इंटरनेट कनेक्शन जांचें।" #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "सर्वर केवल प्रोटोकॉल $1 से $2 ही लेता है। " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "सर्वर केवल प्रोटोकॉल $1 लेता है। " #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "हम प्रोटोकॉल $1 से $2 ही लेते हैं।" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "हम केवल प्रोटोकॉल $1 ही लेते हैं।" #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "प्रोटोकॉल संख्या एक नहीं है। " #: builtin/mainmenu/dlg_config_world.lua msgid "World:" -msgstr "" +msgstr "दुनिया :" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "" +msgstr "माॅडपैक ने अपने बारे में कुछ नहीं बताया।" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr "" +msgstr "खेल ने अपने बारे में कुछ नहीं बताया।" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" -msgstr "" +msgstr "माॅड :" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" -msgstr "" +msgstr "कोई (अनावश्यक) निर्भरताएं नहीं हैं" #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" -msgstr "" +msgstr "कोई आवश्यक निर्भरताएं नहीं" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "" +msgstr "अनावश्यक निर्भरताएं :" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Dependencies:" -msgstr "" +msgstr "निर्भरताएं :" #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" -msgstr "" +msgstr "कोई अनावश्यक निर्भरताएं नहीं" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp msgid "Save" -msgstr "" +msgstr "सेव करें" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_delete_content.lua @@ -125,228 +129,232 @@ msgstr "" #: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp #: src/gui/guiPasswordChange.cpp msgid "Cancel" -msgstr "" +msgstr "रोकें" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "" +msgstr "माॅडपैक रोकें" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "" +msgstr "माॅडपैक चालू करें" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" -msgstr "" +msgstr "चालू" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" -msgstr "" +msgstr "प्रत्येक रोकें" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "" +msgstr "प्रत्येक चालू करें" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" +"मना किए गए वर्णों के कारण माॅड \"$1\" चालू नहीं हो सका। कृपया [a-z0-9] " +"अंग्रेजी वर्ण का ही प्रयोग करें।" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" -msgstr "" +msgstr "सभी पैकेज" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Games" -msgstr "" +msgstr "अनेक खेल" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Mods" -msgstr "" +msgstr "माॅड" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" -msgstr "" +msgstr "कला संकुल" #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" -msgstr "" +msgstr "$1 का डाऊनलोड असफल हुआ" #: builtin/mainmenu/dlg_contentstore.lua msgid "Downloading and installing $1, please wait..." -msgstr "" +msgstr "$1 का डाऊनलोड व इन्स्टाल चल रहा है, कृपया ठहरें ..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Back" -msgstr "" +msgstr "पीछे" #: builtin/mainmenu/dlg_contentstore.lua msgid "Install" -msgstr "" +msgstr "इन्स्टाल करें" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update" -msgstr "" +msgstr "नया संस्करण इन्स्टाल करें" #: builtin/mainmenu/dlg_contentstore.lua msgid "Uninstall" -msgstr "" +msgstr "हटाऐं" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua msgid "Search" -msgstr "" +msgstr "ढूंढें" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" -msgstr "" +msgstr "वापस मुख्य पृष्ठ पर जाएं" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" -msgstr "" +msgstr "कुछ नहीं मिला" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "" +msgstr "कोई पैकेज नहीं ला पाया गया" #: builtin/mainmenu/dlg_create_world.lua msgid "World name" -msgstr "" +msgstr "दुनिया का नाम" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Seed" -msgstr "" +msgstr "स्रोत" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "" +msgstr "नक्शा स्रोत" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" -msgstr "" +msgstr "खेल" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" -msgstr "" +msgstr "बनाइए" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no games installed." -msgstr "" +msgstr "आपने कोई खेल इन्स्टाल नहीं किया है।" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "" +msgstr "आप किसी भी खेल को minetest.net से डाऊनलोड कर सकते हैं" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." msgstr "" +"चेतावनी : न्यूनतम विकास खेल (Minimal development test) खेल बनाने वालों के लि" +"ए है।" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "" +msgstr "मैनटेस्ट खेल जैसे अन्य खेल minetest.net से डाऊनलोड किए जा सकते हैं" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" -msgstr "" +msgstr "\"$1\" नामक दुनिया पहले से ही है" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" -msgstr "" +msgstr "कोई खेल चूना नहीं गया है" #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "" +msgstr "क्या आप सचमुच \"$1\" को रद्द करना चाहते हैं?" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua #: src/client/keycode.cpp msgid "Delete" -msgstr "" +msgstr "रद्द करें" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" -msgstr "" +msgstr "pkgmgr: \"$1\" रद्द नहीं किया जा सका" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" -msgstr "" +msgstr "pkgmgr: \"$1\" फाईल पार गलत है" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" -msgstr "" +msgstr "दुनिया रद्द करें?" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" -msgstr "" +msgstr "हां" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." -msgstr "" +msgstr "modpack.conf फाईल में इस माॅडपैक को जो नाम दिया गया है वही माना जाएगा।" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "" +msgstr "माॅडपैक का नाम बदलें :" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Disabled" -msgstr "" +msgstr "रुका हुआ" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Enabled" -msgstr "" +msgstr "चालू" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Browse" -msgstr "" +msgstr "ढूंढें" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" -msgstr "" +msgstr "आफसेट" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" -msgstr "" +msgstr "स्केल" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" -msgstr "" +msgstr "X स्प्रेड" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" -msgstr "" +msgstr "Y स्प्रेड" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "" +msgstr "द्वि आयामी नॉइस" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" -msgstr "" +msgstr "Z स्प्रेड" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Octaves" -msgstr "" +msgstr "सप्टक (आक्टेव)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" -msgstr "" +msgstr "हठ (पर्सिस्टेन्स)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Lacunarity" -msgstr "" +msgstr "लैकुनारिटी" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options #. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" -msgstr "" +msgstr "डीफाल्ट" #. ~ "eased" is a noise parameter flag. #. It is used to make the map smoother and @@ -354,7 +362,7 @@ msgstr "" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" -msgstr "" +msgstr "आरामदायक (ईज़्ड)" #. ~ "absvalue" is a noise parameter flag. #. It is short for "absolute value". @@ -362,512 +370,512 @@ msgstr "" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" -msgstr "" +msgstr "एब्सोल्यूट वैल्यू" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" -msgstr "" +msgstr "एक्स" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" -msgstr "" +msgstr "वाई" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" -msgstr "" +msgstr "जेड" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" -msgstr "" +msgstr "(सेटिंग के बारे में कुछ नहीं बताया गया है)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." -msgstr "" +msgstr "कृपया एक पूर्णांक (integer) भरें।" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must be at least $1." -msgstr "" +msgstr "इसका मूल्य कम-से-कम $1 होना चाहिए।" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must not be larger than $1." -msgstr "" +msgstr "इसका मूल्य $1 से अधिक नहीं होना चाहिए।" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid number." -msgstr "" +msgstr "कृपया एक अंक भरें।" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select directory" -msgstr "" +msgstr "फाईल पाथ चुनें" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select file" -msgstr "" +msgstr "फाईल चुनें" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" -msgstr "" +msgstr "वापस सेटिंग पृष्ठ पर जाएं" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Edit" -msgstr "" +msgstr "बदलें" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Restore Default" -msgstr "" +msgstr "मूल चुनें" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Show technical names" -msgstr "" +msgstr "तकनीकी नाम देखें" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" -msgstr "" +msgstr "($1) चालू" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "" +msgstr "$1 कला संकुल के रूप में इन्स्टाल नहीं किया जा सका" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" -msgstr "" +msgstr "$2 में $1 को इन्स्टाल नहीं किया जा सका" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to find a valid mod or modpack" -msgstr "" +msgstr "सही माॅड या माॅडपैक नहीं ढूंढ पाया गया" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a modpack as a $1" -msgstr "" +msgstr "माॅडपैक को $1 के रूप में इन्स्टाल नहीं किया जा सका" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" -msgstr "" +msgstr "माॅड इन्स्टाल: माॅडपैक $1 के लिए सही फोल्डर नहीं ढूंढा जा सका" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a mod as a $1" -msgstr "" +msgstr "मॉड को $1 के रूप में इन्स्टाल नहीं किया जा सका" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "" +msgstr "इन्स्टाल मॉड: $1 का असल नाम नहीं जान पाया गया" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" -msgstr "" +msgstr "खेल को $1 के रूप में इन्स्टाल नहीं किया जा सका" #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" -msgstr "" +msgstr "इन्स्टाल : फाईल : \"$1\"" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" -msgstr "" +msgstr "इन्स्टाल : \"$1\" का फाईल टाईप अंजान है याफिर आरकाइव खराब है" #: builtin/mainmenu/pkgmgr.lua msgid "$1 mods" -msgstr "" +msgstr "$1 यह सब मॉड" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" -msgstr "" +msgstr "इन्स्टाल किये गये पैकेज :" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "" +msgstr "नेट पर वस्तुएं ढूंढें" #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "" +msgstr "पैकेज के बारे में कुछ नहीं बताया गया है" #: builtin/mainmenu/tab_content.lua msgid "Rename" -msgstr "" +msgstr "नाम बदलें" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "" +msgstr "कोई निर्भर्ताएं नहीं हैं|" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" -msgstr "" +msgstr "कला संकुल रोकें" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" -msgstr "" +msgstr "कला संकुल चालू करें" #: builtin/mainmenu/tab_content.lua msgid "Information:" -msgstr "" +msgstr "जानकारी :" #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" -msgstr "" +msgstr "पैकेज हटाएं" #: builtin/mainmenu/tab_content.lua msgid "Content" -msgstr "" +msgstr "वस्तुएं" #: builtin/mainmenu/tab_credits.lua msgid "Credits" -msgstr "" +msgstr "आभार सूची" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "" +msgstr "मुख्य डेवेलपर" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "" +msgstr "सक्रिय सहायक" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "" +msgstr "पूर्व मुख्य डेवेलपर" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "" +msgstr "पूर्व सहायक" #: builtin/mainmenu/tab_local.lua msgid "Configure" -msgstr "" +msgstr "सेटिंग बदलें" #: builtin/mainmenu/tab_local.lua msgid "New" -msgstr "" +msgstr "नया" #: builtin/mainmenu/tab_local.lua msgid "Select World:" -msgstr "" +msgstr "दुनिया चुन्हें :" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative Mode" -msgstr "" +msgstr "असीमित संसाधन" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Enable Damage" -msgstr "" +msgstr "हानि व मृत्यु हो सकती है" #: builtin/mainmenu/tab_local.lua msgid "Host Server" -msgstr "" +msgstr "सर्वर चलाएं" #: builtin/mainmenu/tab_local.lua msgid "Host Game" -msgstr "" +msgstr "खेल चलाएं" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" -msgstr "" +msgstr "सर्वर सार्वजनिक सर्वर सूची (server list) में दिखे" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" -msgstr "" +msgstr "नाम/पासवर्ड" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" -msgstr "" +msgstr "बाईंड एड्रेस" #: builtin/mainmenu/tab_local.lua msgid "Port" -msgstr "" +msgstr "पोर्ट" #: builtin/mainmenu/tab_local.lua msgid "Server Port" -msgstr "" +msgstr "सर्वर पोर्ट" #: builtin/mainmenu/tab_local.lua msgid "Play Game" -msgstr "" +msgstr "खेल खेलें" #: builtin/mainmenu/tab_local.lua msgid "No world created or selected!" -msgstr "" +msgstr "कोई दुनिया उपस्थित या चुनी गयी नहीं है !" #: builtin/mainmenu/tab_local.lua msgid "Start Game" -msgstr "" +msgstr "खेल शुरू करें" #: builtin/mainmenu/tab_online.lua msgid "Address / Port" -msgstr "" +msgstr "ऐडरेस / पोर्ट" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Name / Password" -msgstr "" +msgstr "नाम/पासवर्ड" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" -msgstr "" +msgstr "कनेक्ट करें" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Del. Favorite" -msgstr "" +msgstr "पसंद हटाएं" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Favorite" -msgstr "" +msgstr "पसंद" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Ping" -msgstr "" +msgstr "पिंग" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative mode" -msgstr "" +msgstr "असीमित संसाधन" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Damage enabled" -msgstr "" +msgstr "हानि व मृत्यु हो सकती है" #. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "" +msgstr "खिलाडियों में मारा-पीटी की अनुमती है" #: builtin/mainmenu/tab_online.lua msgid "Join Game" -msgstr "" +msgstr "खेल में शामिल होएं" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Leaves" -msgstr "" +msgstr "अपारदर्शी पत्ते" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" -msgstr "" +msgstr "मामूली पत्ते" #: builtin/mainmenu/tab_settings.lua msgid "Fancy Leaves" -msgstr "" +msgstr "रोचक पत्ते" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" -msgstr "" +msgstr "डिब्बों की रूपरेखा" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" -msgstr "" +msgstr "डिब्बें उजाले हों" #: builtin/mainmenu/tab_settings.lua msgid "None" -msgstr "" +msgstr "कुछ नहीं" #: builtin/mainmenu/tab_settings.lua msgid "No Filter" -msgstr "" +msgstr "कोई फिल्टर नहीं" #: builtin/mainmenu/tab_settings.lua msgid "Bilinear Filter" -msgstr "" +msgstr "द्विरेखिय फिल्टर" #: builtin/mainmenu/tab_settings.lua msgid "Trilinear Filter" -msgstr "" +msgstr "त्रिरेखीय फिल्टर" #: builtin/mainmenu/tab_settings.lua msgid "No Mipmap" -msgstr "" +msgstr "मिपमैप नहीं हो" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap" -msgstr "" +msgstr "मिपमैप" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap + Aniso. Filter" -msgstr "" +msgstr "मिपमैप व अनीसो. फिल्टर" #: builtin/mainmenu/tab_settings.lua msgid "2x" -msgstr "" +msgstr "दुग्ना" #: builtin/mainmenu/tab_settings.lua msgid "4x" -msgstr "" +msgstr "चार गुना" #: builtin/mainmenu/tab_settings.lua msgid "8x" -msgstr "" +msgstr "आठ गुना" #: builtin/mainmenu/tab_settings.lua msgid "Are you sure to reset your singleplayer world?" -msgstr "" +msgstr "क्या आप सचमुच अपने एक-खिलाडी दुनिया रद्द करना चाहते हैं?" #: builtin/mainmenu/tab_settings.lua msgid "Yes" -msgstr "" +msgstr "हां" #: builtin/mainmenu/tab_settings.lua msgid "No" -msgstr "" +msgstr "नहीं" #: builtin/mainmenu/tab_settings.lua msgid "Smooth Lighting" -msgstr "" +msgstr "चिकना उजाला" #: builtin/mainmenu/tab_settings.lua msgid "Particles" -msgstr "" +msgstr "कण" #: builtin/mainmenu/tab_settings.lua msgid "3D Clouds" -msgstr "" +msgstr "त्रिविम दृश्यन बादल" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Water" -msgstr "" +msgstr "अपारदर्शी पानी" #: builtin/mainmenu/tab_settings.lua msgid "Connected Glass" -msgstr "" +msgstr "जुडे शिशे" #: builtin/mainmenu/tab_settings.lua msgid "Texturing:" -msgstr "" +msgstr "कला बनावट :" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" -msgstr "" +msgstr "ऐन्टी एलियासिंग :" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" -msgstr "" +msgstr "स्क्रीन :" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" -msgstr "" +msgstr "स्क्रीन परिमाण स्वयं सेव हो" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Shaders" -msgstr "" +msgstr "छाया बनावट" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" -msgstr "" +msgstr "छाया बनावट (अनुपलब्ध)" #: builtin/mainmenu/tab_settings.lua msgid "Reset singleplayer world" -msgstr "" +msgstr "एक-खिलाडी दुनिया रीसेट करें" #: builtin/mainmenu/tab_settings.lua src/client/game.cpp msgid "Change Keys" -msgstr "" +msgstr "की बदलें" #: builtin/mainmenu/tab_settings.lua msgid "All Settings" -msgstr "" +msgstr "सभी सेटिंग देखें" #: builtin/mainmenu/tab_settings.lua msgid "Touchthreshold: (px)" -msgstr "" +msgstr "छूने की त्रिज्या : (px)" #: builtin/mainmenu/tab_settings.lua msgid "Bump Mapping" -msgstr "" +msgstr "टकराव मैपिंग" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" -msgstr "" +msgstr "टोन मैपिंग" #: builtin/mainmenu/tab_settings.lua msgid "Generate Normal Maps" -msgstr "" +msgstr "मामूली नक्शे बनाएं" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Parallax Occlusion" -msgstr "" +msgstr "पेरलेक्स ऑक्लूजन" #: builtin/mainmenu/tab_settings.lua msgid "Waving Liquids" -msgstr "" +msgstr "पानी में लहरें बनें" #: builtin/mainmenu/tab_settings.lua msgid "Waving Leaves" -msgstr "" +msgstr "पत्ते लहराएं" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" -msgstr "" +msgstr "पाैधे लहराएं" #: builtin/mainmenu/tab_settings.lua msgid "To enable shaders the OpenGL driver needs to be used." -msgstr "" +msgstr "छाया बनावट कॆ लिये OpenGL ड्राईवर आवश्यक हैं|" #: builtin/mainmenu/tab_settings.lua msgid "Settings" -msgstr "" +msgstr "सेटिंग" #: builtin/mainmenu/tab_simple_main.lua msgid "Start Singleplayer" -msgstr "" +msgstr "एक-खिलाडी शुरू करें" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" -msgstr "" +msgstr "मॉड कॆ सेटिंग बदलें" #: builtin/mainmenu/tab_simple_main.lua msgid "Main" -msgstr "" +msgstr "मुख्य" #: src/client/client.cpp msgid "Connection timed out." -msgstr "" +msgstr "कनेक्शन समय अंत|" #: src/client/client.cpp msgid "Loading textures..." -msgstr "" +msgstr "कला लोड हो रही है ..." #: src/client/client.cpp msgid "Rebuilding shaders..." -msgstr "" +msgstr "छायाएं वापस बन रहीं हैं ..." #: src/client/client.cpp msgid "Initializing nodes..." -msgstr "" +msgstr "डिब्बे बन रहें हैं ..." #: src/client/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "डीब्बे बन रहे हें" #: src/client/client.cpp msgid "Done!" -msgstr "" +msgstr "हो गया !" #: src/client/clientlauncher.cpp msgid "Main Menu" -msgstr "" +msgstr "मुख्य पृ़ष्ठ" #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr "खिलाडी का नाम अधिक लंबा है|" #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" -msgstr "" +msgstr "कनेक्शन खराबी (समय अंत?)" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "" +msgstr "पासवर्ड फाईल नहीं खुला :- " #: src/client/clientlauncher.cpp msgid "Please choose a name!" -msgstr "" +msgstr "कृपया एक नाम चुनें!" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "" +msgstr "कोई दुनिया नहीं चुनी गयी है, ना ही पता दिया गया है। कुछ नहीं करना।" #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " -msgstr "" +msgstr "दुनिया का फाईल पाथ नहीं है : " #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "" +msgstr "खेल ढूंढा ना जा सका या लोड नहीं किया जा सका \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "" +msgstr "गलत गेमस्पेक कोड।" #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string. Put either "no" or "yes" @@ -879,223 +887,223 @@ msgstr "" #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "yes" #: src/client/game.cpp msgid "Shutting down..." -msgstr "" +msgstr "शट डाउन हो रहा है ..." #: src/client/game.cpp msgid "Creating server..." -msgstr "" +msgstr "सर्वर बनाया जा रहा है ..." #: src/client/game.cpp msgid "Creating client..." -msgstr "" +msgstr "क्लाइंट बनाया जा रहा है ..." #: src/client/game.cpp msgid "Resolving address..." -msgstr "" +msgstr "एड्रेस समझा जा रहा है ..." #: src/client/game.cpp msgid "Connecting to server..." -msgstr "" +msgstr "सर्वर से कनेक्ट हुआ जा रहा है ..." #: src/client/game.cpp msgid "Item definitions..." -msgstr "" +msgstr "वस्तुओं के अर्थ ..." #: src/client/game.cpp msgid "Node definitions..." -msgstr "" +msgstr "डिब्बों का अर्थ ..." #: src/client/game.cpp msgid "Media..." -msgstr "" +msgstr "कला एवं आवाज़ें ..." #: src/client/game.cpp msgid "KiB/s" -msgstr "" +msgstr "कि॰बी॰/एस॰" #: src/client/game.cpp msgid "MiB/s" -msgstr "" +msgstr "एम॰ आई॰ बी॰/ एस॰" #: src/client/game.cpp msgid "Client side scripting is disabled" -msgstr "" +msgstr "क्लाइंट की तरफ से स्क्रिप्ट लगाना मना है" #: src/client/game.cpp msgid "Sound muted" -msgstr "" +msgstr "आवाज़ बंद" #: src/client/game.cpp msgid "Sound unmuted" -msgstr "" +msgstr "आवाज चालू" #: src/client/game.cpp #, c-format msgid "Volume changed to %d%%" -msgstr "" +msgstr "वॉल्यूम को बदलकर %d%%" #: src/client/game.cpp src/gui/modalMenu.cpp msgid "ok" -msgstr "" +msgstr "ठीक है" #: src/client/game.cpp msgid "Fly mode enabled" -msgstr "" +msgstr "उड़ान उपलब्ध है" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "" +msgstr "उड़ान उपलब्ध है (सूचना: आपके पास 'उड़ान' विशेषाधिकार नहीं है)" #: src/client/game.cpp msgid "Fly mode disabled" -msgstr "" +msgstr "उड़ान अनुपलब्ध है" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "" +msgstr "पिच चलन चालू" #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "" +msgstr "पिच चलन रुका हुआ" #: src/client/game.cpp msgid "Fast mode enabled" -msgstr "" +msgstr "तेज जलन चालू" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "" +msgstr "तेज चैनल चालू (सूचना: आपके पास 'तेज' विशेषाधिकार नहीं है)" #: src/client/game.cpp msgid "Fast mode disabled" -msgstr "" +msgstr "तेज चलन रुका हुआ" #: src/client/game.cpp msgid "Noclip mode enabled" -msgstr "" +msgstr "तरल चाल चालू" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "" +msgstr "तरल चाल चालू (सूचना: आपके पास तरल विशेषाधिकार नहीं है)" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "" +msgstr "तरल चाल रुका हुआ" #: src/client/game.cpp msgid "Cinematic mode enabled" -msgstr "" +msgstr "सिनेमा चाल चालू" #: src/client/game.cpp msgid "Cinematic mode disabled" -msgstr "" +msgstr "सिनेमा चाल रुका हुआ" #: src/client/game.cpp msgid "Automatic forward enabled" -msgstr "" +msgstr "स्वचाल चालू" #: src/client/game.cpp msgid "Automatic forward disabled" -msgstr "" +msgstr "स्वचाल रुका हुआ" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x1" -msgstr "" +msgstr "छोटा नक्शा जमीन मोड, 1 गुना ज़ूम" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x2" -msgstr "" +msgstr "छोटा नक्शा जमीन मोड, दोगुना जूम" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x4" -msgstr "" +msgstr "छोटा नक्शा जमीन मोड, 4 गुना जून" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" -msgstr "" +msgstr "छोटा नक्शा रेडार मोड, 1 गुना ज़ूम" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x2" -msgstr "" +msgstr "छोटा नक्शा रेडर मोड, दोगुना जूम" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x4" -msgstr "" +msgstr "छोटा नक्शा रेडार मोड, 4 गुना ज़ूम" #: src/client/game.cpp msgid "Minimap hidden" -msgstr "" +msgstr "छोटा नक्शा गायब" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "" +msgstr "खेल या मॉड़ के वजह से छोटा नक्शा मना है" #: src/client/game.cpp msgid "Fog disabled" -msgstr "" +msgstr "कोहरा रुका हुआ" #: src/client/game.cpp msgid "Fog enabled" -msgstr "" +msgstr "कोहरा चालू" #: src/client/game.cpp msgid "Debug info shown" -msgstr "" +msgstr "डीबग जानकारी दिखाई दे रही है" #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "" +msgstr "प्रोफाईलर दिखाई दे रहा है" #: src/client/game.cpp msgid "Wireframe shown" -msgstr "" +msgstr "डिब्बे रेखांकित" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" -msgstr "" +msgstr "डीबग जानकारी, प्रोफाइलर व रूपरेखा गायब" #: src/client/game.cpp msgid "Debug info and profiler graph hidden" -msgstr "" +msgstr "डीबग जानकारी व प्रोफाइल गायब" #: src/client/game.cpp msgid "Camera update disabled" -msgstr "" +msgstr "कैमरा रुका हुआ" #: src/client/game.cpp msgid "Camera update enabled" -msgstr "" +msgstr "कैमरा चालू" #: src/client/game.cpp #, c-format msgid "Viewing range is at maximum: %d" -msgstr "" +msgstr "दृष्टि सीमा अधिकतम : %d" #: src/client/game.cpp #, c-format msgid "Viewing range changed to %d" -msgstr "" +msgstr "दृष्टि सीमा बदलकर %d है" #: src/client/game.cpp #, c-format msgid "Viewing range is at minimum: %d" -msgstr "" +msgstr "दृष्टि सीमा न्यूनतम : %d" #: src/client/game.cpp msgid "Enabled unlimited viewing range" -msgstr "" +msgstr "दृष्टि असीमित" #: src/client/game.cpp msgid "Disabled unlimited viewing range" -msgstr "" +msgstr "दृष्टि सीमित" #: src/client/game.cpp msgid "Zoom currently disabled by game or mod" -msgstr "" +msgstr "खेल या मॉड़ के वजह से इस समय ज़ूम मना है" #: src/client/game.cpp msgid "" @@ -1112,6 +1120,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"आम कंट्रोल्स :\n" +"कोई मेनू खुला नहीं है :\n" +"-एक बार टैप : बटन दबेगा\n" +"-दो टॉप: डालना/ इस्तेमाल करना\n" +"-उंगली फिसलाना : मुड़ना\n" +"कोई मेनू या वस्तु सूची खुली है :\n" +"-बाहर दो बार टैप :\n" +"--> बंद\n" +"- ढेर छूएं, स्थान छूएं\n" +"--> ढेर का स्थान बदलने के लिए\n" +"- छुए व खींचे, दूसरी उंगली से टैप करें\n" +"--> एक वस्तु स्थान में डालें\n" #: src/client/game.cpp #, c-format @@ -1131,381 +1151,397 @@ msgid "" "- Mouse wheel: select item\n" "- %s: chat\n" msgstr "" +"कंट्रोल्स:\n" +"- %s : आगे बढ़ने के लिए\n" +"- %s : पीछे जाने के लिए\n" +"- %s : बाय की ओर चलें\n" +"- %s : दाएं की ओर चलें\n" +"- %s : कूदे या चढ़े\n" +"- %s : उतरे / संभल के चलें\n" +"- %s : वस्तु गिराएं\n" +"- %s : वस्तु सूची खोलें\n" +"- : माउस मुड़े देखें\n" +"- : माउस बाय : खोदें / मुक्का मारें\n" +"- : माउस दाहिने : डाले / इस्तेमाल करें\n" +"- : माउस पहिया : वस्तु चुनें\n" +"- %s : बात करने के लिए\n" #: src/client/game.cpp msgid "Continue" -msgstr "" +msgstr "आगे बढ़ें" #: src/client/game.cpp msgid "Change Password" -msgstr "" +msgstr "पासवर्ड बदलें" #: src/client/game.cpp msgid "Game paused" -msgstr "" +msgstr "खेल रुका हुआ है" #: src/client/game.cpp msgid "Sound Volume" -msgstr "" +msgstr "आवाज़ वॉल्यूम" #: src/client/game.cpp msgid "Exit to Menu" -msgstr "" +msgstr "बंद करके मेनू पर जाएं" #: src/client/game.cpp msgid "Exit to OS" -msgstr "" +msgstr "बंद करके ओ॰ एस॰ में जाएं" #: src/client/game.cpp msgid "Game info:" -msgstr "" +msgstr "खेल की जानकारी :" #: src/client/game.cpp msgid "- Mode: " -msgstr "" +msgstr "- तकनीक : " #: src/client/game.cpp msgid "Remote server" -msgstr "" +msgstr "बाहर का सर्वर" #: src/client/game.cpp msgid "- Address: " -msgstr "" +msgstr "- एड्रेस : " #: src/client/game.cpp msgid "Hosting server" -msgstr "" +msgstr "सर्वर चलन" #: src/client/game.cpp msgid "- Port: " -msgstr "" +msgstr "- पोर्ट : " #: src/client/game.cpp msgid "Singleplayer" -msgstr "" +msgstr "एक-खिलाडी" #: src/client/game.cpp msgid "On" -msgstr "" +msgstr "ऑन" #: src/client/game.cpp msgid "Off" -msgstr "" +msgstr "ऑफ" #: src/client/game.cpp msgid "- Damage: " -msgstr "" +msgstr "- हानि : " #: src/client/game.cpp msgid "- Creative Mode: " -msgstr "" +msgstr "- असीमित साधन " #. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " -msgstr "" +msgstr "- खिलाड़ियों में मारा-पीटी : " #: src/client/game.cpp msgid "- Public: " -msgstr "" +msgstr "- सार्वजनिक : " #: src/client/game.cpp msgid "- Server Name: " -msgstr "" +msgstr "- सर्वर का नाम : " #: src/client/game.cpp msgid "" "\n" "Check debug.txt for details." msgstr "" +"\n" +"अधिक जानकारी के लिए debug.txt देखें।" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "" +msgstr "बातें दिखाई देंगी" #: src/client/gameui.cpp msgid "Chat hidden" -msgstr "" +msgstr "बातें दिखाई नहीं देंगी" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "" +msgstr "हे॰अ॰डि॰ दिखाई देंगी" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "" +msgstr "हे॰अ॰डि॰ दिखाई नहीं देंगी" #: src/client/gameui.cpp #, c-format msgid "Profiler shown (page %d of %d)" -msgstr "" +msgstr "प्रोफाईलर दिखाई दे रही है (पृष्ठ %d %d पृष्ठों में से)" #: src/client/gameui.cpp msgid "Profiler hidden" -msgstr "" +msgstr "प्रोफाइलर नहीं दिखाई देगा" #: src/client/keycode.cpp msgid "Left Button" -msgstr "" +msgstr "बायां बटन" #: src/client/keycode.cpp msgid "Right Button" -msgstr "" +msgstr "दाहिना बटन" #: src/client/keycode.cpp msgid "Middle Button" -msgstr "" +msgstr "बीच का बटन" #: src/client/keycode.cpp msgid "X Button 1" -msgstr "" +msgstr "X बटन १" #: src/client/keycode.cpp msgid "X Button 2" -msgstr "" +msgstr "X बटन २" #: src/client/keycode.cpp msgid "Backspace" -msgstr "" +msgstr "बैकस्पेस" #: src/client/keycode.cpp msgid "Tab" -msgstr "" +msgstr "टैब बटन" #: src/client/keycode.cpp msgid "Clear" -msgstr "" +msgstr "खाली करें" #: src/client/keycode.cpp msgid "Return" -msgstr "" +msgstr "रिटर्न बटन" #: src/client/keycode.cpp msgid "Shift" -msgstr "" +msgstr "शिफ्ट" #: src/client/keycode.cpp msgid "Control" -msgstr "" +msgstr "कंट्रोल" #. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" -msgstr "" +msgstr "मेनू (कीबोर्ड)" #: src/client/keycode.cpp msgid "Pause" -msgstr "" +msgstr "पॉज़" #: src/client/keycode.cpp msgid "Caps Lock" -msgstr "" +msgstr "कैप्स लाक" #: src/client/keycode.cpp msgid "Space" -msgstr "" +msgstr "स्पेसबार" #: src/client/keycode.cpp msgid "Page up" -msgstr "" +msgstr "पेज अप" #: src/client/keycode.cpp msgid "Page down" -msgstr "" +msgstr "पेज डाऊन" #: src/client/keycode.cpp msgid "End" -msgstr "" +msgstr "एंड" #: src/client/keycode.cpp msgid "Home" -msgstr "" +msgstr "होम" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Left" -msgstr "" +msgstr "बायां" #: src/client/keycode.cpp msgid "Up" -msgstr "" +msgstr "ऊपर" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Right" -msgstr "" +msgstr "दाहिना" #: src/client/keycode.cpp msgid "Down" -msgstr "" +msgstr "नीचे" #. ~ Key name #: src/client/keycode.cpp msgid "Select" -msgstr "" +msgstr "सिलेक्ट" #. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" -msgstr "" +msgstr "प्रिन्ट बटन" #: src/client/keycode.cpp msgid "Execute" -msgstr "" +msgstr "एग्सीक्यूट" #: src/client/keycode.cpp msgid "Snapshot" -msgstr "" +msgstr "स्नैपशॉट" #: src/client/keycode.cpp msgid "Insert" -msgstr "" +msgstr "इन्सर्ट" #: src/client/keycode.cpp msgid "Help" -msgstr "" +msgstr "हेल्प" #: src/client/keycode.cpp msgid "Left Windows" -msgstr "" +msgstr "लेफ्ट विंडोज" #: src/client/keycode.cpp msgid "Right Windows" -msgstr "" +msgstr "राईट विंडोज" #: src/client/keycode.cpp msgid "Numpad 0" -msgstr "" +msgstr "नम्पैड ०" #: src/client/keycode.cpp msgid "Numpad 1" -msgstr "" +msgstr "नम्पैड १" #: src/client/keycode.cpp msgid "Numpad 2" -msgstr "" +msgstr "नम्पैड २" #: src/client/keycode.cpp msgid "Numpad 3" -msgstr "" +msgstr "नम्पैड ३" #: src/client/keycode.cpp msgid "Numpad 4" -msgstr "" +msgstr "नम्पैड ४" #: src/client/keycode.cpp msgid "Numpad 5" -msgstr "" +msgstr "नम्पैड ५" #: src/client/keycode.cpp msgid "Numpad 6" -msgstr "" +msgstr "नम्पैड ६" #: src/client/keycode.cpp msgid "Numpad 7" -msgstr "" +msgstr "नम्पैड ७" #: src/client/keycode.cpp msgid "Numpad 8" -msgstr "" +msgstr "नम्पैड ८" #: src/client/keycode.cpp msgid "Numpad 9" -msgstr "" +msgstr "नम्पैड ९" #: src/client/keycode.cpp msgid "Numpad *" -msgstr "" +msgstr "नम्पैड *" #: src/client/keycode.cpp msgid "Numpad +" -msgstr "" +msgstr "नम्पैड +" #: src/client/keycode.cpp msgid "Numpad ." -msgstr "" +msgstr "नम्पैड ." #: src/client/keycode.cpp msgid "Numpad -" -msgstr "" +msgstr "नम्पैड -" #: src/client/keycode.cpp msgid "Numpad /" -msgstr "" +msgstr "नम्पैड /" #: src/client/keycode.cpp msgid "Num Lock" -msgstr "" +msgstr "नम लाक" #: src/client/keycode.cpp msgid "Scroll Lock" -msgstr "" +msgstr "स्क्रोल लाक" #: src/client/keycode.cpp msgid "Left Shift" -msgstr "" +msgstr "लेफ्ट शिफ्ट" #: src/client/keycode.cpp msgid "Right Shift" -msgstr "" +msgstr "राईट शिफ्ट" #: src/client/keycode.cpp msgid "Left Control" -msgstr "" +msgstr "बायां कंट्रोल" #: src/client/keycode.cpp msgid "Right Control" -msgstr "" +msgstr "दाहिना" #: src/client/keycode.cpp msgid "Left Menu" -msgstr "" +msgstr "बायां मेनू" #: src/client/keycode.cpp msgid "Right Menu" -msgstr "" +msgstr "दाहिना मेनू" #: src/client/keycode.cpp msgid "IME Escape" -msgstr "" +msgstr "आई एम ई एस्केप" #: src/client/keycode.cpp msgid "IME Convert" -msgstr "" +msgstr "आई एम ई कन्वर्ट" #: src/client/keycode.cpp msgid "IME Nonconvert" -msgstr "" +msgstr "आई एम ई नानकन्वर्ट" #: src/client/keycode.cpp msgid "IME Accept" -msgstr "" +msgstr "आई एम ई एक्सेप्ट" #: src/client/keycode.cpp msgid "IME Mode Change" -msgstr "" +msgstr "आई एम ई मोड चेंज" #: src/client/keycode.cpp msgid "Apps" -msgstr "" +msgstr "एप्स" #: src/client/keycode.cpp msgid "Sleep" -msgstr "" +msgstr "स्लीप" #: src/client/keycode.cpp msgid "Erase EOF" -msgstr "" +msgstr "ई.ओ.एफ खाली करें" #: src/client/keycode.cpp msgid "Play" -msgstr "" +msgstr "खेलें" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Zoom" -msgstr "" +msgstr "ज़ूम" #: src/client/keycode.cpp msgid "OEM Clear" -msgstr "" +msgstr "ओ ई एम क्लीयर" #: src/gui/guiConfirmRegistration.cpp #, c-format @@ -1516,211 +1552,218 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" +"आप \"%s\" नाम से इस सरवर में पहली बार आने वाले हैं। अगर आप आगे बढ़ते हैं तो " +"आपके लिए इस सर्वर पर एक अकाउंट बनाया जाएगा।\n" +"\n" +"आगे बढ़ने ए लिखें कृपया अपने पासवर्ड को वापस लिखें और फिर 'पंजीकरण व खेलें' " +"दबाएं, अथवा 'रोकें' दबाएं।" #: src/gui/guiConfirmRegistration.cpp msgid "Register and Join" -msgstr "" +msgstr "पंजीकरण व खेलें" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" -msgstr "" +msgstr "पासवर्ड अलग अलग हैं!" #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" -msgstr "" +msgstr "आगे बढ़े" #: src/gui/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "" +"कीबोर्ड सेटिंग (अगर यह मेनू खराब हो जाए तो minetest.conf से सब कुछ खाली कर " +"दें)" #: src/gui/guiKeyChangeMenu.cpp msgid "\"Special\" = climb down" -msgstr "" +msgstr "\"स्पेशल\" = नीचे उतरना" #: src/gui/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" -msgstr "" +msgstr "उड़ने के लिए दो बार कूदें" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" -msgstr "" +msgstr "कूदने के लिए बटन दबाना अनावश्यक" #: src/gui/guiKeyChangeMenu.cpp msgid "Key already in use" -msgstr "" +msgstr "की पहले से इस्तेमाल में है" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" -msgstr "" +msgstr "की दबाएं" #: src/gui/guiKeyChangeMenu.cpp msgid "Forward" -msgstr "" +msgstr "आगे जाएं" #: src/gui/guiKeyChangeMenu.cpp msgid "Backward" -msgstr "" +msgstr "पीछे जाएं" #: src/gui/guiKeyChangeMenu.cpp msgid "Special" -msgstr "" +msgstr "स्पेशल" #: src/gui/guiKeyChangeMenu.cpp msgid "Jump" -msgstr "" +msgstr "कूदना" #: src/gui/guiKeyChangeMenu.cpp msgid "Sneak" -msgstr "" +msgstr "संभल के चलना" #: src/gui/guiKeyChangeMenu.cpp msgid "Drop" -msgstr "" +msgstr "वस्तु गिराना" #: src/gui/guiKeyChangeMenu.cpp msgid "Inventory" -msgstr "" +msgstr "वस्तु सूची" #: src/gui/guiKeyChangeMenu.cpp msgid "Prev. item" -msgstr "" +msgstr "पिछली वस्तु" #: src/gui/guiKeyChangeMenu.cpp msgid "Next item" -msgstr "" +msgstr "अगला वस्तु" #: src/gui/guiKeyChangeMenu.cpp msgid "Change camera" -msgstr "" +msgstr "कैमरा बदलना" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle minimap" -msgstr "" +msgstr "छोटा नक्शा" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "" +msgstr "उड़ना" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle pitchmove" -msgstr "" +msgstr "पिच चलन" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fast" -msgstr "" +msgstr "तेज चलन" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "" +msgstr "तरल चाल" #: src/gui/guiKeyChangeMenu.cpp msgid "Mute" -msgstr "" +msgstr "आवाज बंद" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. volume" -msgstr "" +msgstr "आवाज़ कम" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. volume" -msgstr "" +msgstr "आवाज अधिक" #: src/gui/guiKeyChangeMenu.cpp msgid "Autoforward" -msgstr "" +msgstr "स्वचालन" #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" -msgstr "" +msgstr "बातें" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Screenshot" -msgstr "" +msgstr "स्क्रीनशॉट" #: src/gui/guiKeyChangeMenu.cpp msgid "Range select" -msgstr "" +msgstr "दृष्टि सीमा चुनना" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. range" -msgstr "" +msgstr "दृष्टि सीमा कम" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. range" -msgstr "" +msgstr "दृष्टि सीमा अधिक" #: src/gui/guiKeyChangeMenu.cpp msgid "Console" -msgstr "" +msgstr "कन्सोल" #: src/gui/guiKeyChangeMenu.cpp msgid "Command" -msgstr "" +msgstr "आज्ञा" #: src/gui/guiKeyChangeMenu.cpp msgid "Local command" -msgstr "" +msgstr "लोकल कमांड" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" -msgstr "" +msgstr "हे. अ. डि" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle chat log" -msgstr "" +msgstr "बातें दिखना" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fog" -msgstr "" +msgstr "कोहरा" #: src/gui/guiPasswordChange.cpp msgid "Old Password" -msgstr "" +msgstr "पुराना पासवर्ड" #: src/gui/guiPasswordChange.cpp msgid "New Password" -msgstr "" +msgstr "नया पासवर्ड" #: src/gui/guiPasswordChange.cpp msgid "Confirm Password" -msgstr "" +msgstr "पासवर्ड दोबारा लिखें" #: src/gui/guiPasswordChange.cpp msgid "Change" -msgstr "" +msgstr "बदलें" #: src/gui/guiVolumeChange.cpp msgid "Sound Volume: " -msgstr "" +msgstr "आवाज " #: src/gui/guiVolumeChange.cpp msgid "Exit" -msgstr "" +msgstr "निकास" #: src/gui/guiVolumeChange.cpp msgid "Muted" -msgstr "" +msgstr "चुप" #. ~ Imperative, as in "Enter/type in text". #. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " -msgstr "" +msgstr "डालें " #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string which needs to contain the translation's #. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" -msgstr "" +msgstr "hi" #: src/settings_translation_file.cpp msgid "Controls" -msgstr "" +msgstr "कंट्रोल्स" #: src/settings_translation_file.cpp msgid "Build inside player" -msgstr "" +msgstr "खिलाडी पर डिब्बे डालना" #: src/settings_translation_file.cpp msgid "" @@ -1728,40 +1771,46 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"अगर यह चालू होगा तो आप जिस स्थान मैं खडें हैं वही पर डिब्बे डाल सकेंगे |\n" +"यह छोटी जगहों में काम करते वख़्त काम आ सकता है |" #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "उडना" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" "This requires the \"fly\" privilege on the server." msgstr "" +"खिलाडी के असर से मुक्त उड सकेगा |\n" +"इसके लिये \"उडान\" विषेशाधिकार आवश्यक है |" #: src/settings_translation_file.cpp msgid "Pitch move mode" -msgstr "" +msgstr "पिच चलन" #: src/settings_translation_file.cpp msgid "" "If enabled, makes move directions relative to the player's pitch when flying " "or swimming." -msgstr "" +msgstr "चालू होने पर आप जहां देखेंगे उस दिशा को सामने माना जाएगा (पिच चलन)|" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "तेज चलन" #: src/settings_translation_file.cpp msgid "" "Fast movement (via the \"special\" key).\n" "This requires the \"fast\" privilege on the server." msgstr "" +"स्पेशल की दबाने पर आप बहुत तॆज चलने लगेंगे |\n" +"इसके लिये \"तेज\" विषेशाधिकार आवश्यक है |" #: src/settings_translation_file.cpp msgid "Noclip" -msgstr "" +msgstr "तरल चाल" #: src/settings_translation_file.cpp msgid "" @@ -1769,52 +1818,57 @@ msgid "" "nodes.\n" "This requires the \"noclip\" privilege on the server." msgstr "" +"अगर यह उडान के साथ चालू होगा तो आप हर चीज़ के आर-पार उड पाएंगे |\n" +"इसके लिये \"तरल चाल\" विषेशाधिकार आवश्यक है |" #: src/settings_translation_file.cpp msgid "Cinematic mode" -msgstr "" +msgstr "सिनेमा मोड" #: src/settings_translation_file.cpp msgid "" "Smooths camera when looking around. Also called look or mouse smoothing.\n" "Useful for recording videos." msgstr "" +"आपका माउस चिकने तरीके से हिलेगा | इसे माउस या दृष्टि चिकनाई भी कहा जाता है |" +"\n" +"विडियो बनाते वख़्त काम आ सकता है |" #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "केमरा चिकनाई" #: src/settings_translation_file.cpp msgid "Smooths rotation of camera. 0 to disable." -msgstr "" +msgstr "केमरा के मुडने की चिकनाई. मना करने के लिये 0." #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "सिनेमा मोड में केमरा चिकनाई" #: src/settings_translation_file.cpp msgid "Smooths rotation of camera in cinematic mode. 0 to disable." -msgstr "" +msgstr "सिनेमा मोड में केमरा चिकने तरीके से मुडेगा | मना करने के लिये 0." #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "माउस उल्टा" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "माउस ऊपर करने पर केमरा नीचे जाएगा, और नीचे करने पर ऊपर |" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" -msgstr "" +msgstr "माउस संवेदनशीलता" #: src/settings_translation_file.cpp msgid "Mouse sensitivity multiplier." -msgstr "" +msgstr "माउस संवेदनशीलता गुणक।" #: src/settings_translation_file.cpp msgid "Special key for climbing/descending" -msgstr "" +msgstr "चलने उतरने के लिए स्पेशल की" #: src/settings_translation_file.cpp msgid "" @@ -1822,18 +1876,20 @@ msgid "" "down and\n" "descending." msgstr "" +"अगर यहां चालू हुआ तो नीचे उतरने के लिए स्पेशल\n" +"की का इस्तेमाल होगा।" #: src/settings_translation_file.cpp msgid "Double tap jump for fly" -msgstr "" +msgstr "उड़ने के लिए दो बार कूदें" #: src/settings_translation_file.cpp msgid "Double-tapping the jump key toggles fly mode." -msgstr "" +msgstr "दो बार कूदने से उड़ान चलन चालू हो जाता है।" #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "हमेशा उड़ान और तेज" #: src/settings_translation_file.cpp msgid "" @@ -1841,10 +1897,12 @@ msgid "" "are\n" "enabled." msgstr "" +"अगर यह रुका हुआ हुआ तो तेज उड़ने के लिए\n" +"स्पेशल की दबानी पड़ेगी |" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" -msgstr "" +msgstr "राइट क्लिक के दोहराने का समय" #: src/settings_translation_file.cpp msgid "" From d6a2e4136bc931b2e14959b1c3ffe062f430f6cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81cs=20Zolt=C3=A1n?= Date: Wed, 8 Apr 2020 12:26:10 +0000 Subject: [PATCH 283/424] Translated using Weblate (Hungarian) Currently translated at 69.6% (897 of 1288 strings) --- po/hu/minetest.po | 801 ++++++++++++++++++++-------------------------- 1 file changed, 345 insertions(+), 456 deletions(-) diff --git a/po/hu/minetest.po b/po/hu/minetest.po index c1c724e2c..ab60d9b30 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Hungarian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-03 20:24+0000\n" -"Last-Translator: sfan5 \n" +"PO-Revision-Date: 2020-04-08 16:01+0000\n" +"Last-Translator: Ács Zoltán \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -71,11 +71,11 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "Csak $1 protokollverziót támogatunk." +msgstr "Csak $1 protokollverziót támogjuk." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "$1 és $2 közötti protokollverziókat támogatunk." +msgstr "$1 és $2 közötti protokollverziókat támogatjuk." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_delete_content.lua @@ -96,9 +96,8 @@ msgid "Disable all" msgstr "Összes letiltása" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "Disable modpack" -msgstr "Modok letiltása" +msgstr "Modcsomag letiltása" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" @@ -113,7 +112,7 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" -"A(z) „$1” mod engedélyezése sikertelen, mert meg nem engedett karaktereket " +"A(z) „$1” mod engedélyezése sikertelen, mert nem engedélyezett karaktereket " "tartalmaz. Csak az [a-z0-9_] karakterek engedélyezettek." #: builtin/mainmenu/dlg_config_world.lua @@ -240,9 +239,8 @@ msgid "Game" msgstr "Játék" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen" -msgstr "Térkép-előállítás" +msgstr "Térkép generálás" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -282,7 +280,7 @@ msgstr "pkgmr: a(z) „$1” törlése meghiúsult" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" -msgstr "pkgmgr: érvénytelen módútvonal: „$1”" +msgstr "pkgmgr: érvénytelen útvonal: „$1”" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" @@ -342,7 +340,7 @@ msgstr "Oktávok" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" -msgstr "offszet" +msgstr "Eltolás" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" @@ -366,7 +364,7 @@ msgstr "Mérték" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select directory" -msgstr "Útvonal választása" +msgstr "Útvonal kiválasztása" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select file" @@ -425,7 +423,7 @@ msgstr "abszolút érték" #. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" -msgstr "alapértelmezések" +msgstr "alapértelmezett" #. ~ "eased" is a noise parameter flag. #. It is used to make the map smoother and @@ -462,15 +460,15 @@ msgstr "Telepítés: nem támogatott „$1” fájltípus, vagy sérült archív #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" -msgstr "Telepítés: fájl: \"$1\"" +msgstr "Fájl telepítése: \"$1\"" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to find a valid mod or modpack" -msgstr "Nem található érvényes mod, modcsomag" +msgstr "Nem található érvényes mod vagy modcsomag" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "$1 telepítése meghiúsult mint textúracsomag" +msgstr "$1 textúracsomag telepítése meghiúsult" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" @@ -502,15 +500,15 @@ msgstr "információ:" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" -msgstr "Telepített csomagok :" +msgstr "Telepített csomagok:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "Nincsenek függőségek." +msgstr "Nincsenek függőségei." #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "Nincs elérhető csomag leírás" +msgstr "Nincs elérhető csomagleírás" #: builtin/mainmenu/tab_content.lua msgid "Rename" @@ -663,7 +661,7 @@ msgstr "8x" #: builtin/mainmenu/tab_settings.lua msgid "All Settings" -msgstr "Összes beállítás" +msgstr "Minden beállítás" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" @@ -723,7 +721,7 @@ msgstr "Nincs Mipmap" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" -msgstr "Blokk kiemelés" +msgstr "Node kiemelés" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" @@ -836,11 +834,11 @@ msgstr "Kész!" #: src/client/client.cpp msgid "Initializing nodes" -msgstr "Csomópontok előkészítése" +msgstr "Node-ok előkészítése" #: src/client/client.cpp msgid "Initializing nodes..." -msgstr "Csomópontok előkészítése…" +msgstr "Node-ok előkészítése…" #: src/client/client.cpp msgid "Loading textures..." @@ -880,7 +878,7 @@ msgstr "Válassz egy nevet!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "jelszó fájl megnyitás hiba " +msgstr "jelszófájl megnyitás hiba: " #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " @@ -941,12 +939,11 @@ msgstr "- Kiszolgáló neve: " #: src/client/game.cpp msgid "Automatic forward disabled" -msgstr "Automata előre kikapcsolva" +msgstr "Automatikus előre kikapcsolva" #: src/client/game.cpp -#, fuzzy msgid "Automatic forward enabled" -msgstr "automata elöre engedélyezve" +msgstr "automata előre engedélyezve" #: src/client/game.cpp msgid "Camera update disabled" @@ -1023,7 +1020,7 @@ msgstr "Kiszolgáló létrehozása…" #: src/client/game.cpp msgid "Debug info and profiler graph hidden" -msgstr "debug infó sor, és graph KI" +msgstr "H infó sor, és graph KI" #: src/client/game.cpp msgid "Debug info shown" @@ -1031,7 +1028,7 @@ msgstr "Hibakereső infó BE" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" -msgstr "debug infók, profiler grafika, hálós rajz KI" +msgstr "Hibakereső információk, profilgrafika, hálós rajz rejtett" #: src/client/game.cpp msgid "" @@ -1071,7 +1068,7 @@ msgstr "korlátlan látótáv BE" #: src/client/game.cpp msgid "Exit to Menu" -msgstr "Kilépés a fömenübe" +msgstr "Kilépés a főmenübe" #: src/client/game.cpp msgid "Exit to OS" @@ -1123,19 +1120,19 @@ msgstr "Kiszolgáló felállítása" #: src/client/game.cpp msgid "Item definitions..." -msgstr "Tárgy meghatározok…" +msgstr "Tárgyak meghatározása…" #: src/client/game.cpp msgid "KiB/s" -msgstr "KiB/mp" +msgstr "KiB/s" #: src/client/game.cpp msgid "Media..." -msgstr "Média…" +msgstr "Tartalom..." #: src/client/game.cpp msgid "MiB/s" -msgstr "MiB/mp" +msgstr "MiB/s" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" @@ -1171,19 +1168,19 @@ msgstr "kistérkép terület módban x4" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "NOCLIP mód KI" +msgstr "Szellem mód KI" #: src/client/game.cpp msgid "Noclip mode enabled" -msgstr "noclip BE" +msgstr "Szellem mód engedélyezve" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "NOCLIP mód BE ( de nincs engedélyed )" +msgstr "Szellem mód BE ( de nincs engedélyed )" #: src/client/game.cpp msgid "Node definitions..." -msgstr "Csomópont meghatározások…" +msgstr "Node-ok meghatározása…" #: src/client/game.cpp msgid "Off" @@ -1205,7 +1202,7 @@ msgstr "Pályamozgás mód bekapcsolva" #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "prifiler grafika BE" +msgstr "Profilgrafika BE" #: src/client/game.cpp msgid "Remote server" @@ -1265,7 +1262,7 @@ msgstr "ZOOM KI ( szerver, vagy MOD álltal )" #: src/client/game.cpp src/gui/modalMenu.cpp msgid "ok" -msgstr "Ok" +msgstr "ok" #: src/client/gameui.cpp msgid "Chat hidden" @@ -1273,15 +1270,15 @@ msgstr "Csevegés KI" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "beszélgetös rész BE" +msgstr "beszélgetős rész BE" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "HUD KI" +msgstr "HUD elrejtése" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "HUD BE" +msgstr "HUD megjelenítése" #: src/client/gameui.cpp msgid "Profiler hidden" @@ -1318,7 +1315,7 @@ msgstr "Le" #: src/client/keycode.cpp msgid "End" -msgstr "Vége" +msgstr "End" #: src/client/keycode.cpp msgid "Erase EOF" @@ -1334,7 +1331,7 @@ msgstr "Segítség" #: src/client/keycode.cpp msgid "Home" -msgstr "Otthon" +msgstr "Homer" #: src/client/keycode.cpp msgid "IME Accept" @@ -1346,7 +1343,7 @@ msgstr "IME átalakítás" #: src/client/keycode.cpp msgid "IME Escape" -msgstr "IME Escape" +msgstr "IME Kilépés" #: src/client/keycode.cpp msgid "IME Mode Change" @@ -1362,7 +1359,7 @@ msgstr "Beszúrás" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Left" -msgstr "Bal" +msgstr "Balra" #: src/client/keycode.cpp msgid "Left Button" @@ -1411,7 +1408,7 @@ msgstr "Numerikus bill. -" #: src/client/keycode.cpp msgid "Numpad ." -msgstr "Numerikus bill. ," +msgstr "Numerikus bill." #: src/client/keycode.cpp msgid "Numpad /" @@ -1463,11 +1460,11 @@ msgstr "OEM Clear" #: src/client/keycode.cpp msgid "Page down" -msgstr "page down" +msgstr "Page down" #: src/client/keycode.cpp msgid "Page up" -msgstr "page up" +msgstr "Page up" #: src/client/keycode.cpp msgid "Pause" @@ -1488,7 +1485,7 @@ msgstr "Enter" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Right" -msgstr "Jobb" +msgstr "Jobbra" #: src/client/keycode.cpp msgid "Right Button" @@ -1561,7 +1558,7 @@ msgstr "A jelszavak nem egyeznek!" #: src/gui/guiConfirmRegistration.cpp msgid "Register and Join" -msgstr "regisztrálás, és belépés" +msgstr "Regisztráció és belépés" #: src/gui/guiConfirmRegistration.cpp #, fuzzy, c-format @@ -1583,15 +1580,15 @@ msgstr "Folytatás" #: src/gui/guiKeyChangeMenu.cpp msgid "\"Special\" = climb down" -msgstr "„speciál” = lemászás" +msgstr "különleges = lemászás" #: src/gui/guiKeyChangeMenu.cpp msgid "Autoforward" -msgstr "automata Előre" +msgstr "Automatikus előre" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" -msgstr "automatikus ugrás" +msgstr "Automatikus ugrás" #: src/gui/guiKeyChangeMenu.cpp msgid "Backward" @@ -1599,7 +1596,7 @@ msgstr "Hátra" #: src/gui/guiKeyChangeMenu.cpp msgid "Change camera" -msgstr "másik kamera" +msgstr "Nézet váltása" #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" @@ -1615,7 +1612,7 @@ msgstr "Konzol" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. range" -msgstr "KISSEBB látótáv" +msgstr "Látótáv csökkentése" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. volume" @@ -1623,7 +1620,7 @@ msgstr "Halkítás" #: src/gui/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" -msgstr "Érints duplán az „ugrásra” a repülés be-/kikapcsolásához" +msgstr "Nyomj duplán az „ugrásra” a repülés be-/kikapcsolásához" #: src/gui/guiKeyChangeMenu.cpp msgid "Drop" @@ -1635,7 +1632,7 @@ msgstr "Előre" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. range" -msgstr "NAGYOBB látótáv" +msgstr "Látótáv növelése" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. volume" @@ -1656,8 +1653,8 @@ msgstr "A gomb már használatban van" #: src/gui/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "" -"Gombkiosztás. (Ha ez a menü összeomlik, távolíts el néhány dolgot a minetest." -"conf-ból)" +"Billentyűzetkiosztás. (Ha ez a menü összeomlik, távolíts el néhány dolgot a " +"minetest.conf-ból)" #: src/gui/guiKeyChangeMenu.cpp msgid "Local command" @@ -1689,7 +1686,7 @@ msgstr "Lopakodás" #: src/gui/guiKeyChangeMenu.cpp msgid "Special" -msgstr "speciál" +msgstr "Különleges" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" @@ -1717,7 +1714,7 @@ msgstr "kistérkép KI/BE" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "Váltás noclip-re" +msgstr "Szellem mód bekapcsolása" #: src/gui/guiKeyChangeMenu.cpp #, fuzzy @@ -1730,7 +1727,7 @@ msgstr "Nyomj meg egy gombot" #: src/gui/guiPasswordChange.cpp msgid "Change" -msgstr "Változtatás" +msgstr "Megváltoztatás" #: src/gui/guiPasswordChange.cpp msgid "Confirm Password" @@ -1774,9 +1771,9 @@ msgid "" "(Android) Fixes the position of virtual joystick.\n" "If disabled, virtual joystick will center to first-touch's position." msgstr "" -"(Android) Virtuális joystick helye javítva.\n" +"(Android) A virtuális joystick helyének javítása.\n" "Ha ez kikapcsolva, akkor a virtuális joystick középen lesz az 'Első " -"kattintás' pozicióba." +"kattintás' pozícióban." #: src/settings_translation_file.cpp msgid "" @@ -1828,37 +1825,33 @@ msgstr "" "1 = relief mapping (lassabb, pontosabb)." #: src/settings_translation_file.cpp -#, fuzzy msgid "2D noise that controls the shape/size of ridged mountains." -msgstr "2D zaj, amely szabályozza a méretét/alakját a hegységeknek" +msgstr "2D zaj, amely a hegyvonulatok az alakját/méretét szabályozza." #: src/settings_translation_file.cpp -#, fuzzy msgid "2D noise that controls the shape/size of rolling hills." -msgstr "2D zaj, amely szabályozza a méretét/alakját a domboknak" +msgstr "2D zaj, amely a dombok alakját/méretét szabályozza." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "2D noise that controls the size/occurrence of ridged mountain ranges." -msgstr "2D zaj, amely szabályozza az előfordulását/méretét a hegységeknek" +msgstr "" +"2D zaj, amely szabályozza az méretét/előfordulását a sziklás hegyláncoknak." #: src/settings_translation_file.cpp -#, fuzzy msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "2D zaj, amely szabályozza az előfordulását/méretét a domboknak" +msgstr "2D zaj, amely a dombok méretét/előfordulását szabályozza." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of step mountain ranges." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "2D noise that locates the river valleys and channels." -msgstr "2D zaj, amely szabályozza az elhelyezkedését a folyómedreknek" +msgstr "2D zaj, amely a folyómedrek elhelyezkedését szabályozza." #: src/settings_translation_file.cpp msgid "3D clouds" @@ -1870,7 +1863,7 @@ msgstr "3D mód" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." -msgstr "Hatalmas barlangokat meghatározó 3D zaj." +msgstr "Óriási barlangokat meghatározó 3D zaj." #: src/settings_translation_file.cpp msgid "" @@ -1878,25 +1871,24 @@ msgid "" "Also defines structure of floatland mountain terrain." msgstr "" "A hegyek szerkezetét és magasságát meghatározó 3D zaj.\n" -"A lebegő tájak hegységeit is meghatározza." +"A lebegő tájak hegyeit is meghatározza." #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." msgstr "A folyókanyonok falainak szerkezetét meghatározó 3D zaj." #: src/settings_translation_file.cpp -#, fuzzy msgid "3D noise defining terrain." -msgstr "\"+/+=%/=(/=()(=)Ö()Ö=()>#&@{#&@" +msgstr "3D zaj amely meghatározza a terepet." #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." msgstr "" +"3D zaj a sziklapárkányokhoz, szirtekhez, stb. Általában kisebb változások." #: src/settings_translation_file.cpp -#, fuzzy msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "3D-s zaj, amely meghatározza a tömlöcök számát egy mapchunkonként." +msgstr "3D-s zaj, amely meghatározza a tömlöcök számát egy térképdarabkánként." #: src/settings_translation_file.cpp #, fuzzy @@ -1926,7 +1918,7 @@ msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" -"Egy választott map seed az új térképhez, véletlenszerűhöz hagyd üresen.\n" +"Egy választott seed az új térképhez, a véletlenszerűhöz hagyd üresen.\n" "Felül lesz írva új világ létrehozásánál a főmenüben." #: src/settings_translation_file.cpp @@ -1950,9 +1942,8 @@ msgid "Acceleration in air" msgstr "Gyorsulás levegőben" #: src/settings_translation_file.cpp -#, fuzzy msgid "Acceleration of gravity, in nodes per second per second." -msgstr "Gravitációs gyorsulás, csomópontokban másodpercenként." +msgstr "Gravitációs gyorsulás, node-okban másodpercenként." #: src/settings_translation_file.cpp msgid "Active Block Modifiers" @@ -1982,7 +1973,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Adds particles when digging a node." -msgstr "Részecskéket hoz létre egy kocka ásásakor." +msgstr "Részecskéket hoz létre egy node ásásakor." #: src/settings_translation_file.cpp msgid "" @@ -2012,7 +2003,7 @@ msgstr "Hőmérsékletcsökkenés a magassággal" #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "Repülés és gyorsaság mindig" +msgstr "Repülés és gyors mód mindig" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" @@ -2020,20 +2011,19 @@ msgstr "Ambiens okklúzió gamma" #: src/settings_translation_file.cpp msgid "Amount of messages a player may send per 10 seconds." -msgstr "mennyi üzenet mehet / 10 ms." +msgstr "Üzenetek száma / 10 s." #: src/settings_translation_file.cpp -#, fuzzy msgid "Amplifies the valleys." -msgstr "A völgyek erősítése" +msgstr "A völgyek erősítése." #: src/settings_translation_file.cpp msgid "Anisotropic filtering" -msgstr "Anizotrópikus szűrés" +msgstr "Anizotróp szűrés" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "Szerver kihirdetése" +msgstr "Szerver hirdetése" #: src/settings_translation_file.cpp msgid "Announce to this serverlist." @@ -2072,7 +2062,6 @@ msgid "Ask to reconnect after crash" msgstr "Összeomlás után újracsatlakozás kérése" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "At this distance the server will aggressively optimize which blocks are sent " "to\n" @@ -2093,7 +2082,7 @@ msgstr "" "(Néhány víz alatti és barlangokban lévő blokk nem jelenik meg, néha a " "felszínen lévők sem.)\n" "Ha nagyobb, mint a \"max_block_send_distance\", akkor nincs optimalizáció.\n" -"A távolság blokkokban értendő (16 kocka)" +"A távolság blokkokban értendő (16 node)" #: src/settings_translation_file.cpp #, fuzzy @@ -2101,9 +2090,8 @@ msgid "Automatic forward key" msgstr "automata Előre gomb" #: src/settings_translation_file.cpp -#, fuzzy msgid "Automatically jump up single-node obstacles." -msgstr "Automatikusan felugrik egy blokk magas akadályokra." +msgstr "Automatikusan felugrik egy node magas akadályokra." #: src/settings_translation_file.cpp msgid "Automatically report to the serverlist." @@ -2124,7 +2112,7 @@ msgstr "Vissza gomb" #: src/settings_translation_file.cpp msgid "Base ground level" -msgstr "Talaj szint" +msgstr "Talajszint" #: src/settings_translation_file.cpp msgid "Base terrain height." @@ -2167,9 +2155,8 @@ msgid "Bits per pixel (aka color depth) in fullscreen mode." msgstr "Bit/pixel (vagyis színmélység) teljes képernyős módban." #: src/settings_translation_file.cpp -#, fuzzy msgid "Block send optimize distance" -msgstr "Max blokk generálási távolság" +msgstr "Max blokk küldési távolság" #: src/settings_translation_file.cpp #, fuzzy @@ -2217,7 +2204,7 @@ msgstr "Kamera simítás" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "Kamera simítás \"cinematic\" módban" +msgstr "Kamera simítás film módban" #: src/settings_translation_file.cpp msgid "Camera update toggle key" @@ -2304,9 +2291,8 @@ msgid "Chat message format" msgstr "Üzenet összeomláskor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message kick threshold" -msgstr "Sivatag zajának küszöbszintje" +msgstr "Sivatag zajának küszöbe" #: src/settings_translation_file.cpp msgid "Chat message max length" @@ -2322,15 +2308,15 @@ msgstr "Parancsok" #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "Térképdarab (chunk) mérete" +msgstr "Térképdarabka (chunk) mérete" #: src/settings_translation_file.cpp msgid "Cinematic mode" -msgstr "Filmkészítő mód" +msgstr "Film mód" #: src/settings_translation_file.cpp msgid "Cinematic mode key" -msgstr "Filmkészítő mód gomb" +msgstr "Film mód gomb" #: src/settings_translation_file.cpp msgid "Clean transparent textures" @@ -2362,7 +2348,7 @@ msgstr "Mászás sebessége" #: src/settings_translation_file.cpp msgid "Cloud radius" -msgstr "Felhő rádiusz" +msgstr "Felhők sugara" #: src/settings_translation_file.cpp msgid "Clouds" @@ -2370,7 +2356,7 @@ msgstr "Felhők" #: src/settings_translation_file.cpp msgid "Clouds are a client side effect." -msgstr "A felhők egy kliens oldali effekt." +msgstr "A felhő kliens oldali effekt." #: src/settings_translation_file.cpp msgid "Clouds in menu" @@ -2424,7 +2410,7 @@ msgstr "Csatlakozás külső médiaszerverhez" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "Üveg csatlakoztatása ha a blokk támogatja." +msgstr "Üveg csatlakoztatása ha a node támogatja." #: src/settings_translation_file.cpp msgid "Console alpha" @@ -2467,7 +2453,7 @@ msgid "" "Examples:\n" "72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." msgstr "" -"Nap/éjjel ciklus hossza.\n" +"Nappal/éjjel ciklus hossza.\n" "Példák: 72 = 20 perc, 360 = 4 perc, 1 = 24 óra, 0 = nappal/éjjel/bármelyik " "változatlan marad." @@ -2501,11 +2487,11 @@ msgstr "Kreatív" #: src/settings_translation_file.cpp msgid "Crosshair alpha" -msgstr "Célkereszt alfa" +msgstr "Célkereszt átlátszóság" #: src/settings_translation_file.cpp msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "Célkereszt alfa (átlátszatlanság, 0 és 255 között)." +msgstr "Célkereszt átlátszóság (0 és 255 között)." #: src/settings_translation_file.cpp msgid "Crosshair color" @@ -2525,7 +2511,7 @@ msgstr "Sérülés" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "Hibakereső infó váltás gomb" +msgstr "Hibakereső információra váltás gomb" #: src/settings_translation_file.cpp #, fuzzy @@ -2534,11 +2520,11 @@ msgstr "Sivatag zajának küszöbszintje" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "Hibakereső napló szint" +msgstr "Hibakereső naplózás szintje" #: src/settings_translation_file.cpp msgid "Dec. volume key" -msgstr "Hangerő csökk. gomb" +msgstr "Hangerő csökkentés gomb" #: src/settings_translation_file.cpp #, fuzzy @@ -2594,10 +2580,9 @@ msgid "Defines areas with sandy beaches." msgstr "A homokos tengerpartok területeit határozza meg." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines distribution of higher terrain and steepness of cliffs." msgstr "" -"A magasabb terep (hegytetők) területeit szabja meg és a hegyoldalak\n" +"A magasabb terep (hegytetők) területeit szabja meg és a szirtek\n" "meredekségére is hatással van." #: src/settings_translation_file.cpp @@ -2628,9 +2613,8 @@ msgstr "" "Nagyobb érték simább normal map-et eredményez." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the base ground level." -msgstr "Az erdős területeket és a fák sűrűségét szabályozza." +msgstr "Meghatározza az alap talajszintet." #: src/settings_translation_file.cpp #, fuzzy @@ -2662,7 +2646,7 @@ msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, thus reducing jitter on slower clients." msgstr "" -"A világ modelljének frissítésének időköze a klienseken. Ennek a megnövelése\n" +"A világ modelljének frissítési időköze a klienseken. Ennek a megnövelése\n" "lelassítja a frissítéseket,így csökkenti a lassú kliensek szaggatását." #: src/settings_translation_file.cpp @@ -2684,7 +2668,7 @@ msgstr "A mélység, ami alatt nagy terjedelmű barlangokat találsz majd." #: src/settings_translation_file.cpp msgid "Depth below which you'll find large caves." -msgstr "A mélység, ami alatt nagy terjedelmű barlangokat találsz majd." +msgstr "A mélység, ami alatt nagy barlangokat találsz majd." #: src/settings_translation_file.cpp msgid "" @@ -2696,7 +2680,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Desert noise threshold" -msgstr "Sivatag zajának küszöbszintje" +msgstr "Sivatag zaj küszöbe" #: src/settings_translation_file.cpp #, fuzzy @@ -2708,9 +2692,8 @@ msgstr "" "Ha az új biome rendszer engedélyezve van, akkor ez mellőzésre kerül." #: src/settings_translation_file.cpp -#, fuzzy msgid "Desynchronize block animation" -msgstr "Blokk animáció deszinkronizálása" +msgstr "Blokkanimáció deszinkronizálása" #: src/settings_translation_file.cpp msgid "Digging particles" @@ -2730,7 +2713,7 @@ msgstr "A szerver domain neve, ami a szerverlistában megjelenik." #: src/settings_translation_file.cpp msgid "Double tap jump for fly" -msgstr "Az \"ugrás\" gomb duplán a repüléshez" +msgstr "Az ugrás gomb dupla megnyomása a repüléshez" #: src/settings_translation_file.cpp msgid "Double-tapping the jump key toggles fly mode." @@ -2738,12 +2721,11 @@ msgstr "Az ugrás gomb kétszeri megnyomásával lehet repülés módba váltani #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "Tárgy eldobás gomb" +msgstr "Tárgy eldobása gomb" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dump the mapgen debug information." -msgstr "A térkép-előállítás hibakeresési információinak kiírása." +msgstr "A térkép-generálás hibakeresési információinak kiírása." #: src/settings_translation_file.cpp #, fuzzy @@ -2756,9 +2738,8 @@ msgid "Dungeon minimum Y" msgstr "Tömlöc minimális Y magassága" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dungeon noise" -msgstr "Barlang zaj" +msgstr "Tömlöc zaj" #: src/settings_translation_file.cpp msgid "" @@ -2788,9 +2769,8 @@ msgid "Enable joysticks" msgstr "Joystick engedélyezése" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod channels support." -msgstr "Mod biztonság engedélyezése" +msgstr "A mod csatornák támogatásának engedélyezése." #: src/settings_translation_file.cpp msgid "Enable mod security" @@ -2889,7 +2869,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." -msgstr "Az eszköztár elemeinek animációjának engedélyezése." +msgstr "Az eszköztárelemek animációjának engedélyezése." #: src/settings_translation_file.cpp msgid "" @@ -2920,7 +2900,7 @@ msgid "" "Requires shaders to be enabled." msgstr "" "Parallax occlusion mapping bekapcsolása.\n" -"A shaderek engedélyezve kell legyenek." +"A shaderek engedélyezve kell hogy legyenek." #: src/settings_translation_file.cpp msgid "" @@ -2971,15 +2951,15 @@ msgstr "Tartalék betűtípus" #: src/settings_translation_file.cpp msgid "Fallback font shadow" -msgstr "Tartalék betűtípus árnyék" +msgstr "Tartalék betűtípus árnyéka" #: src/settings_translation_file.cpp msgid "Fallback font shadow alpha" -msgstr "Tartalék betűtípus árnyék alfa" +msgstr "Tartalék betűtípus árnyék átlátszósága" #: src/settings_translation_file.cpp msgid "Fallback font size" -msgstr "Tartalék betűtípus méret" +msgstr "Tartalék betűtípus mérete" #: src/settings_translation_file.cpp msgid "Fast key" @@ -2998,13 +2978,12 @@ msgid "Fast movement" msgstr "Gyors mozgás" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Fast movement (via the \"special\" key).\n" "This requires the \"fast\" privilege on the server." msgstr "" "Gyors mozgás (a használat gombbal).\n" -"Szükséges hozzá a \"fast\" (gyorsaság) jogosultság a szerveren." +"Szükséges hozzá a gyors mód jogosultság a szerveren." #: src/settings_translation_file.cpp msgid "Field of view" @@ -3025,13 +3004,12 @@ msgstr "" "szervereket, amik a Többjátékos fül alatt jelennek meg." #: src/settings_translation_file.cpp -#, fuzzy msgid "Filler depth" -msgstr "Folyó mélység" +msgstr "A kitöltőanyag mélysége" #: src/settings_translation_file.cpp msgid "Filler depth noise" -msgstr "" +msgstr "Kitöltőanyag mélység zaj" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" @@ -3059,7 +3037,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "lezárt pálya-generáló kód" +msgstr "lezárt r" #: src/settings_translation_file.cpp #, fuzzy @@ -3080,7 +3058,7 @@ msgstr "Köd" #: src/settings_translation_file.cpp msgid "Fog start" -msgstr "Köd indító határa" +msgstr "Köd indulás" #: src/settings_translation_file.cpp msgid "Fog toggle key" @@ -3100,7 +3078,7 @@ msgstr "Betűtípus árnyéka" #: src/settings_translation_file.cpp msgid "Font shadow alpha" -msgstr "Betűtípus árnyék alfa" +msgstr "Betűtípus árnyék átlátszósága" #: src/settings_translation_file.cpp msgid "Font size" @@ -3167,11 +3145,9 @@ msgid "Formspec full-screen background color (R,G,B)." msgstr "Játékon belüli csevegő konzol hátterének színe (R,G,B)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Formspec full-screen background opacity (between 0 and 255)." msgstr "" -"Játékon belüli csevegő konzol hátterének alfája (átlátszatlanság, 0 és 255 " -"között)." +"Játékon belüli csevegő konzol hátterének átlátszósága (0 és 255 között)." #: src/settings_translation_file.cpp msgid "Forward key" @@ -3183,16 +3159,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fractal type" -msgstr "Fraktál tipusa" +msgstr "Fraktál típusa" #: src/settings_translation_file.cpp msgid "Fraction of the visible distance at which fog starts to be rendered" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "FreeType fonts" -msgstr "Freetype betűtípusok" +msgstr "FreeType betűtípusok" #: src/settings_translation_file.cpp msgid "" @@ -3288,12 +3263,11 @@ msgstr "Gravitáció" #: src/settings_translation_file.cpp msgid "Ground level" -msgstr "Talaj szint" +msgstr "Talajszint" #: src/settings_translation_file.cpp -#, fuzzy msgid "Ground noise" -msgstr "Talaj szint" +msgstr "Talaj zaj" #: src/settings_translation_file.cpp #, fuzzy @@ -3301,9 +3275,8 @@ msgid "HTTP mods" msgstr "HTTP Modok" #: src/settings_translation_file.cpp -#, fuzzy msgid "HUD scale factor" -msgstr "vezérlőelemek mérete" +msgstr "Vezérlőelemek mérete" #: src/settings_translation_file.cpp msgid "HUD toggle key" @@ -3334,12 +3307,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Heat blend noise" -msgstr "Hőkevert zaj" +msgstr "Hőkeverési zaj" #: src/settings_translation_file.cpp -#, fuzzy msgid "Heat noise" msgstr "Hőzaj" @@ -3352,9 +3323,8 @@ msgid "Height noise" msgstr "Magasság zaj" #: src/settings_translation_file.cpp -#, fuzzy msgid "Height select noise" -msgstr "A magasságot választó zaj" +msgstr "A magasságot kiválasztó zaj" #: src/settings_translation_file.cpp msgid "High-precision FPU" @@ -3370,19 +3340,19 @@ msgstr "Domb küszöb" #: src/settings_translation_file.cpp msgid "Hilliness1 noise" -msgstr "" +msgstr "1. dombosság zaj" #: src/settings_translation_file.cpp msgid "Hilliness2 noise" -msgstr "" +msgstr "2. dombosság zaj" #: src/settings_translation_file.cpp msgid "Hilliness3 noise" -msgstr "" +msgstr "3. dombosság zaj" #: src/settings_translation_file.cpp msgid "Hilliness4 noise" -msgstr "" +msgstr "4. dombosság zaj" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." @@ -3552,9 +3522,8 @@ msgid "Hotbar slot 9 key" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "How deep to make rivers." -msgstr "Milyen mélyek legyenek a folyók" +msgstr "A folyók mélysége." #: src/settings_translation_file.cpp msgid "" @@ -3573,9 +3542,8 @@ msgstr "" "Magasabb érték egyenletesebb, de több RAM-ot használ." #: src/settings_translation_file.cpp -#, fuzzy msgid "How wide to make rivers." -msgstr "Milyen szélesek legyenek a folyók" +msgstr "A folyók szélessége." #: src/settings_translation_file.cpp msgid "Humidity blend noise" @@ -3635,7 +3603,7 @@ msgid "" msgstr "" "Ha engedélyezve van együtt a repülés (fly) móddal, a játékos átrepülhet " "szilárd\n" -"blokkokon. Szükséges hozzá a \"noclip\" jogosultság a szerveren." +"node-okon. Szükséges hozzá a szellem jogosultság a szerveren." #: src/settings_translation_file.cpp #, fuzzy @@ -3674,6 +3642,8 @@ msgid "" "If enabled, makes move directions relative to the player's pitch when flying " "or swimming." msgstr "" +"Ha engedélyezve van a játékos abba az irányba megy amerre néz, amikor úszik " +"vagy repül." #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." @@ -3685,7 +3655,7 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" -"Ha engedélyezve van, elhelyezhetsz blokkokat oda, ahol állsz (láb + " +"Ha engedélyezve van, elhelyezhetsz node-okat oda, ahol állsz (láb + " "szemmagasság).\n" "Ez segít, ha kis területen dolgozol." @@ -3712,7 +3682,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "Világ hibák figyelmen kívül hagyása" +msgstr "Világhibák figyelmen kívül hagyása" #: src/settings_translation_file.cpp msgid "In-Game" @@ -3721,8 +3691,7 @@ msgstr "Játékon belül" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." msgstr "" -"Játékon belüli csevegő konzol hátterének alfája (átlátszatlanság, 0 és 255 " -"között)." +"Játékon belüli csevegő konzol hátterének átlátszósága (0 és 255 között)." #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." @@ -3738,9 +3707,8 @@ msgid "Inc. volume key" msgstr "Hangerő növ. gomb" #: src/settings_translation_file.cpp -#, fuzzy msgid "Initial vertical speed when jumping, in nodes per second." -msgstr "Kezdeti függőleges sebesség ugráskor, blokk/másodpercben." +msgstr "Kezdeti függőleges sebesség ugráskor, node/másodpercben." #: src/settings_translation_file.cpp msgid "" @@ -3796,11 +3764,11 @@ msgstr "Eszköztár gomb" #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "Egér invertálása" +msgstr "Fordított egér" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "Függőleges egérmozgás invertálása." +msgstr "Függőleges egérmozgás megfordírtása." #: src/settings_translation_file.cpp #, fuzzy @@ -3823,7 +3791,6 @@ msgid "Iterations" msgstr "Ismétlések" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Iterations of the recursive function.\n" "Increasing this increases the amount of fine detail, but also\n" @@ -3832,29 +3799,27 @@ msgid "" msgstr "" "A rekurzív funkció ismétlései.\n" "Ennek növelése növeli a finom részletek mennyiségét és\n" -"növeli a feldolgozási terhet.\n" +"növeli a feldolgozási terhelést.\n" " 20 ismétléseknél ez a térképgeneráló hasonló terheléssel rendelkezik, mint " "a V7." #: src/settings_translation_file.cpp msgid "Joystick ID" -msgstr "Botkormány ID" +msgstr "Joystick ID" #: src/settings_translation_file.cpp msgid "Joystick button repetition interval" -msgstr "Joystick gomb ismétlés időköz" +msgstr "Joystick gomb ismétlési időköz" #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" msgstr "Joystick frustum érzékenység" #: src/settings_translation_file.cpp -#, fuzzy msgid "Joystick type" -msgstr "Botkormány tipus" +msgstr "Joystick típus" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Julia set only.\n" "W component of hypercomplex constant.\n" @@ -3865,7 +3830,7 @@ msgstr "" "Julia-halmaz.\n" "W komponens hiperkomplex állandó.\n" "Megváltoztatja a fraktál alakját.\n" -"Nincs hatása a 3D Fraktálok.\n" +"Nincs hatása a 3D Fraktálokra.\n" "Tartomány nagyjából -2 és 2 között." #: src/settings_translation_file.cpp @@ -4002,7 +3967,6 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for moving the player backward.\n" "Will also disable autoforward, when active.\n" @@ -4010,8 +3974,9 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a játékos hátrafelé mozgásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Az automatikus előremozgást is kikapcsolja, ha aktív.Lásd: " +"http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4096,290 +4061,264 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 11th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 11. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 12th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 12. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 13th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 13. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 14th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 14. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 15th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 15. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 16th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 16. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 17th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 17. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 18th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 18. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 19th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 19. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 20th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 20. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 21st hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 21. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 22nd hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 22. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 23rd hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 23. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 24th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 24. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 25th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 25. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 26th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 26. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 27th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 27. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 28th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 28. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 29th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 29. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 30th hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 30. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 31st hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 31. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the 32nd hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 32. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the eighth hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 8. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the fifth hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 5. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the first hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 1. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the fourth hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 4. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp #, fuzzy @@ -4393,15 +4332,14 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the ninth hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 9. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp #, fuzzy @@ -4415,59 +4353,54 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the second hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 2. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the seventh hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 7. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the sixth hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 6. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the tenth hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 10. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the third hotbar slot.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a 3. eszköztár kiválasztásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4504,15 +4437,14 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for toggling autoforward.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a gyors (fast) módra váltáshoz.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb az automatikus előrehaladás módra váltáshoz.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4520,9 +4452,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a \"cinematic\" mód (filmkészítés) bekapcsolásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a film mód bekapcsolásához.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4540,9 +4472,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a gyors (fast) módra váltáshoz.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a gyors módra váltáshoz.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4550,9 +4482,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a repülés (fly) módra váltáshoz.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a repülés módra váltáshoz.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4560,20 +4492,19 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a noclip módra váltáshoz.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a szellem módra váltáshoz.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for toggling pitch move mode.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a noclip módra váltáshoz.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a szellem módra váltáshoz.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp #, fuzzy @@ -4603,9 +4534,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a hibakeresési infók megjelenítéséhez.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" +"Gomb a hibakeresési információ megjelenítéséhez.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" +"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp #, fuzzy @@ -4668,21 +4599,18 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "Kick players who sent more than X messages per 10 seconds." msgstr "" -"Rúgja ki azokat a játékosokat, akik 10 másodpercenként több mint X üzenetet " +"Azon játékosok kirúgása, akik 10 másodpercenként több mint X üzenetet " "küldtek." #: src/settings_translation_file.cpp -#, fuzzy msgid "Lake steepness" -msgstr "Flat (lapos) térképgenerátor tó meredekség" +msgstr "Tó meredekség" #: src/settings_translation_file.cpp -#, fuzzy msgid "Lake threshold" -msgstr "Flat (lapos) térképgenerátor tó küszöb" +msgstr "Tó küszöb" #: src/settings_translation_file.cpp msgid "Language" @@ -4721,10 +4649,10 @@ msgid "" "- Opaque: disable transparency" msgstr "" "Levelek stílusa:\n" -"- Szép (Fancy): minden oldal látható\n" -"- Egyszerű (Simple): csak a külső oldalak láthatók, if defined " -"special_tiles are used\n" -"- Átlátszatlan (Opaque): átlátszóság kikapcsolása" +"- Szép: minden oldal látható\n" +"- Egyszerű: csak a külső oldalak láthatók, if defined special_tiles are " +"used\n" +"- Átlátszatlan: átlátszóság kikapcsolása" #: src/settings_translation_file.cpp msgid "Left key" @@ -4760,7 +4688,6 @@ msgid "Length of time between active block management cycles" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Level of logging to be written to debug.txt:\n" "- (no logging)\n" @@ -4771,12 +4698,12 @@ msgid "" "- info\n" "- verbose" msgstr "" -"A Debug. txt fájlba írandó naplózási szint:\n" +"A debug.txt fájlba írandó naplózási szint:\n" "-semmi (nincs naplózás)\n" "-minimális (szint nélküli üzenetek)\n" "-hiba\n" "-figyelmeztetés\n" -"-cselekvés\n" +"-művelet\n" "-információ\n" "-fecsegő" @@ -4837,9 +4764,8 @@ msgid "Liquid fluidity smoothing" msgstr "Folyadék folyékonyságának simítása" #: src/settings_translation_file.cpp -#, fuzzy msgid "Liquid loop max" -msgstr "Folyadékhullám Max" +msgstr "Folyadékhullámzás maximum" #: src/settings_translation_file.cpp msgid "Liquid queue purge time" @@ -4872,9 +4798,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Loading Block Modifiers" -msgstr "Aktív blokk módosító időköze" +msgstr "Blokk módosítók betöltése" #: src/settings_translation_file.cpp #, fuzzy @@ -4886,9 +4811,8 @@ msgid "Main menu script" msgstr "Főmenü script" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu style" -msgstr "Főmenü script" +msgstr "Főmenü stílusa" #: src/settings_translation_file.cpp msgid "" @@ -4899,7 +4823,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." msgstr "" -"Lehetővé teszi, hogy a DriectX működjön a LuaJIT-tel. Tiltsd le, ha " +"Lehetővé teszi, hogy a DirectX működjön a LuaJIT-tel. Tiltsd le, ha " "problémákat okoz." #: src/settings_translation_file.cpp @@ -5008,29 +4932,24 @@ msgid "Mapblock unload timeout" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Carpathian" -msgstr "Fractal térképgenerátor" +msgstr "Hegyek térképgenerátor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Carpathian specific flags" -msgstr "Flat (lapos) térképgenerátor domb meredekség" +msgstr "Hegyek térképgenerátor különleges zászlói" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Flat" -msgstr "Flat (lapos) térképgenerátor" +msgstr "Lapos térképgenerátor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Flat specific flags" -msgstr "Flat (lapos) térképgenerátor domb meredekség" +msgstr "Flat (lapos) térképgenerátor különleges zászlói" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Fractal" -msgstr "Fractal térképgenerátor" +msgstr "Fraktál térképgenerátor" #: src/settings_translation_file.cpp #, fuzzy @@ -5038,43 +4957,36 @@ msgid "Mapgen Fractal specific flags" msgstr "Flat (lapos) térképgenerátor domb meredekség" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V5" -msgstr "Térkép generátor v5" +msgstr "V5 térképgenerátor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V5 specific flags" -msgstr "Flat (lapos) térképgenerátor domb meredekség" +msgstr "Lapos térképgenerátor különleges zászlók" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V6" -msgstr "Térkép generátor v6" +msgstr "V6 térképgenerátor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V6 specific flags" -msgstr "Flat (lapos) térképgenerátor domb meredekség" +msgstr "V6 térképgenerátor különleges zászlók" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V7" -msgstr "Térkép generátor v7" +msgstr "V7 térképgenerátor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V7 specific flags" -msgstr "Flat (lapos) térképgenerátor domb meredekség" +msgstr "V7 térképgenerátor különleges zászlói" #: src/settings_translation_file.cpp msgid "Mapgen Valleys" msgstr "Valleys térképgenerátor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Valleys specific flags" -msgstr "Flat (lapos) térképgenerátor domb meredekség" +msgstr "Lapos térképgenerátor különleges zászlói" #: src/settings_translation_file.cpp msgid "Mapgen debug" @@ -5094,9 +5006,8 @@ msgid "Max block generate distance" msgstr "Max blokk generálási távolság" #: src/settings_translation_file.cpp -#, fuzzy msgid "Max block send distance" -msgstr "Maximális blokkküldési távolság" +msgstr "Maximális blokk-küldési távolság" #: src/settings_translation_file.cpp msgid "Max liquids processed per step." @@ -5194,9 +5105,8 @@ msgid "Maximum number of players that can be connected simultaneously." msgstr "Az egy időben csatlakozó játékosok maximális száma." #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum number of recent chat messages to show" -msgstr "Az egy időben csatlakozó játékosok maximális száma." +msgstr "A megjelenítendő chatüzenetek maximális száma." #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." @@ -5282,9 +5192,8 @@ msgid "Minimum limit of random number of small caves per mapchunk." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimum texture size" -msgstr "Minimum textúra méret a szűrőknek" +msgstr "Minimum textúra méret" #: src/settings_translation_file.cpp #, fuzzy @@ -5305,24 +5214,23 @@ msgstr "Monospace betűtípus útvonal" #: src/settings_translation_file.cpp msgid "Monospace font size" -msgstr "Monospace betűtípus méret" +msgstr "Monospace betűméret" #: src/settings_translation_file.cpp msgid "Mountain height noise" -msgstr "" +msgstr "Hegy magasság zaj" #: src/settings_translation_file.cpp msgid "Mountain noise" -msgstr "" +msgstr "Hegy zaj" #: src/settings_translation_file.cpp msgid "Mountain variation noise" -msgstr "" +msgstr "Hegy változékonyság zaj" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mountain zero level" -msgstr "Vízszint" +msgstr "Hegyek legkisebb szintje" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" @@ -5343,13 +5251,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mute key" -msgstr "Használat gomb" +msgstr "Némítás gomb" #: src/settings_translation_file.cpp msgid "Mute sound" -msgstr "hang némitás" +msgstr "Hang némítása" #: src/settings_translation_file.cpp msgid "" @@ -5400,11 +5307,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Noclip key" -msgstr "Noclip gomb" +msgstr "Szellem mód gomb" #: src/settings_translation_file.cpp msgid "Node highlighting" -msgstr "Blokk kiemelés" +msgstr "Node kiemelés" #: src/settings_translation_file.cpp msgid "NodeTimer interval" @@ -5412,7 +5319,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Noises" -msgstr "" +msgstr "Zajok" #: src/settings_translation_file.cpp msgid "Normalmaps sampling" @@ -5605,7 +5512,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" -"Annak megelőzése, hogy a modok nem biztonágos dolgokat futtassanak, pl. " +"Annak megelőzése, hogy a modok nem biztonságos dolgokat futtassanak, pl. " "shell parancsok." #: src/settings_translation_file.cpp @@ -5642,9 +5549,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Raises terrain to make valleys around the rivers." -msgstr "Megemeli a terepet, hogy völgyek alakuljanak a folyók körül" +msgstr "Megemeli a terepet, hogy völgyek alakuljanak a folyók körül." #: src/settings_translation_file.cpp msgid "Random input" @@ -5682,9 +5588,8 @@ msgid "Replaces the default main menu with a custom one." msgstr "Az alapértelmezett főmenüt lecseréli egy másikkal." #: src/settings_translation_file.cpp -#, fuzzy msgid "Report path" -msgstr "Betűtípus helye" +msgstr "Napló útvonala" #: src/settings_translation_file.cpp msgid "" @@ -5722,7 +5627,7 @@ msgstr "Jobb gomb" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" -msgstr "Jobb kattintás ismétlés időköz" +msgstr "Jobb kattintás ismétlési időköz" #: src/settings_translation_file.cpp #, fuzzy @@ -5740,9 +5645,8 @@ msgid "River depth" msgstr "Folyó mélység" #: src/settings_translation_file.cpp -#, fuzzy msgid "River noise" -msgstr "Barlang zaj" +msgstr "Folyó zaj" #: src/settings_translation_file.cpp #, fuzzy @@ -5791,7 +5695,6 @@ msgid "Saving map received from server" msgstr "A szerverről fogadott térkép mentése" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Scale GUI by a user specified value.\n" "Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" @@ -5800,8 +5703,8 @@ msgid "" "edge pixels when images are scaled by non-integer sizes." msgstr "" "A felhasználói felület méretezése egy meghatározott értékkel.\n" -"A legközelebbi szomszédos anti-alias szűrőt használja a GUI méretezésére.\n" -"Ez elsimít néhány durva élt, és elhajlít pixeleket a méretezés " +"A legközelebbi szomszédos élsimítás szűrőt használja a GUI méretezésére.\n" +"Ez elsimít néhány durva élt, és elhajlítja a pixeleket a méretezés " "csökkentésekor,\n" "de ennek az az ára, hogy elhomályosít néhány szélső pixelt, ha a képek nem\n" "egész számok alapján vannak méretezve." @@ -5988,19 +5891,17 @@ msgstr "" "A shaderek engedélyezése szükséges hozzá." #: src/settings_translation_file.cpp -#, fuzzy msgid "Shader path" -msgstr "Shaderek" +msgstr "Árnyalók útvonala" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shaders allow advanced visual effects and may increase performance on some " "video\n" "cards.\n" "This only works with the OpenGL video backend." msgstr "" -"A shaderek fejlett vizuális effekteket engedélyeznek és növelhetik a " +"Az árnyalók fejlett vizuális effekteket engedélyeznek és növelhetik a " "teljesítményt néhány videókártya esetében.\n" "Csak OpenGL-el működnek." @@ -6026,7 +5927,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Show debug info" -msgstr "Hibakereső infó mutatása" +msgstr "Hibakereső információ mutatása" #: src/settings_translation_file.cpp msgid "Show entity selection boxes" @@ -6088,12 +5989,11 @@ msgid "" "Useful for recording videos." msgstr "" "Kamera mozgásának simítása mozgáskor és körbenézéskor.\n" -"Videofelvételekhez hasznos." +"Videófelvételekhez hasznos." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera in cinematic mode. 0 to disable." -msgstr "" -"A kamera forgását simítja a cinematic (filmkészítés) módban. 0 = letiltás." +msgstr "A kamera forgását simítja a cinematic film módban. 0 = letiltás." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera. 0 to disable." @@ -6104,9 +6004,8 @@ msgid "Sneak key" msgstr "Lopakodás gomb" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneaking speed" -msgstr "Járás sebessége" +msgstr "Lopakodás sebessége" #: src/settings_translation_file.cpp msgid "Sneaking speed, in nodes per second." @@ -6143,11 +6042,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Static spawnpoint" -msgstr "Statikus feléledési (spawn) pont" +msgstr "Statikus újraéledési pont" #: src/settings_translation_file.cpp msgid "Steepness noise" -msgstr "" +msgstr "Meredekség zaj" #: src/settings_translation_file.cpp #, fuzzy @@ -6190,14 +6089,12 @@ msgid "Temperature variation for biomes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Terrain alternative noise" -msgstr "Terep magasság" +msgstr "Terep alternatív zaj" #: src/settings_translation_file.cpp -#, fuzzy msgid "Terrain base noise" -msgstr "Terep magasság" +msgstr "Terep alapzaj" #: src/settings_translation_file.cpp #, fuzzy @@ -6205,14 +6102,12 @@ msgid "Terrain height" msgstr "Terep magasság" #: src/settings_translation_file.cpp -#, fuzzy msgid "Terrain higher noise" -msgstr "Terep magasság" +msgstr "Terep legmagasabb zaj" #: src/settings_translation_file.cpp -#, fuzzy msgid "Terrain noise" -msgstr "Terep magasság" +msgstr "Terepzaj" #: src/settings_translation_file.cpp msgid "" @@ -6267,7 +6162,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "The identifier of the joystick to use" -msgstr "" +msgstr "A használni kívánt joystick azonosítója" #: src/settings_translation_file.cpp msgid "The length in pixels it takes for touch screen interaction to start." @@ -6358,7 +6253,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "The type of joystick" -msgstr "" +msgstr "A joystick típusa" #: src/settings_translation_file.cpp msgid "" @@ -6402,9 +6297,9 @@ msgid "" "This determines how long they are slowed down after placing or removing a " "node." msgstr "" -"A lag (késés) csökkentéséért a blokkok lerakása le van lassítva, ha a " +"A lag (késés) csökkentéséért a node-ok lerakása le van lassítva, ha a " "játékos épít valamit.\n" -"Ez azt határozza meg, hogy mennyire van lelassítva blokkok elhelyezésekor, " +"Ez azt határozza meg, hogy mennyire van lelassítva node-ok elhelyezésekor, " "vagy eltávolításakor." #: src/settings_translation_file.cpp @@ -6422,11 +6317,11 @@ msgstr "Tengerpart zaj határa" #: src/settings_translation_file.cpp msgid "Trees noise" -msgstr "" +msgstr "Fa zajr" #: src/settings_translation_file.cpp msgid "Trilinear filtering" -msgstr "Tri-lineáris szűrés" +msgstr "Trilineáris szűrés" #: src/settings_translation_file.cpp #, fuzzy @@ -6471,11 +6366,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Upper Y limit of dungeons." -msgstr "" +msgstr "A tömlöcök felső Y határa." #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." -msgstr "3D felhő kinézet használata lapos helyett." +msgstr "3D felhők használata lapos helyett." #: src/settings_translation_file.cpp msgid "Use a cloud animation for the main menu background." @@ -6483,7 +6378,7 @@ msgstr "Felhő animáció használata a főmenü háttereként." #: src/settings_translation_file.cpp msgid "Use anisotropic filtering when viewing at textures from an angle." -msgstr "Anizotropikus szűrés használata, ha egy szögből nézzük a textúrákat." +msgstr "Anizotróp szűrés használata, ha egy szögből nézzük a textúrákat." #: src/settings_translation_file.cpp msgid "Use bilinear filtering when scaling textures." @@ -6506,7 +6401,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "VSync" -msgstr "" +msgstr "Függőleges szinkron" #: src/settings_translation_file.cpp #, fuzzy @@ -6514,9 +6409,8 @@ msgid "Valley depth" msgstr "Völgyek mélysége" #: src/settings_translation_file.cpp -#, fuzzy msgid "Valley fill" -msgstr "Völgyek meredeksége" +msgstr "Völgyek kitöltése" #: src/settings_translation_file.cpp #, fuzzy @@ -6557,9 +6451,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Varies steepness of cliffs." -msgstr "A dombok meredekségét/magasságát állítja." +msgstr "A szirtek meredekségét állítja." #: src/settings_translation_file.cpp msgid "Vertical climbing speed, in nodes per second." @@ -6578,11 +6471,8 @@ msgid "View bobbing factor" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "View distance in nodes." -msgstr "" -"Látótávolság blokkokban megadva.\n" -"Min = 20" +msgstr "Látótávolság node-okban megadva." #: src/settings_translation_file.cpp msgid "View range decrease key" @@ -6648,7 +6538,7 @@ msgstr "A világ vízfelszínének szintje." #: src/settings_translation_file.cpp msgid "Waving Nodes" -msgstr "Hullámzó blokkok" +msgstr "Hullámzó node-ok" #: src/settings_translation_file.cpp msgid "Waving leaves" @@ -6753,16 +6643,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." -msgstr "A hibakereső infó mutatása (ugyanaz a hatás, ha F5-öt nyomunk)." +msgstr "A hibakereső információ mutatása (ugyanaz a hatás, ha F5-öt nyomunk)." #: src/settings_translation_file.cpp msgid "Width component of the initial window size." msgstr "Kezdeti ablak méret szélessége." #: src/settings_translation_file.cpp -#, fuzzy msgid "Width of the selection box lines around nodes." -msgstr "A kijelölődoboz vonalainak szélessége a blokkok körül." +msgstr "A kijelölődoboz vonalainak szélessége a node-ok körül." #: src/settings_translation_file.cpp msgid "" @@ -6776,7 +6665,7 @@ msgid "" "World directory (everything in the world is stored here).\n" "Not needed if starting from the main menu." msgstr "" -"Világ (world) mappa (minden itt tárolódik ami a világban van).\n" +"Világ mappája (minden itt tárolódik ami a világban van).\n" "Ez nem szükséges, ha a főmenüből indítunk." #: src/settings_translation_file.cpp @@ -6827,7 +6716,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Y-level of higher terrain that creates cliffs." -msgstr "" +msgstr "Y-szintű magasabb terep, amely szirteket hoz létre." #: src/settings_translation_file.cpp msgid "Y-level of lower terrain and seabed." From e27ff020eed21e8b166b30b0decda5608c9f463d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 8 Apr 2020 12:37:56 +0000 Subject: [PATCH 284/424] Translated using Weblate (Turkish) Currently translated at 100.0% (1288 of 1288 strings) --- po/tr/minetest.po | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/po/tr/minetest.po b/po/tr/minetest.po index 92f5b7431..ce77dba53 100644 --- a/po/tr/minetest.po +++ b/po/tr/minetest.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Turkish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-04 06:53+0000\n" +"PO-Revision-Date: 2020-06-13 21:08+0000\n" "Last-Translator: Oğuz Ersen \n" "Language-Team: Turkish \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -70,7 +70,7 @@ msgstr "" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "Yalnızca $1 protokol sürümü desteklenmektedir." +msgstr "Yalnızca $1 protokol sürümü desteklenmektedir." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." @@ -1972,8 +1972,8 @@ msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" -"Ekranınızın (yalnızca Android/X11 olmayan) dpi yapılandırmasını ayarlayın " -"ör: 4k ekranlar için." +"Ekranınızın (yalnızca Android/X11 olmayan) dpi yapılandırmasını ayarlayın ör:" +" 4k ekranlar için." #: src/settings_translation_file.cpp msgid "Advanced" @@ -2857,7 +2857,8 @@ msgstr "" "Hable'ın 'Uncharted 2' film ton eşlemesini etkinleştirir.\n" "Fotoğrafsal film ton eğrisini simüle eder ve bu\n" "yüksek dinamik aralıklı görüntülerin görünümü yakınlaştırır. Orta-aralık\n" -"kontrast biraz geliştirilir, vurgular ve gölgeler yavaş yavaş sıkıştırılır." +"kontrast biraz geliştirilir, vurgular ve gölgeler kademeli olarak " +"sıkıştırılır." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." @@ -3104,7 +3105,7 @@ msgid "" "placeholders:\n" "@name, @message, @timestamp (optional)" msgstr "" -"Oyuncu sohbet ileti biçimi. Aşağıdaki dizeler geçerli yer tutuculardır:\n" +"Oyuncu sohbet ileti biçimi. Aşağıdaki dizgiler geçerli yer tutuculardır:\n" "@name, @message, @timestamp (isteğe bağlı)" #: src/settings_translation_file.cpp @@ -3530,8 +3531,8 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" -"Sıvı dalgalarının ne kadar hızlı hareket edeceğini\n" -"belirler . Daha yüksek = daha hızlı.\n" +"Sıvı dalgalarının ne kadar hızlı hareket edeceğini belirler . Daha yüksek = " +"daha hızlı.\n" "Negatif ise, sıvı dalgalar geriye hareket edecektir.\n" "Dalgalanan sıvılar etkin kılınmalıdır." @@ -3573,8 +3574,8 @@ msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" -"FPS bundan daha fazla yükselecekse, CPU gücünü boşa tüketmemek için, uykuya " -"dalarak sınırla ." +"FPS bundan daha fazla yükselecekse, CPU gücünü boşa\n" +"tüketmemek için, uykuya dalarak sınırla." #: src/settings_translation_file.cpp msgid "" @@ -5751,9 +5752,8 @@ msgid "" msgstr "" "Kullanıcı tanımlı bir değerle arayüzü boyutlandır.\n" "Arayüzü boyutlandırırken en-yakın-komşu-kenar-yumuşatma\n" -"filtresi kullan.\n" -"Bu bazı pürüzlü kenarları yumuşatır ve küçültürken pikselleri\n" -"kaynaştırır, görüntüler tam sayı olmayan boyutlarla\n" +"filtresi kullan. Bu bazı pürüzlü kenarları yumuşatır ve küçültürken\n" +"pikselleri kaynaştırır, görüntüler tam sayı olmayan boyutlarla\n" "ölçeklendiğinde bazı kenar piksellerde bulanıklığa neden olur." #: src/settings_translation_file.cpp @@ -6499,7 +6499,7 @@ msgid "" "especially when using a high resolution texture pack.\n" "Gamma correct downscaling is not supported." msgstr "" -"Dokuları boyutlandırmak için mip haritalama kullan. Özellikle yüksek\n" +"Dokuları boyutlandırmak için mip haritalama kullan. Özellikle yüksek\n" "çözünürlüklü bir doku paketi kullanırken, performans biraz artabilir.\n" "Gamma doğruluklu küçültme desteklenmez." @@ -6837,6 +6837,7 @@ msgstr "" "Ancak sunucu istediğiniz boyutu göndermeyebilir, özellikle de özel\n" "tasarlanmış bir doku paketi kullanıyorsanız; bu seçenekle, istemci\n" "doku boyutunu temel alarak boyutu kendiliğinden belirlemeye çalışır.\n" +"Ayrıca bakın: texture_min_size\n" "Uyarı: Bu seçenek DENEYSELdir!" #: src/settings_translation_file.cpp From e2e27fa04bbc4bfd316425e83784aa269d9aea5e Mon Sep 17 00:00:00 2001 From: Larissa Piklor Date: Sat, 11 Apr 2020 11:15:52 +0000 Subject: [PATCH 285/424] Translated using Weblate (Hungarian) Currently translated at 69.8% (900 of 1288 strings) --- po/hu/minetest.po | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/po/hu/minetest.po b/po/hu/minetest.po index ab60d9b30..0bf6d32a8 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Hungarian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-08 16:01+0000\n" -"Last-Translator: Ács Zoltán \n" +"PO-Revision-Date: 2020-04-12 12:11+0000\n" +"Last-Translator: Larissa Piklor \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -120,9 +120,8 @@ msgid "Mod:" msgstr "Mod:" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No (optional) dependencies" -msgstr "Választható függőségek:" +msgstr "Nincsenek (választható) függőségek:" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." @@ -1717,7 +1716,6 @@ msgid "Toggle noclip" msgstr "Szellem mód bekapcsolása" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle pitchmove" msgstr "csevegés log KI/BE" @@ -1834,7 +1832,7 @@ msgstr "2D zaj, amely a dombok alakját/méretét szabályozza." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." -msgstr "" +msgstr "2D zaj ami irányítja a lépés hegyek formáját/méretét" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." From ec26fab3b6566c8d04f315402beccc3776243c12 Mon Sep 17 00:00:00 2001 From: Larissa Piklor Date: Sat, 11 Apr 2020 11:17:09 +0000 Subject: [PATCH 286/424] Translated using Weblate (Romanian) Currently translated at 18.7% (242 of 1288 strings) --- po/ro/minetest.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/ro/minetest.po b/po/ro/minetest.po index b3b4fd273..0e642f6d5 100644 --- a/po/ro/minetest.po +++ b/po/ro/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Romanian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-03-14 10:32+0000\n" -"Last-Translator: Gmail a - 2 - a Boxa \n" +"PO-Revision-Date: 2020-04-12 12:11+0000\n" +"Last-Translator: Larissa Piklor \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -394,7 +394,7 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" -msgstr "X răspândit" +msgstr "expansiunea X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" From caac1e131bb8a71b50a9506f992bf6756dae1f8a Mon Sep 17 00:00:00 2001 From: anonymous Date: Sun, 12 Apr 2020 12:21:35 +0000 Subject: [PATCH 287/424] Translated using Weblate (Dutch) Currently translated at 61.1% (788 of 1288 strings) --- po/nl/minetest.po | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/po/nl/minetest.po b/po/nl/minetest.po index 1828e58d4..403026caa 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Dutch (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-04-13 13:11+0000\n" +"Last-Translator: anonymous \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.9-dev\n" +"X-Generator: Weblate 4.0-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -28,7 +28,6 @@ msgid "An error occurred in a Lua script:" msgstr "Er is een fout opgetreden in een Lua script, zoals dat van een mod:" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred:" msgstr "Er is een fout opgetreden:" @@ -130,9 +129,8 @@ msgid "No game description provided." msgstr "Geen mod-beschrijving aanwezig." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No hard dependencies" -msgstr "Geen afhankelijkheden." +msgstr "Geen afhankelijkheden" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." From ff42264d0783fd0eb5274f32fac6f9396c272d66 Mon Sep 17 00:00:00 2001 From: SwampTurtle Date: Sun, 12 Apr 2020 12:23:41 +0000 Subject: [PATCH 288/424] Translated using Weblate (Dutch) Currently translated at 61.1% (788 of 1288 strings) --- po/nl/minetest.po | 47 ++++++++++++++++------------------------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/po/nl/minetest.po b/po/nl/minetest.po index 403026caa..227d0cfa2 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-04-13 13:11+0000\n" -"Last-Translator: anonymous \n" +"Last-Translator: SwampTurtle \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -23,9 +23,8 @@ msgid "You died" msgstr "Je stierf" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred in a Lua script:" -msgstr "Er is een fout opgetreden in een Lua script, zoals dat van een mod:" +msgstr "Er is een fout opgetreden in een Lua script:" #: builtin/fstk/ui.lua msgid "An error occurred:" @@ -120,9 +119,8 @@ msgid "Mod:" msgstr "Mod:" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No (optional) dependencies" -msgstr "Optionele afhankelijkheden:" +msgstr "Geen (optionele) afhankelijkheden" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." @@ -137,9 +135,8 @@ msgid "No modpack description provided." msgstr "Geen mod-beschrijving aanwezig." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No optional dependencies" -msgstr "Optionele afhankelijkheden:" +msgstr "Geen optionele afhankelijkheden" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" @@ -295,13 +292,12 @@ msgid "Rename Modpack:" msgstr "Modverzameling hernoemen:" #: builtin/mainmenu/dlg_rename_modpack.lua -#, fuzzy msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" -"Deze modverzameling heeft een andere naam in modpack.conf wat hernoemen hier " -"zal overschrijven." +"Deze mod verzameling heeft een andere naam in modpack.conf welke de " +"herbenoeming hier zal overschrijven." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" @@ -420,7 +416,7 @@ msgstr "" #. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" -msgstr "Standaard" +msgstr "standaard" #. ~ "eased" is a noise parameter flag. #. It is used to make the map smoother and @@ -431,29 +427,25 @@ msgid "eased" msgstr "makkelijker" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "$1 (Enabled)" -msgstr "Ingeschakeld" +msgstr "$1 (Ingeschakeld)" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "$1 mods" -msgstr "3D modus" +msgstr "$1 mods" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" msgstr "Installeren van mod $1 in $2 is mislukt" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "Mod installeren: kan de echte modnaam niet vinden voor: $1" +msgstr "Mod installeren: kan de echte mod-naam niet vinden voor: $1" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install Mod: Unable to find suitable folder name for modpack $1" msgstr "" -"Mod installeren: kan geen geschikte map-naam vinden voor modverzameling $1" +"Mod installeren: kan geen geschikte map naam vinden voor mod verzameling $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" @@ -476,14 +468,12 @@ msgid "Unable to install a game as a $1" msgstr "Installeren van een spel als $1 mislukt" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a mod as a $1" msgstr "Installeren van mod $1 in $2 is mislukt" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a modpack as a $1" -msgstr "Installeren van mod $1 in $2 is mislukt" +msgstr "Installeren van mod verzameling $1 in $2 is mislukt" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" @@ -494,9 +484,8 @@ msgid "Content" msgstr "Inhoud" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Disable Texture Pack" -msgstr "Selecteer textuurverzameling:" +msgstr "Uitschakelen Textuurverzameling" #: builtin/mainmenu/tab_content.lua msgid "Information:" @@ -603,9 +592,8 @@ msgid "Select World:" msgstr "Selecteer Wereld:" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Server Port" -msgstr "Server-poort" +msgstr "Server Poort" #: builtin/mainmenu/tab_local.lua msgid "Start Game" @@ -907,9 +895,8 @@ msgstr "Het gespecificeerde wereld-pad bestaat niet: " #. non-Latin script, like Chinese. #. When in doubt, test your translation. #: src/client/fontengine.cpp -#, fuzzy msgid "needs_fallback_font" -msgstr "no" +msgstr "needs_fallback_font" #: src/client/game.cpp msgid "" @@ -920,16 +907,14 @@ msgstr "" "Kijk in debug.txt voor details." #: src/client/game.cpp -#, fuzzy msgid "- Address: " -msgstr "Lokaal server-adres " +msgstr "-Lokaal server-adres: " #: src/client/game.cpp msgid "- Creative Mode: " msgstr "- Creatieve Modus: " #: src/client/game.cpp -#, fuzzy msgid "- Damage: " msgstr "- Verwondingen: " From 604acbfd29e526eee0139dfd081ee114765fb539 Mon Sep 17 00:00:00 2001 From: An0n3m0us Date: Tue, 14 Apr 2020 18:54:42 +0000 Subject: [PATCH 289/424] Translated using Weblate (Hungarian) Currently translated at 69.9% (901 of 1288 strings) --- po/hu/minetest.po | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/po/hu/minetest.po b/po/hu/minetest.po index 0bf6d32a8..64fe2cc37 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Hungarian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-12 12:11+0000\n" -"Last-Translator: Larissa Piklor \n" +"PO-Revision-Date: 2020-04-15 06:48+0000\n" +"Last-Translator: An0n3m0us \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -1824,7 +1824,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of ridged mountains." -msgstr "2D zaj, amely a hegyvonulatok az alakját/méretét szabályozza." +msgstr "2D zaj, amely a hegyvonulatok az alakját/méretét szabályozza." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." @@ -1832,7 +1832,7 @@ msgstr "2D zaj, amely a dombok alakját/méretét szabályozza." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." -msgstr "2D zaj ami irányítja a lépés hegyek formáját/méretét" +msgstr "2D zaj ami irányítja a lépés hegyek formáját/méretét." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." @@ -3972,8 +3972,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a játékos hátrafelé mozgásához.\n" -"Az automatikus előremozgást is kikapcsolja, ha aktív.Lásd: " -"http://irrlicht.sourceforge.net/docu/" +"Az automatikus előremozgást is kikapcsolja, ha aktív.\n" +"Lásd: http://irrlicht.sourceforge.net/docu/" "namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp @@ -4991,9 +4991,8 @@ msgid "Mapgen debug" msgstr "Térkép generátor hibakereső" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen flags" -msgstr "Térképgeneráló zászlók" +msgstr "Térképgeneráló zászlók" #: src/settings_translation_file.cpp msgid "Mapgen name" From 9feae63557aad3653aa8619c98179378a9f88ab7 Mon Sep 17 00:00:00 2001 From: William Desportes Date: Sun, 19 Apr 2020 15:26:43 +0000 Subject: [PATCH 290/424] Translated using Weblate (French) Currently translated at 96.6% (1245 of 1288 strings) --- po/fr/minetest.po | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/po/fr/minetest.po b/po/fr/minetest.po index 928e8ffaf..de4164e6f 100644 --- a/po/fr/minetest.po +++ b/po/fr/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: French (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-03 20:24+0000\n" -"Last-Translator: Allan Nordhøy \n" +"PO-Revision-Date: 2020-04-22 04:11+0000\n" +"Last-Translator: William Desportes \n" "Language-Team: French \n" "Language: fr\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.0.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -2554,7 +2554,6 @@ msgid "Dec. volume key" msgstr "Touche pour diminuer le volume" #: src/settings_translation_file.cpp -#, fuzzy msgid "Decrease this to increase liquid resistance to movement." msgstr "Diminuez ceci pour augmenter la résistance liquide au mouvement." @@ -2978,9 +2977,8 @@ msgid "Fall bobbing factor" msgstr "Intensité du mouvement de tête en tombant" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "Police alternative" +msgstr "Chemin de police alternative" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -3834,14 +3832,12 @@ msgid "Invert vertical mouse movement." msgstr "Inverser les mouvements verticaux de la souris." #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic font path" -msgstr "Chemin de la police Monospace" +msgstr "Chemin de la police Italique" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic monospace font path" -msgstr "Chemin de la police Monospace" +msgstr "Chemin de la police Italique Monospace" #: src/settings_translation_file.cpp msgid "Item entity TTL" @@ -4774,9 +4770,8 @@ msgid "Light curve boost spread" msgstr "Étalement du boost intermédiaire de la courbe de lumière" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve gamma" -msgstr "Boost intermédiaire de la courbe de lumière" +msgstr "Courbe de lumière gamma" #: src/settings_translation_file.cpp #, fuzzy @@ -5012,36 +5007,32 @@ msgid "Mapgen Fractal" msgstr "Générateur de terrain Fractal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Fractal specific flags" -msgstr "Signaux spécifiques au générateur de terrain plat" +msgstr "Drapeaux spécifiques au générateur Fractal" #: src/settings_translation_file.cpp msgid "Mapgen V5" msgstr "Générateur de terrain V5" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V5 specific flags" -msgstr "Signaux spécifiques au générateur v5" +msgstr "Drapeaux spécifiques au générateur v5" #: src/settings_translation_file.cpp msgid "Mapgen V6" msgstr "Générateur de terrain V6" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V6 specific flags" -msgstr "Signaux spécifiques au générateur v6" +msgstr "Drapeaux spécifiques au générateur V6" #: src/settings_translation_file.cpp msgid "Mapgen V7" msgstr "Générateur de terrain v7" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V7 specific flags" -msgstr "Signaux spécifiques au générateur v7" +msgstr "Drapeaux spécifiques au générateur V7" #: src/settings_translation_file.cpp msgid "Mapgen Valleys" From fee4ac710ca0448fd1ff9c05eb614a8c231c7b66 Mon Sep 17 00:00:00 2001 From: anonymous Date: Mon, 20 Apr 2020 06:54:11 +0000 Subject: [PATCH 291/424] Translated using Weblate (Polish) Currently translated at 77.0% (993 of 1288 strings) --- po/pl/minetest.po | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/po/pl/minetest.po b/po/pl/minetest.po index 4448fa404..076333905 100644 --- a/po/pl/minetest.po +++ b/po/pl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Polish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-03-31 10:14+0000\n" -"Last-Translator: sfan5 \n" +"PO-Revision-Date: 2020-04-22 04:11+0000\n" +"Last-Translator: anonymous \n" "Language-Team: Polish \n" "Language: pl\n" @@ -13,7 +13,7 @@ msgstr "" "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 4.0-dev\n" +"X-Generator: Weblate 4.0.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -121,9 +121,8 @@ msgid "Mod:" msgstr "Mod:" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No (optional) dependencies" -msgstr "Dodatkowe zależności:" +msgstr "Brak (dodatkowych) zależności" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." From 5de7d1c346a38ab44f5f3a720466e101d88c7d84 Mon Sep 17 00:00:00 2001 From: pitchblack Date: Sat, 18 Apr 2020 19:06:59 +0000 Subject: [PATCH 292/424] Translated using Weblate (Russian) Currently translated at 94.8% (1222 of 1288 strings) --- po/ru/minetest.po | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/po/ru/minetest.po b/po/ru/minetest.po index e89a8ebe1..2ca6d0a98 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -3,17 +3,17 @@ msgstr "" "Project-Id-Version: Russian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-02 14:09+0000\n" -"Last-Translator: Tiller Luna \n" +"PO-Revision-Date: 2020-04-22 04:11+0000\n" +"Last-Translator: pitchblack \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 4.0-dev\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 4.0.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -152,9 +152,8 @@ msgid "World:" msgstr "Мир:" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "enabled" -msgstr "включить" +msgstr "включен" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" @@ -294,13 +293,12 @@ msgid "Rename Modpack:" msgstr "Переименовать пакет модов:" #: builtin/mainmenu/dlg_rename_modpack.lua -#, fuzzy msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" -"Этот пакет модов имеет имя, явно указанное в modpack.conf, которое не " -"изменится от переименования здесь." +"Этот модпак имеет явное имя, указанное в modpack.conf, который переопределит " +"любое переименование здесь." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" @@ -355,9 +353,8 @@ msgid "Please enter a valid number." msgstr "Пожалуйста, введите допустимое число." #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "Restore Default" -msgstr "Сбросить значение" +msgstr "Сброс настроек" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" @@ -439,9 +436,8 @@ msgid "$1 mods" msgstr "$1 модов" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Failed to install $1 to $2" -msgstr "Невозможно установить $1 в $2" +msgstr "Не удалось установить $1 в $2" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" @@ -2007,6 +2003,13 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Изменяет кривую блеска, применяя к ней «гамма-\n" +"коррекцию». Более высокие значения делают средний \n" +"и нижний уровни света ярче. Значение «1.0» оставляет\n" +"кривую блеска без изменений. Это оказывает \n" +"существенное влияние только на дневной и \n" +"искусственный свет, он очень мало влияет на \n" +"естественный ночной свет." #: src/settings_translation_file.cpp msgid "Altitude chill" @@ -2164,24 +2167,20 @@ msgid "Block send optimize distance" msgstr "Оптимизированное расстояние отправки блока" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "Путь к моноширинному шрифту" +msgstr "Путь к жирному и курсивному шрифту" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" -msgstr "Путь к моноширинному шрифту" +msgstr "Путь к жирному и курсиву моноширинного шрифта" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "Путь к шрифту" +msgstr "Путь к жирному шрифту" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" -msgstr "Путь к моноширинному шрифту" +msgstr "Путь к жирному моноширинному шрифту" #: src/settings_translation_file.cpp msgid "Build inside player" From eeb85c304bb90ae51211d6ae962da900ab36b0a3 Mon Sep 17 00:00:00 2001 From: ERDwaYbR Date: Mon, 20 Apr 2020 13:16:58 +0000 Subject: [PATCH 293/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 87.8% (1132 of 1288 strings) --- po/zh_CN/minetest.po | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index e7f1a8eec..b34d33a70 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Chinese (Simplified) (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-03-08 15:32+0000\n" -"Last-Translator: wzy2006 <3450354617@qq.com>\n" +"PO-Revision-Date: 2020-04-22 04:11+0000\n" +"Last-Translator: ERDwaYbR \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.0.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -5504,19 +5504,24 @@ msgid "Profiling" msgstr "Mod 剖析" #: src/settings_translation_file.cpp +#, fuzzy msgid "Proportion of large caves that contain liquid." -msgstr "" +msgstr "包含液体的大洞穴的比例。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Radius of cloud area stated in number of 64 node cloud squares.\n" "Values larger than 26 will start to produce sharp cutoffs at cloud area " "corners." msgstr "" +"以64个节点的云平方数表示的云区域半径。\n" +"大于26的值将开始在云区域的拐角处产生急剧的截止。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Raises terrain to make valleys around the rivers." -msgstr "" +msgstr "抬高地形使河流周围形成山谷。" #: src/settings_translation_file.cpp msgid "Random input" @@ -5527,8 +5532,9 @@ msgid "Range select key" msgstr "范围选择键" #: src/settings_translation_file.cpp +#, fuzzy msgid "Recent Chat Messages" -msgstr "" +msgstr "最近聊天消息" #: src/settings_translation_file.cpp #, fuzzy From c3306c469ae22bb20a16ae277a4d0443d68da115 Mon Sep 17 00:00:00 2001 From: Muhammad Nur Hidayat Yasuyoshi Date: Tue, 21 Apr 2020 04:02:11 +0000 Subject: [PATCH 294/424] Translated using Weblate (Malay) Currently translated at 100.0% (1288 of 1288 strings) --- po/ms/minetest.po | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/po/ms/minetest.po b/po/ms/minetest.po index 86b79c739..4e17b505f 100644 --- a/po/ms/minetest.po +++ b/po/ms/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Malay (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-02-18 06:32+0000\n" -"Last-Translator: Muhammad Nur Hidayat Yasuyoshi \n" +"PO-Revision-Date: 2020-04-22 04:11+0000\n" +"Last-Translator: Muhammad Nur Hidayat Yasuyoshi \n" "Language-Team: Malay \n" "Language: ms\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.11\n" +"X-Generator: Weblate 4.0.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -2184,7 +2184,6 @@ msgid "Bumpmapping" msgstr "Pemetaan timbul" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Only works on GLES platforms. Most users will not need to change this.\n" @@ -2192,7 +2191,8 @@ msgid "" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" "Jarak kamera 'berhampiran satah ketipan' dalam nilai nod, antara 0 dan 0.5.\n" -"Kebanyakan pengguna tidak perlu mengubah nilai ini.\n" +"Hanya berkesan di platform GLES. Kebanyakan pengguna tidak perlu mengubah " +"nilai ini.\n" "Menaikkan nilai boleh kurangkan artifak pada GPU yang lebih lemah.\n" "0.1 = Asal, 0.25 = Nilai bagus untuk tablet yang lebih lemah." @@ -5315,9 +5315,8 @@ msgstr "" "senarai pelayan." #: src/settings_translation_file.cpp -#, fuzzy msgid "Near plane" -msgstr "Satah dekat ketipan" +msgstr "Dekat satah" #: src/settings_translation_file.cpp msgid "Network" From 2f8492949a2d0a31b381ae116bd075e3ae7d2b41 Mon Sep 17 00:00:00 2001 From: Jeannette L Date: Thu, 23 Apr 2020 13:02:51 +0000 Subject: [PATCH 295/424] Translated using Weblate (French) Currently translated at 96.6% (1245 of 1288 strings) --- po/fr/minetest.po | 62 +++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/po/fr/minetest.po b/po/fr/minetest.po index de4164e6f..b672b340c 100644 --- a/po/fr/minetest.po +++ b/po/fr/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: French (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-22 04:11+0000\n" -"Last-Translator: William Desportes \n" +"PO-Revision-Date: 2020-04-24 08:43+0000\n" +"Last-Translator: Jeannette L \n" "Language-Team: French \n" "Language: fr\n" @@ -750,7 +750,7 @@ msgstr "Réinitialiser le monde" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" -msgstr "Ecran :" +msgstr "Écran :" #: builtin/mainmenu/tab_settings.lua msgid "Settings" @@ -1118,7 +1118,7 @@ msgstr "Définitions des items..." #: src/client/game.cpp msgid "KiB/s" -msgstr "Ko/s" +msgstr "Kio/s" #: src/client/game.cpp msgid "Media..." @@ -1126,7 +1126,7 @@ msgstr "Média..." #: src/client/game.cpp msgid "MiB/s" -msgstr "Mo/s" +msgstr "Mio/s" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" @@ -1258,11 +1258,11 @@ msgstr "ok" #: src/client/gameui.cpp msgid "Chat hidden" -msgstr "Chat caché" +msgstr "Tchat caché" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "Chat affiché" +msgstr "Tchat affiché" #: src/client/gameui.cpp msgid "HUD hidden" @@ -1367,7 +1367,7 @@ msgstr "Menu Gauche" #: src/client/keycode.cpp msgid "Left Shift" -msgstr "Shift gauche" +msgstr "Maj. gauche" #: src/client/keycode.cpp msgid "Left Windows" @@ -1510,7 +1510,7 @@ msgstr "Sélectionner" #: src/client/keycode.cpp msgid "Shift" -msgstr "Shift" +msgstr "Maj." #: src/client/keycode.cpp msgid "Sleep" @@ -1561,13 +1561,13 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" -"Vous êtes sur le point de rejoindre ce serveur avec le nom \"%s\" pour la " +"Vous êtes sur le point de rejoindre ce serveur avec le nom « %s » pour la " "première fois.\n" "Si vous continuez, un nouveau compte utilisant vos identifiants sera créé " "sur ce serveur.\n" -"Veuillez retaper votre mot de passe et cliquer sur \"S'enregistrer et " -"rejoindre\" pour confirmer la création de votre compte, ou cliquez sur " -"\"Annuler\"." +"Veuillez retaper votre mot de passe et cliquer sur « S'enregistrer et " +"rejoindre » pour confirmer la création de votre compte, ou cliquez sur « " +"Annuler »." #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" @@ -1595,7 +1595,7 @@ msgstr "Changer la caméra" #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" -msgstr "Chatter" +msgstr "Tchat" #: src/gui/guiKeyChangeMenu.cpp msgid "Command" @@ -1615,7 +1615,7 @@ msgstr "Réduire le volume" #: src/gui/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" -msgstr "Double-appui sur \"saut\" pour voler" +msgstr "Double-appui sur « saut » pour voler" #: src/gui/guiKeyChangeMenu.cpp msgid "Drop" @@ -1773,8 +1773,8 @@ msgid "" "If enabled, virtual joystick will also tap \"aux\" button when out of main " "circle." msgstr "" -"(Android) Utiliser le joystick vrituel pour déclencher le bouton \"aux\".\n" -"Si activé, le joystick virtuel va également appuyer sur le bouton \"aux\" " +"(Android) Utiliser le joystick vrituel pour déclencher le bouton « aux ».\n" +"Si activé, le joystick virtuel va également appuyer sur le bouton « aux » " "lorsqu'en dehors du cercle principal." #: src/settings_translation_file.cpp @@ -2228,11 +2228,11 @@ msgstr "Bruit des caves" #: src/settings_translation_file.cpp msgid "Cave noise #1" -msgstr "Bruit de cave #1" +msgstr "Bruit de cave nº 1" #: src/settings_translation_file.cpp msgid "Cave noise #2" -msgstr "Bruit de grotte #2" +msgstr "Bruit de grotte nº 2" #: src/settings_translation_file.cpp msgid "Cave width" @@ -2240,11 +2240,11 @@ msgstr "Largeur de la grotte" #: src/settings_translation_file.cpp msgid "Cave1 noise" -msgstr "Bruit des cave #1" +msgstr "Bruit des cave nº 1" #: src/settings_translation_file.cpp msgid "Cave2 noise" -msgstr "Bruit des caves #2" +msgstr "Bruit des caves nº 2" #: src/settings_translation_file.cpp msgid "Cavern limit" @@ -2294,7 +2294,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Chat key" -msgstr "Chatter" +msgstr "Tchatter" #: src/settings_translation_file.cpp msgid "Chat message count limit" @@ -2318,7 +2318,7 @@ msgstr "Afficher le chat" #: src/settings_translation_file.cpp msgid "Chatcommands" -msgstr "Commandes de chat" +msgstr "Commandes de tchat" #: src/settings_translation_file.cpp msgid "Chunk size" @@ -2342,7 +2342,7 @@ msgstr "Client" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "Client et Serveur" +msgstr "Client et serveur" #: src/settings_translation_file.cpp msgid "Client modding" @@ -2502,12 +2502,12 @@ msgid "" msgstr "" "Contrôle la largeur des tunnels, une valeur plus faible crée des tunnels " "plus large.\n" -"Valeur >= 10.0 désactive complètement la génération de tunnel et évite le " +"Valeur >= 10,0 désactive complètement la génération de tunnel et évite le " "calcul intensif de bruit." #: src/settings_translation_file.cpp msgid "Crash message" -msgstr "Message d'interruption du serveur" +msgstr "Message de plantage" #: src/settings_translation_file.cpp msgid "Creative" @@ -2543,7 +2543,7 @@ msgstr "Infos de débogage" #: src/settings_translation_file.cpp msgid "Debug log file size threshold" -msgstr "Seuil de la taille du fichier de logs" +msgstr "Seuil de la taille du fichier de journal" #: src/settings_translation_file.cpp msgid "Debug log level" @@ -2733,11 +2733,11 @@ msgstr "Nom de domaine du serveur affichée sur la liste des serveurs publics." #: src/settings_translation_file.cpp msgid "Double tap jump for fly" -msgstr "Double-appui sur \"saut\" pour voler" +msgstr "Double-appui sur « saut » pour voler" #: src/settings_translation_file.cpp msgid "Double-tapping the jump key toggles fly mode." -msgstr "Double-appui sur \"saut\" pour voler." +msgstr "Double-appui sur « saut » pour voler." #: src/settings_translation_file.cpp msgid "Drop item key" @@ -3053,7 +3053,7 @@ msgid "" "light edge to transparent textures. Apply this filter to clean that up\n" "at texture load time." msgstr "" -"Les textures filtrées peuvent mélanger des valeurs RGB avec des zones 100% " +"Les textures filtrées peuvent mélanger des valeurs RGB avec des zones 100 % " "transparentes.\n" "aboutissant parfois à des bords foncés ou clairs sur les textures " "transparentes.\n" @@ -3271,7 +3271,7 @@ msgid "" "and junglegrass, in all other mapgens this flag controls all decorations." msgstr "" "Attributs de génération de terrain globaux.\n" -"Dans le générateur de terrain v6, le signal ‹décorations› contrôle toutes " +"Dans le générateur de terrain v6, le signal « décorations » contrôle toutes " "les décorations sauf les arbres\n" "et l’herbe de la jungle, dans tous les autres générateurs de terrain, ce " "signal contrôle toutes les décorations." From 082d48e644cc0e32770dcc7f6cf1a828e8255adf Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 27 Apr 2020 16:17:47 +0000 Subject: [PATCH 296/424] Translated using Weblate (Czech) Currently translated at 58.9% (759 of 1288 strings) --- po/cs/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/cs/minetest.po b/po/cs/minetest.po index 097a65cb0..ab4d74969 100644 --- a/po/cs/minetest.po +++ b/po/cs/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Czech (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-02-24 23:32+0000\n" -"Last-Translator: Vojtěch Šamla \n" +"PO-Revision-Date: 2020-04-29 12:38+0000\n" +"Last-Translator: Anonymous \n" "Language-Team: Czech \n" "Language: cs\n" @@ -12,11 +12,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.0.2\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" -msgstr "Vzkřísit" +msgstr "Oživit" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" From f0e31ee1be75f9a1e3e8c62ff9e08257cf3cda2f Mon Sep 17 00:00:00 2001 From: Marek Sebera Date: Mon, 27 Apr 2020 16:30:07 +0000 Subject: [PATCH 297/424] Translated using Weblate (Czech) Currently translated at 58.9% (759 of 1288 strings) --- po/cs/minetest.po | 376 +++++++++++++++++++++------------------------- 1 file changed, 168 insertions(+), 208 deletions(-) diff --git a/po/cs/minetest.po b/po/cs/minetest.po index ab4d74969..551eedaa2 100644 --- a/po/cs/minetest.po +++ b/po/cs/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-04-29 12:38+0000\n" -"Last-Translator: Anonymous \n" +"Last-Translator: Marek Sebera \n" "Language-Team: Czech \n" "Language: cs\n" @@ -326,9 +326,8 @@ msgid "Enabled" msgstr "Zapnuto" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "Lacunarity" -msgstr "Zabezpečení" +msgstr "Lakunarita" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Octaves" @@ -336,11 +335,11 @@ msgstr "Oktávy" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" -msgstr "" +msgstr "Odstup" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" -msgstr "" +msgstr "Urputnost" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." @@ -356,12 +355,11 @@ msgstr "Obnovit výchozí" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" -msgstr "" +msgstr "Přiblížení" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "Select directory" -msgstr "Vybrat soubor s modem:" +msgstr "Vyberte adresář" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select file" @@ -385,7 +383,7 @@ msgstr "X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" -msgstr "" +msgstr "Rozptyl X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" @@ -393,7 +391,7 @@ msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" -msgstr "" +msgstr "Rozptyl Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" @@ -401,7 +399,7 @@ msgstr "Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" -msgstr "" +msgstr "Rozptyl Z" #. ~ "absvalue" is a noise parameter flag. #. It is short for "absolute value". @@ -409,15 +407,14 @@ msgstr "" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" -msgstr "" +msgstr "absolutnihodnota" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options #. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "defaults" -msgstr "Výchozí hra" +msgstr "Výchozí hodnoty" #. ~ "eased" is a noise parameter flag. #. It is used to make the map smoother and @@ -425,117 +422,98 @@ msgstr "Výchozí hra" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" -msgstr "" +msgstr "vyhlazení" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "$1 (Enabled)" -msgstr "Zapnuto" +msgstr "$1 (Povoleno)" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "$1 mods" -msgstr "Režim 3D zobrazení" +msgstr "$1 rozšíření" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" msgstr "Selhala instalace $1 do $2" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "Instalace modu: nenašel jsem skutečné jméno modu: $1" +msgstr "Instalace rozšíření: nenašel jsem skutečné jméno modu: $1" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install Mod: Unable to find suitable folder name for modpack $1" msgstr "" -"Instalace modu: nenalezen vhodný adresář s příslušným názvem pro balíček $1" +"Instalace rozšíření: nenalezen vhodný adresář s příslušným názvem pro " +"balíček $1" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install: Unsupported file type \"$1\" or broken archive" msgstr "" -"\n" -"Instalace modu: špatný archiv nebo nepodporovaný typ souboru \"$1\"" +"Instalace rozšíření: poškozený archiv nebo nepodporovaný typ souboru \"$1\"" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install: file: \"$1\"" -msgstr "Instalace modu: ze souboru: \"$1\"" +msgstr "Instalace: soubor: \"$1\"" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to find a valid mod or modpack" -msgstr "" -"Instalace modu: nenalezen vhodný adresář s příslušným názvem pro balíček $1" +msgstr "Platné rozšíření nebylo nalezeno" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a $1 as a texture pack" -msgstr "Selhala instalace $1 do $2" +msgstr "Selhala instalace $1 jako rozšíření textur" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a game as a $1" -msgstr "Selhala instalace $1 do $2" +msgstr "Selhala instalace hru jako $1" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a mod as a $1" -msgstr "Selhala instalace $1 do $2" +msgstr "Selhala instalace rozšíření $1" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a modpack as a $1" -msgstr "Selhala instalace $1 do $2" +msgstr "Selhala instalace rozšíření $1" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "" +msgstr "Procházet online obsah" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Content" -msgstr "Pokračovat" +msgstr "Obsah" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Disable Texture Pack" -msgstr "Vyberte balík textur:" +msgstr "Zakázat Rozšíření Textur" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Information:" -msgstr "Informace o modu:" +msgstr "Informace:" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Installed Packages:" -msgstr "Nainstalované mody:" +msgstr "Instalované balíčky:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." msgstr "Žádné závislosti." #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "No package description available" -msgstr "Mod nemá popis" +msgstr "Balíček nemá žádný popis" #: builtin/mainmenu/tab_content.lua msgid "Rename" msgstr "Přejmenovat" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Uninstall Package" -msgstr "Odinstalovat vybraný mod" +msgstr "Odinstalovat balíček" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Use Texture Pack" -msgstr "Balíky textur" +msgstr "Použít Rozšíření Textur" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" @@ -543,7 +521,7 @@ msgstr "Aktivní přispěvatelé" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "Klíčoví vývojáři" +msgstr "Hlavní vývojáři" #: builtin/mainmenu/tab_credits.lua msgid "Credits" @@ -563,7 +541,7 @@ msgstr "Uveřejnit server" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" -msgstr "Svázat adresu" +msgstr "Poslouchat na Adrese" #: builtin/mainmenu/tab_local.lua msgid "Configure" @@ -642,9 +620,8 @@ msgid "Favorite" msgstr "Oblíbené" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Join Game" -msgstr "Založit hru" +msgstr "Připojit se ke hře" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Name / Password" @@ -657,7 +634,7 @@ msgstr "Ping" #. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "PvP povoleno" +msgstr "PvP (hráč proti hráči) povoleno" #: builtin/mainmenu/tab_settings.lua msgid "2x" @@ -676,9 +653,8 @@ msgid "8x" msgstr "8x" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "All Settings" -msgstr "Nastavení" +msgstr "Všechna Nastavení" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" @@ -689,9 +665,8 @@ msgid "Are you sure to reset your singleplayer world?" msgstr "Jste si jisti, že chcete resetovat místní svět?" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Autosave Screen Size" -msgstr "Ukládat velikost obr." +msgstr "Pamatovat si velikost obrazovky" #: builtin/mainmenu/tab_settings.lua msgid "Bilinear Filter" @@ -714,9 +689,8 @@ msgid "Fancy Leaves" msgstr "Vícevrstevné listí" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Generate Normal Maps" -msgstr "Generovat normálové mapy" +msgstr "Generovat Normální Mapy" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap" @@ -784,7 +758,7 @@ msgstr "Shadery" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" -msgstr "" +msgstr "Shadery (není dostupné)" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" @@ -807,9 +781,8 @@ msgid "Tone Mapping" msgstr "Tone mapping" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Touchthreshold: (px)" -msgstr "Dosah dotyku (px)" +msgstr "Dosah dotyku: (px)" #: builtin/mainmenu/tab_settings.lua msgid "Trilinear Filter" @@ -820,9 +793,8 @@ msgid "Waving Leaves" msgstr "Vlnění listů" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Waving Liquids" -msgstr "Vlnění bloků" +msgstr "Vlnění Kapalin" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" @@ -899,7 +871,7 @@ msgstr "Zvolte prosím název!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "" +msgstr "Soubor s heslem nebylo možné otevřít: " #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " @@ -915,7 +887,7 @@ msgstr "Uvedená cesta ke světu neexistuje: " #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "no" +msgstr "vyzaduje_fallback_font" #: src/client/game.cpp msgid "" @@ -959,42 +931,36 @@ msgid "- Server Name: " msgstr "- Název serveru: " #: src/client/game.cpp -#, fuzzy msgid "Automatic forward disabled" -msgstr "Vpřed" +msgstr "Automatický posun vpřed zakázán" #: src/client/game.cpp -#, fuzzy msgid "Automatic forward enabled" -msgstr "Vpřed" +msgstr "Automatický posun vpřed povolen" #: src/client/game.cpp -#, fuzzy msgid "Camera update disabled" -msgstr "Klávesa pro přepínání aktualizace pohledu" +msgstr "Aktualizace kamery (pohledu) zakázána" #: src/client/game.cpp -#, fuzzy msgid "Camera update enabled" -msgstr "Klávesa pro přepínání aktualizace pohledu" +msgstr "Aktualizace kamery (pohledu) povolena" #: src/client/game.cpp msgid "Change Password" msgstr "Změnit heslo" #: src/client/game.cpp -#, fuzzy msgid "Cinematic mode disabled" -msgstr "Klávesa plynulého pohybu kamery" +msgstr "Filmový režim zakázán" #: src/client/game.cpp -#, fuzzy msgid "Cinematic mode enabled" -msgstr "Klávesa plynulého pohybu kamery" +msgstr "Filmový režim povolen" #: src/client/game.cpp msgid "Client side scripting is disabled" -msgstr "" +msgstr "Uživatelské skripty nejsou povoleny" #: src/client/game.cpp msgid "Connecting to server..." @@ -1047,16 +1013,15 @@ msgstr "Spouštím server…" #: src/client/game.cpp msgid "Debug info and profiler graph hidden" -msgstr "" +msgstr "Ladící informace a profilovací graf skryty" #: src/client/game.cpp -#, fuzzy msgid "Debug info shown" -msgstr "Klávesa pro zobrazení ladících informací" +msgstr "Ladící informace zobrazeny" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" -msgstr "" +msgstr "Ladící informace, profilovací graf a obrysy skryty" #: src/client/game.cpp msgid "" @@ -1088,11 +1053,11 @@ msgstr "" #: src/client/game.cpp msgid "Disabled unlimited viewing range" -msgstr "" +msgstr "Neomezený pohled zakázán" #: src/client/game.cpp msgid "Enabled unlimited viewing range" -msgstr "" +msgstr "Neomezený pohled povolen" #: src/client/game.cpp msgid "Exit to Menu" @@ -1103,42 +1068,36 @@ msgid "Exit to OS" msgstr "Ukončit hru" #: src/client/game.cpp -#, fuzzy msgid "Fast mode disabled" -msgstr "Rychlost v turbo režimu" +msgstr "Rychlý režim zakázán" #: src/client/game.cpp -#, fuzzy msgid "Fast mode enabled" -msgstr "Rychlost v turbo režimu" +msgstr "Rychlý režim povolen" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "" +msgstr "Rychlý režim povolen (pozn.: nemáte oprávnění 'fast')" #: src/client/game.cpp -#, fuzzy msgid "Fly mode disabled" -msgstr "Rychlost v turbo režimu" +msgstr "Režim létání zakázán" #: src/client/game.cpp -#, fuzzy msgid "Fly mode enabled" -msgstr "Zranění povoleno" +msgstr "Režim létání povolen" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "" +msgstr "Režim létání povolen (pozn.: nemáte oprávnění 'fly')" #: src/client/game.cpp -#, fuzzy msgid "Fog disabled" -msgstr "Je-li zakázáno " +msgstr "Mlha je zakázána" #: src/client/game.cpp -#, fuzzy msgid "Fog enabled" -msgstr "zapnuto" +msgstr "Mlha je povolena" #: src/client/game.cpp msgid "Game info:" @@ -1170,49 +1129,47 @@ msgstr "MiB/s" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "" +msgstr "Minimapa je aktuálně zakázána" #: src/client/game.cpp -#, fuzzy msgid "Minimap hidden" -msgstr "Minimapa" +msgstr "Minimapa je skryta" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" -msgstr "" +msgstr "Minimapa v režimu radar, Přiblížení x1" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x2" -msgstr "" +msgstr "Minimapa v režimu radar, Přiblížení x2" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x4" -msgstr "" +msgstr "Minimapa v režimu radar, Přiblížení x4" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x1" -msgstr "" +msgstr "Minimapa v režimu povrch, Přiblížení x1" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x2" -msgstr "" +msgstr "Minimapa v režimu povrch, Přiblížení x2" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x4" -msgstr "" +msgstr "Minimapa v režimu povrch, Přiblížení x4" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "" +msgstr "Režim bez ořezu zakázán" #: src/client/game.cpp -#, fuzzy msgid "Noclip mode enabled" -msgstr "Zranění povoleno" +msgstr "Režim bez ořezu povolen" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "" +msgstr "Režim bez ořezu povolen (pozn.: nemáte oprávnění 'noclip')" #: src/client/game.cpp msgid "Node definitions..." @@ -1228,15 +1185,15 @@ msgstr "Zapnuto" #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "" +msgstr "Posun v režimu Pitch zakázán" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "" +msgstr "Posun v režimu Pitch povolen" #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "" +msgstr "Profilovací graf zobrazen" #: src/client/game.cpp msgid "Remote server" @@ -1259,29 +1216,27 @@ msgid "Sound Volume" msgstr "Hlasitost" #: src/client/game.cpp -#, fuzzy msgid "Sound muted" -msgstr "Hlasitost" +msgstr "Zvuk vypnut" #: src/client/game.cpp -#, fuzzy msgid "Sound unmuted" -msgstr "Hlasitost" +msgstr "Zvuk zapnut" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing range changed to %d" -msgstr "Hlasitost nastavena na %d%%" +msgstr "Omezení dohlédnutí upraveno na %d" #: src/client/game.cpp #, c-format msgid "Viewing range is at maximum: %d" -msgstr "" +msgstr "Omezení dohlédnutí na maximu: %d" #: src/client/game.cpp #, c-format msgid "Viewing range is at minimum: %d" -msgstr "" +msgstr "Omezení dohlédnutí na minimu: %d" #: src/client/game.cpp #, c-format @@ -1290,50 +1245,48 @@ msgstr "Hlasitost nastavena na %d%%" #: src/client/game.cpp msgid "Wireframe shown" -msgstr "" +msgstr "Obrysy zobrazeny" #: src/client/game.cpp msgid "Zoom currently disabled by game or mod" -msgstr "" +msgstr "Přiblížení je aktuálně zakázáno" #: src/client/game.cpp src/gui/modalMenu.cpp msgid "ok" msgstr "OK" #: src/client/gameui.cpp -#, fuzzy msgid "Chat hidden" -msgstr "Klávesa chatu" +msgstr "Chat skryt" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "" +msgstr "Chat zobrazen" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "" +msgstr "Ovládací prvky skryty" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "" +msgstr "Ovládací prvky zobrazeny" #: src/client/gameui.cpp msgid "Profiler hidden" -msgstr "" +msgstr "Profilování skryto" #: src/client/gameui.cpp #, c-format msgid "Profiler shown (page %d of %d)" -msgstr "" +msgstr "Profilování zobrazeno (strana %d z %d)" #: src/client/keycode.cpp msgid "Apps" msgstr "Aplikace" #: src/client/keycode.cpp -#, fuzzy msgid "Backspace" -msgstr "Zpět" +msgstr "Backspace" #: src/client/keycode.cpp msgid "Caps Lock" @@ -1373,7 +1326,7 @@ msgstr "Home" #: src/client/keycode.cpp msgid "IME Accept" -msgstr "IME Accept" +msgstr "Povolené IME" #: src/client/keycode.cpp msgid "IME Convert" @@ -1498,11 +1451,11 @@ msgstr "OEM Clear" #: src/client/keycode.cpp msgid "Page down" -msgstr "" +msgstr "Klávesa Page Down" #: src/client/keycode.cpp msgid "Page up" -msgstr "" +msgstr "Klávesa Page Up" #: src/client/keycode.cpp msgid "Pause" @@ -1596,7 +1549,7 @@ msgstr "Hesla se neshodují!" #: src/gui/guiConfirmRegistration.cpp msgid "Register and Join" -msgstr "" +msgstr "Registrovat a Připojit se" #: src/gui/guiConfirmRegistration.cpp #, c-format @@ -1607,33 +1560,35 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" +"Budete poprvé připojeni k serveru \"%s\".\n" +"Pokud budete pokračovat, nový uživatelský účet s vašimi údaji bude vytvořen " +"na tomto serveru.\n" +"Prosím znovu napište svoje aktuální heslo a klikněte na 'Registrovat a " +"Připojit se' pro potvrzení souhlasu, nebo vyberte 'Zrušit' pro návrat." #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" msgstr "Pokračovat" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "\"Special\" = climb down" -msgstr "„Použít“ = sestupovat dolů" +msgstr "„Speciální“ = sestoupit dolů" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Autoforward" -msgstr "Vpřed" +msgstr "Automaticky vpřed" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" -msgstr "" +msgstr "Automaticky skákat" #: src/gui/guiKeyChangeMenu.cpp msgid "Backward" msgstr "Vzad" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Change camera" -msgstr "Změnit nastavení kláves" +msgstr "Změnit nastavení kamery" #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" @@ -1648,9 +1603,8 @@ msgid "Console" msgstr "Konzole" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Dec. range" -msgstr "Vzdálenost dohledu" +msgstr "Snížit rozsah" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. volume" @@ -1669,9 +1623,8 @@ msgid "Forward" msgstr "Vpřed" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Inc. range" -msgstr "Vzdálenost dohledu" +msgstr "Zvýšit rozsah" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. volume" @@ -1725,44 +1678,39 @@ msgstr "Plížit se" #: src/gui/guiKeyChangeMenu.cpp msgid "Special" -msgstr "" +msgstr "Speciální" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle HUD" -msgstr "Létání" +msgstr "Zapnout/Vypnout ovládací prvky" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle chat log" -msgstr "Turbo" +msgstr "Zapnout/Vypnout záznam chatu" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fast" -msgstr "Turbo" +msgstr "Zapnout/Vypnout rychlost" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "Létání" +msgstr "Zapnout/Vypnout létání" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle fog" -msgstr "Létání" +msgstr "Zapnout/Vypnout mlhu" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle minimap" -msgstr "Duch" +msgstr "Zapnout/Vypnout minimapu" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "Duch" +msgstr "Zapnout/Vypnout režim ořezu" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle pitchmove" -msgstr "Turbo" +msgstr "Zapnout/Vypnout režim posunu Pitch" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" @@ -1789,9 +1737,8 @@ msgid "Exit" msgstr "Odejít" #: src/gui/guiVolumeChange.cpp -#, fuzzy msgid "Muted" -msgstr "Ztlumit" +msgstr "Ztlumeno" #: src/gui/guiVolumeChange.cpp msgid "Sound Volume: " @@ -1815,6 +1762,8 @@ msgid "" "(Android) Fixes the position of virtual joystick.\n" "If disabled, virtual joystick will center to first-touch's position." msgstr "" +"(Android) Opravena pozice virtuálního joysticku.\n" +"Pokud je zakázán, virtuální joystick se upraví podle umístění prvního dotyku." #: src/settings_translation_file.cpp msgid "" @@ -1822,9 +1771,11 @@ msgid "" "If enabled, virtual joystick will also tap \"aux\" button when out of main " "circle." msgstr "" +"(Android) Použít virtuální joystick pro stisknutí tlačítka 'aux'.\n" +"Pokud je povoleno, virtuální joystick automaticky stiskne tlačítko 'aux' " +"pokud je mimo hlavní kruh." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1835,10 +1786,13 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" -"(X,Y,Z) posun fraktálu od středu světa v jednotkách 'scale'.\n" -"Použito k posunutí vhodného spawnu v údolí poblíž souřadnic (0,0).\n" -"Výchozí nastavení je vhodné pro Mandelbrotovu množinu, pro Juliovu množinu " -"musí být zvlášť upraveny.\n" +"(X,Y,Z) rozestup fraktálu od středu světa v jednotkách 'scale'.\n" +"Může být použito k posunutí spawnu ze souřadnic (0,0),\n" +"nebo k umožnění přiblížení 'zoom in' na konkrétní bod,\n" +"zvýšením hodnoty 'scale'.\n" +"Výchozí nastavení je vhodné pro Mandelbrotovu množinu,\n" +"pro Juliovu a další množiny, může být potřeba speciálního\n" +"nastavení.\n" "Rozsah je přibližně od -2 do 2. Násobte 'scale' pro posun v blocích." #: src/settings_translation_file.cpp @@ -1851,6 +1805,13 @@ msgid "" "Default is for a vertically-squashed shape suitable for\n" "an island, set all 3 numbers equal for the raw shape." msgstr "" +"(X, Y, Z) měřítko fraktálu v uzlech.\n" +"Skutečná fraktální velikost bude 2 až 3krát větší.\n" +"Tato čísla mohou být velmi velká, fraktál se nemusí\n" +"vejít do světa.\n" +"Zvětšete tyto, abyste „přiblížili“ detail fraktálu.\n" +"Výchozí je pro svisle stlačený tvar, vhodný například\n" +"pro ostrov, nastavte všechna 3 čísla stejně pro ryzí tvar." #: src/settings_translation_file.cpp msgid "" @@ -1862,31 +1823,31 @@ msgstr "" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of ridged mountains." -msgstr "" +msgstr "2D šum, který definuje tvar/velikost horských útvarů." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." -msgstr "" +msgstr "2D šum, který definuje tvar/velikost postupných hor." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." -msgstr "" +msgstr "2D šum, který definuje tvar/velikost schodišťových hor." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." -msgstr "" +msgstr "2D šum, který definuje velikost/četnost horských masivů." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "" +msgstr "2D šum, který definuje velikost/četnost postupných hor." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of step mountain ranges." -msgstr "" +msgstr "2D šum, který definuje velikost/četnost schodišťových horských útvarů." #: src/settings_translation_file.cpp msgid "2D noise that locates the river valleys and channels." -msgstr "" +msgstr "2D šum, který umisťuje říční koryta a kanály." #: src/settings_translation_file.cpp msgid "3D clouds" @@ -1913,20 +1874,18 @@ msgid "3D noise defining structure of river canyon walls." msgstr "3D šum určující strukturu stěn kaňonů řek." #: src/settings_translation_file.cpp -#, fuzzy msgid "3D noise defining terrain." -msgstr "3D šum určující obří jeskynní dutiny." +msgstr "3D šum určující terén." #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." -msgstr "" +msgstr "3D šum definující horské převisy, atp. Typicky malé odchylky." #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "" +msgstr "3D šum, který definuje počet žalářů na kusu mapy." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" @@ -1945,7 +1904,10 @@ msgstr "" "- anaglyph: azurové/purpurové barevné 3D.\n" "- interlaced: pro polarizaci lichý/sudý řádek.\n" "- topbottom: rozdělení obrazovky na horní a dolní část.\n" -"- sidebyside: rozdělení obrazovky na levou a pravou část." +"- sidebyside: rozdělení obrazovky na levou a pravou část.\n" +"- crossview: Zkřížení očí 3d\n" +"- pageflip: 3d se 4-násobným bufferem.\n" +"Pozn.: Režim 'interlaced' vyžaduje podporu 'shaderů'." #: src/settings_translation_file.cpp msgid "" @@ -1965,9 +1927,8 @@ msgid "A message to be displayed to all clients when the server shuts down." msgstr "Zpráva, která se zobrazí všem klientům, když se server vypne." #: src/settings_translation_file.cpp -#, fuzzy msgid "ABM interval" -msgstr "Interval ukládání mapy" +msgstr "Interval Aktivní Blokové Modifikace (ABM)" #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" @@ -1979,14 +1940,13 @@ msgstr "Zrychlení ve vzduchu" #: src/settings_translation_file.cpp msgid "Acceleration of gravity, in nodes per second per second." -msgstr "" +msgstr "Gravitační zrychlení, v blocích za vteřinu za vteřinu." #: src/settings_translation_file.cpp msgid "Active Block Modifiers" msgstr "Active Block Modifiery" #: src/settings_translation_file.cpp -#, fuzzy msgid "Active block management interval" msgstr "Interval pro Active Block Management" @@ -2034,7 +1994,6 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Altitude chill" msgstr "Výškové ochlazení" @@ -2048,12 +2007,11 @@ msgstr "Gamma ambientní okluze" #: src/settings_translation_file.cpp msgid "Amount of messages a player may send per 10 seconds." -msgstr "" +msgstr "Množství zpráv, které může hráč odeslat za 10 vteřin." #: src/settings_translation_file.cpp -#, fuzzy msgid "Amplifies the valleys." -msgstr "Zesílí údolí" +msgstr "Zvýrazní údolí." #: src/settings_translation_file.cpp msgid "Anisotropic filtering" @@ -2070,11 +2028,11 @@ msgstr "Zveřejnit server" #: src/settings_translation_file.cpp msgid "Append item name" -msgstr "" +msgstr "Dodatkový název položky" #: src/settings_translation_file.cpp msgid "Append item name to tooltip." -msgstr "" +msgstr "Dodatkový název položky v popisku." #: src/settings_translation_file.cpp msgid "Apple trees noise" @@ -2082,13 +2040,15 @@ msgstr "Použít stromový šum" #: src/settings_translation_file.cpp msgid "Arm inertia" -msgstr "" +msgstr "Setrvačnost ruky" #: src/settings_translation_file.cpp msgid "" "Arm inertia, gives a more realistic movement of\n" "the arm when the camera moves." msgstr "" +"Setrvačnost ruky, vytváří větší dojem opravdového pohybu\n" +"ruky, výkyvem/pohybem kamery." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" @@ -2126,7 +2086,7 @@ msgstr "Vpřed" #: src/settings_translation_file.cpp msgid "Automatically jump up single-node obstacles." -msgstr "" +msgstr "Automaticky vyskočit na překážky vysoké 1 blok." #: src/settings_translation_file.cpp #, fuzzy @@ -2139,7 +2099,7 @@ msgstr "Ukládat velikost obr." #: src/settings_translation_file.cpp msgid "Autoscaling mode" -msgstr "" +msgstr "Režim automatického přiblížení" #: src/settings_translation_file.cpp msgid "Backward key" @@ -2194,7 +2154,7 @@ msgstr "Bitová hloubka (bity na pixel) v celoobrazovkovém režimu." #: src/settings_translation_file.cpp msgid "Block send optimize distance" -msgstr "" +msgstr "Optimalizace vzdálenosti vysílání bloku" #: src/settings_translation_file.cpp #, fuzzy @@ -2315,7 +2275,7 @@ msgstr "Klávesa chatu" #: src/settings_translation_file.cpp msgid "Chat message count limit" -msgstr "" +msgstr "Omezení počtu zpráv v Chatu" #: src/settings_translation_file.cpp #, fuzzy @@ -2329,7 +2289,7 @@ msgstr "Práh pouštního šumu" #: src/settings_translation_file.cpp msgid "Chat message max length" -msgstr "" +msgstr "Omezení velikosti jedné zprávy v Chatu" #: src/settings_translation_file.cpp msgid "Chat toggle key" @@ -2374,7 +2334,7 @@ msgstr "Lokální mody" #: src/settings_translation_file.cpp msgid "Client side node lookup range restriction" -msgstr "" +msgstr "Omezení vyhledávání bloků z klientské aplikace" #: src/settings_translation_file.cpp msgid "Climbing speed" @@ -2492,7 +2452,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Controls sinking speed in liquid." -msgstr "" +msgstr "Ovládá rychlost potápění v kapalinách." #: src/settings_translation_file.cpp msgid "Controls steepness/depth of lake depressions." @@ -4962,7 +4922,7 @@ msgstr "Ladění generátoru mapy" #: src/settings_translation_file.cpp msgid "Mapgen flags" -msgstr "" +msgstr "Nastavení generátoru mapy" #: src/settings_translation_file.cpp msgid "Mapgen name" From 372506bc944cb132e39880612b629dc1df8c2969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Ondr=C3=A1=C4=8Dek?= Date: Mon, 27 Apr 2020 16:36:50 +0000 Subject: [PATCH 298/424] Translated using Weblate (Czech) Currently translated at 58.9% (759 of 1288 strings) --- po/cs/minetest.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/po/cs/minetest.po b/po/cs/minetest.po index 551eedaa2..451371877 100644 --- a/po/cs/minetest.po +++ b/po/cs/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-04-29 12:38+0000\n" -"Last-Translator: Marek Sebera \n" +"Last-Translator: Roman Ondráček \n" "Language-Team: Czech \n" "Language: cs\n" @@ -191,7 +191,7 @@ msgstr "Mody" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "Nelze načíst žádné balíčky" +msgstr "Nelze načíst žádný balíček" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" From 1c6970ace072e55b3e97df098d214b1cfec7b11c Mon Sep 17 00:00:00 2001 From: Matteo Gheza Date: Tue, 28 Apr 2020 14:15:21 +0000 Subject: [PATCH 299/424] Translated using Weblate (Italian) Currently translated at 95.4% (1229 of 1288 strings) --- po/it/minetest.po | 57 +++++++++++++++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 19 deletions(-) diff --git a/po/it/minetest.po b/po/it/minetest.po index 38e282440..8198840bc 100644 --- a/po/it/minetest.po +++ b/po/it/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Italian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2019-11-13 16:04+0000\n" -"Last-Translator: Jacques Lagrange \n" +"PO-Revision-Date: 2020-04-29 12:38+0000\n" +"Last-Translator: Matteo Gheza \n" "Language-Team: Italian \n" "Language: it\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 4.0.2\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1774,7 +1774,6 @@ msgstr "" "quando fuori dal cerchio principale." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1788,12 +1787,14 @@ msgstr "" "Spostamento (X,Y,Z) del frattale dal centro del mondo in\n" "unità di \"scala\".\n" "Può essere usato per spostare un punto desiderato a (0,0)\n" -"per creare un punto di comparsa adatto, o per consentire\n" -"l'ingrandimento su di un punto desiderato per mezzo\n" -"dell'aumento della \"scala\".\n" +"per creare un\n" +"punto di comparsa adatto, o per consentire\n" +"l'ingrandimento su di un punto desiderato\n" +"per mezzo dell'aumento della \"scala\".\n" "Il valore predefinito è regolato per un punto di comparsa\n" -"opportuno con le serie Mandelbrot che usino i parametri\n" -"predefiniti, potrebbe richiedere modifiche in altre situazioni.\n" +"opportuno con le serie Mandelbrot\n" +"che usino i parametri predefiniti, potrebbe richiedere modifiche in altre\n" +"situazioni.\n" "Varia grossomodo da -2 a 2. Si moltiplichi per \"scala\" per\n" "lo spostamento in nodi." @@ -2003,6 +2004,12 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Altera la curva di luce applicandovi la 'correzione gamma'.\n" +"Valori più alti rendono più luminosi i livelli di luce medi e inferiori.\n" +"Il valore '1.0' lascia inalterata la curva di luce.\n" +"Questo ha un effetto significativo solo sulla luce diurna e sulla luce " +"artificiale,\n" +"ha pochissimo effetto sulla luce notturna naturale." #: src/settings_translation_file.cpp msgid "Altitude chill" @@ -2162,24 +2169,20 @@ msgid "Block send optimize distance" msgstr "Distanza di ottimizzazione dell'invio dei blocchi" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "Percorso del carattere a spaziatura fissa" +msgstr "Percorso dei caratteri in grassetto e corsivo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" -msgstr "Percorso del carattere a spaziatura fissa" +msgstr "Percorso dei font monospaziali in grassetto e corsivo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "Percorso del carattere" +msgstr "Percorso dei caratteri in grassetto" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" -msgstr "Percorso del carattere a spaziatura fissa" +msgstr "Percorso caratteri monospaziale in grassetto" #: src/settings_translation_file.cpp msgid "Build inside player" @@ -2194,14 +2197,13 @@ msgid "Bumpmapping" msgstr "Bumpmapping" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" -"Distanza in nodi del \"piano di ritaglio vicino\" alla telecamera, tra 0 e " +"Distanza dei nodi del \"piano di ritaglio vicino\" alla telecamera, tra 0 e " "0.5.\n" "La maggior parte degli utenti non dovrà cambiarla.\n" "Aumentarla può ridurre l'artificialità sulle GPU più deboli.\n" @@ -2268,6 +2270,8 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Centro della gamma di amplificazione della curva di luce.\n" +"Dove 0.0 è il livello di luce minimo, 1.0 è il livello di luce massimo." #: src/settings_translation_file.cpp msgid "" @@ -2492,6 +2496,11 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"Controlla la larghezza delle gallerie, un valore più piccolo crea gallerie " +"più ampie.\n" +"Il valore >= 10.0 disabilita completamente la generazione di tunnel ed evita " +"l'opzione\n" +"calcoli intensivi del rumore." #: src/settings_translation_file.cpp msgid "Crash message" @@ -2754,6 +2763,8 @@ msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"Abilitare il supporto IPv6 (sia per il client che per il server).\n" +"Necessario per il funzionamento delle connessioni IPv6." #: src/settings_translation_file.cpp msgid "" @@ -2845,6 +2856,8 @@ msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"Attivare gli oggetti tampone per i vertici.\n" +"Questo dovrebbe migliorare notevolmente le prestazioni grafiche." #: src/settings_translation_file.cpp msgid "" @@ -2871,6 +2884,12 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"Abilita la mappatura dei toni filmici \"Uncharted 2\" di Hable.\n" +"Simula la curva di tono della pellicola fotografica e come questa approssimi " +"la\n" +"comparsa di immagini ad alta gamma dinamica. Il contrasto a medio raggio è " +"leggermente\n" +"potenziato, i punti salienti e le ombre vengono gradualmente compressi." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." From 51656cd96d239508344c94d434242accb2a9f492 Mon Sep 17 00:00:00 2001 From: Andrei Stepanov Date: Sun, 3 May 2020 10:42:50 +0000 Subject: [PATCH 300/424] Translated using Weblate (Russian) Currently translated at 95.3% (1228 of 1288 strings) --- po/ru/minetest.po | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/po/ru/minetest.po b/po/ru/minetest.po index 2ca6d0a98..ee9917763 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Russian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-22 04:11+0000\n" -"Last-Translator: pitchblack \n" +"PO-Revision-Date: 2020-05-03 10:47+0000\n" +"Last-Translator: Andrei Stepanov \n" "Language-Team: Russian \n" "Language: ru\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" "4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.0.2-dev\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1784,7 +1784,6 @@ msgstr "" "когда будет находиться за пределами основного колеса." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -2195,7 +2194,6 @@ msgid "Bumpmapping" msgstr "Бампмаппинг" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Only works on GLES platforms. Most users will not need to change this.\n" @@ -2203,7 +2201,8 @@ msgid "" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" "Расстояние между камерой и плоскостью отсечения в нодах от 0 до 0.5.\n" -"Большинству пользователей не потребуется менять этот параметр.\n" +"Работает только на платформах с GLES. Большинству пользователей не требуется " +"менять его.\n" "Его увеличение может уменьшить количество артефактов на слабых графических " "процессорах.\n" "0.1 — по умолчанию; 0.25 — хорошее значение для слабых планшетов." @@ -2538,7 +2537,6 @@ msgid "Dec. volume key" msgstr "Клавиша уменьшения громкости" #: src/settings_translation_file.cpp -#, fuzzy msgid "Decrease this to increase liquid resistance to movement." msgstr "Уменьшите значение, чтобы увеличить сопротивление жидкости движению." From f0513a9d46f5592317a87d6f42ad0895bf33d14f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 3 May 2020 10:44:27 +0000 Subject: [PATCH 301/424] Translated using Weblate (Russian) Currently translated at 95.3% (1228 of 1288 strings) --- po/ru/minetest.po | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/po/ru/minetest.po b/po/ru/minetest.po index ee9917763..13d11091b 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-05-03 10:47+0000\n" -"Last-Translator: Andrei Stepanov \n" +"Last-Translator: Anonymous \n" "Language-Team: Russian \n" "Language: ru\n" @@ -2268,6 +2268,8 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Центр диапазона увеличения кривой света,\n" +"где 0.0 — минимальный уровень света, а 1.0 — максимальный." #: src/settings_translation_file.cpp msgid "" @@ -2487,6 +2489,11 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"Контролирует ширину туннелей, меньшее значение создаёт более широкие туннели." +"\n" +"Значение >= 10.0 полностью отключает генерацию туннелей и позволяют " +"избежать\n" +"интенсивного расчёта шумов." #: src/settings_translation_file.cpp msgid "Crash message" @@ -2748,6 +2755,8 @@ msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"Включить поддержку IPv6 (для клиента и сервера).\n" +"Это необходимо для работы IPv6-соединений." #: src/settings_translation_file.cpp msgid "" From 5fb86768e8f40d0ba034a7fe8d0a8c24d091b976 Mon Sep 17 00:00:00 2001 From: Andrei Stepanov Date: Sun, 3 May 2020 10:47:06 +0000 Subject: [PATCH 302/424] Translated using Weblate (Russian) Currently translated at 95.4% (1230 of 1288 strings) --- po/ru/minetest.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/ru/minetest.po b/po/ru/minetest.po index 13d11091b..84f9966fe 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Russian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-05-03 10:47+0000\n" -"Last-Translator: Anonymous \n" +"PO-Revision-Date: 2020-05-03 11:07+0000\n" +"Last-Translator: Andrei Stepanov \n" "Language-Team: Russian \n" "Language: ru\n" @@ -2756,7 +2756,7 @@ msgid "" "Required for IPv6 connections to work at all." msgstr "" "Включить поддержку IPv6 (для клиента и сервера).\n" -"Это необходимо для работы IPv6-соединений." +"Необходимо для работы IPv6-соединений." #: src/settings_translation_file.cpp msgid "" From 4fcc671742f8c36011a7f64009692e9b863291d8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 3 May 2020 11:05:41 +0000 Subject: [PATCH 303/424] Translated using Weblate (Russian) Currently translated at 95.4% (1230 of 1288 strings) --- po/ru/minetest.po | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/po/ru/minetest.po b/po/ru/minetest.po index 84f9966fe..96c7fc8c9 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-05-03 11:07+0000\n" -"Last-Translator: Andrei Stepanov \n" +"Last-Translator: Anonymous \n" "Language-Team: Russian \n" "Language: ru\n" @@ -2846,6 +2846,8 @@ msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"Включить объекты буфера вершин.\n" +"Это должно значительно улучшить графическую производительность." #: src/settings_translation_file.cpp msgid "" @@ -2919,6 +2921,10 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"Включает звуковую систему.\n" +"Если её выключить, то это полностью выключит все звуки, а внутриигровые\n" +"настройки звука не будут работать.\n" +"Изменение этого параметра требует перезапуска." #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" From 3d17394410f33a19c1dd9314f6d66d6fbc30bae7 Mon Sep 17 00:00:00 2001 From: Janar Leas Date: Sat, 2 May 2020 23:50:53 +0000 Subject: [PATCH 304/424] Translated using Weblate (Estonian) Currently translated at 30.4% (392 of 1288 strings) --- po/et/minetest.po | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/po/et/minetest.po b/po/et/minetest.po index d4e9e4a86..7312d20b9 100644 --- a/po/et/minetest.po +++ b/po/et/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Estonian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-01-13 12:21+0000\n" -"Last-Translator: Evert Prants \n" +"PO-Revision-Date: 2020-05-03 19:14+0000\n" +"Last-Translator: Janar Leas \n" "Language-Team: Estonian \n" "Language: et\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10.1\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -422,7 +422,7 @@ msgstr "vaikesätted" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" -msgstr "" +msgstr "pehmendatud" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" @@ -1035,6 +1035,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"Vaikimisi juhtimine:\n" +"Menüü pole nähtav:\n" +"- toksa: nupu käitamine\n" +"- kaksiktoksa: aseta/kasuta\n" +"- libista näpuga: vaata ringi\n" +"Menüü/varamu nähtav:\n" +"- kaksiktoksa (välja):\n" +" -->sulgeb\n" +"- puutu vihku, puutu pesa:\n" +" --> teisaldab vihu\n" +"- puutu&lohista, toksa 2-se näpuga\n" +" --> asetab ühe eseme pessa\n" #: src/client/game.cpp msgid "Disabled unlimited viewing range" @@ -1114,47 +1126,47 @@ msgstr "" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "" +msgstr "Pisikaardi keelab hetkel mäng või MOD" #: src/client/game.cpp msgid "Minimap hidden" -msgstr "" +msgstr "Pisikaart peidetud" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" -msgstr "" +msgstr "Radarkaart, Suurendus ×1" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x2" -msgstr "" +msgstr "Radarkaart, Suurendus ×2" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x4" -msgstr "" +msgstr "Radarkaart, Suurendus ×4" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x1" -msgstr "" +msgstr "Pinnakaart, Suurendus ×1" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x2" -msgstr "" +msgstr "Pinnakaart, Suurendus ×2" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x4" -msgstr "" +msgstr "Pinnakaart, Suurendus ×4" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "" +msgstr "Haakumatus keelatud" #: src/client/game.cpp msgid "Noclip mode enabled" -msgstr "Noclip režiim lubatud" +msgstr "Nakkumatus lubatud" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "" +msgstr "Haakumatus lubatud (pole 'haakumatus' volitust)" #: src/client/game.cpp msgid "Node definitions..." From 6f3fc76db3bd336d6cafa5be023e76b35fe823e0 Mon Sep 17 00:00:00 2001 From: Andrei Stepanov Date: Sun, 3 May 2020 11:07:25 +0000 Subject: [PATCH 305/424] Translated using Weblate (Russian) Currently translated at 96.0% (1237 of 1288 strings) --- po/ru/minetest.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/po/ru/minetest.po b/po/ru/minetest.po index 96c7fc8c9..cd34ee554 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Russian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-05-03 11:07+0000\n" -"Last-Translator: Anonymous \n" +"PO-Revision-Date: 2020-05-03 19:14+0000\n" +"Last-Translator: Andrei Stepanov \n" "Language-Team: Russian \n" "Language: ru\n" @@ -2922,7 +2922,7 @@ msgid "" "Changing this setting requires a restart." msgstr "" "Включает звуковую систему.\n" -"Если её выключить, то это полностью выключит все звуки, а внутриигровые\n" +"Если её отключить, то это полностью уберёт все звуки, а внутриигровые\n" "настройки звука не будут работать.\n" "Изменение этого параметра требует перезапуска." @@ -3082,11 +3082,11 @@ msgstr "Клавиша переключения тумана" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Стандартный жирный шрифт" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Стандартный курсивный шрифт" #: src/settings_translation_file.cpp msgid "Font shadow" From 7f7706a538a0a34c933f04917ec5b501912266ff Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 3 May 2020 11:08:12 +0000 Subject: [PATCH 306/424] Translated using Weblate (Russian) Currently translated at 96.0% (1237 of 1288 strings) --- po/ru/minetest.po | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/po/ru/minetest.po b/po/ru/minetest.po index cd34ee554..fad5b66ac 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Russian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-05-03 19:14+0000\n" -"Last-Translator: Andrei Stepanov \n" +"PO-Revision-Date: 2020-05-12 14:46+0000\n" +"Last-Translator: Anonymous \n" "Language-Team: Russian \n" "Language: ru\n" @@ -2858,14 +2858,14 @@ msgstr "" "Например: 0 отключает покачивание, 1.0 для обычного, 2.0 для двойного." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable/disable running an IPv6 server.\n" "Ignored if bind_address is set.\n" "Needs enable_ipv6 to be enabled." msgstr "" "Включить/отключить запуск IPv6-сервера.\n" -"Игнорируется, если задан «bind_address»." +"Игнорируется, если задан «bind_address».\n" +"Для включения необходим «enable_ipv6»." #: src/settings_translation_file.cpp msgid "" @@ -2959,9 +2959,8 @@ msgid "Fall bobbing factor" msgstr "Коэффициент покачивания при падении" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "Резервный шрифт" +msgstr "Путь к резервному шрифту" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -3102,15 +3101,15 @@ msgstr "Размер шрифта" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "Размер стандартного шрифта в пунктах (pt)." #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "Размер резервного шрифта в пунктах (pt)." #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "Размер моноширинного шрифта в пунктах (pt)." #: src/settings_translation_file.cpp msgid "" @@ -3783,14 +3782,12 @@ msgid "Invert vertical mouse movement." msgstr "Инвертировать мышь по вертикали." #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic font path" -msgstr "Путь к моноширинному шрифту" +msgstr "Путь к курсивному шрифту" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic monospace font path" -msgstr "Путь к моноширинному шрифту" +msgstr "Путь к курсивному моноширинному шрифту" #: src/settings_translation_file.cpp msgid "Item entity TTL" @@ -4623,11 +4620,11 @@ msgstr "Глубина больших пещер" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "Максимальное количество больших пещер" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "Минимальное количество больших пещер" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" @@ -5043,7 +5040,7 @@ msgstr "Максимальная ширина горячей панели" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "Максимальный порог случайного количества больших пещер на кусок карты" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." From e882cbb9ac3a4ecc6f595880cafce401da5301e3 Mon Sep 17 00:00:00 2001 From: Dominik Kacprzak Date: Sun, 3 May 2020 20:48:37 +0000 Subject: [PATCH 307/424] Translated using Weblate (Polish) Currently translated at 77.1% (994 of 1288 strings) --- po/pl/minetest.po | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/po/pl/minetest.po b/po/pl/minetest.po index 076333905..ff03d9815 100644 --- a/po/pl/minetest.po +++ b/po/pl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Polish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-22 04:11+0000\n" -"Last-Translator: anonymous \n" +"PO-Revision-Date: 2020-05-04 21:11+0000\n" +"Last-Translator: Dominik Kacprzak \n" "Language-Team: Polish \n" "Language: pl\n" @@ -13,7 +13,7 @@ msgstr "" "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 4.0.2-dev\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1555,7 +1555,7 @@ msgid "Register and Join" msgstr "Zarejestruj się i dołącz" #: src/gui/guiConfirmRegistration.cpp -#, fuzzy, c-format +#, c-format msgid "" "You are about to join this server with the name \"%s\" for the first time.\n" "If you proceed, a new account using your credentials will be created on this " @@ -1563,10 +1563,11 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" -"Próbujesz po raz pierwszy wejść na serwer %1$s1 o nazwie \"%2$s2\" . Jeśli " -"kontynuujesz na serwerze zostanie utworzone nowe konto z Twoim danymi.\n" -"Wpisz ponownie hasło i wciśnij Zarejestruj oraz Dołącz, aby potwierdzić " -"utworzenie konta lub wciśnij Anuluj, aby przerwać ten proces." +"Próbujesz wejść na serwer \"%s\" o nazwie \"%2$s2\" po raz pierwszy . Jeśli " +"zdecydujesz się kontynuujesz na serwerze zostanie utworzone nowe konto z " +"Twoim danymi.\n" +"Wpisz ponownie hasło i wciśnij \"Zarejestruj się i Dołącz\" aby potwierdzić " +"utworzenie konta lub wciśnij \"Anuluj\" aby przerwać ten proces." #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" From c13919d3b4a3841532b540f5f7c9a17085ef3432 Mon Sep 17 00:00:00 2001 From: restcoser Date: Sat, 9 May 2020 16:48:30 +0000 Subject: [PATCH 308/424] Translated using Weblate (Lithuanian) Currently translated at 15.3% (198 of 1288 strings) --- po/lt/minetest.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/po/lt/minetest.po b/po/lt/minetest.po index c907439bd..60d842e28 100644 --- a/po/lt/minetest.po +++ b/po/lt/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Lithuanian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-02-22 19:27+0000\n" -"Last-Translator: An0n3m0us \n" +"PO-Revision-Date: 2020-05-10 12:32+0000\n" +"Last-Translator: restcoser \n" "Language-Team: Lithuanian \n" "Language: lt\n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > " "19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? " "1 : 2);\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -230,7 +230,7 @@ msgstr "Įdiegti" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update" -msgstr "" +msgstr "Atnaujinti" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -2965,7 +2965,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Field of view" -msgstr "" +msgstr "Matymo laukas" #: src/settings_translation_file.cpp msgid "Field of view in degrees." From 329b62a02c889652dd7621e635ade9da867b1d2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20V=C3=A1mos?= Date: Mon, 11 May 2020 19:52:47 +0000 Subject: [PATCH 309/424] Translated using Weblate (Hungarian) Currently translated at 70.7% (911 of 1288 strings) --- po/hu/minetest.po | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/po/hu/minetest.po b/po/hu/minetest.po index 64fe2cc37..dd564ffe6 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Hungarian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-15 06:48+0000\n" -"Last-Translator: An0n3m0us \n" +"PO-Revision-Date: 2020-05-12 14:46+0000\n" +"Last-Translator: Balázs Vámos \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -23,9 +23,8 @@ msgid "You died" msgstr "Meghaltál" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred in a Lua script:" -msgstr "Hiba történt egy Lua parancsfájlban (egy mod-ban):" +msgstr "Hiba történt egy Lua parancsfájlban:" #: builtin/fstk/ui.lua msgid "An error occurred:" @@ -128,7 +127,6 @@ msgid "No game description provided." msgstr "Nincs elérhető játékleírás." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No hard dependencies" msgstr "Nincsenek függőségek." @@ -137,9 +135,8 @@ msgid "No modpack description provided." msgstr "Nincs elérhető modcsomag-leírás." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No optional dependencies" -msgstr "Választható függőségek:" +msgstr "Nincs választható függőségek" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" @@ -386,7 +383,6 @@ msgid "X" msgstr "X" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "X spread" msgstr "X méret" @@ -395,7 +391,6 @@ msgid "Y" msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "Y spread" msgstr "Y méret" @@ -404,7 +399,6 @@ msgid "Z" msgstr "Z" #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "Z spread" msgstr "Z méret" @@ -413,9 +407,8 @@ msgstr "Z méret" #. It can be enabled in noise settings in #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "absvalue" -msgstr "abszolút érték" +msgstr "abszérték" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options @@ -1190,12 +1183,10 @@ msgid "On" msgstr "Be" #: src/client/game.cpp -#, fuzzy msgid "Pitch move mode disabled" msgstr "Pályamozgás mód kikapcsolva" #: src/client/game.cpp -#, fuzzy msgid "Pitch move mode enabled" msgstr "Pályamozgás mód bekapcsolva" @@ -1560,7 +1551,7 @@ msgid "Register and Join" msgstr "Regisztráció és belépés" #: src/gui/guiConfirmRegistration.cpp -#, fuzzy, c-format +#, c-format msgid "" "You are about to join this server with the name \"%s\" for the first time.\n" "If you proceed, a new account using your credentials will be created on this " @@ -1568,10 +1559,12 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" -"Te most %1$s szerverre csatlakozol \"%2$s\" névvel először. Ha folytatod, " -"akkor egy új fiók lesz létrehozva a hitelesítő adatokkal a szerveren. Kérlek " -"írd be újra a jelszavad, kattints Regisztrációra majd Bejelentkezésre, hogy " -"megerősítsd a fióklétrehozást vagy kattints Kilépés gombra a megszakításhoz." +"Te most %1$s szerverre csatlakozol \"%2$s\" névvel először.\n" +"Ha folytatod, akkor egy új fiók lesz létrehozva a hitelesítő adatokkal a " +"szerveren.\n" +"Kérlek írd be újra a jelszavad, kattints Regisztrációra majd " +"Bejelentkezésre, hogy megerősítsd a fióklétrehozást vagy kattints Kilépés " +"gombra a megszakításhoz." #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" From 8e44cdcddb912de9bb8df59d2749e3b11aa05b60 Mon Sep 17 00:00:00 2001 From: f0roots Date: Tue, 12 May 2020 19:15:11 +0000 Subject: [PATCH 310/424] Translated using Weblate (Romanian) Currently translated at 42.7% (551 of 1288 strings) --- po/ro/minetest.po | 987 +++++++++++++++++++++------------------------- 1 file changed, 443 insertions(+), 544 deletions(-) diff --git a/po/ro/minetest.po b/po/ro/minetest.po index 0e642f6d5..b03466735 100644 --- a/po/ro/minetest.po +++ b/po/ro/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Romanian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-12 12:11+0000\n" -"Last-Translator: Larissa Piklor \n" +"PO-Revision-Date: 2020-06-04 16:41+0000\n" +"Last-Translator: f0roots \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -13,24 +13,21 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" msgstr "Reînviere" #: builtin/client/death_formspec.lua src/client/game.cpp -#, fuzzy msgid "You died" -msgstr "Ai murit." +msgstr "Ai murit" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred in a Lua script:" -msgstr "A apărut o eroare într-un script Lua, de exemplu un mod:" +msgstr "A apărut o eroare într-un script Lua:" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred:" msgstr "A apărut o eroare:" @@ -60,11 +57,11 @@ msgstr "Nepotrivire versiune protocol. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "Serverul forteaza versiunea protocolului $1. " +msgstr "Serverul forțează versiunea protocolului $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "Server-ul suporta versiunile protocolului intre $1 si $2. " +msgstr "Acest Server suporta versiunile protocolului intre $1 si $2. " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." @@ -78,7 +75,7 @@ msgstr "Suportam doar versiunea de protocol $1." #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Acceptăm versiuni de protocol între versiunea 1$ și 2$." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_delete_content.lua @@ -127,18 +124,16 @@ msgid "No (optional) dependencies" msgstr "Nu există dependențe (opționale)" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No game description provided." -msgstr "Nici o descriere de mod disponibilă" +msgstr "Nu este oferită nicio descriere a jocului." #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" msgstr "Nu există dependențe dure" #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No modpack description provided." -msgstr "Nici o descriere de mod disponibilă" +msgstr "Nici o descriere a pachetului de moduri nu este furnizată." #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" @@ -170,18 +165,16 @@ msgid "Back" msgstr "Înapoi" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Back to Main Menu" -msgstr "Meniul Principal" +msgstr "Înapoi la meniul principal" #: builtin/mainmenu/dlg_contentstore.lua msgid "Downloading and installing $1, please wait..." msgstr "Se descarca si se instaleaza $ 1, vă rugăm să așteptați ..." #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Failed to download $1" -msgstr "Eșuare la instalarea $1 în $2" +msgstr "Nu a putut descărca $1" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -211,7 +204,6 @@ msgid "Search" msgstr "Caută" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Texture packs" msgstr "Pachete de textură" @@ -245,7 +237,7 @@ msgstr "Joc" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "Mapgen" +msgstr "Gen de hartă" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -280,9 +272,8 @@ msgid "Delete" msgstr "Șterge" #: builtin/mainmenu/dlg_delete_content.lua -#, fuzzy msgid "pkgmgr: failed to delete \"$1\"" -msgstr "Modmgr: Eroare la ștergerea \"$1\"" +msgstr "pkgmgr: nu a reușit să ștergeți \"$1\"" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" @@ -338,7 +329,7 @@ msgstr "Activat" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Lacunarity" -msgstr "Lacunarity" +msgstr "Lacunaritate" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Octaves" @@ -346,7 +337,7 @@ msgstr "Octava" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" -msgstr "" +msgstr "Decalaj" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" @@ -390,7 +381,7 @@ msgstr "Valoarea nu trebuie să fie mai mare de $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" -msgstr "" +msgstr "X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" @@ -398,7 +389,7 @@ msgstr "expansiunea X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" -msgstr "" +msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" @@ -406,7 +397,7 @@ msgstr "Y răspândit" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" -msgstr "" +msgstr "Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" @@ -418,7 +409,7 @@ msgstr "Z răspândit" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" -msgstr "" +msgstr "valoareabs" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options @@ -448,99 +439,82 @@ msgid "Failed to install $1 to $2" msgstr "Eșuare la instalarea $1 în $2" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install Mod: Unable to find real mod name for: $1" msgstr "Instalare mod: nu se poate găsi numele real pentru: $1" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install Mod: Unable to find suitable folder name for modpack $1" msgstr "" "Instalare Mod: nu se poate găsi nume de folder potrivit pentru pachetul de " -"mod $1" +"moduri $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" msgstr "Instalare: tipul de fișier neacceptat „$ 1” sau arhiva ruptă" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Install: file: \"$1\"" -msgstr "Instalare Mod: fișier: \"$1\"" +msgstr "Instalare: fișier: \"$1\"" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to find a valid mod or modpack" -msgstr "" -"Instalare Mod: nu se poate găsi nume de folder potrivit pentru pachetul de " -"mod $1" +msgstr "Nu se poate găsi un mod sau un pachet de moduri valid" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a $1 as a texture pack" -msgstr "Eșuare la instalarea $1 în $2" +msgstr "Imposibil de instalat un $1 ca pachet de textură" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a game as a $1" -msgstr "Eșuare la instalarea $1 în $2" +msgstr "Imposibil de instalat un joc ca $1" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a mod as a $1" -msgstr "Eșuare la instalarea $1 în $2" +msgstr "Imposibil de instalat un mod ca $1" #: builtin/mainmenu/pkgmgr.lua -#, fuzzy msgid "Unable to install a modpack as a $1" -msgstr "Eșuare la instalarea $1 în $2" +msgstr "Imposibil de instalat un pachet de moduri ca $ 1" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "" +msgstr "Căutați conținut online" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Content" -msgstr "Continuă" +msgstr "Conţinut" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Disable Texture Pack" -msgstr "Selectează pachetul de textură:" +msgstr "Dezactivați pachetul de textură" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Information:" -msgstr "Informații mod:" +msgstr "Informații:" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Installed Packages:" -msgstr "Moduri Instalate:" +msgstr "Pachete instalate:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "" +msgstr "Fără dependențe." #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "No package description available" -msgstr "Nici o descriere de mod disponibilă" +msgstr "Nu există descriere a pachetului disponibilă" #: builtin/mainmenu/tab_content.lua msgid "Rename" msgstr "Redenumiți" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Uninstall Package" -msgstr "Dezinstalaţi modul selectat" +msgstr "Dezinstalați pachetul" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Use Texture Pack" -msgstr "Pachete de textură" +msgstr "Folosiți pachetul de textură" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" @@ -552,24 +526,23 @@ msgstr "Dezvoltatori de bază" #: builtin/mainmenu/tab_credits.lua msgid "Credits" -msgstr "Credits" +msgstr "Credite" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" msgstr "Foști contribuitori" #: builtin/mainmenu/tab_credits.lua -#, fuzzy msgid "Previous Core Developers" -msgstr "Dezvoltatori de bază" +msgstr "Dezvoltatori de bază precedenți" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" -msgstr "" +msgstr "Anunțare server" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" -msgstr "" +msgstr "Adresa legată" #: builtin/mainmenu/tab_local.lua msgid "Configure" @@ -584,14 +557,12 @@ msgid "Enable Damage" msgstr "Activează Daune" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Host Game" -msgstr "Ascunde Joc" +msgstr "Găzduiește joc" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Host Server" -msgstr "Server" +msgstr "Găzduiește Server" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" @@ -602,18 +573,16 @@ msgid "New" msgstr "Nou" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "No world created or selected!" -msgstr "Jocul nu are nume, sau nu ai selectat un joc" +msgstr "Nicio lume creată sau selectată!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Play Game" -msgstr "Începe jocul" +msgstr "Joacă jocul" #: builtin/mainmenu/tab_local.lua msgid "Port" -msgstr "" +msgstr "Port" #: builtin/mainmenu/tab_local.lua msgid "Select World:" @@ -624,21 +593,18 @@ msgid "Server Port" msgstr "Port server" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Start Game" -msgstr "Ascunde Joc" +msgstr "Începe Jocul" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Address / Port" -msgstr "Adresă/Port" +msgstr "Adresă / Port" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" msgstr "Conectează" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Creative mode" msgstr "Modul Creativ" @@ -652,12 +618,11 @@ msgstr "Şterge Favorit" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Favorite" -msgstr "Favorite" +msgstr "Favorit" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Join Game" -msgstr "Ascunde Joc" +msgstr "Alatură-te jocului" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Name / Password" @@ -665,7 +630,7 @@ msgstr "Nume / Parolă" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Ping" -msgstr "" +msgstr "Ping" #. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua @@ -677,7 +642,6 @@ msgid "2x" msgstr "2x" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "3D Clouds" msgstr "Nori 3D" @@ -690,35 +654,30 @@ msgid "8x" msgstr "8x" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "All Settings" -msgstr "Setări" +msgstr "Toate setările" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" -msgstr "" +msgstr "Antialiasing:" #: builtin/mainmenu/tab_settings.lua msgid "Are you sure to reset your singleplayer world?" msgstr "Eşti sigur că vrei să resetezi lumea proprie ?" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Autosave Screen Size" msgstr "Salvează automat dimensiunea ecranului" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Bilinear Filter" msgstr "Filtrare Biliniară" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Bump Mapping" -msgstr "Mip Mapping" +msgstr "Cartografiere cu denivelări" #: builtin/mainmenu/tab_settings.lua src/client/game.cpp -#, fuzzy msgid "Change Keys" msgstr "Modifică tastele" @@ -732,16 +691,15 @@ msgstr "Frunze luxsoase" #: builtin/mainmenu/tab_settings.lua msgid "Generate Normal Maps" -msgstr "" +msgstr "Generați Hărți Normale" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Mipmap" -msgstr "Mip Mapping" +msgstr "Hartă mip" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap + Aniso. Filter" -msgstr "" +msgstr "Hartă mip + filtru aniso." #: builtin/mainmenu/tab_settings.lua msgid "No" @@ -752,9 +710,8 @@ msgid "No Filter" msgstr "Fără Filtru" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "No Mipmap" -msgstr "Mip Mapping" +msgstr "Fără hartă mip" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" @@ -778,7 +735,7 @@ msgstr "Apă opacă" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Parallax Occlusion" -msgstr "" +msgstr "Ocluzie Parallax" #: builtin/mainmenu/tab_settings.lua msgid "Particles" @@ -802,7 +759,7 @@ msgstr "Umbră" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" -msgstr "" +msgstr "Shaders (indisponibil)" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" @@ -821,16 +778,14 @@ msgid "To enable shaders the OpenGL driver needs to be used." msgstr "Pentru a permite shadere OpenGL trebuie să fie folosite." #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp -#, fuzzy msgid "Tone Mapping" -msgstr "Mip Mapping" +msgstr "Mapare ton" #: builtin/mainmenu/tab_settings.lua msgid "Touchthreshold: (px)" -msgstr "" +msgstr "PragulAtingerii: (px)" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Trilinear Filter" msgstr "Filtrare Triliniară" @@ -839,9 +794,8 @@ msgid "Waving Leaves" msgstr "Frunze legănătoare" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Waving Liquids" -msgstr "Frunze legănătoare" +msgstr "Fluturarea lichidelor" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" @@ -852,19 +806,16 @@ msgid "Yes" msgstr "Da" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Config mods" -msgstr "Configurează" +msgstr "Configurează moduri" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Main" -msgstr "Meniul Principal" +msgstr "Principal" #: builtin/mainmenu/tab_simple_main.lua -#, fuzzy msgid "Start Singleplayer" -msgstr "Singleplayer" +msgstr "Începeți Jucător singur" #: src/client/client.cpp msgid "Connection timed out." @@ -876,21 +827,19 @@ msgstr "Terminat!" #: src/client/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "Inițializarea nodurilor" #: src/client/client.cpp msgid "Initializing nodes..." -msgstr "" +msgstr "Se inițializează nodurile..." #: src/client/client.cpp -#, fuzzy msgid "Loading textures..." -msgstr "Se încarcă..." +msgstr "Se încarcă texturi ..." #: src/client/client.cpp -#, fuzzy msgid "Rebuilding shaders..." -msgstr "Se rezolvă adresa..." +msgstr "Reconstruirea shaderelor..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -902,7 +851,7 @@ msgstr "Nu se poate găsi sau încărca jocul \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "Specificare invalidă" +msgstr "Jocul este nevalid." #: src/client/clientlauncher.cpp msgid "Main Menu" @@ -914,19 +863,19 @@ msgstr "Nici un cuvânt selectat și nici o adresă scrisă. Nimic de făcut." #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr "Numele jucătorului prea lung." #: src/client/clientlauncher.cpp msgid "Please choose a name!" -msgstr "" +msgstr "Vă rugăm să alegeți un nume!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "" +msgstr "Fișierul cu parolă nu a putut fi deschis: " #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " -msgstr "" +msgstr "Calea aprovizionată a lumii nu există: " #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string. Put either "no" or "yes" @@ -949,79 +898,69 @@ msgstr "" "Verifică deug.txt pentru detalii." #: src/client/game.cpp -#, fuzzy msgid "- Address: " -msgstr "Adresă/Port" +msgstr "- Adresa: " #: src/client/game.cpp -#, fuzzy msgid "- Creative Mode: " -msgstr "Modul Creativ" +msgstr "- Modul creativ: " #: src/client/game.cpp -#, fuzzy msgid "- Damage: " -msgstr "Activează Daune" +msgstr "- Daune: " #: src/client/game.cpp msgid "- Mode: " -msgstr "" +msgstr "- Modul: " #: src/client/game.cpp msgid "- Port: " -msgstr "" +msgstr "- Port: " #: src/client/game.cpp -#, fuzzy msgid "- Public: " -msgstr "Public" +msgstr "- Public: " #. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " -msgstr "" +msgstr "- Jucător vs jucător: " #: src/client/game.cpp -#, fuzzy msgid "- Server Name: " -msgstr "Server" +msgstr "- Numele serverului: " #: src/client/game.cpp -#, fuzzy msgid "Automatic forward disabled" -msgstr "Înainte" +msgstr "Redirecționare automată dezactivată" #: src/client/game.cpp -#, fuzzy msgid "Automatic forward enabled" -msgstr "Înainte" +msgstr "Redirecționare automată activată" #: src/client/game.cpp msgid "Camera update disabled" -msgstr "" +msgstr "Actualizarea camerei este dezactivată" #: src/client/game.cpp -#, fuzzy msgid "Camera update enabled" -msgstr "Daune activate" +msgstr "Actualizarea camerei este activată" #: src/client/game.cpp msgid "Change Password" msgstr "Schimbă Parola" #: src/client/game.cpp -#, fuzzy msgid "Cinematic mode disabled" -msgstr "Modul Creativ" +msgstr "Modul cinematografic este dezactivat" #: src/client/game.cpp -#, fuzzy msgid "Cinematic mode enabled" -msgstr "Modul Creativ" +msgstr "Modul cinematografic activat" #: src/client/game.cpp msgid "Client side scripting is disabled" -msgstr "" +msgstr "Scripturile din partea clientului sunt dezactivate" #: src/client/game.cpp msgid "Connecting to server..." @@ -1032,7 +971,7 @@ msgid "Continue" msgstr "Continuă" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1049,38 +988,40 @@ msgid "" "- Mouse wheel: select item\n" "- %s: chat\n" msgstr "" -"Controale prestabilite:\n" -"- WASD: mișcare\n" -"- Spațiu: sărire/urcare\n" -"- Shift: furișare/coborâre\n" -"- Q: aruncă obiect\n" -"- I: inventar\n" -"- Mouse: întoarcere/vedere\n" -"- Click stânga: săpare/lovire\n" -"- Click dreapta: pune/folosește\n" -"- Rotiță mouse: selectează obiect\n" -"- T: chat\n" +"Controale:\n" +"-%s: deplasați înainte\n" +"-%s: deplasați înapoi\n" +"-%s: deplasați spre stânga\n" +"-%s: deplasați spre dreapta\n" +"-%s: salt / urcare\n" +"-%s: strecurați / coborâți\n" +"-%s: aruncați element\n" +"-%s: inventar\n" +"- Mouse: rotiți / priviți\n" +"- Mouse stânga: săpați / pocniți\n" +"- Mouse dreapta: plasați / utilizare\n" +"- Roată mousului: selectează elementul\n" +"-%s: chat\n" #: src/client/game.cpp msgid "Creating client..." msgstr "Se creează clientul..." #: src/client/game.cpp -#, fuzzy msgid "Creating server..." msgstr "Se crează serverul..." #: src/client/game.cpp msgid "Debug info and profiler graph hidden" -msgstr "" +msgstr "Informațiile de depanare și graficul profilului sunt ascunse" #: src/client/game.cpp msgid "Debug info shown" -msgstr "" +msgstr "Informații de depanare afișate" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" -msgstr "" +msgstr "Informații de depanare, grafic de profil și ascuns" #: src/client/game.cpp msgid "" @@ -1097,14 +1038,26 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"Controale implicite:\n" +"Niciun meniu vizibil:\n" +"- apăsare unică: activare buton\n" +"- apăsare dublă: plasare / utilizare\n" +"- deget glisant: privește în jur\n" +"Meniu / Inventar vizibil:\n" +"- apăsare dublă (exterior):\n" +" -> close\n" +"- touch stack, slot pentru atingere:\n" +" -> mută stiva\n" +"- atingeți și trageți, atingeți al doilea deget\n" +" -> plasați un singur element în slot\n" #: src/client/game.cpp msgid "Disabled unlimited viewing range" -msgstr "" +msgstr "Interval de vizualizare nelimitat dezactivat" #: src/client/game.cpp msgid "Enabled unlimited viewing range" -msgstr "" +msgstr "Interval de vizualizare nelimitat activat" #: src/client/game.cpp msgid "Exit to Menu" @@ -1115,18 +1068,16 @@ msgid "Exit to OS" msgstr "Ieși din joc" #: src/client/game.cpp -#, fuzzy msgid "Fast mode disabled" -msgstr "Dezactivează MP" +msgstr "Modul rapid este dezactivat" #: src/client/game.cpp -#, fuzzy msgid "Fast mode enabled" -msgstr "Daune activate" +msgstr "Modul rapid activat" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "" +msgstr "Modul rapid activat (notă: niciun privilegiu „rapid”)" #: src/client/game.cpp msgid "Fly mode disabled" @@ -1138,31 +1089,27 @@ msgstr "Modul zburat activat" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "" +msgstr "Modul de zbor este activat (notă: niciun privilegiu „zboară”)" #: src/client/game.cpp -#, fuzzy msgid "Fog disabled" -msgstr "Dezactivează MP" +msgstr "Ceață dezactivată" #: src/client/game.cpp -#, fuzzy msgid "Fog enabled" -msgstr "activat" +msgstr "Ceață activată" #: src/client/game.cpp msgid "Game info:" -msgstr "" +msgstr "Informatii despre joc:" #: src/client/game.cpp -#, fuzzy msgid "Game paused" -msgstr "Numele jocului" +msgstr "Joc întrerupt" #: src/client/game.cpp -#, fuzzy msgid "Hosting server" -msgstr "Se crează serverul..." +msgstr "Găzduind un server" #: src/client/game.cpp msgid "Item definitions..." @@ -1170,7 +1117,7 @@ msgstr "Definițiile obiectelor..." #: src/client/game.cpp msgid "KiB/s" -msgstr "" +msgstr "KiB / s" #: src/client/game.cpp msgid "Media..." @@ -1178,52 +1125,51 @@ msgstr "Media..." #: src/client/game.cpp msgid "MiB/s" -msgstr "" +msgstr "MiB / s" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "" +msgstr "Hartă mip dezactivată de joc sau mod" #: src/client/game.cpp msgid "Minimap hidden" -msgstr "" +msgstr "Hartă mip ascunsă" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" -msgstr "" +msgstr "Hartă mip în modul radar, Zoom x1" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x2" -msgstr "" +msgstr "Hartă mip în modul radar, Zoom x2" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x4" -msgstr "" +msgstr "Hartă mip în modul radar, Zoom x4" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x1" -msgstr "" +msgstr "Hartă mip în modul de suprafață, Zoom x1" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x2" -msgstr "" +msgstr "Hartă mip în modul de suprafață, Zoom x2" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x4" -msgstr "" +msgstr "Hartă mip în modul de suprafață, Zoom x4" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "" +msgstr "Modul Noclip este dezactivat" #: src/client/game.cpp -#, fuzzy msgid "Noclip mode enabled" -msgstr "Daune activate" +msgstr "Modul Noclip activat" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "" +msgstr "Modul Noclip activat (notă: nu este privilegiat „noclip”)" #: src/client/game.cpp msgid "Node definitions..." @@ -1231,125 +1177,120 @@ msgstr "Definițiile Blocurilor..." #: src/client/game.cpp msgid "Off" -msgstr "" +msgstr "Oprit" #: src/client/game.cpp msgid "On" -msgstr "" +msgstr "Pornit" #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "" +msgstr "Mod mutare pitch dezactivat" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "" +msgstr "Mod de mutare pitch activat" #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "" +msgstr "Graficul profilului este afișat" #: src/client/game.cpp msgid "Remote server" -msgstr "" +msgstr "Server de la distanță" #: src/client/game.cpp msgid "Resolving address..." msgstr "Se rezolvă adresa..." #: src/client/game.cpp -#, fuzzy msgid "Shutting down..." msgstr "Se închide..." #: src/client/game.cpp msgid "Singleplayer" -msgstr "Singleplayer" +msgstr "Jucător singur" #: src/client/game.cpp msgid "Sound Volume" msgstr "Volum Sunet" #: src/client/game.cpp -#, fuzzy msgid "Sound muted" -msgstr "Volum Sunet" +msgstr "Sunet dezactivat" #: src/client/game.cpp -#, fuzzy msgid "Sound unmuted" -msgstr "Volum Sunet" +msgstr "Sunet activat" #: src/client/game.cpp #, c-format msgid "Viewing range changed to %d" -msgstr "" +msgstr "Intervalul de vizualizare s-a modificat la %d" #: src/client/game.cpp #, c-format msgid "Viewing range is at maximum: %d" -msgstr "" +msgstr "Intervalul de vizualizare este maxim: %d" #: src/client/game.cpp #, c-format msgid "Viewing range is at minimum: %d" -msgstr "" +msgstr "Intervalul de vizualizare este cel puțin: %d" #: src/client/game.cpp #, c-format msgid "Volume changed to %d%%" -msgstr "" +msgstr "Volum modificat la %d%%" #: src/client/game.cpp msgid "Wireframe shown" -msgstr "" +msgstr "Cadru de sârmă afișat" #: src/client/game.cpp msgid "Zoom currently disabled by game or mod" -msgstr "" +msgstr "Zoom dezactivat în prezent de joc sau mod" #: src/client/game.cpp src/gui/modalMenu.cpp msgid "ok" -msgstr "" +msgstr "O.K" #: src/client/gameui.cpp -#, fuzzy msgid "Chat hidden" -msgstr "Modifică tastele" +msgstr "Chat ascuns" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "" +msgstr "Chat afișat" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "" +msgstr "HUD ascuns" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "" +msgstr "HUD afișat" #: src/client/gameui.cpp msgid "Profiler hidden" -msgstr "" +msgstr "Profiler ascuns" #: src/client/gameui.cpp #, c-format msgid "Profiler shown (page %d of %d)" -msgstr "" +msgstr "Profiler afișat (pagina %d din %d)" #: src/client/keycode.cpp msgid "Apps" msgstr "Aplicații" #: src/client/keycode.cpp -#, fuzzy msgid "Backspace" msgstr "Înapoi" #: src/client/keycode.cpp msgid "Caps Lock" -msgstr "" +msgstr "Majuscule" #: src/client/keycode.cpp msgid "Clear" @@ -1365,12 +1306,11 @@ msgstr "Jos" #: src/client/keycode.cpp msgid "End" -msgstr "End" +msgstr "Sfârșit" #: src/client/keycode.cpp -#, fuzzy msgid "Erase EOF" -msgstr "Ștergere OEF" +msgstr "Ștergere EOF" #: src/client/keycode.cpp msgid "Execute" @@ -1385,29 +1325,24 @@ msgid "Home" msgstr "Home" #: src/client/keycode.cpp -#, fuzzy msgid "IME Accept" -msgstr "Acceptă" +msgstr "Acceptare IME" #: src/client/keycode.cpp -#, fuzzy msgid "IME Convert" -msgstr "Convert" +msgstr "Conversie IME" #: src/client/keycode.cpp -#, fuzzy msgid "IME Escape" -msgstr "Escape" +msgstr "IME de Evacuare" #: src/client/keycode.cpp -#, fuzzy msgid "IME Mode Change" -msgstr "Schimbă modul" +msgstr "Schimbare mod IME" #: src/client/keycode.cpp -#, fuzzy msgid "IME Nonconvert" -msgstr "Nonconvert" +msgstr "IME Nonconvertit" #: src/client/keycode.cpp msgid "Insert" @@ -1452,64 +1387,63 @@ msgstr "Num Lock" #: src/client/keycode.cpp msgid "Numpad *" -msgstr "Numpad *" +msgstr "Num pad *" #: src/client/keycode.cpp msgid "Numpad +" -msgstr "Numpad +" +msgstr "Num pad +" #: src/client/keycode.cpp msgid "Numpad -" -msgstr "Numpad -" +msgstr "Num pad -" #: src/client/keycode.cpp -#, fuzzy msgid "Numpad ." -msgstr "Numpad *" +msgstr "Numpad." #: src/client/keycode.cpp msgid "Numpad /" -msgstr "Numpad /" +msgstr "Num pad /" #: src/client/keycode.cpp msgid "Numpad 0" -msgstr "Numpad 0" +msgstr "Num pad 0" #: src/client/keycode.cpp msgid "Numpad 1" -msgstr "Numpad 1" +msgstr "Num pad 1" #: src/client/keycode.cpp msgid "Numpad 2" -msgstr "Numpad 2" +msgstr "Num pad 2" #: src/client/keycode.cpp msgid "Numpad 3" -msgstr "Numpad 3" +msgstr "Num pad 3" #: src/client/keycode.cpp msgid "Numpad 4" -msgstr "Numpad 4" +msgstr "Num pad 4" #: src/client/keycode.cpp msgid "Numpad 5" -msgstr "Numpad 5" +msgstr "Num pad 5" #: src/client/keycode.cpp msgid "Numpad 6" -msgstr "Numpad 6" +msgstr "Num pad 6" #: src/client/keycode.cpp msgid "Numpad 7" -msgstr "Numpad 7" +msgstr "Num pad 7" #: src/client/keycode.cpp msgid "Numpad 8" -msgstr "Numpad 8" +msgstr "Num pad 8" #: src/client/keycode.cpp msgid "Numpad 9" -msgstr "Numpad 9" +msgstr "Num pad 9" #: src/client/keycode.cpp msgid "OEM Clear" @@ -1517,11 +1451,11 @@ msgstr "Curățare OEM" #: src/client/keycode.cpp msgid "Page down" -msgstr "" +msgstr "Pagină în jos" #: src/client/keycode.cpp msgid "Page up" -msgstr "" +msgstr "Pagină sus" #: src/client/keycode.cpp msgid "Pause" @@ -1534,7 +1468,7 @@ msgstr "Joacă" #. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" -msgstr "Print" +msgstr "Imprimare" #: src/client/keycode.cpp msgid "Return" @@ -1579,7 +1513,7 @@ msgstr "Shift" #: src/client/keycode.cpp msgid "Sleep" -msgstr "Sleep" +msgstr "Somn" #: src/client/keycode.cpp msgid "Snapshot" @@ -1615,7 +1549,7 @@ msgstr "Parolele nu se potrivesc!" #: src/gui/guiConfirmRegistration.cpp msgid "Register and Join" -msgstr "" +msgstr "Înregistrează-te și Alătură-te" #: src/gui/guiConfirmRegistration.cpp #, c-format @@ -1626,33 +1560,36 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" +"Sunteți pe cale să vă asociați pentru prima dată la acest server cu numele \"" +"%s\".\n" +"Dacă continuați, se va crea un cont nou utilizând acreditările pe acest " +"server.\n" +"Reintroduceți parola și faceți clic pe \"Înregistrare și asociere\" pentru a " +"confirma crearea contului sau faceți clic pe \"Revocare\" pentru a abandona." #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" msgstr "Continuă" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "\"Special\" = climb down" -msgstr "\"Aleargă\" = coboară" +msgstr "\"Special\" = coborâți" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Autoforward" -msgstr "Înainte" +msgstr "Redirecționare înainte" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" -msgstr "" +msgstr "Salt automat" #: src/gui/guiKeyChangeMenu.cpp msgid "Backward" msgstr "Înapoi" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Change camera" -msgstr "Modifică tastele" +msgstr "Schimba camera" #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" @@ -1668,11 +1605,11 @@ msgstr "Consloă" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. range" -msgstr "" +msgstr "Interval dec" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. volume" -msgstr "" +msgstr "Dec. volum" #: src/gui/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" @@ -1688,12 +1625,11 @@ msgstr "Înainte" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. range" -msgstr "" +msgstr "Interval Inc" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Inc. volume" -msgstr "Volum Sunet" +msgstr "Volumul inc" #: src/gui/guiKeyChangeMenu.cpp msgid "Inventory" @@ -1713,31 +1649,28 @@ msgstr "" "Keybindings. (Dacă acest meniu apare, șterge lucrurile din minetest.conf)" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Local command" -msgstr "Comandă" +msgstr "Comandă locală" #: src/gui/guiKeyChangeMenu.cpp msgid "Mute" -msgstr "" +msgstr "Mut" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Next item" -msgstr "Următorul" +msgstr "Următorul element" #: src/gui/guiKeyChangeMenu.cpp msgid "Prev. item" -msgstr "" +msgstr "Elementul anterior" #: src/gui/guiKeyChangeMenu.cpp msgid "Range select" msgstr "Selectare distanță" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot" -msgstr "PrintScreen" +msgstr "Captură de ecran" #: src/gui/guiKeyChangeMenu.cpp msgid "Sneak" @@ -1745,17 +1678,15 @@ msgstr "Furișează" #: src/gui/guiKeyChangeMenu.cpp msgid "Special" -msgstr "" +msgstr "Special" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle HUD" -msgstr "Intră pe zbor" +msgstr "Comutați HUD" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle chat log" -msgstr "Intră pe rapid" +msgstr "Comutați jurnalul de chat" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fast" @@ -1766,23 +1697,20 @@ msgid "Toggle fly" msgstr "Intră pe zbor" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle fog" -msgstr "Intră pe zbor" +msgstr "Comutați ceața" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle minimap" -msgstr "Intră pe noclip" +msgstr "Comutați minimap" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" msgstr "Intră pe noclip" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle pitchmove" -msgstr "Intră pe rapid" +msgstr "Comutați pitchmove" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" @@ -1809,9 +1737,8 @@ msgid "Exit" msgstr "Ieșire" #: src/gui/guiVolumeChange.cpp -#, fuzzy msgid "Muted" -msgstr "apasă o tastă" +msgstr "Amuțit" #: src/gui/guiVolumeChange.cpp msgid "Sound Volume: " @@ -1821,7 +1748,7 @@ msgstr "Volum sunet: " #. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " -msgstr "" +msgstr "Introduceţi " #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string which needs to contain the translation's @@ -1835,6 +1762,9 @@ msgid "" "(Android) Fixes the position of virtual joystick.\n" "If disabled, virtual joystick will center to first-touch's position." msgstr "" +"(Android) Fixează poziția joystick-ului virtual.\n" +"Dacă este dezactivat, joystick-ul virtual se va orienta către poziția la " +"prima atingere." #: src/settings_translation_file.cpp msgid "" @@ -1842,6 +1772,9 @@ msgid "" "If enabled, virtual joystick will also tap \"aux\" button when out of main " "circle." msgstr "" +"(Android) Utilizați joystick-ul virtual pentru a declanșa butonul \"aux\".\n" +"Dacă este activat, joystick-ul virtual va atinge, de asemenea, butonul \"" +"aux\" atunci când este în afara cercului principal." #: src/settings_translation_file.cpp msgid "" @@ -1854,6 +1787,17 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" +"(X, Y, Z) compensarea fractalului din centrul lumii în unități de „scară”.\n" +"Poate fi folosit pentru a muta un punct dorit la (0, 0) pentru a crea o\n" +"punct de reproducere adecvat sau pentru a permite „mărirea” pe un dorit\n" +"punct prin creșterea „scară”.\n" +"Valoarea implicită este reglată pentru un punct de reproducere adecvat " +"pentru Mandelbrot\n" +"setează cu parametrii prestabili, este posibil să fie nevoie de modificări " +"în alte\n" +"situații.\n" +"Intervalul aproximativ -2 până la 2. Înmulțiți cu „scala” pentru compensarea " +"în noduri." #: src/settings_translation_file.cpp msgid "" @@ -1865,75 +1809,87 @@ msgid "" "Default is for a vertically-squashed shape suitable for\n" "an island, set all 3 numbers equal for the raw shape." msgstr "" +"(X, Y, Z) scara fractalului în noduri.\n" +"Mărimea efectivă a fractalului va fi de 2 până la 3 ori mai mare.\n" +"Aceste numere pot fi făcute foarte mari, fractal\n" +"nu trebuie să se încadreze în interiorul lumii.\n" +"Măriți acestea pentru a „mări” detaliile fractalei.\n" +"Valoarea implicită este pentru o formă ghemuită vertical, potrivită pentru\n" +"o insulă, setați toate cele 3 numere egale pentru forma brută." #: src/settings_translation_file.cpp msgid "" "0 = parallax occlusion with slope information (faster).\n" "1 = relief mapping (slower, more accurate)." msgstr "" +"0 = ocluzia de paralax cu informații despre panta (mai rapid).\n" +"1 = mapare în relief (mai lentă, mai exactă)." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of ridged mountains." -msgstr "" +msgstr "Zgomot 2D care controlează forma/dimensiunea munților crestați." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." -msgstr "" +msgstr "Zgomot 2D care controlează forma/dimensiune de dealuri." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." -msgstr "" +msgstr "Zgomot 2D care controlează forma / dimensiunea munților pas." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." -msgstr "" +msgstr "Zgomot 2D care controlează mărimea / apariția lanțurilor montate." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "" +msgstr "Zgomot 2D care controlează dimensiunea / apariția de dealuri rulate." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of step mountain ranges." msgstr "" +"Zgomot 2D care controlează mărimea/apariția intervalelor de munți de pas." #: src/settings_translation_file.cpp msgid "2D noise that locates the river valleys and channels." -msgstr "" +msgstr "Zgomot 2D, care localizează văile râurilor și canalelor." #: src/settings_translation_file.cpp -#, fuzzy msgid "3D clouds" msgstr "Nori 3D" #: src/settings_translation_file.cpp msgid "3D mode" -msgstr "" +msgstr "Mod 3D" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." -msgstr "" +msgstr "Zgomot 3D care definește caverne gigantice." #: src/settings_translation_file.cpp msgid "" "3D noise defining mountain structure and height.\n" "Also defines structure of floatland mountain terrain." msgstr "" +"Zgomot 3D care definește structura și înălțimea muntelui.\n" +"De asemenea, definește structura terenului montan floatland." #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." -msgstr "" +msgstr "Zgomot 3D care definește structura pereților canionului cu râu." #: src/settings_translation_file.cpp msgid "3D noise defining terrain." -msgstr "" +msgstr "Zgomot 3D care definește terenul." #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." msgstr "" +"Zgomot 3D pentru hangare de munte, stânci, etc. De obicei, mici variante." #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "" +msgstr "Zgomot 3D care determină numărul de temnițe pe bucată de hartă." #: src/settings_translation_file.cpp msgid "" @@ -1948,52 +1904,67 @@ msgid "" "- pageflip: quadbuffer based 3d.\n" "Note that the interlaced mode requires shaders to be enabled." msgstr "" +"Suport 3D.\n" +"În prezent, suportate:\n" +"- Nici unul: nici o ieșire 3d.\n" +"- anaglyph: cyan / magenta culoare 3d.\n" +"- întrețesut: ciudat / par linie pe bază de suport ecran de polarizare.\n" +"- partea de sus: split screen sus / jos.\n" +"- sidebyside: split ecran unul lângă altul.\n" +"- crossview: Cross-eyed 3d\n" +"- pageflip: quadbuffer pe bază de 3d.\n" +"Rețineți că modul între țesutnecesită umbrire pentru a fi activat." #: src/settings_translation_file.cpp msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" +"Un seed de hartă aleasă pentru o hartă nouă, lăsa goală pentru a fii " +"întâmplătoare.\n" +"Va fi înlocuit atunci când se creează o lume nouă în meniul principal." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." msgstr "" +"Un mesaj care va fi afișat tuturor clienților în momentul blocării " +"serverului." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." -msgstr "" +msgstr "Un mesaj care va fi afișat tuturor clienților la închiderea serverului." #: src/settings_translation_file.cpp msgid "ABM interval" -msgstr "" +msgstr "Interval ABM" #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "" +msgstr "Limita absolută a cozilor emergente" #: src/settings_translation_file.cpp msgid "Acceleration in air" -msgstr "" +msgstr "Accelerare în aer" #: src/settings_translation_file.cpp msgid "Acceleration of gravity, in nodes per second per second." -msgstr "" +msgstr "Accelerarea gravitației, în noduri pe secundă pe secundă." #: src/settings_translation_file.cpp msgid "Active Block Modifiers" -msgstr "" +msgstr "Modificatori de bloc activi" #: src/settings_translation_file.cpp msgid "Active block management interval" -msgstr "" +msgstr "Interval de gestionare a blocurilor activ" #: src/settings_translation_file.cpp msgid "Active block range" -msgstr "" +msgstr "Interval de bloc activ" #: src/settings_translation_file.cpp msgid "Active object send range" -msgstr "" +msgstr "Interval de trimitere obiect e activ" #: src/settings_translation_file.cpp msgid "" @@ -2001,20 +1972,25 @@ msgid "" "Leave this blank to start a local server.\n" "Note that the address field in the main menu overrides this setting." msgstr "" +"Adresa la care să vă conectați.\n" +"Lăsați necompletat pentru a porni un server local.\n" +"Rețineți că, câmpul de adresă din meniul principal suprascrie această setare." #: src/settings_translation_file.cpp msgid "Adds particles when digging a node." -msgstr "" +msgstr "Adăuga particule atunci când săpați un nod." #: src/settings_translation_file.cpp msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" +"Ajustați configurația dpi pe ecran (numai pentru x11/Android), de exemplu " +"pentru ecrane 4k." #: src/settings_translation_file.cpp msgid "Advanced" -msgstr "" +msgstr "Avansat" #: src/settings_translation_file.cpp msgid "" @@ -2024,65 +2000,73 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Modifică curba luminii prin aplicarea 'corecția gamma' la ea.\n" +"Valori mai mari de a face de mijloc și de jos niveluri de lumină " +"strălucitoare.\n" +"Valoarea '1.0' lasă lumina curba nealterată.\n" +"Aceasta are doar un efect semnificativ asupra lumină naturală și " +"artificială\n" +"lumina, are un efect foarte mic asupra naturală lumina de noapte." #: src/settings_translation_file.cpp msgid "Altitude chill" -msgstr "" +msgstr "Altitudine de frisoane" #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "Întotdeauna zboară și rapid" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "" +msgstr "Gamma ocluziei ambientală" #: src/settings_translation_file.cpp msgid "Amount of messages a player may send per 10 seconds." -msgstr "" +msgstr "Cantitatea de mesaje pe care un jucător poate trimite la 10 secunde." #: src/settings_translation_file.cpp msgid "Amplifies the valleys." -msgstr "" +msgstr "Amplifică văile." #: src/settings_translation_file.cpp -#, fuzzy msgid "Anisotropic filtering" msgstr "Filtru Anizotropic" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "Anunță serverul" #: src/settings_translation_file.cpp msgid "Announce to this serverlist." -msgstr "" +msgstr "Anunțați pe această listă de servere." #: src/settings_translation_file.cpp msgid "Append item name" -msgstr "" +msgstr "Adăugare nume element" #: src/settings_translation_file.cpp msgid "Append item name to tooltip." -msgstr "" +msgstr "Adăugați numele articolului la sugestia de instrumente." #: src/settings_translation_file.cpp msgid "Apple trees noise" -msgstr "" +msgstr "Zgomotul merilor" #: src/settings_translation_file.cpp msgid "Arm inertia" -msgstr "" +msgstr "Inerție braț" #: src/settings_translation_file.cpp msgid "" "Arm inertia, gives a more realistic movement of\n" "the arm when the camera moves." msgstr "" +"Inerția brațului, oferă o mișcare mai realistă a\n" +"brațul când camera se mișcă." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" -msgstr "" +msgstr "Solicitați să vă reconectați după cădere" #: src/settings_translation_file.cpp msgid "" @@ -2098,19 +2082,28 @@ msgid "" "optimization.\n" "Stated in mapblocks (16 nodes)." msgstr "" +"La această distanță serverul va optimiza agresiv care blocuri sunt trimise " +"la\n" +"Clientii.\n" +"Valorile mici pot îmbunătăți performanța foarte mult, în detrimentul\n" +"glitches de redare (unele blocuri nu vor fi redate sub apă și în peșteri,\n" +"precum și, uneori, pe teren).\n" +"Setarea acesteia la o valoare mai mare decât max_block_send_distance " +"dezactivează această\n" +"Optimizare.\n" +"În scrise în mapblocks (16 noduri)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Automatic forward key" -msgstr "Înainte" +msgstr "Tasta de avans automată" #: src/settings_translation_file.cpp msgid "Automatically jump up single-node obstacles." -msgstr "" +msgstr "Săriți automat obstacolele cu un singur nod." #: src/settings_translation_file.cpp msgid "Automatically report to the serverlist." -msgstr "" +msgstr "Raportați automat la lista de server." #: src/settings_translation_file.cpp msgid "Autosave screen size" @@ -2118,92 +2111,87 @@ msgstr "Salvează automat dimensiunea ecranului" #: src/settings_translation_file.cpp msgid "Autoscaling mode" -msgstr "" +msgstr "Mod scalare automată" #: src/settings_translation_file.cpp -#, fuzzy msgid "Backward key" -msgstr "Înapoi" +msgstr "Tastă înapoi" #: src/settings_translation_file.cpp -#, fuzzy msgid "Base ground level" -msgstr "Mapgen" +msgstr "Nivelul solului de bază" #: src/settings_translation_file.cpp msgid "Base terrain height." -msgstr "" +msgstr "Înălțimea terenului de bază." #: src/settings_translation_file.cpp msgid "Basic" -msgstr "" +msgstr "De bază" #: src/settings_translation_file.cpp msgid "Basic privileges" -msgstr "" +msgstr "Privilegii de bază" #: src/settings_translation_file.cpp msgid "Beach noise" -msgstr "" +msgstr "Zgomot de plajă" #: src/settings_translation_file.cpp msgid "Beach noise threshold" -msgstr "" +msgstr "Pragul de zgomot de plajă" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bilinear filtering" msgstr "Filtrare Biliniară" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bind address" -msgstr "Se rezolvă adresa..." +msgstr "Adresa de legare" #: src/settings_translation_file.cpp msgid "Biome API temperature and humidity noise parameters" -msgstr "" +msgstr "Parametrii de zgomot de temperatură și umiditate Biome API" #: src/settings_translation_file.cpp msgid "Biome noise" -msgstr "" +msgstr "Biome zgomot" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" +msgstr "Biți per pixel (aka adâncime de culoare) în modul ecran complet." #: src/settings_translation_file.cpp msgid "Block send optimize distance" -msgstr "" +msgstr "Distanță de optimizare trimitere bloc" #: src/settings_translation_file.cpp msgid "Bold and italic font path" -msgstr "" +msgstr "Cale font aldin și cursiv" #: src/settings_translation_file.cpp msgid "Bold and italic monospace font path" -msgstr "" +msgstr "Cale de font monospațiu aldin și cursiv" #: src/settings_translation_file.cpp msgid "Bold font path" -msgstr "" +msgstr "Calea cu caractere îngroșate" #: src/settings_translation_file.cpp msgid "Bold monospace font path" -msgstr "" +msgstr "Calea cu caractere monospațiale îngroșate" #: src/settings_translation_file.cpp msgid "Build inside player" -msgstr "" +msgstr "Construiți în interiorul jucătorului" #: src/settings_translation_file.cpp msgid "Builtin" -msgstr "" +msgstr "Incorporat" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bumpmapping" -msgstr "Mip Mapping" +msgstr "Hartă pentru Denivelări" #: src/settings_translation_file.cpp msgid "" @@ -2212,10 +2200,15 @@ msgid "" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" +"Camera \"aproape de tăiere plan\" distanta în noduri, între 0 și 0.25\n" +"Funcționează numai pe platforme LeS. Majoritatea utilizatorilor nu vor " +"trebui să schimbe acest lucru.\n" +"Creșterea poate reduce artefacte pe gpu-uri mai slabe.\n" +"0.1 = Implicit, 0,25 = Valoare bună pentru tabletele mai slabe." #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "Netezirea camerei" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" @@ -2262,9 +2255,8 @@ msgid "Cavern taper" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cavern threshold" -msgstr "Mapgen" +msgstr "Pragul cavernei" #: src/settings_translation_file.cpp msgid "Cavern upper limit" @@ -2287,51 +2279,44 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat key" -msgstr "Modifică tastele" +msgstr "Tasta de chat" #: src/settings_translation_file.cpp msgid "Chat message count limit" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message format" -msgstr "Mapgen" +msgstr "Formatul mesajului de chat" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message kick threshold" -msgstr "Mapgen" +msgstr "Pragul de lansare a mesajului de chat" #: src/settings_translation_file.cpp msgid "Chat message max length" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat toggle key" -msgstr "Modifică tastele" +msgstr "Cheia de comutare a chatului" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chatcommands" -msgstr "Comandă" +msgstr "Comenzi de chat" #: src/settings_translation_file.cpp msgid "Chunk size" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode" -msgstr "Modul Creativ" +msgstr "Modul cinematografic" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cinematic mode key" -msgstr "Modul Creativ" +msgstr "Tasta modului cinematografic" #: src/settings_translation_file.cpp msgid "Clean transparent textures" @@ -2346,14 +2331,12 @@ msgid "Client and Server" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Client modding" -msgstr "Client" +msgstr "Modare la client" #: src/settings_translation_file.cpp -#, fuzzy msgid "Client side modding restrictions" -msgstr "Client" +msgstr "Restricții de modificare de partea clientului" #: src/settings_translation_file.cpp msgid "Client side node lookup range restriction" @@ -2423,9 +2406,8 @@ msgid "Connects glass if supported by node." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console alpha" -msgstr "Consloă" +msgstr "Consola alfa" #: src/settings_translation_file.cpp msgid "Console color" @@ -2440,9 +2422,8 @@ msgid "ContentDB Flag Blacklist" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "ContentDB URL" -msgstr "Continuă" +msgstr "URL-ul ContentDB" #: src/settings_translation_file.cpp msgid "Continuous forward" @@ -2489,9 +2470,8 @@ msgid "Crash message" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Creative" -msgstr "Creează" +msgstr "Creativ" #: src/settings_translation_file.cpp msgid "Crosshair alpha" @@ -2514,9 +2494,8 @@ msgid "DPI" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Damage" -msgstr "Activează Daune" +msgstr "Daune" #: src/settings_translation_file.cpp msgid "Debug info toggle key" @@ -2547,9 +2526,8 @@ msgid "Default acceleration" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default game" -msgstr "modifică jocul" +msgstr "Jocul implicit" #: src/settings_translation_file.cpp msgid "" @@ -2558,9 +2536,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default password" -msgstr "Noua parolă" +msgstr "Parolă implicită" #: src/settings_translation_file.cpp msgid "Default privileges" @@ -2681,14 +2658,12 @@ msgid "Desynchronize block animation" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Digging particles" -msgstr "Activează tot" +msgstr "Particule pentru săpare" #: src/settings_translation_file.cpp -#, fuzzy msgid "Disable anticheat" -msgstr "Activează particulele" +msgstr "Dezactivează anticheatul" #: src/settings_translation_file.cpp msgid "Disallow empty passwords" @@ -2699,14 +2674,12 @@ msgid "Domain name of server, to be displayed in the serverlist." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double tap jump for fly" msgstr "Apasă de 2 ori \"sari\" pentru a zbura" #: src/settings_translation_file.cpp -#, fuzzy msgid "Double-tapping the jump key toggles fly mode." -msgstr "Apasă de 2 ori \"sari\" pentru a zbura" +msgstr "Apăsând de 2 ori tasta Salt pentru a comuta modul de zburat." #: src/settings_translation_file.cpp msgid "Drop item key" @@ -2725,9 +2698,8 @@ msgid "Dungeon minimum Y" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dungeon noise" -msgstr "Mapgen" +msgstr "Zgomotul temnițelor" #: src/settings_translation_file.cpp msgid "" @@ -2754,14 +2726,12 @@ msgid "Enable joysticks" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod channels support." -msgstr "Repozitoriu Online de moduri" +msgstr "Activați suportul pentru canale mod." #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod security" -msgstr "Repozitoriu Online de moduri" +msgstr "Activați securitatea modului" #: src/settings_translation_file.cpp msgid "Enable players getting damage and dying." @@ -2848,9 +2818,8 @@ msgid "Enables caching of facedir rotated meshes." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enables minimap." -msgstr "Activează Daune" +msgstr "Activează minimap." #: src/settings_translation_file.cpp msgid "" @@ -2903,9 +2872,8 @@ msgid "Fall bobbing factor" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "lipsă_tip_font" +msgstr "Cale font de rezervă" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -2977,9 +2945,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Filtering" -msgstr "Filtru Anizotropic" +msgstr "Filtrarea" #: src/settings_translation_file.cpp msgid "First of 4 2D noises that together define hill/mountain range height." @@ -3093,9 +3060,8 @@ msgid "Formspec full-screen background opacity (between 0 and 255)." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Forward key" -msgstr "Înainte" +msgstr "Tasta înainte" #: src/settings_translation_file.cpp msgid "Fourth of 4 2D noises that together define hill/mountain range height." @@ -3193,19 +3159,16 @@ msgid "Gravity" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Ground level" -msgstr "Mapgen" +msgstr "Nivelul solului" #: src/settings_translation_file.cpp -#, fuzzy msgid "Ground noise" -msgstr "Mapgen" +msgstr "Zgomotul solului" #: src/settings_translation_file.cpp -#, fuzzy msgid "HTTP mods" -msgstr "Moduri" +msgstr "Moduri HTTP" #: src/settings_translation_file.cpp msgid "HUD scale factor" @@ -3245,9 +3208,8 @@ msgid "Height component of the initial window size." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Height noise" -msgstr "Windows Dreapta" +msgstr "Zgomot de înălțime" #: src/settings_translation_file.cpp msgid "Height select noise" @@ -3258,14 +3220,12 @@ msgid "High-precision FPU" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hill steepness" -msgstr "Mapgen" +msgstr "Abruptul dealului" #: src/settings_translation_file.cpp -#, fuzzy msgid "Hill threshold" -msgstr "Mapgen" +msgstr "Pragul dealului" #: src/settings_translation_file.cpp msgid "Hilliness1 noise" @@ -3575,9 +3535,8 @@ msgid "Ignore world errors" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "In-Game" -msgstr "Joc" +msgstr "În joc" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." @@ -3592,9 +3551,8 @@ msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Inc. volume key" -msgstr "Consloă" +msgstr "Inc. tastă de volum" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." @@ -3647,9 +3605,8 @@ msgid "Inventory items animations" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Inventory key" -msgstr "Inventar" +msgstr "Tasta pentru inventar" #: src/settings_translation_file.cpp msgid "Invert mouse" @@ -3749,9 +3706,8 @@ msgid "Julia z" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Jump key" -msgstr "Sari" +msgstr "Tasta de salt" #: src/settings_translation_file.cpp msgid "Jumping speed" @@ -4248,14 +4204,12 @@ msgid "Kick players who sent more than X messages per 10 seconds." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Lake steepness" -msgstr "Mapgen" +msgstr "Abruptitatea lacului" #: src/settings_translation_file.cpp -#, fuzzy msgid "Lake threshold" -msgstr "Mapgen" +msgstr "Pragul lacului" #: src/settings_translation_file.cpp msgid "Language" @@ -4278,9 +4232,8 @@ msgid "Large cave proportion flooded" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Large chat console key" -msgstr "Consloă" +msgstr "Tasta de consolă de chat mare" #: src/settings_translation_file.cpp msgid "Leaves style" @@ -4295,9 +4248,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Left key" -msgstr "Meniu Stânga" +msgstr "Tasta stângă" #: src/settings_translation_file.cpp msgid "" @@ -4432,14 +4384,12 @@ msgid "Lower Y limit of dungeons." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu script" -msgstr "Meniul Principal" +msgstr "Scriptul meniului principal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu style" -msgstr "Meniul Principal" +msgstr "Stilul meniului principal" #: src/settings_translation_file.cpp msgid "" @@ -4528,89 +4478,72 @@ msgid "Mapblock unload timeout" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Carpathian" -msgstr "Mapgen" +msgstr "Gen de mapă carpatin" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Carpathian specific flags" -msgstr "Mapgen" +msgstr "Mapgen Drapele specifice carpatin" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Flat" -msgstr "Mapgen" +msgstr "Mapgen Plat" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Flat specific flags" -msgstr "Mapgen" +msgstr "Mapgen Plat steaguri specifice" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Fractal" -msgstr "Mapgen" +msgstr "Fractal Mapgen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Fractal specific flags" -msgstr "Mapgen" +msgstr "Steaguri specifice Mapgen Fractal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V5" -msgstr "Mapgen" +msgstr "Genul de mapă V5" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V5 specific flags" -msgstr "Mapgen" +msgstr "Steaguri specifice Mapgen V5" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V6" -msgstr "Mapgen" +msgstr "Gen de mapă V6" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V6 specific flags" -msgstr "Mapgen" +msgstr "Steaguri specifice Mapgen V6" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V7" -msgstr "Mapgen" +msgstr "Gen de mapă V7" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V7 specific flags" -msgstr "Mapgen" +msgstr "Steaguri specifice Mapgen V7" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Valleys" -msgstr "Mapgen" +msgstr "Mapgen Văi" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Valleys specific flags" -msgstr "Mapgen" +msgstr "Mapgen Văi specifice steaguri" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen debug" -msgstr "Mapgen" +msgstr "Debug Mapgen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen flags" -msgstr "Mapgen" +msgstr "Steagurile Mapgen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen name" -msgstr "Mapgen" +msgstr "Numele Mapgen" #: src/settings_translation_file.cpp msgid "Max block generate distance" @@ -4747,9 +4680,8 @@ msgid "Maximum users" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Menus" -msgstr "Meniu" +msgstr "Meniuri" #: src/settings_translation_file.cpp msgid "Mesh cache" @@ -4792,9 +4724,8 @@ msgid "Minimum texture size" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mipmapping" -msgstr "Mip Mapping" +msgstr "Cartografierea mip" #: src/settings_translation_file.cpp msgid "Mod channels" @@ -4847,9 +4778,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mute key" -msgstr "apasă o tastă" +msgstr "Tasta pentru mut" #: src/settings_translation_file.cpp msgid "Mute sound" @@ -5058,9 +4988,8 @@ msgid "Physics" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Pitch move key" -msgstr "Modul Creativ" +msgstr "Tasta de mutare a pitch" #: src/settings_translation_file.cpp msgid "Pitch move mode" @@ -5142,18 +5071,16 @@ msgid "Random input" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Range select key" -msgstr "Selectare distanță" +msgstr "Tasta de selectare a intervalului" #: src/settings_translation_file.cpp msgid "Recent Chat Messages" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Regular font path" -msgstr "Selectează" +msgstr "Calea regulată a fontului" #: src/settings_translation_file.cpp msgid "Remote media" @@ -5174,9 +5101,8 @@ msgid "Replaces the default main menu with a custom one." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Report path" -msgstr "Selectează" +msgstr "Calea raportului" #: src/settings_translation_file.cpp msgid "" @@ -5209,9 +5135,8 @@ msgid "Ridged mountain size noise" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Right key" -msgstr "Meniu Drepata" +msgstr "Tasta dreapta" #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" @@ -5230,9 +5155,8 @@ msgid "River depth" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "River noise" -msgstr "Windows Dreapta" +msgstr "Zgomotul râului" #: src/settings_translation_file.cpp msgid "River size" @@ -5300,14 +5224,12 @@ msgid "Screenshot folder" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot format" -msgstr "PrintScreen" +msgstr "Formatul de captură de ecran" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot quality" -msgstr "PrintScreen" +msgstr "Calitatea capturii de ecran" #: src/settings_translation_file.cpp msgid "" @@ -5372,32 +5294,26 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server / Singleplayer" -msgstr "Singleplayer" +msgstr "Server / Jucător singur" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server URL" -msgstr "Server" +msgstr "URL-ul serverului" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server address" -msgstr "Port server" +msgstr "Adresa serverului" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server description" -msgstr "Port server" +msgstr "Descrierea serverului" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server name" -msgstr "Server" +msgstr "Numele serverului" #: src/settings_translation_file.cpp -#, fuzzy msgid "Server port" msgstr "Port server" @@ -5406,14 +5322,12 @@ msgid "Server side occlusion culling" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist URL" -msgstr "Listă de servere publică" +msgstr "URL listă server" #: src/settings_translation_file.cpp -#, fuzzy msgid "Serverlist file" -msgstr "Listă de servere publică" +msgstr "Fișier listă pentru servere" #: src/settings_translation_file.cpp msgid "" @@ -5444,9 +5358,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Shader path" -msgstr "Umbră" +msgstr "Calea shaderului" #: src/settings_translation_file.cpp msgid "" @@ -5526,9 +5439,8 @@ msgid "Small-scale temperature variation for blending biomes on borders." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Smooth lighting" -msgstr "Lumină mai bună" +msgstr "Lumină fină" #: src/settings_translation_file.cpp msgid "" @@ -5545,14 +5457,12 @@ msgid "Smooths rotation of camera. 0 to disable." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneak key" -msgstr "Furișează" +msgstr "Cheie pentru furiș" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneaking speed" -msgstr "Furișează" +msgstr "Viteza de furișare" #: src/settings_translation_file.cpp msgid "Sneaking speed, in nodes per second." @@ -5563,9 +5473,8 @@ msgid "Sound" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Special key" -msgstr "Furișează" +msgstr "Cheie specială" #: src/settings_translation_file.cpp msgid "Special key for climbing/descending" @@ -5672,9 +5581,8 @@ msgid "Terrain persistence noise" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Texture path" -msgstr "Pachete de tetură" +msgstr "Calea texturii" #: src/settings_translation_file.cpp msgid "" @@ -5841,16 +5749,14 @@ msgid "Tooltip delay" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Touch screen threshold" -msgstr "Mapgen" +msgstr "Prag ecran tactil" #: src/settings_translation_file.cpp msgid "Trees noise" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Trilinear filtering" msgstr "Filtrare Triliniară" @@ -6018,9 +5924,8 @@ msgid "Virtual joystick triggers aux button" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Volume" -msgstr "Volum Sunet" +msgstr "Volum" #: src/settings_translation_file.cpp msgid "" @@ -6062,29 +5967,24 @@ msgid "Waving Nodes" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving leaves" -msgstr "Copaci fantezici" +msgstr "Frunze legănătoare" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids" -msgstr "Frunze legănătoare" +msgstr "Fluturarea lichidelor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave height" -msgstr "Apă ondulatoare" +msgstr "Ridicând înălțimea valurilor lichidelor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave speed" -msgstr "Frunze legănătoare" +msgstr "Viteza undelor lichide" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wavelength" -msgstr "Apă ondulatoare" +msgstr "Lungirea undei lichide" #: src/settings_translation_file.cpp msgid "Waving plants" @@ -6184,9 +6084,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "World start time" -msgstr "Numele lumii" +msgstr "Ora de începere a lumii" #: src/settings_translation_file.cpp msgid "" From cdd1dc8b82cfc043aefc30000f417ff7c2285f5d Mon Sep 17 00:00:00 2001 From: Mivik Date: Wed, 13 May 2020 11:05:39 +0000 Subject: [PATCH 311/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 89.1% (1148 of 1288 strings) --- po/zh_CN/minetest.po | 57 +++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index b34d33a70..eb47ccce5 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Chinese (Simplified) (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-22 04:11+0000\n" -"Last-Translator: ERDwaYbR \n" +"PO-Revision-Date: 2020-05-14 11:41+0000\n" +"Last-Translator: Mivik \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.2-dev\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -2164,14 +2164,13 @@ msgid "Bumpmapping" msgstr "凹凸贴图" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" -"相机在节点附近的“剪切平面附近”距离,介于0到0.5之间。\n" +"相机在节点附近的“剪切平面附近”距离,介于0到0.25之间。\n" "大多数用户不需要更改此设置。\n" "增加可以减少较弱GPU上的伪影。\n" "0.1 =默认值,0.25 =对于较弱的平板电脑来说是不错的值。" @@ -5490,9 +5489,8 @@ msgid "Privileges that players with basic_privs can grant" msgstr "有\"basic_privs\"的玩家可以授予的权限" #: src/settings_translation_file.cpp -#, fuzzy msgid "Profiler" -msgstr "山谷轮廓" +msgstr "剖析器" #: src/settings_translation_file.cpp msgid "Profiler toggle key" @@ -5537,7 +5535,6 @@ msgid "Recent Chat Messages" msgstr "最近聊天消息" #: src/settings_translation_file.cpp -#, fuzzy msgid "Regular font path" msgstr "字体路径" @@ -5557,7 +5554,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." -msgstr "" +msgstr "自定义默认的主菜单界面。" #: src/settings_translation_file.cpp #, fuzzy @@ -5565,6 +5562,7 @@ msgid "Report path" msgstr "字体路径" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Restricts the access of certain client-side functions on servers.\n" "Combine the byteflags below to restrict client-side features, or set to 0\n" @@ -5577,10 +5575,19 @@ msgid "" "csm_restriction_noderange)\n" "READ_PLAYERINFO: 32 (disable get_player_names call client-side)" msgstr "" +"在服务器上限制一些客户端上的功能。\n" +"将下面的标志位结合来限制客户端功能,设置为0为无限制:\n" +"LOAD_CLIENT_MODS:1(禁止加载客户端的 Mods)\n" +"CHAT_MESSAGES:2(禁止客户端调用 send_chat_message)\n" +"READ_ITEMDEFS:4(禁止客户端调用 get_item_def)\n" +"READ_NODEDEFS:8(禁止客户端调用 get_node_def)\n" +"LOOKUP_NODES_LIMIT:16(禁止客户端调用 get_node 来获取 csm_restriction_noderange)\n" +"READ_PLAYERINFO:32(禁止客户端调用 get_player_names)" #: src/settings_translation_file.cpp +#, fuzzy msgid "Ridge mountain spread noise" -msgstr "" +msgstr "山脊扩散噪声" #: src/settings_translation_file.cpp #, fuzzy @@ -5589,11 +5596,11 @@ msgstr "河流噪音" #: src/settings_translation_file.cpp msgid "Ridge underwater noise" -msgstr "" +msgstr "山脊地下水噪声" #: src/settings_translation_file.cpp msgid "Ridged mountain size noise" -msgstr "" +msgstr "山脊大小噪声" #: src/settings_translation_file.cpp msgid "Right key" @@ -5604,34 +5611,28 @@ msgid "Rightclick repetition interval" msgstr "右击重复间隔" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel depth" -msgstr "河流深度" +msgstr "河道深度" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel width" -msgstr "河流深度" +msgstr "河道宽度" #: src/settings_translation_file.cpp -#, fuzzy msgid "River depth" msgstr "河流深度" #: src/settings_translation_file.cpp -#, fuzzy msgid "River noise" msgstr "河流噪音" #: src/settings_translation_file.cpp -#, fuzzy msgid "River size" msgstr "河流大小" #: src/settings_translation_file.cpp -#, fuzzy msgid "River valley width" -msgstr "河流深度" +msgstr "河谷深度" #: src/settings_translation_file.cpp msgid "Rollback recording" @@ -5639,11 +5640,11 @@ msgstr "回滚记录" #: src/settings_translation_file.cpp msgid "Rolling hill size noise" -msgstr "" +msgstr "山丘大小噪音" #: src/settings_translation_file.cpp msgid "Rolling hills spread noise" -msgstr "" +msgstr "山丘扩散噪音" #: src/settings_translation_file.cpp msgid "Round minimap" @@ -5651,19 +5652,21 @@ msgstr "圆形小地图" #: src/settings_translation_file.cpp msgid "Safe digging and placing" -msgstr "" +msgstr "安全挖掘和放置" #: src/settings_translation_file.cpp msgid "Sandy beaches occur when np_beach exceeds this value." -msgstr "" +msgstr "当 np_beach 超过这个值时会出现沙滩。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Save the map received by the client on disk." -msgstr "" +msgstr "将客户端接收到的地图保存在磁盘上。" #: src/settings_translation_file.cpp +#, fuzzy msgid "Save window size automatically when modified." -msgstr "" +msgstr "当窗口大小改变时自动记忆。" #: src/settings_translation_file.cpp msgid "Saving map received from server" From 47081a5338741d7cf7b9ceab69375752fe5816c8 Mon Sep 17 00:00:00 2001 From: aitzol berasategi Date: Fri, 15 May 2020 15:59:43 +0000 Subject: [PATCH 312/424] Translated using Weblate (Basque) Currently translated at 18.6% (240 of 1288 strings) --- po/eu/minetest.po | 99 +++++++++++++++++++++++++---------------------- 1 file changed, 53 insertions(+), 46 deletions(-) diff --git a/po/eu/minetest.po b/po/eu/minetest.po index f309d4269..5a3c67ca6 100644 --- a/po/eu/minetest.po +++ b/po/eu/minetest.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-01-11 18:26+0000\n" -"Last-Translator: rubenwardy \n" +"PO-Revision-Date: 2020-05-16 17:41+0000\n" +"Last-Translator: aitzol berasategi \n" "Language-Team: Basque \n" "Language: eu\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10.1\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -101,7 +101,7 @@ msgstr "Desgaitu denak" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "" +msgstr "Mod paketea desgaitu" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" @@ -109,13 +109,15 @@ msgstr "Gaitu denak" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "" +msgstr "Mod paketea gaitu" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" +"Akatsa \"$1\" mod-a gaitzerakoan baimendu gabeko karaktereak dituelako. " +"[a-z0-9_] karaktereak erabil daitezke soilik." #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -135,7 +137,7 @@ msgstr "Mendekotasun zorrotzik ez" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "" +msgstr "Mod-aren deskribapena ez dago eskuragarri." #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" @@ -275,11 +277,11 @@ msgstr "Ezabatu" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" -msgstr "" +msgstr "pkgmgr: Akatsa \"$1\" ezabatzean" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" -msgstr "" +msgstr "pkgmgr: \"$1\" bide baliogabea" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" @@ -291,13 +293,15 @@ msgstr "Onartu" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "" +msgstr "Mod paketea berrizendatu:" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" +"Mod pakete honek berezko izen zehatza du emanda bere modpack.conf-ean eta " +"berrizendatutako edozein gainidatziko du hemen." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" @@ -329,7 +333,7 @@ msgstr "Gaituta" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Lacunarity" -msgstr "" +msgstr "Hutsunetasuna" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Octaves" @@ -385,7 +389,7 @@ msgstr "X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" -msgstr "" +msgstr "X hedapena" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" @@ -393,7 +397,7 @@ msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" -msgstr "" +msgstr "Y hedapena" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" @@ -401,7 +405,7 @@ msgstr "Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" -msgstr "" +msgstr "Z hedapena" #. ~ "absvalue" is a noise parameter flag. #. It is short for "absolute value". @@ -409,7 +413,7 @@ msgstr "" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" -msgstr "" +msgstr "Balio absolutua" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options @@ -424,7 +428,7 @@ msgstr "lehenespenak" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" -msgstr "" +msgstr "Arindua" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" @@ -432,7 +436,7 @@ msgstr "$1 (Gaituta)" #: builtin/mainmenu/pkgmgr.lua msgid "$1 mods" -msgstr "" +msgstr "$1 mod" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" @@ -440,127 +444,130 @@ msgstr "Huts egin du $1 %2-n instalatzean" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "" +msgstr "Mod instalakuntza: Ezinezkoa S1 mod-en berezko izena aurkitzea" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" msgstr "" +"Mod instalakuntza: ezinezkoa $1 mod-entzako karpeta izen egokia aurkitzea" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" msgstr "" +"Instalakuntza: \"$1\" sustengu gabeko fitxategi formatua edo hondatutako " +"fitxategia" #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" -msgstr "" +msgstr "Instalakuntza: fitxategia: \"$1\"" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to find a valid mod or modpack" -msgstr "" +msgstr "Ezinezkoa baliozko mod edo mod pakete bat aurkitzea" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "" +msgstr "Akatsa $1 testura pakete moduan instalatzea" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" -msgstr "" +msgstr "Ezinezkoa joko bat $1 moduan instalatzea" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a mod as a $1" -msgstr "" +msgstr "Ezinezkoa mod bat $1 moduan instalatzea" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a modpack as a $1" -msgstr "" +msgstr "Ezinezkoa mod pakete bat $1 moduan instalatzea" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "" +msgstr "Lineako edukiak esploratu" #: builtin/mainmenu/tab_content.lua msgid "Content" -msgstr "" +msgstr "Edukia" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" -msgstr "" +msgstr "Desgaitu testura paketea" #: builtin/mainmenu/tab_content.lua msgid "Information:" -msgstr "" +msgstr "Informazioa:" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" -msgstr "" +msgstr "Instalaturiko paketeak:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "" +msgstr "Menpekotasunik gabe." #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "" +msgstr "Paketearen deskribapena ez dago erabilgarri" #: builtin/mainmenu/tab_content.lua msgid "Rename" -msgstr "" +msgstr "Berrizendatu" #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" -msgstr "" +msgstr "Paketea desinstalatu" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" -msgstr "" +msgstr "Testura paketea erabili" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "" +msgstr "Laguntzaile aktiboak" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "" +msgstr "Garatzaile nagusiak" #: builtin/mainmenu/tab_credits.lua msgid "Credits" -msgstr "" +msgstr "Kredituak" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "" +msgstr "Lehenagoko laguntzaileak" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "" +msgstr "Lehenagoko garatzaile nagusiak" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" -msgstr "" +msgstr "Zerbitzaria iragarri" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" -msgstr "" +msgstr "Helbidea lotu" #: builtin/mainmenu/tab_local.lua msgid "Configure" -msgstr "" +msgstr "Konfiguratu" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative Mode" -msgstr "" +msgstr "Sormen modua" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Enable Damage" -msgstr "" +msgstr "Kalteak baimendu" #: builtin/mainmenu/tab_local.lua msgid "Host Game" -msgstr "" +msgstr "Joko ostalaria" #: builtin/mainmenu/tab_local.lua msgid "Host Server" -msgstr "" +msgstr "Zerbitzari ostalaria" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" @@ -6081,4 +6088,4 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "" +msgstr "cURL-en denbora muga" From c5b22bf6da6e5c8ecc471ce5c0884cf180d6b122 Mon Sep 17 00:00:00 2001 From: runs Date: Fri, 22 May 2020 11:50:51 +0000 Subject: [PATCH 313/424] Translated using Weblate (Spanish) Currently translated at 67.9% (875 of 1288 strings) --- po/es/minetest.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/po/es/minetest.po b/po/es/minetest.po index eb20451a6..687e8a046 100644 --- a/po/es/minetest.po +++ b/po/es/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Spanish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-02-18 06:32+0000\n" -"Last-Translator: JDiaz \n" +"PO-Revision-Date: 2020-05-23 12:41+0000\n" +"Last-Translator: runs \n" "Language-Team: Spanish \n" "Language: es\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.11\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1554,7 +1554,7 @@ msgid "Register and Join" msgstr "Registrarse y unirse" #: src/gui/guiConfirmRegistration.cpp -#, fuzzy, c-format +#, c-format msgid "" "You are about to join this server with the name \"%s\" for the first time.\n" "If you proceed, a new account using your credentials will be created on this " @@ -1562,11 +1562,11 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" -"Te vas unir al servidor en %1$s1 con el nombre \"%2$s2\" por primera vez. " +"Te vas unir al servidor con el nombre \"%s\" por primera vez.\n" "Cuando procedas, se creará una nueva cuenta en este servidor usando tus " "credenciales.\n" "Por favor, reescribe tu contraseña y haz clic en 'Registrarse y unirse' para " -"confirmar la creación de la cuenta o haz clic en 'Cancelar' para abortar." +"confirmar la creación de la cuenta, o haz clic en 'Cancelar' para abortar." #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" From 4e3dba902edb6cdc6c0dbbc2f83a9d59ead9b619 Mon Sep 17 00:00:00 2001 From: NicHan Date: Sat, 23 May 2020 13:05:47 +0000 Subject: [PATCH 314/424] Translated using Weblate (French) Currently translated at 96.7% (1246 of 1288 strings) --- po/fr/minetest.po | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/po/fr/minetest.po b/po/fr/minetest.po index b672b340c..6a5c8641a 100644 --- a/po/fr/minetest.po +++ b/po/fr/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: French (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-24 08:43+0000\n" -"Last-Translator: Jeannette L \n" +"PO-Revision-Date: 2020-05-24 13:41+0000\n" +"Last-Translator: NicHan \n" "Language-Team: French \n" "Language: fr\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0.2-dev\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1789,12 +1789,12 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" -"(X,Y,Z) de décalage fractal à partir du centre du monde en unités " -"« échelle ».\n" +"(X,Y,Z) de décalage fractal à partir du centre du monde en unités « échelle " +"».\n" "Peut être utilisé pour déplacer un point désiré en (0;0) pour créer une\n" "zone d'apparition convenable, ou pour autoriser à « zoomer » sur un\n" "point désiré en augmentant l'« échelle ».\n" -"La valeur par défaut est adaptée pour créer un zone d'apparition convenable " +"La valeur par défaut est réglée pour créer une zone d'apparition convenable " "pour les ensembles\n" "de Mandelbrot avec des paramètres par défaut, elle peut nécessité une " "modification dans\n" @@ -1853,9 +1853,8 @@ msgid "2D noise that controls the size/occurrence of step mountain ranges." msgstr "Bruit 2D contrôlant la taille et la fréquence des plateaux montagneux." #: src/settings_translation_file.cpp -#, fuzzy msgid "2D noise that locates the river valleys and channels." -msgstr "Bruit 2D contrôlant la forme et la taille des collines arrondies." +msgstr "Bruit 2D qui localise les vallées fluviales et les canaux" #: src/settings_translation_file.cpp msgid "3D clouds" From c4a7c8a420372e93dc56ea3684d0cfb2b91924c8 Mon Sep 17 00:00:00 2001 From: Miniontoby Date: Wed, 27 May 2020 15:40:48 +0000 Subject: [PATCH 315/424] Translated using Weblate (Dutch) Currently translated at 69.4% (894 of 1288 strings) --- po/nl/minetest.po | 345 +++++++++++++++++++++++++++++++--------------- 1 file changed, 232 insertions(+), 113 deletions(-) diff --git a/po/nl/minetest.po b/po/nl/minetest.po index 227d0cfa2..97ef0d2da 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Dutch (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-13 13:11+0000\n" -"Last-Translator: SwampTurtle \n" +"PO-Revision-Date: 2020-05-27 17:53+0000\n" +"Last-Translator: Miniontoby \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -20,7 +20,7 @@ msgstr "Herboren worden" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" -msgstr "Je stierf" +msgstr "Je bent gestorven" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -124,7 +124,7 @@ msgstr "Geen (optionele) afhankelijkheden" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr "Geen mod-beschrijving aanwezig." +msgstr "Geen spelbeschrijving aanwezig." #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" @@ -132,7 +132,7 @@ msgstr "Geen afhankelijkheden" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "Geen mod-beschrijving aanwezig." +msgstr "Geen modpack-beschrijving aanwezig." #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" @@ -296,8 +296,8 @@ msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" -"Deze mod verzameling heeft een andere naam in modpack.conf welke de " -"herbenoeming hier zal overschrijven." +"Deze modpack heeft een expliciete naam gegeven in zijn modpack.conf die elke " +"hernoeming hier zal overschrijven." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" @@ -361,7 +361,7 @@ msgstr "Schaal" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select directory" -msgstr "Selecteer folder" +msgstr "Selecteer map" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select file" @@ -409,7 +409,7 @@ msgstr "Z spreiding" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" -msgstr "" +msgstr "absolute waarde" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options @@ -461,7 +461,7 @@ msgstr "Niet mogelijk om geschikte map-naam vinden voor modverzameling $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "Niet mogelijk om een $1 als textuuren pakket te installeren" +msgstr "Kan $1 niet als textuurpakket installeren" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" @@ -500,9 +500,8 @@ msgid "No dependencies." msgstr "Geen afhankelijkheden." #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "No package description available" -msgstr "Geen mod-beschrijving aanwezig" +msgstr "Geen pakketbeschrijving beschikbaar" #: builtin/mainmenu/tab_content.lua msgid "Rename" @@ -514,9 +513,8 @@ msgid "Uninstall Package" msgstr "Geselecteerde mod deïnstalleren" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Use Texture Pack" -msgstr "Textuurverzamelingen" +msgstr "Gebruik textuurverzamelingen" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" @@ -613,7 +611,7 @@ msgstr "Creatieve modus" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Damage enabled" -msgstr "Verwondingen aangeschakeld" +msgstr "Verwondingen ingeschakeld" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Del. Favorite" @@ -639,7 +637,7 @@ msgstr "Ping" #. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "Spelergevechten aangeschakeld" +msgstr "Spelergevechten ingeschakeld" #: builtin/mainmenu/tab_settings.lua msgid "2x" @@ -658,9 +656,8 @@ msgid "8x" msgstr "8x" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "All Settings" -msgstr "Instellingen" +msgstr "Alle Instellingen" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" @@ -671,9 +668,8 @@ msgid "Are you sure to reset your singleplayer world?" msgstr "Weet je zeker dat je je wereld wilt resetten?" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Autosave Screen Size" -msgstr "Scherm afmetingen automatisch bewaren" +msgstr "Schermafmetingen automatisch bewaren" #: builtin/mainmenu/tab_settings.lua msgid "Bilinear Filter" @@ -696,9 +692,8 @@ msgid "Fancy Leaves" msgstr "Mooie bladeren" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Generate Normal Maps" -msgstr "Genereer normaalmappen" +msgstr "Genereer normale werelden" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap" @@ -754,7 +749,7 @@ msgstr "Reset Singleplayer wereld" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" -msgstr "Schermafbeelding:" +msgstr "Scherm:" #: builtin/mainmenu/tab_settings.lua msgid "Settings" @@ -766,7 +761,7 @@ msgstr "Shaders" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" -msgstr "" +msgstr "Shaders (niet beschikbaar)" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" @@ -802,9 +797,8 @@ msgid "Waving Leaves" msgstr "Bewegende bladeren" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Waving Liquids" -msgstr "Bewegende nodes" +msgstr "Golvende Vloeistoffen" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" @@ -880,7 +874,7 @@ msgstr "Kies alsjeblieft een naam!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "" +msgstr "Opgegeven wachtwoordbestand kan niet worden geopend: " #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " @@ -908,7 +902,7 @@ msgstr "" #: src/client/game.cpp msgid "- Address: " -msgstr "-Lokaal server-adres: " +msgstr "- Adres:" #: src/client/game.cpp msgid "- Creative Mode: " @@ -976,7 +970,7 @@ msgstr "Cinematic modus aan/uit toets" #: src/client/game.cpp msgid "Client side scripting is disabled" -msgstr "" +msgstr "Client-side scripting is uitgeschakeld" #: src/client/game.cpp msgid "Connecting to server..." @@ -987,7 +981,7 @@ msgid "Continue" msgstr "Verder spelen" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "" "Controls:\n" "- %s: move forwards\n" @@ -1004,17 +998,20 @@ msgid "" "- Mouse wheel: select item\n" "- %s: chat\n" msgstr "" -"Standaard toetsen:\n" -"- W,A,S,D: bewegen\n" -"- Spatie: spring/klim\n" -"- Shift: kruip/duik\n" -"- Q: item weggooien\n" -"- I: rugzak\n" -"- Muis: draaien/kijken\n" -"- Linker muisknop: graaf/sla\n" -"- Rechter muisknop: plaats/gebruik\n" -"- Muiswiel: selecteer item\n" -"- T: chatten\n" +"Besturing: \n" +"-%s: ga vooruit \n" +"-%s: ga achteruit \n" +"-%s: ga naar links \n" +"-%s: ga naar rechts \n" +"-%s: springen / klimmen \n" +"-%s: sluip / ga naar beneden \n" +"-%s: drop item \n" +"-%s: inventaris \n" +"- Muis: draaien / kijken \n" +"- Muis links: graven / stoten \n" +"- Muis rechts: plaats / gebruik \n" +"- Muiswiel: item selecteren \n" +"-%s: chat\n" #: src/client/game.cpp #, fuzzy @@ -1027,7 +1024,7 @@ msgstr "Bezig server te maken..." #: src/client/game.cpp msgid "Debug info and profiler graph hidden" -msgstr "" +msgstr "Debug info en profiler grafiek verborgen" #: src/client/game.cpp #, fuzzy @@ -1036,7 +1033,7 @@ msgstr "Toets voor aan/uitzetten debug informatie" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" -msgstr "" +msgstr "Debug info, profiler grafiek en wireframe verborgen" #: src/client/game.cpp msgid "" @@ -1068,11 +1065,11 @@ msgstr "" #: src/client/game.cpp msgid "Disabled unlimited viewing range" -msgstr "" +msgstr "Oneindige kijkafstand uitgezet" #: src/client/game.cpp msgid "Enabled unlimited viewing range" -msgstr "" +msgstr "Oneindige kijkafstand aangezet" #: src/client/game.cpp msgid "Exit to Menu" @@ -1094,7 +1091,7 @@ msgstr "Snelheid in snelle modus" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "" +msgstr "Snelle modus ingeschakeld (let op: geen 'fast' recht)" #: src/client/game.cpp #, fuzzy @@ -1108,7 +1105,7 @@ msgstr "Verwondingen aangeschakeld" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "" +msgstr "Vliegmodus ingeschakeld (let op: geen 'fly'-privilege)" #: src/client/game.cpp #, fuzzy @@ -1151,7 +1148,7 @@ msgstr "MiB/s" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "" +msgstr "Minimap is momenteel uitgeschakeld door game of mod" #: src/client/game.cpp #, fuzzy @@ -1160,31 +1157,31 @@ msgstr "Mini-kaart toets" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" -msgstr "" +msgstr "Minimap in radarmodus, Zoom x1" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x2" -msgstr "" +msgstr "Minimap in radarmodus, Zoom x2" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x4" -msgstr "" +msgstr "Minimap in radarmodus, Zoom x4" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x1" -msgstr "" +msgstr "Minimap in oppervlaktemodus, Zoom x1" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x2" -msgstr "" +msgstr "Minimap in oppervlaktemodus, Zoom x2" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x4" -msgstr "" +msgstr "Minimap in oppervlaktemodus, Zoom x4" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "" +msgstr "Noclip-modus uitgeschakeld" #: src/client/game.cpp #, fuzzy @@ -1193,7 +1190,7 @@ msgstr "Verwondingen aangeschakeld" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "" +msgstr "Noclip-modus ingeschakeld (opmerking: geen 'noclip' recht)" #: src/client/game.cpp msgid "Node definitions..." @@ -1209,15 +1206,15 @@ msgstr "Ingeschakeld" #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "" +msgstr "Pitch move-modus uitgeschakeld" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "" +msgstr "Pitch move-modus ingeschakeld" #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "" +msgstr "Profiler-grafiek weergegeven" #: src/client/game.cpp #, fuzzy @@ -1271,12 +1268,13 @@ msgid "Volume changed to %d%%" msgstr "Volume veranderd naar %d1%%2" #: src/client/game.cpp +#, fuzzy msgid "Wireframe shown" -msgstr "" +msgstr "Draadframe weergegeven" #: src/client/game.cpp msgid "Zoom currently disabled by game or mod" -msgstr "" +msgstr "Zoom momenteel uitgeschakeld door game of mod" #: src/client/game.cpp src/gui/modalMenu.cpp msgid "ok" @@ -1289,15 +1287,15 @@ msgstr "Chat-toets" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "" +msgstr "Chat weergegeven" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "" +msgstr "HUD verborgen" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "" +msgstr "HUD getoond" #: src/client/gameui.cpp #, fuzzy @@ -1307,7 +1305,7 @@ msgstr "Profiler" #: src/client/gameui.cpp #, c-format msgid "Profiler shown (page %d of %d)" -msgstr "" +msgstr "Profiler getoond (pagina %d van %d)" #: src/client/keycode.cpp msgid "Apps" @@ -1487,11 +1485,11 @@ msgstr "OEM Clear" #: src/client/keycode.cpp msgid "Page down" -msgstr "" +msgstr "Pagina omlaag" #: src/client/keycode.cpp msgid "Page up" -msgstr "" +msgstr "Pagina omhoog" #: src/client/keycode.cpp msgid "Pause" @@ -1585,7 +1583,7 @@ msgstr "De wachtwoorden zijn niet gelijk!" #: src/gui/guiConfirmRegistration.cpp msgid "Register and Join" -msgstr "" +msgstr "Registreer en doe mee" #: src/gui/guiConfirmRegistration.cpp #, c-format @@ -1596,6 +1594,13 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" +"U staat op het punt om voor het eerst lid te worden van deze server met de " +"naam \"%s\". \n" +"Als u doorgaat, wordt op deze server een nieuw account gemaakt met uw " +"inloggegevens. \n" +"Voer uw wachtwoord opnieuw in en klik op 'Registreren en aanmelden' om het " +"aanmaken van een account te bevestigen, of klik op 'Annuleren' om af te " +"breken." #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" @@ -1613,7 +1618,7 @@ msgstr "Vooruit" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" -msgstr "" +msgstr "Automatisch springen" #: src/gui/guiKeyChangeMenu.cpp msgid "Backward" @@ -1717,7 +1722,7 @@ msgstr "Sluipen" #: src/gui/guiKeyChangeMenu.cpp msgid "Special" -msgstr "" +msgstr "Speciaal" #: src/gui/guiKeyChangeMenu.cpp #, fuzzy @@ -1807,6 +1812,9 @@ msgid "" "(Android) Fixes the position of virtual joystick.\n" "If disabled, virtual joystick will center to first-touch's position." msgstr "" +"(Android) Corrigeert de positie van virtuele joystick. \n" +"Indien uitgeschakeld, wordt de virtuele joystick gecentreerd op de positie " +"van de eerste aanraking." #: src/settings_translation_file.cpp msgid "" @@ -1814,6 +1822,9 @@ msgid "" "If enabled, virtual joystick will also tap \"aux\" button when out of main " "circle." msgstr "" +"(Android) Gebruik virtuele joystick om de \"aux\" -knop te activeren. \n" +"Indien ingeschakeld, zal de virtuele joystick ook op de \"aux\" -knop tikken " +"wanneer deze buiten de hoofdcirkel is." #: src/settings_translation_file.cpp #, fuzzy @@ -1848,6 +1859,13 @@ msgid "" "Default is for a vertically-squashed shape suitable for\n" "an island, set all 3 numbers equal for the raw shape." msgstr "" +"(X, Y, Z) schaal van fractal in knooppunten. \n" +"De werkelijke fractale grootte is 2 tot 3 keer groter. \n" +"Deze getallen kunnen heel groot gemaakt worden, \n" +"de fractal wel hoeven niet in de wereld te passen. \n" +"Verhoog deze om te 'zoomen' tot in de details van de fractal. \n" +"Standaard is voor een verticaal geplette vorm geschikt voor \n" +"een eiland, stel alle 3 getallen gelijk voor de ruwe vorm." #: src/settings_translation_file.cpp msgid "" @@ -1858,32 +1876,34 @@ msgstr "" "1 = 'reliëf mapping' (lanzamer, nauwkeuriger)." #: src/settings_translation_file.cpp +#, fuzzy msgid "2D noise that controls the shape/size of ridged mountains." -msgstr "" +msgstr "2D-ruis die de vorm / grootte van geribbelde bergen bepaalt." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." -msgstr "" +msgstr "2D-ruis die de vorm / grootte van glooiende heuvels bepaalt." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." -msgstr "" +msgstr "2D-ruis die de vorm / grootte van step-bergen regelt." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." msgstr "" +"2D-ruis die de grootte / het voorkomen van geribbelde bergketens regelt." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "" +msgstr "2D-ruis die de grootte / het optreden van glooiende heuvels regelt." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of step mountain ranges." -msgstr "" +msgstr "2D-ruis die de grootte / het optreden van bergketens regelt." #: src/settings_translation_file.cpp msgid "2D noise that locates the river valleys and channels." -msgstr "" +msgstr "2D-ruis die de rivierdalen en -kanalen lokaliseert." #: src/settings_translation_file.cpp msgid "3D clouds" @@ -1917,10 +1937,11 @@ msgstr "3D geluid voor grote holtes." #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." msgstr "" +"3D-ruis voor overhangende bergen, kliffen, etc. Meestal kleine variaties." #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "" +msgstr "3D-ruis die het aantal kerkers per mapchunk bepaalt." #: src/settings_translation_file.cpp #, fuzzy @@ -1982,7 +2003,7 @@ msgstr "Versnelling in lucht" #: src/settings_translation_file.cpp msgid "Acceleration of gravity, in nodes per second per second." -msgstr "" +msgstr "Versnelling van de zwaartekracht, in knopen per seconde per seconde." #: src/settings_translation_file.cpp msgid "Active Block Modifiers" @@ -2035,6 +2056,11 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Verandert de lichtcurve door er 'gammacorrectie' op toe te passen. \n" +"Hogere waarden maken het middelste en lagere lichtniveau helderder. \n" +"Waarde '1.0' laat de lichtcurve ongewijzigd. \n" +"Dit heeft alleen een significant effect op daglicht en kunstmatig \n" +"licht, heeft het weinig effect op natuurlijk nachtlicht." #: src/settings_translation_file.cpp #, fuzzy @@ -2047,11 +2073,11 @@ msgstr "Zet 'snel' altijd aan bij 'vliegen'" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "Ambient occlusion gamma" +msgstr "Omgevingsocclusie gamma" #: src/settings_translation_file.cpp msgid "Amount of messages a player may send per 10 seconds." -msgstr "" +msgstr "Aantal berichten dat een speler per 10 seconden mag verzenden." #: src/settings_translation_file.cpp #, fuzzy @@ -2073,11 +2099,11 @@ msgstr "Meldt server aan bij de server-lijst" #: src/settings_translation_file.cpp msgid "Append item name" -msgstr "" +msgstr "Voeg itemnaam toe" #: src/settings_translation_file.cpp msgid "Append item name to tooltip." -msgstr "" +msgstr "Voeg itemnaam toe aan knopinfo." #: src/settings_translation_file.cpp msgid "Apple trees noise" @@ -2085,13 +2111,15 @@ msgstr "Appel boom geluid" #: src/settings_translation_file.cpp msgid "Arm inertia" -msgstr "" +msgstr "Arm traagheid" #: src/settings_translation_file.cpp msgid "" "Arm inertia, gives a more realistic movement of\n" "the arm when the camera moves." msgstr "" +"Arm traagheid, geeft een meer realistische beweging van \n" +"de arm wanneer de camera beweegt." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" @@ -2129,7 +2157,7 @@ msgstr "Vooruit toets" #: src/settings_translation_file.cpp msgid "Automatically jump up single-node obstacles." -msgstr "" +msgstr "Spring automatisch op obstakels met één knooppunt." #: src/settings_translation_file.cpp #, fuzzy @@ -2142,7 +2170,7 @@ msgstr "Scherm afmetingen automatisch bewaren" #: src/settings_translation_file.cpp msgid "Autoscaling mode" -msgstr "" +msgstr "Automatische schaalmodus" #: src/settings_translation_file.cpp msgid "Backward key" @@ -2241,6 +2269,11 @@ msgid "" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" +"Camera 'near clipping plane' afstand in knooppunten, tussen 0 en 0,25 \n" +"Werkt alleen op GLES-platforms. De meeste gebruikers hoeven dit niet te " +"wijzigen. \n" +"Verhogen kan artefacten op zwakkere GPU's verminderen. \n" +"0,1 = standaard, 0,25 = goede waarde voor zwakkere tablets." #: src/settings_translation_file.cpp msgid "Camera smoothing" @@ -2310,8 +2343,11 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Midden van het lichtcurve-boostbereik. \n" +"Waar 0,0 het minimale lichtniveau is, is 1,0 het maximale lichtniveau." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Changes the main menu UI:\n" "- Full: Multiple singleplayer worlds, game choice, texture pack chooser, " @@ -2320,6 +2356,12 @@ msgid "" "be\n" "necessary for smaller screens." msgstr "" +"Verandert de gebruikersinterface van het hoofdmenu: \n" +"- Volledig: meerdere werelden voor één speler, spelkeuze, texture pack " +"chooser, etc. \n" +"- Eenvoudig: één wereld voor één speler, geen game- of texture pack-kiezers. " +"Kan zijn \n" +"noodzakelijk voor kleinere schermen." #: src/settings_translation_file.cpp msgid "Chat key" @@ -2342,7 +2384,7 @@ msgstr "Woestijn ruis drempelwaarde" #: src/settings_translation_file.cpp msgid "Chat message max length" -msgstr "" +msgstr "Maximale lengte chatbericht" #: src/settings_translation_file.cpp msgid "Chat toggle key" @@ -2387,8 +2429,9 @@ msgid "Client side modding restrictions" msgstr "Cliënt modding" #: src/settings_translation_file.cpp +#, fuzzy msgid "Client side node lookup range restriction" -msgstr "" +msgstr "lient side node lookup range restrictie" #: src/settings_translation_file.cpp msgid "Climbing speed" @@ -2424,6 +2467,15 @@ msgid "" "These flags are independent from Minetest versions,\n" "so see a full list at https://content.minetest.net/help/content_flags/" msgstr "" +"Door komma's gescheiden lijst met vlaggen om te verbergen in de " +"inhoudsbibliotheek. \n" +"\"nonfree\" kan gebruikt worden om pakketten te verbergen die niet " +"kwalificeren als 'vrije software', \n" +"zoals gedefinieerd door de Free Software Foundation. \n" +"U kunt ook inhoudsclassificaties specificeren. \n" +"Deze vlaggen zijn onafhankelijk van Minetest-versies, \n" +"zie dus een volledige lijst op https://content.minetest.net/help/" +"content_flags/" #: src/settings_translation_file.cpp msgid "" @@ -2474,8 +2526,9 @@ msgid "Console height" msgstr "Console hoogte" #: src/settings_translation_file.cpp +#, fuzzy msgid "ContentDB Flag Blacklist" -msgstr "" +msgstr "ContentDB markeert zwarte lijst" #: src/settings_translation_file.cpp #, fuzzy @@ -2491,6 +2544,9 @@ msgid "" "Continuous forward movement, toggled by autoforward key.\n" "Press the autoforward key again or the backwards movement to disable." msgstr "" +"Continue voorwaartse beweging, geschakeld door autoforward-toets. \n" +"Druk nogmaals op de autoforward-toets of de achterwaartse beweging om uit te " +"schakelen." #: src/settings_translation_file.cpp msgid "Controls" @@ -2512,7 +2568,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Controls sinking speed in liquid." -msgstr "" +msgstr "Regelt de zinksnelheid in vloeistof." #: src/settings_translation_file.cpp msgid "Controls steepness/depth of lake depressions." @@ -2528,6 +2584,11 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"Bepaalt de breedte van tunnels, een kleinere waarde creëert bredere tunnels. " +"\n" +"Waarde> = 10,0 schakelt het genereren van tunnels volledig uit en vermijdt " +"de \n" +"intensieve geluidsberekeningen." #: src/settings_translation_file.cpp msgid "Crash message" @@ -2581,7 +2642,7 @@ msgstr "Volume verlagen toets" #: src/settings_translation_file.cpp msgid "Decrease this to increase liquid resistance to movement." -msgstr "" +msgstr "Verlaag dit om de vloeistofweerstand te vergroten." #: src/settings_translation_file.cpp msgid "Dedicated server step" @@ -2786,11 +2847,11 @@ msgstr "Print wereldgenerator debug informatie." #: src/settings_translation_file.cpp msgid "Dungeon maximum Y" -msgstr "" +msgstr "Dungeon maximaal Y" #: src/settings_translation_file.cpp msgid "Dungeon minimum Y" -msgstr "" +msgstr "Dungeon minimaal Y" #: src/settings_translation_file.cpp #, fuzzy @@ -2802,6 +2863,8 @@ msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"Schakel IPv6-ondersteuning in (voor zowel client als server). \n" +"Vereist om IPv6-verbindingen te laten werken." #: src/settings_translation_file.cpp msgid "" @@ -2843,13 +2906,15 @@ msgstr "Schakel willkeurige invoer aan (enkel voor testen)." #: src/settings_translation_file.cpp msgid "Enable register confirmation" -msgstr "" +msgstr "Registerbevestiging inschakelen" #: src/settings_translation_file.cpp msgid "" "Enable register confirmation when connecting to server.\n" "If disabled, new account will be registered automatically." msgstr "" +"Schakel registerbevestiging in wanneer u verbinding maakt met de server. \n" +"Indien uitgeschakeld, wordt een nieuw account automatisch geregistreerd." #: src/settings_translation_file.cpp msgid "" @@ -2891,6 +2956,8 @@ msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"Vertex-bufferobjecten inschakelen. \n" +"Dit zou de grafische prestaties aanzienlijk moeten verbeteren." #: src/settings_translation_file.cpp msgid "" @@ -2921,6 +2988,11 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"Maakt Hable's 'Uncharted 2' filmische tonemapping mogelijk. \n" +"Simuleert de tooncurve van fotografische film en hoe deze de \n" +"uiterlijk van afbeeldingen met een hoog dynamisch bereik. Het contrast in " +"het middenbereik is iets \n" +"verbeterd, worden hooglichten en schaduwen geleidelijk gecomprimeerd." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." @@ -2969,6 +3041,10 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"Schakelt het geluidssysteem in. \n" +"Als deze optie is uitgeschakeld, worden alle geluiden overal en in de game \n" +"volledig uitgeschakeld geluidsbesturingen zullen niet functioneel zijn. \n" +"Het wijzigen van deze instelling vereist een herstart." #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" @@ -3111,7 +3187,7 @@ msgstr "Vast kiemgetal" #: src/settings_translation_file.cpp msgid "Fixed virtual joystick" -msgstr "" +msgstr "Vaste virtuele joystick" #: src/settings_translation_file.cpp msgid "Fly key" @@ -3136,11 +3212,11 @@ msgstr "Mist aan/uitschakelen toets" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Standaard vetgedrukt" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Standaard cursief" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3156,15 +3232,15 @@ msgstr "Lettergrootte" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "Lettergrootte van het standaardlettertype in punt (pt)." #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "Lettergrootte van het fallback-lettertype in punt (pt)." #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "Lettergrootte van het monospace-lettertype in punt (pt)." #: src/settings_translation_file.cpp msgid "" @@ -3172,6 +3248,9 @@ msgid "" "placeholders:\n" "@name, @message, @timestamp (optional)" msgstr "" +"Formaat van chatberichten van spelers. De volgende tekenreeksen zijn geldige " +"tijdelijke aanduidingen: \n" +"@name, @message, @timestamp (optioneel)" #: src/settings_translation_file.cpp msgid "Format of screenshots." @@ -3179,19 +3258,19 @@ msgstr "Formaat van screenshots." #: src/settings_translation_file.cpp msgid "Formspec Default Background Color" -msgstr "" +msgstr "Formspec Standaard achtergrondkleur" #: src/settings_translation_file.cpp msgid "Formspec Default Background Opacity" -msgstr "" +msgstr "Formspec Standaard achtergronddekking" #: src/settings_translation_file.cpp msgid "Formspec Full-Screen Background Color" -msgstr "" +msgstr "Formspec Achtergrondkleur op volledig scherm" #: src/settings_translation_file.cpp msgid "Formspec Full-Screen Background Opacity" -msgstr "" +msgstr "Formspec Achtergronddekking op volledig scherm" #: src/settings_translation_file.cpp #, fuzzy @@ -3260,6 +3339,13 @@ msgid "" "to maintain active objects up to this distance in the direction the\n" "player is looking. (This can avoid mobs suddenly disappearing from view)" msgstr "" +"Van hoe ver klanten weten over objecten, vermeld in mapblocks (16 " +"knooppunten). \n" +"\n" +"Het instellen van dit groter dan active_block_range zal ook de server \n" +"veroorzaken om actieve objecten tot deze afstand in de richting \n" +"van de speler kijkt. (Dit kan voorkomen dat mobs plotseling uit het zicht " +"verdwijnen)" #: src/settings_translation_file.cpp msgid "Full screen" @@ -3314,12 +3400,16 @@ msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." msgstr "" +"Verloop van lichtkromme bij maximaal lichtniveau. \n" +"Regelt het contrast van de hoogste lichtniveaus." #: src/settings_translation_file.cpp msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." msgstr "" +"Verloop van lichtkromme bij minimaal lichtniveau. \n" +"Regelt het contrast van de laagste lichtniveaus." #: src/settings_translation_file.cpp msgid "Graphics" @@ -3446,22 +3536,31 @@ msgid "Homepage of server, to be displayed in the serverlist." msgstr "Home-pagina van de server. Wordt getoond in de serverlijst." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Horizontal acceleration in air when jumping or falling,\n" "in nodes per second per second." msgstr "" +"Horizontale acceleratie in lucht bij springen of vallen, \n" +"in knooppunten per seconde per seconde." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Horizontal and vertical acceleration in fast mode,\n" "in nodes per second per second." msgstr "" +"Horizontale en verticale acceleratie in snelle modus, \n" +"in knooppunten per seconde per seconde." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Horizontal and vertical acceleration on ground or when climbing,\n" "in nodes per second per second." msgstr "" +"Horizontale en verticale acceleratie op de grond of bij het klimmen, \n" +"in knooppunten per seconde per seconde." #: src/settings_translation_file.cpp msgid "Hotbar next key" @@ -3642,6 +3741,9 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" +"Hoe snel vloeibare golven zullen bewegen. Hoger = sneller. \n" +"Indien negatief, zullen vloeibare golven achteruit bewegen. \n" +"Vereist dat golvende vloeistoffen zijn ingeschakeld." #: src/settings_translation_file.cpp msgid "" @@ -3758,6 +3860,8 @@ msgid "" "If enabled, makes move directions relative to the player's pitch when flying " "or swimming." msgstr "" +"Indien ingeschakeld, maakt verplaatsingsrichtingen ten opzichte van het veld " +"van de speler tijdens het vliegen of zwemmen." #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." @@ -3780,6 +3884,9 @@ msgid "" "limited\n" "to this distance from the player to the node." msgstr "" +"Als de CSM-beperking voor het blok is ingeschakeld, zijn get_node-aanroepen " +"beperkt \n" +"tot deze afstand van de speler tot het blok." #: src/settings_translation_file.cpp msgid "" @@ -3788,6 +3895,12 @@ msgid "" "deleting an older debug.txt.1 if it exists.\n" "debug.txt is only moved if this setting is positive." msgstr "" +"Als de bestandsgrootte van debug.txt groter is dan het aantal megabytes dat " +"is opgegeven in \n" +"deze instelling wanneer het wordt geopend, wordt het bestand verplaatst naar " +"debug.txt.1, \n" +"het verwijderen van een oudere debug.txt.1 als deze bestaat. \n" +"debug.txt wordt alleen verplaatst als deze instelling positief is." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." @@ -3824,7 +3937,7 @@ msgstr "Console-toets" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." -msgstr "" +msgstr "Initiële verticale snelheid bij het springen, in blokken per seconde." #: src/settings_translation_file.cpp msgid "" @@ -3917,6 +4030,11 @@ msgid "" "increases processing load.\n" "At iterations = 20 this mapgen has a similar load to mapgen V7." msgstr "" +"Iteraties van de recursieve functie. \n" +"Als u dit verhoogt, neemt de hoeveelheid fijne details toe, maar ook \n" +"verhoogt de verwerkingsbelasting. \n" +"Bij iteraties = 20 heeft deze mapgen een vergelijkbare belasting als mapgen " +"V7." #: src/settings_translation_file.cpp msgid "Joystick ID" @@ -4749,6 +4867,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Kick players who sent more than X messages per 10 seconds." msgstr "" +"Schop spelers die meer dan X berichten per 10 seconden hebben verzonden." #: src/settings_translation_file.cpp #, fuzzy @@ -4770,15 +4889,15 @@ msgstr "Diepte van grote grotten" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "Maximaal aantal grote grotten" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "Groot minimumaantal grotten" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" -msgstr "" +msgstr "Grote grotaandeel overstroomd" #: src/settings_translation_file.cpp #, fuzzy @@ -4862,23 +4981,23 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Light curve boost" -msgstr "" +msgstr "Lichtcurve boost" #: src/settings_translation_file.cpp msgid "Light curve boost center" -msgstr "" +msgstr "Lichtcurve boost centrum" #: src/settings_translation_file.cpp msgid "Light curve boost spread" -msgstr "" +msgstr "Lichtcurve boost verspreiding" #: src/settings_translation_file.cpp msgid "Light curve gamma" -msgstr "" +msgstr "Lichtcurve gamma" #: src/settings_translation_file.cpp msgid "Light curve high gradient" -msgstr "" +msgstr "Lichtcurve hoog verloop" #: src/settings_translation_file.cpp msgid "Light curve low gradient" From 17ebb72ebea2dd8422048da4b944e921db7c8170 Mon Sep 17 00:00:00 2001 From: Oscar Date: Wed, 27 May 2020 17:48:07 +0000 Subject: [PATCH 316/424] Translated using Weblate (Dutch) Currently translated at 69.4% (894 of 1288 strings) --- po/nl/minetest.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/nl/minetest.po b/po/nl/minetest.po index 97ef0d2da..25faebc4e 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-05-27 17:53+0000\n" -"Last-Translator: Miniontoby \n" +"Last-Translator: Oscar \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -838,7 +838,7 @@ msgstr "Nodes initialiseren..." #: src/client/client.cpp msgid "Loading textures..." -msgstr "Bezig met texturen te laden..." +msgstr "Texturen laden..." #: src/client/client.cpp msgid "Rebuilding shaders..." @@ -866,7 +866,7 @@ msgstr "Geen wereld geselecteerd en geen adres opgegeven. Niets te doen." #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "Spelernaam is te lang." +msgstr "Speler-naam is te lang." #: src/client/clientlauncher.cpp msgid "Please choose a name!" From 197ab7570f4cf339a934fc76be688f392cf753aa Mon Sep 17 00:00:00 2001 From: dave90dave Date: Wed, 27 May 2020 17:49:15 +0000 Subject: [PATCH 317/424] Translated using Weblate (Dutch) Currently translated at 69.4% (894 of 1288 strings) --- po/nl/minetest.po | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/po/nl/minetest.po b/po/nl/minetest.po index 25faebc4e..c8a30339d 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-05-27 17:53+0000\n" -"Last-Translator: Oscar \n" +"Last-Translator: dave90dave \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -921,9 +921,8 @@ msgid "- Port: " msgstr "- Poort: " #: src/client/game.cpp -#, fuzzy msgid "- Public: " -msgstr "- Publiek: " +msgstr "- Openbaar: " #. ~ PvP = Player versus Player #: src/client/game.cpp From f664ff128575991f7e47c58dec25e73f1d3699af Mon Sep 17 00:00:00 2001 From: you can't know Date: Wed, 27 May 2020 17:53:16 +0000 Subject: [PATCH 318/424] Translated using Weblate (Dutch) Currently translated at 69.4% (894 of 1288 strings) --- po/nl/minetest.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/po/nl/minetest.po b/po/nl/minetest.po index c8a30339d..be748ad33 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-05-27 17:53+0000\n" -"Last-Translator: dave90dave \n" +"Last-Translator: you can't know \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -461,7 +461,7 @@ msgstr "Niet mogelijk om geschikte map-naam vinden voor modverzameling $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "Kan $1 niet als textuurpakket installeren" +msgstr "Installatie van $1 als texturepack mislukt" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" From b0500f9db9e7784640b22e66c7731201852d061e Mon Sep 17 00:00:00 2001 From: Miniontoby Date: Wed, 27 May 2020 17:53:46 +0000 Subject: [PATCH 319/424] Translated using Weblate (Dutch) Currently translated at 83.1% (1071 of 1288 strings) --- po/nl/minetest.po | 677 ++++++++++++++++++++++++---------------------- 1 file changed, 361 insertions(+), 316 deletions(-) diff --git a/po/nl/minetest.po b/po/nl/minetest.po index be748ad33..5f5597125 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Dutch (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-05-27 17:53+0000\n" -"Last-Translator: you can't know \n" +"PO-Revision-Date: 2020-05-29 11:41+0000\n" +"Last-Translator: Miniontoby \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -461,7 +461,7 @@ msgstr "Niet mogelijk om geschikte map-naam vinden voor modverzameling $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "Installatie van $1 als texturepack mislukt" +msgstr "Kan $1 niet als textuurpakket installeren" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" @@ -508,9 +508,8 @@ msgid "Rename" msgstr "Hernoemen" #: builtin/mainmenu/tab_content.lua -#, fuzzy msgid "Uninstall Package" -msgstr "Geselecteerde mod deïnstalleren" +msgstr "Pakket verwijderen" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" @@ -577,7 +576,6 @@ msgid "No world created or selected!" msgstr "Geen wereldnaam opgegeven of geen wereld aangemaakt!" #: builtin/mainmenu/tab_local.lua -#, fuzzy msgid "Play Game" msgstr "Spel Spelen" @@ -622,9 +620,8 @@ msgid "Favorite" msgstr "Favorieten" #: builtin/mainmenu/tab_online.lua -#, fuzzy msgid "Join Game" -msgstr "Spel Hosten" +msgstr "Join spel" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Name / Password" @@ -784,9 +781,8 @@ msgid "Tone Mapping" msgstr "Tone-mapping" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Touchthreshold: (px)" -msgstr "Toetsgrenswaarde (px)" +msgstr "Toetsgrenswaarde: (px)" #: builtin/mainmenu/tab_settings.lua msgid "Trilinear Filter" @@ -902,7 +898,7 @@ msgstr "" #: src/client/game.cpp msgid "- Address: " -msgstr "- Adres:" +msgstr "- Adres: " #: src/client/game.cpp msgid "- Creative Mode: " @@ -934,38 +930,32 @@ msgid "- Server Name: " msgstr "- Server Naam: " #: src/client/game.cpp -#, fuzzy msgid "Automatic forward disabled" -msgstr "Vooruit toets" +msgstr "Automatisch vooruit uitgeschakeld" #: src/client/game.cpp -#, fuzzy msgid "Automatic forward enabled" -msgstr "Vooruit toets" +msgstr "Automatisch vooruit ingeschakeld" #: src/client/game.cpp -#, fuzzy msgid "Camera update disabled" -msgstr "Toets voor cameraverversing aan/uit" +msgstr "Camera-update uitgeschakeld" #: src/client/game.cpp -#, fuzzy msgid "Camera update enabled" -msgstr "Toets voor cameraverversing aan/uit" +msgstr "Camera-update ingeschakeld" #: src/client/game.cpp msgid "Change Password" msgstr "Verander wachtwoord" #: src/client/game.cpp -#, fuzzy msgid "Cinematic mode disabled" -msgstr "Cinematic modus aan/uit toets" +msgstr "Filmische modus uitgeschakeld" #: src/client/game.cpp -#, fuzzy msgid "Cinematic mode enabled" -msgstr "Cinematic modus aan/uit toets" +msgstr "Filmische modus ingeschakeld" #: src/client/game.cpp msgid "Client side scripting is disabled" @@ -1013,9 +1003,8 @@ msgstr "" "-%s: chat\n" #: src/client/game.cpp -#, fuzzy msgid "Creating client..." -msgstr "Bezig cliënt te maken..." +msgstr "Gebruiker aanmaken..." #: src/client/game.cpp msgid "Creating server..." @@ -1026,9 +1015,8 @@ msgid "Debug info and profiler graph hidden" msgstr "Debug info en profiler grafiek verborgen" #: src/client/game.cpp -#, fuzzy msgid "Debug info shown" -msgstr "Toets voor aan/uitzetten debug informatie" +msgstr "Debug informatie weergegeven" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" @@ -1079,42 +1067,36 @@ msgid "Exit to OS" msgstr "Afsluiten" #: src/client/game.cpp -#, fuzzy msgid "Fast mode disabled" -msgstr "Snelheid in snelle modus" +msgstr "Snelle modus uitgeschakeld" #: src/client/game.cpp -#, fuzzy msgid "Fast mode enabled" -msgstr "Snelheid in snelle modus" +msgstr "Snelle modus ingeschakeld" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" msgstr "Snelle modus ingeschakeld (let op: geen 'fast' recht)" #: src/client/game.cpp -#, fuzzy msgid "Fly mode disabled" -msgstr "Snelheid in snelle modus" +msgstr "Vlieg modus uitgeschakeld" #: src/client/game.cpp -#, fuzzy msgid "Fly mode enabled" -msgstr "Verwondingen aangeschakeld" +msgstr "Vlieg modus ingeschakeld" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" msgstr "Vliegmodus ingeschakeld (let op: geen 'fly'-privilege)" #: src/client/game.cpp -#, fuzzy msgid "Fog disabled" -msgstr "MP uitschakelen" +msgstr "Mist uitgeschakeld" #: src/client/game.cpp -#, fuzzy msgid "Fog enabled" -msgstr "aangeschakeld" +msgstr "Mist ingeschakeld" #: src/client/game.cpp msgid "Game info:" @@ -1125,9 +1107,8 @@ msgid "Game paused" msgstr "Spel gepauzeerd" #: src/client/game.cpp -#, fuzzy msgid "Hosting server" -msgstr "Bezig server te maken..." +msgstr "Server maken" #: src/client/game.cpp msgid "Item definitions..." @@ -1147,24 +1128,23 @@ msgstr "MiB/s" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "Minimap is momenteel uitgeschakeld door game of mod" +msgstr "Mini-kaart momenteel uitgeschakeld door spel of mod" #: src/client/game.cpp -#, fuzzy msgid "Minimap hidden" -msgstr "Mini-kaart toets" +msgstr "Mini-kaart verborgen" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" -msgstr "Minimap in radarmodus, Zoom x1" +msgstr "Mini-kaart in radar modus, Zoom x1" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x2" -msgstr "Minimap in radarmodus, Zoom x2" +msgstr "Mini-kaart in radar modus, Zoom x2" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x4" -msgstr "Minimap in radarmodus, Zoom x4" +msgstr "Mini-kaart in radar modus, Zoom x4" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x1" @@ -1183,9 +1163,8 @@ msgid "Noclip mode disabled" msgstr "Noclip-modus uitgeschakeld" #: src/client/game.cpp -#, fuzzy msgid "Noclip mode enabled" -msgstr "Verwondingen aangeschakeld" +msgstr "Noclip-modus ingeschakeld" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" @@ -1197,11 +1176,11 @@ msgstr "Node definities..." #: src/client/game.cpp msgid "Off" -msgstr "Uitgeschakeld" +msgstr "Uit" #: src/client/game.cpp msgid "On" -msgstr "Ingeschakeld" +msgstr "Aan" #: src/client/game.cpp msgid "Pitch move mode disabled" @@ -1216,9 +1195,8 @@ msgid "Profiler graph shown" msgstr "Profiler-grafiek weergegeven" #: src/client/game.cpp -#, fuzzy msgid "Remote server" -msgstr "Poort van externe server" +msgstr "Externe server" #: src/client/game.cpp msgid "Resolving address..." @@ -1237,34 +1215,32 @@ msgid "Sound Volume" msgstr "Geluidsvolume" #: src/client/game.cpp -#, fuzzy msgid "Sound muted" -msgstr "Geluidsvolume" +msgstr "Geluid gedempt" #: src/client/game.cpp -#, fuzzy msgid "Sound unmuted" -msgstr "Geluidsvolume" +msgstr "Geluid niet gedempt" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing range changed to %d" -msgstr "Volume veranderd naar %d1%%2" +msgstr "Kijkbereik gewijzigd naar %d" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing range is at maximum: %d" -msgstr "Minimale zichtafstand" +msgstr "Het kijkbereik is maximaal: %d" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Viewing range is at minimum: %d" -msgstr "Minimale zichtafstand" +msgstr "Het kijkbereik is minimaal: %d" #: src/client/game.cpp -#, fuzzy, c-format +#, c-format msgid "Volume changed to %d%%" -msgstr "Volume veranderd naar %d1%%2" +msgstr "Volume gewijzigd naar %d%%" #: src/client/game.cpp #, fuzzy @@ -1280,9 +1256,8 @@ msgid "ok" msgstr "oké" #: src/client/gameui.cpp -#, fuzzy msgid "Chat hidden" -msgstr "Chat-toets" +msgstr "Chat verborgen" #: src/client/gameui.cpp msgid "Chat shown" @@ -1297,9 +1272,8 @@ msgid "HUD shown" msgstr "HUD getoond" #: src/client/gameui.cpp -#, fuzzy msgid "Profiler hidden" -msgstr "Profiler" +msgstr "Profiler verborgen" #: src/client/gameui.cpp #, c-format @@ -1336,7 +1310,6 @@ msgid "End" msgstr "Einde" #: src/client/keycode.cpp -#, fuzzy msgid "Erase EOF" msgstr "Verwijder EOF" @@ -1353,19 +1326,16 @@ msgid "Home" msgstr "Home" #: src/client/keycode.cpp -#, fuzzy msgid "IME Accept" msgstr "IME Accepteren" #: src/client/keycode.cpp -#, fuzzy msgid "IME Convert" msgstr "IME Converteren" #: src/client/keycode.cpp -#, fuzzy msgid "IME Escape" -msgstr "IME Escape" +msgstr "IME Ontsnappen" #: src/client/keycode.cpp msgid "IME Mode Change" @@ -1373,7 +1343,7 @@ msgstr "Modus veranderen" #: src/client/keycode.cpp msgid "IME Nonconvert" -msgstr "IME Nonconvert" +msgstr "IME Niet-converteren" #: src/client/keycode.cpp msgid "Insert" @@ -1417,12 +1387,10 @@ msgid "Num Lock" msgstr "Num Lock" #: src/client/keycode.cpp -#, fuzzy msgid "Numpad *" msgstr "Numpad *" #: src/client/keycode.cpp -#, fuzzy msgid "Numpad +" msgstr "Numpad +" @@ -1480,7 +1448,7 @@ msgstr "Numpad 9" #: src/client/keycode.cpp msgid "OEM Clear" -msgstr "OEM Clear" +msgstr "OEM duidelijk" #: src/client/keycode.cpp msgid "Page down" @@ -1501,7 +1469,7 @@ msgstr "Spelen" #. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" -msgstr "Print" +msgstr "Schermafbeelding" #: src/client/keycode.cpp msgid "Return" @@ -1606,14 +1574,12 @@ msgid "Proceed" msgstr "Doorgaan" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "\"Special\" = climb down" -msgstr "\"Gebruiken\" = omlaag klimmen" +msgstr "\"Speciaal\" = naar beneden klimmen" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Autoforward" -msgstr "Vooruit" +msgstr "Automatisch Vooruit" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" @@ -1624,9 +1590,8 @@ msgid "Backward" msgstr "Achteruit" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Change camera" -msgstr "Toetsen aanpassen" +msgstr "Camera veranderen" #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" @@ -1641,9 +1606,8 @@ msgid "Console" msgstr "Console" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Dec. range" -msgstr "Zichtafstand" +msgstr "Zichtafstand verkleinen" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. volume" @@ -1662,14 +1626,12 @@ msgid "Forward" msgstr "Vooruit" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Inc. range" -msgstr "Zichtafstand" +msgstr "Afstand verhogen" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Inc. volume" -msgstr "Geluidsvolume" +msgstr "Volume verhogen" #: src/gui/guiKeyChangeMenu.cpp msgid "Inventory" @@ -1690,16 +1652,14 @@ msgstr "" "minetest.conf)" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Local command" -msgstr "Chat-commando's" +msgstr "Lokale commando" #: src/gui/guiKeyChangeMenu.cpp msgid "Mute" msgstr "Dempen" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Next item" msgstr "Volgende item" @@ -1724,14 +1684,12 @@ msgid "Special" msgstr "Speciaal" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle HUD" -msgstr "Vliegen aan/uit" +msgstr "Schakel HUD in/uit" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle chat log" -msgstr "Snel bewegen aan/uit" +msgstr "Chatlogboek wisselen" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fast" @@ -1742,23 +1700,20 @@ msgid "Toggle fly" msgstr "Vliegen aan/uit" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle fog" -msgstr "Vliegen aan/uit" +msgstr "Schakel mist in/uit" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle minimap" -msgstr "Noclip aan/uit" +msgstr "Schakel mini-kaart in/uit" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" msgstr "Noclip aan/uit" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle pitchmove" -msgstr "Snel bewegen aan/uit" +msgstr "Schakel pitchmove aan/uit" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" @@ -1785,9 +1740,8 @@ msgid "Exit" msgstr "Terug" #: src/gui/guiVolumeChange.cpp -#, fuzzy msgid "Muted" -msgstr "Dempen" +msgstr "Gedempt" #: src/gui/guiVolumeChange.cpp msgid "Sound Volume: " @@ -1826,7 +1780,6 @@ msgstr "" "wanneer deze buiten de hoofdcirkel is." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1837,16 +1790,15 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" -"(X,Y,Z)-afstand van de fractal, vanaf het centrum van de wereld, als " -"veelvoud van de schaal.\n" -"Te gebruiken om een geschikt geboortegebied met laaggelegen land in de buurt " -"van (0,0)\n" -"te krijgen.\n" -"De standaardwaarde is geschikt voor Mandelbrot fractals. Aanpassing is nodig " -"voor\n" -"Julia fractals.\n" -"Bereik: circa -2 tot +2. Vermenigvuldig dit met de 'schaal' voor de afstand " -"in nodes." +"X, Y, Z) offset van fractal van wereldcentrum in eenheden van 'schaal'. \n" +"Kan worden gebruikt om een gewenst punt naar (0, 0) te verplaatsen om een \n" +"geschikt spawnpunt, of om 'inzoomen' op een gewenst \n" +"punt mogelijk te maken punt door 'schaal' te vergroten. \n" +"De standaard is afgestemd op een geschikt spawn-punt voor Mandelbrot \n" +"sets met standaardparameters, moet deze mogelijk in andere \n" +"worden gewijzigd situaties. \n" +"Bereik ongeveer -2 tot 2. Vermenigvuldig met 'schaal' voor offset in " +"knooppunten." #: src/settings_translation_file.cpp msgid "" @@ -1875,9 +1827,8 @@ msgstr "" "1 = 'reliëf mapping' (lanzamer, nauwkeuriger)." #: src/settings_translation_file.cpp -#, fuzzy msgid "2D noise that controls the shape/size of ridged mountains." -msgstr "2D-ruis die de vorm / grootte van geribbelde bergen bepaalt." +msgstr "2D-ruis die de vorm/grootte van geribbelde bergen bepaalt." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." @@ -1929,9 +1880,8 @@ msgid "3D noise defining structure of river canyon walls." msgstr "3D geluid voor wanden van diepe rivier kloof." #: src/settings_translation_file.cpp -#, fuzzy msgid "3D noise defining terrain." -msgstr "3D geluid voor grote holtes." +msgstr "3D-ruisbepalend terrein." #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." @@ -1943,7 +1893,6 @@ msgid "3D noise that determines number of dungeons per mapchunk." msgstr "3D-ruis die het aantal kerkers per mapchunk bepaalt." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "3D support.\n" "Currently supported:\n" @@ -1962,8 +1911,10 @@ msgstr "" "- anaglyph: 3D met de kleuren cyaan en magenta.\n" "- interlaced: 3D voor polariserend scherm (even/oneven beeldlijnen).\n" "- topbottom: 3D met horizontaal gedeeld scherm (boven/onder).\n" -"- sidebyside: 3D met vertikaal gedeeld scherm (links/rechts).\n" -"- pageflip: 3D met vier buffers ('quad buffer')." +"- sidebyside: 3D met verticaal gedeeld scherm (links/rechts).\n" +"- crossview: Schele 3d\n" +"- pageflip: 3D met vier buffers ('quad buffer').\n" +"Merk op dat de geïnterlinieerde modus vereist dat shaders zijn ingeschakeld." #: src/settings_translation_file.cpp msgid "" @@ -2009,9 +1960,8 @@ msgid "Active Block Modifiers" msgstr "Actieve blokken wijzigers (ABMs)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Active block management interval" -msgstr "Bereik waarbinnen blokken actief zijn" +msgstr "Actief blokbeheerinterval" #: src/settings_translation_file.cpp msgid "Active block range" @@ -2072,16 +2022,15 @@ msgstr "Zet 'snel' altijd aan bij 'vliegen'" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" -msgstr "Omgevingsocclusie gamma" +msgstr "omringende Occlusie gamma" #: src/settings_translation_file.cpp msgid "Amount of messages a player may send per 10 seconds." msgstr "Aantal berichten dat een speler per 10 seconden mag verzenden." #: src/settings_translation_file.cpp -#, fuzzy msgid "Amplifies the valleys." -msgstr "Vergroot de valleien" +msgstr "Versterkt de valleien." #: src/settings_translation_file.cpp msgid "Anisotropic filtering" @@ -2092,9 +2041,8 @@ msgid "Announce server" msgstr "Meldt server aan bij de server-lijst" #: src/settings_translation_file.cpp -#, fuzzy msgid "Announce to this serverlist." -msgstr "Meldt server aan bij de server-lijst" +msgstr "Kondig aan op deze serverlijst." #: src/settings_translation_file.cpp msgid "Append item name" @@ -2125,7 +2073,6 @@ msgid "Ask to reconnect after crash" msgstr "verbinding herstellen na een server-crash" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "At this distance the server will aggressively optimize which blocks are sent " "to\n" @@ -2139,29 +2086,30 @@ msgid "" "optimization.\n" "Stated in mapblocks (16 nodes)." msgstr "" -"Op deze afstand zal de server agressief optimaliseren welke blokken naar de " -"cliënt worden gezonden.\n" -"Kleine waarden kunnen prestaties verbeteren ten koste van zichtbare fouten " -"in de weergave.\n" -"(sommige blokken onder water en in grotten en soms op land zullen niet " -"worden weergegeven)\n" -"Indien deze waarde groter is dan max_block_send_distance is deze " -"optimalisatie uitgeschakeld.\n" -"Getal duidt het aantal mapblocks aan (16 nodes)" +"Op deze afstand zal de server agressief optimaliseren naar welke blokken " +"gestuurd worden \n" +"gebruikers. \n" +"Kleine waarden kunnen de prestaties mogelijk aanzienlijk verbeteren, ten " +"koste van zichtbaar \n" +"rendering glitches (sommige blokken worden niet onder water en in grotten " +"weergegeven, \n" +"evenals soms op het land). \n" +"Als u dit instelt op een waarde die groter is dan max_block_send_distance, " +"wordt dit uitgeschakeld \n" +"optimalisatie. \n" +"Vermeld in mapblocks (16 blokken)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Automatic forward key" -msgstr "Vooruit toets" +msgstr "Automatisch Vooruit toets" #: src/settings_translation_file.cpp msgid "Automatically jump up single-node obstacles." msgstr "Spring automatisch op obstakels met één knooppunt." #: src/settings_translation_file.cpp -#, fuzzy msgid "Automatically report to the serverlist." -msgstr "Meldt de server automatisch aan bij de serverlijst." +msgstr "Server automatisch aan melden bij de serverlijst." #: src/settings_translation_file.cpp msgid "Autosave screen size" @@ -2176,23 +2124,20 @@ msgid "Backward key" msgstr "Achteruit" #: src/settings_translation_file.cpp -#, fuzzy msgid "Base ground level" -msgstr "Grondniveau" +msgstr "Basis grondniveau" #: src/settings_translation_file.cpp -#, fuzzy msgid "Base terrain height." -msgstr "Basishoogte van terrein" +msgstr "Basis terrein hoogte." #: src/settings_translation_file.cpp msgid "Basic" msgstr "Basis" #: src/settings_translation_file.cpp -#, fuzzy msgid "Basic privileges" -msgstr "Basisvoorrechten" +msgstr "Basis rechten" #: src/settings_translation_file.cpp msgid "Beach noise" @@ -2211,14 +2156,12 @@ msgid "Bind address" msgstr "Lokaal server-adres" #: src/settings_translation_file.cpp -#, fuzzy msgid "Biome API temperature and humidity noise parameters" -msgstr "Vochtigheid ruisparameters" +msgstr "Biome API parameters voor temperatuur- en vochtigheidsruis" #: src/settings_translation_file.cpp -#, fuzzy msgid "Biome noise" -msgstr "Rivier ruis parameters" +msgstr "Biome-ruis" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." @@ -2227,27 +2170,23 @@ msgstr "Aantal bits per pixel (oftewel: kleurdiepte) in full-screen modus." #: src/settings_translation_file.cpp #, fuzzy msgid "Block send optimize distance" -msgstr "Maximale afstand voor te versturen blokken" +msgstr "Blok verzend optimaliseren afstand" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "Vaste-breedte font pad" +msgstr "Vet en cursief pad" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" -msgstr "Vaste-breedte font pad" +msgstr "Vet en cursief monospace-lettertypepad" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "Font pad" +msgstr "Vet lettertypepad" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" -msgstr "Vaste-breedte font pad" +msgstr "Vet monospace-lettertypepad" #: src/settings_translation_file.cpp msgid "Build inside player" @@ -2280,16 +2219,15 @@ msgstr "Vloeiender camerabeweging" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "Vloeiender camerabeweging (in cinematic modus)" +msgstr "Vloeiendere camerabeweging (in cinematic modus)" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "Toets voor cameraverversing aan/uit" +msgstr "Toets voor het aan of uit schakelen van cameraverversing" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cave noise" -msgstr "Grot ruispatroon #1" +msgstr "Grot ruis" #: src/settings_translation_file.cpp msgid "Cave noise #1" @@ -2304,38 +2242,32 @@ msgid "Cave width" msgstr "Grot breedte" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cave1 noise" -msgstr "Grot ruispatroon #1" +msgstr "Grot1 ruis" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cave2 noise" -msgstr "Grot ruispatroon #1" +msgstr "Grot2 ruis" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cavern limit" -msgstr "Grot breedte" +msgstr "Grot limiet" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cavern noise" -msgstr "Grot ruispatroon #1" +msgstr "Grot ruis" #: src/settings_translation_file.cpp msgid "Cavern taper" msgstr "Grot hoogtepunt" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cavern threshold" -msgstr "Heuvel-grenswaarde" +msgstr "Grot drempel" #: src/settings_translation_file.cpp -#, fuzzy msgid "Cavern upper limit" -msgstr "Grot breedte" +msgstr "Bovengrens grot" #: src/settings_translation_file.cpp msgid "" @@ -2346,7 +2278,6 @@ msgstr "" "Waar 0,0 het minimale lichtniveau is, is 1,0 het maximale lichtniveau." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Changes the main menu UI:\n" "- Full: Multiple singleplayer worlds, game choice, texture pack chooser, " @@ -2356,8 +2287,8 @@ msgid "" "necessary for smaller screens." msgstr "" "Verandert de gebruikersinterface van het hoofdmenu: \n" -"- Volledig: meerdere werelden voor één speler, spelkeuze, texture pack " -"chooser, etc. \n" +"- Volledig: meerdere werelden voor één speler, spelkeuze, de kiezer van " +"textuurpak, etc. \n" "- Eenvoudig: één wereld voor één speler, geen game- of texture pack-kiezers. " "Kan zijn \n" "noodzakelijk voor kleinere schermen." @@ -2367,19 +2298,16 @@ msgid "Chat key" msgstr "Chat-toets" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message count limit" -msgstr "Status bericht bij verbinding" +msgstr "Limiet aantal chatberichten" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message format" -msgstr "Status bericht bij verbinding" +msgstr "Chatbericht formaat" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message kick threshold" -msgstr "Woestijn ruis drempelwaarde" +msgstr "Drempel voor kick van chatbericht" #: src/settings_translation_file.cpp msgid "Chat message max length" @@ -2407,7 +2335,7 @@ msgstr "Cinematic modus aan/uit toets" #: src/settings_translation_file.cpp msgid "Clean transparent textures" -msgstr "Schoonmaken Transparante texturen" +msgstr "Schone transparante texturen" #: src/settings_translation_file.cpp msgid "Client" @@ -2423,14 +2351,12 @@ msgid "Client modding" msgstr "Cliënt modding" #: src/settings_translation_file.cpp -#, fuzzy msgid "Client side modding restrictions" -msgstr "Cliënt modding" +msgstr "Aanpassingen aan clientzijde" #: src/settings_translation_file.cpp -#, fuzzy msgid "Client side node lookup range restriction" -msgstr "lient side node lookup range restrictie" +msgstr "Clientzijde blok opzoekbereikbeperking" #: src/settings_translation_file.cpp msgid "Climbing speed" @@ -2497,7 +2423,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Command key" -msgstr "Opdracht-toets" +msgstr "Commando-toets" #: src/settings_translation_file.cpp msgid "Connect glass" @@ -2509,7 +2435,8 @@ msgstr "Gebruik van externe media-server toestaan" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." -msgstr "Verbind glas-nodes met elkaar (indien ondersteund door het type node)." +msgstr "" +"Verbind glas-nodes met elkaar (indien ondersteund door het type node/blok)." #: src/settings_translation_file.cpp msgid "Console alpha" @@ -2520,9 +2447,8 @@ msgid "Console color" msgstr "Console-kleur" #: src/settings_translation_file.cpp -#, fuzzy msgid "Console height" -msgstr "Console hoogte" +msgstr "Hoogte console" #: src/settings_translation_file.cpp #, fuzzy @@ -2530,9 +2456,8 @@ msgid "ContentDB Flag Blacklist" msgstr "ContentDB markeert zwarte lijst" #: src/settings_translation_file.cpp -#, fuzzy msgid "ContentDB URL" -msgstr "Verder spelen" +msgstr "ContentDB-URL" #: src/settings_translation_file.cpp msgid "Continuous forward" @@ -2552,18 +2477,15 @@ msgid "Controls" msgstr "Besturing" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Controls length of day/night cycle.\n" "Examples:\n" "72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." msgstr "" -"Bepaalt de lengte van de dag/nacht cyclus\n" -"Voorbeelden:\n" -"72 = 20min\n" -"360 = 4min\n" -"1 = 24 uur\n" -"0 = de kloktijd (dag, nacht, schemering) verandert niet." +"Regelt de lengte van de dag/nacht-cyclus. \n" +"Voorbeelden: \n" +"72 = 20 min, 360 = 4 min, 1 = 24 uur, 0 = dag nacht /wat dan ook onveranderd " +"blijft." #: src/settings_translation_file.cpp msgid "Controls sinking speed in liquid." @@ -2591,7 +2513,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Crash message" -msgstr "Crash boodschap" +msgstr "Crashbericht" #: src/settings_translation_file.cpp msgid "Creative" @@ -2619,23 +2541,21 @@ msgstr "Scherm DPI" #: src/settings_translation_file.cpp msgid "Damage" -msgstr "Verwondingen" +msgstr "Verwondingen/schade" #: src/settings_translation_file.cpp msgid "Debug info toggle key" msgstr "Toets voor aan/uitzetten debug informatie" #: src/settings_translation_file.cpp -#, fuzzy msgid "Debug log file size threshold" -msgstr "Woestijn ruis drempelwaarde" +msgstr "Debug logbestand drempel" #: src/settings_translation_file.cpp msgid "Debug log level" msgstr "Debug logniveau" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dec. volume key" msgstr "Volume verlagen toets" @@ -2645,7 +2565,7 @@ msgstr "Verlaag dit om de vloeistofweerstand te vergroten." #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "Tijdsstaplengte van de server" +msgstr "Toegewijde serverstap" #: src/settings_translation_file.cpp msgid "Default acceleration" @@ -2669,7 +2589,7 @@ msgstr "Standaardwachtwoord" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "Standaard voorrechten" +msgstr "Standaard rechten" #: src/settings_translation_file.cpp msgid "Default report format" @@ -2692,16 +2612,12 @@ msgid "Defines areas with sandy beaches." msgstr "Bepaalt gebieden met zandstranden." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines distribution of higher terrain and steepness of cliffs." -msgstr "" -"Bepaalt gebieden van hoger (rotswand-top) terrein en de steilte van de " -"rotswand." +msgstr "Definieert de verdeling van hoger terrein en steilheid van kliffen." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines distribution of higher terrain." -msgstr "Bepaalt gebieden van 'terrain_higher' (rotswand-top terrein)." +msgstr "Definieert de verdeling van hoger terrein." #: src/settings_translation_file.cpp msgid "Defines full size of caverns, smaller values create larger caverns." @@ -2725,14 +2641,12 @@ msgstr "" "Een hogere waarde geeft vloeiender normal maps." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the base ground level." -msgstr "Bepaalt de gebieden met bomen en hun dichtheid." +msgstr "Definieert het basisgrondniveau." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the depth of the river channel." -msgstr "Bepaalt de gebieden met bomen en hun dichtheid." +msgstr "Definieert de diepte van het rivierkanaal." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." @@ -2742,14 +2656,12 @@ msgstr "" "(0 = oneindig ver)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river channel." -msgstr "Bepaalt de grootschalige rivierkanaal structuren." +msgstr "Definieert de breedte van het rivierkanaal." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river valley." -msgstr "Bepaalt gebieden met appels in de bomen." +msgstr "Definieert de breedte van de riviervallei." #: src/settings_translation_file.cpp msgid "Defines tree areas and tree density." @@ -2777,9 +2689,8 @@ msgid "Deprecated Lua API handling" msgstr "Gedrag bij gebruik van verouderde Lua API functies" #: src/settings_translation_file.cpp -#, fuzzy msgid "Depth below which you'll find giant caverns." -msgstr "Diepte waaronder je grote grotten vind." +msgstr "Diepte waaronder je gigantische grotten vindt." #: src/settings_translation_file.cpp msgid "Depth below which you'll find large caves." @@ -2798,20 +2709,18 @@ msgid "Desert noise threshold" msgstr "Woestijn ruis drempelwaarde" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Deserts occur when np_biome exceeds this value.\n" "When the 'snowbiomes' flag is enabled, this is ignored." msgstr "" -"Woestijnen ontstaan wanneer np_biome deze waarde overstijgt.\n" -"Indien het nieuwe biome systeem is ingeschakeld wordt dit genegeerd." +"Woestijnen treden op wanneer np_biome deze waarde overschrijdt. \n" +"Als de vlag 'snowbiomes' is ingeschakeld, wordt dit genegeerd." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" msgstr "Textuur-animaties niet synchroniseren" #: src/settings_translation_file.cpp -#, fuzzy msgid "Digging particles" msgstr "Graaf deeltjes" @@ -2840,9 +2749,8 @@ msgid "Drop item key" msgstr "Weggooi-toets" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dump the mapgen debug information." -msgstr "Print wereldgenerator debug informatie." +msgstr "Dump de mapgen-debug informatie." #: src/settings_translation_file.cpp msgid "Dungeon maximum Y" @@ -2853,9 +2761,8 @@ msgid "Dungeon minimum Y" msgstr "Dungeon minimaal Y" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dungeon noise" -msgstr "Bergen ruis" +msgstr "Kerker ruis" #: src/settings_translation_file.cpp msgid "" @@ -2882,14 +2789,12 @@ msgid "Enable creative mode for new created maps." msgstr "Schakel creatieve modus in voor nieuwe kaarten." #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable joysticks" -msgstr "Joysticks aanzetten" +msgstr "Schakel joysticks in" #: src/settings_translation_file.cpp -#, fuzzy msgid "Enable mod channels support." -msgstr "Veilige modus voor mods aanzetten" +msgstr "Ondersteuning voor mod-kanalen inschakelen." #: src/settings_translation_file.cpp msgid "Enable mod security" @@ -2970,15 +2875,14 @@ msgstr "" "2.0 voor twee keer grotere loopbeweging." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable/disable running an IPv6 server.\n" "Ignored if bind_address is set.\n" "Needs enable_ipv6 to be enabled." msgstr "" -"Schakel IPv6 in voor de server. Afhankelijk van de systeemconfiguratie\n" -"kan dit tot gevolg hebben dat enkel IPv6 cliënten verbinding kunnen maken\n" -"Deze instelling wordt genegeerd als een lokaal server-adres ingesteld is." +"Schakel het uitvoeren van een IPv6-server in/uit. \n" +"Wordt genegeerd als bind_address is ingesteld. \n" +"Moet inschakelen_ipv6 moet worden ingeschakeld." #: src/settings_translation_file.cpp msgid "" @@ -3074,14 +2978,12 @@ msgid "Factor noise" msgstr "Ruis factor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fall bobbing factor" -msgstr "Loopbeweging bij vallen" +msgstr "Val dobberende factor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "Terugval-font" +msgstr "Terugvallettertype" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -3112,13 +3014,12 @@ msgid "Fast movement" msgstr "Snelle modus" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Fast movement (via the \"special\" key).\n" "This requires the \"fast\" privilege on the server." msgstr "" -"Snelle beweging toestaan (met de \"gebruiken\" toets).\n" -"Het \"fast\" voorrecht is vereist op de server." +"Snelle beweging (via de \"speciale\" toets). \n" +"Dit vereist het \"snelle\" recht op de server." #: src/settings_translation_file.cpp msgid "Field of view" @@ -3129,24 +3030,22 @@ msgid "Field of view in degrees." msgstr "Zichthoek in graden." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "File in client/serverlist/ that contains your favorite servers displayed in " "the\n" "Multiplayer Tab." msgstr "" -"Bestand in de map 'client/serverlist/' met favoriete servers die getoond\n" -"worden in de multiplayer tab." +"Bestand in client / serverlijst / dat uw favoriete servers bevat die worden " +"weergegeven in de \n" +"Tabblad Multiplayer." #: src/settings_translation_file.cpp -#, fuzzy msgid "Filler depth" -msgstr "Filler Diepte" +msgstr "Vuldiepte" #: src/settings_translation_file.cpp -#, fuzzy msgid "Filler depth noise" -msgstr "Filler Diepte" +msgstr "Vuldiepte ruis" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" @@ -3936,7 +3835,7 @@ msgstr "Console-toets" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." -msgstr "Initiële verticale snelheid bij het springen, in blokken per seconde." +msgstr "Verticale beginsnelheid tijdens springen, in blokken per seconde." #: src/settings_translation_file.cpp msgid "" @@ -3993,7 +3892,7 @@ msgstr "Inventaris items animaties" #: src/settings_translation_file.cpp msgid "Inventory key" -msgstr "Rugzak toets" +msgstr "Inventaristoets" #: src/settings_translation_file.cpp msgid "Invert mouse" @@ -4029,9 +3928,10 @@ msgid "" "increases processing load.\n" "At iterations = 20 this mapgen has a similar load to mapgen V7." msgstr "" -"Iteraties van de recursieve functie. \n" -"Als u dit verhoogt, neemt de hoeveelheid fijne details toe, maar ook \n" -"verhoogt de verwerkingsbelasting. \n" +"Aantal iteraties van de recursieve functie.\n" +"Het groter maken hiervan zorgt voor een toename in fijne details, maar zorgt " +"ook \n" +"voor een toename in processorgebruik.\n" "Bij iteraties = 20 heeft deze mapgen een vergelijkbare belasting als mapgen " "V7." @@ -4869,9 +4769,8 @@ msgstr "" "Schop spelers die meer dan X berichten per 10 seconden hebben verzonden." #: src/settings_translation_file.cpp -#, fuzzy msgid "Lake steepness" -msgstr "Steilheid Van de meren" +msgstr "Steilheid van meren" #: src/settings_translation_file.cpp #, fuzzy @@ -5000,7 +4899,7 @@ msgstr "Lichtcurve hoog verloop" #: src/settings_translation_file.cpp msgid "Light curve low gradient" -msgstr "" +msgstr "Lichtcurve laag verloop" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" @@ -5085,7 +4984,7 @@ msgstr "Geladen blokken aanpassers (LBMs)" #: src/settings_translation_file.cpp msgid "Lower Y limit of dungeons." -msgstr "" +msgstr "Onderste Y-limiet van kerkers." #: src/settings_translation_file.cpp msgid "Main menu script" @@ -5118,7 +5017,7 @@ msgstr "Wereld map" #: src/settings_translation_file.cpp msgid "Map generation attributes specific to Mapgen Carpathian." -msgstr "" +msgstr "Wereldgeneratieattributen specifiek aan Mapgen Carpathian." #: src/settings_translation_file.cpp #, fuzzy @@ -5154,10 +5053,16 @@ msgid "" "to become shallower and occasionally dry.\n" "'altitude_dry': Reduces humidity with altitude." msgstr "" +"Wereldgeneratieattributen specifiek aan Mapgen Valleys.\n" +"'altitude_chill': Hoe groter de hoogte, hoe lager de temperatuur.\n" +"'humid_rivers': Hogere vochtigheidsgraad rond rivieren.\n" +"'vary_river_depth': Lage vochtigheidsgraad en hoge temperatuur\n" +"zorgen ervoor dat rivieren smaller worden en uiteindelijk uitdrogen.\n" +"'altitude_dry': Hoe groter de hoogte, hoe lager de vochtigheidsgraad." #: src/settings_translation_file.cpp msgid "Map generation attributes specific to Mapgen v5." -msgstr "" +msgstr "Wereldgenerator instellingen specifiek voor Mapgen V5." #: src/settings_translation_file.cpp #, fuzzy @@ -5179,6 +5084,9 @@ msgid "" "Map generation attributes specific to Mapgen v7.\n" "'ridges' enables the rivers." msgstr "" +"Kenmerken voor het genereren van kaarten die specifiek zijn voor Mapgen v7. " +"\n" +"'richels' maakt de rivieren mogelijk." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5327,17 +5235,20 @@ msgstr "Maximale breedte van de 'hotbar'" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "Maximale limiet van willekeurig aantal grote grotten per mapchunk." #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Maximale limiet van willekeurig aantal kleine grotten per mapchunk." #: src/settings_translation_file.cpp msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." msgstr "" +"Maximale vloeistofweerstand. Regelt de vertraging bij het invoeren van " +"vloeistof op \n" +"hoge snelheid." #: src/settings_translation_file.cpp msgid "" @@ -5345,6 +5256,9 @@ msgid "" "The maximum total count is calculated dynamically:\n" "max_total = ceil((#clients + max_users) * per_client / 4)" msgstr "" +"Maximum aantal blokken dat tegelijkertijd verzonden kan worden\n" +"per client. Het totale maximum wordt dynamisch berekend:\n" +"max_total = ceil((#clients + max_users) * per_client / 4)" #: src/settings_translation_file.cpp msgid "Maximum number of blocks that can be queued for loading." @@ -5392,14 +5306,12 @@ msgstr "" "dat gelijk verbonden kan zijn." #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum number of players that can be connected simultaneously." -msgstr "Maximaal aantal spelers dat tegelijk verbonden kan zijn." +msgstr "Maximaal aantal spelers dat tegelijkertijd verbonden kan zijn." #: src/settings_translation_file.cpp -#, fuzzy msgid "Maximum number of recent chat messages to show" -msgstr "Maximaal aantal geforceerd geladen blokken." +msgstr "Maximaal aantal zichtbare recente chatberichten" #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." @@ -5424,13 +5336,15 @@ msgstr "Maximaal simultaan verzonden blokken per cliënt" #: src/settings_translation_file.cpp msgid "Maximum size of the out chat queue" -msgstr "" +msgstr "Maximale omvang van de wachtrij uitgezonden berichten" #: src/settings_translation_file.cpp msgid "" "Maximum size of the out chat queue.\n" "0 to disable queueing and -1 to make the queue size unlimited." msgstr "" +"Maximale omvang van de wachtrij uitgezonden berichten.\n" +"'0' om de wachtrij uit te schakelen en '-1' om de wachtrij oneindig te maken." #: src/settings_translation_file.cpp msgid "Maximum time in ms a file download (e.g. a mod download) may take." @@ -5479,11 +5393,11 @@ msgstr "Mini-kaart scan-hoogte" #: src/settings_translation_file.cpp msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "Minimumlimiet van willekeurig aantal grote grotten per mapchunk." #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Minimale limiet van willekeurig aantal kleine grotten per mapchunk." #: src/settings_translation_file.cpp #, fuzzy @@ -5496,7 +5410,7 @@ msgstr "Mip-Mapping" #: src/settings_translation_file.cpp msgid "Mod channels" -msgstr "" +msgstr "Mod-kanalen" #: src/settings_translation_file.cpp msgid "Modifies the size of the hudbar elements." @@ -5525,9 +5439,8 @@ msgid "Mountain variation noise" msgstr "Heuvel-hoogte ruisparameters" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mountain zero level" -msgstr "Bergen ruis" +msgstr "Nulniveau bergen" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" @@ -5558,7 +5471,7 @@ msgstr "Demp toets" #: src/settings_translation_file.cpp msgid "Mute sound" -msgstr "" +msgstr "Geluid dempen" #: src/settings_translation_file.cpp msgid "" @@ -5567,6 +5480,11 @@ msgid "" "Current mapgens in a highly unstable state:\n" "- The optional floatlands of v7 (disabled by default)." msgstr "" +"Naam van de wereldgenerator die gebruikt moet worden om een nieuwe wereld " +"aan te maken. \n" +"Een nieuwe wereld aanmaken in het hoofdmenu heeft echter voorrang.\n" +"Huidige wereldgeneratoren in zeer instabiele staat:\n" +"- De optionele zweeflanden van v7 (standaard uitgeschakeld)." #: src/settings_translation_file.cpp msgid "" @@ -5588,7 +5506,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Near plane" -msgstr "" +msgstr "Dichtbij vliegtuig" #: src/settings_translation_file.cpp msgid "Network" @@ -5654,6 +5572,23 @@ msgid "" "processes, especially in singleplayer and/or when running Lua code in\n" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" +"Aantal te gebruiken emerge-threads. \n" +"WAARSCHUWING: Momenteel zijn er meerdere bugs die crashes kunnen veroorzaken " +"wanneer \n" +"'num_emerge_threads' is groter dan 1. Totdat deze waarschuwing is " +"verwijderd, is dat \n" +"zo sterk aanbevolen deze waarde is ingesteld op de standaard '1'. \n" +"Waarde 0: \n" +"- Automatische selectie. Het aantal emerge threads zal zijn \n" +"- 'aantal processors - 2', met een ondergrens van 1. \n" +"Elke andere waarde: \n" +"- Specificeert het aantal emerge threads, met een ondergrens van 1. \n" +"WAARSCHUWING: Door het aantal emerge threads te vergroten, worden de motor " +"mapgen \n" +"vergroot snelheid, maar dit kan de spelprestaties schaden door interfereren " +"met andere \n" +"processen, vooral in singleplayer en/of bij het uitvoeren van Lua-code in \n" +"'on_generated'. Voor veel gebruikers kan de optimale instelling '1' zijn." #: src/settings_translation_file.cpp msgid "" @@ -5674,21 +5609,25 @@ msgstr "Aantal parallax occlusie iteraties." #: src/settings_translation_file.cpp msgid "Online Content Repository" -msgstr "" +msgstr "Online inhoud repository" #: src/settings_translation_file.cpp msgid "Opaque liquids" -msgstr "Ondoorschijnende vloeistoffen" +msgstr "Ondoorzichtige vloeistoffen" #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." msgstr "" +"Ondoorzichtigheid (alpha) van de schaduw achter het standaardlettertype, " +"tussen 0 en 255." #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." msgstr "" +"Ondoorzichtigheid (alpha) van de schaduw achter het fallback-lettertype, " +"tussen 0 en 255." #: src/settings_translation_file.cpp msgid "" @@ -5696,6 +5635,8 @@ msgid "" "formspec is\n" "open." msgstr "" +"Pauzemenu openen als het venster focus verliest. Pauzeert niet als er\n" +"een formspec geopend is." #: src/settings_translation_file.cpp msgid "Overall bias of parallax occlusion effect, usually scale/2." @@ -5739,6 +5680,13 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" +"Pad van het fallback-lettertype. \n" +"Als de instelling \"freetype\" is ingeschakeld: Moet een TrueType-lettertype " +"zijn. \n" +"Als de instelling \"freetype\" is uitgeschakeld: Moet een bitmap- of XML-" +"vectorenlettertype zijn. \n" +"Dit lettertype wordt gebruikt voor bepaalde talen of als het " +"standaardlettertype niet beschikbaar is." #: src/settings_translation_file.cpp msgid "Path to save screenshots at." @@ -5764,6 +5712,13 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "The fallback font will be used if the font cannot be loaded." msgstr "" +"Pad naar het standaardlettertype. \n" +"Als de instelling \"freetype\" is ingeschakeld: Moet een TrueType-lettertype " +"zijn. \n" +"Als de instelling \"freetype\" is uitgeschakeld: Moet een bitmap- of XML-" +"vectorenlettertype zijn. \n" +"Het fallback-lettertype wordt gebruikt als het lettertype niet kan worden " +"geladen." #: src/settings_translation_file.cpp msgid "" @@ -5772,10 +5727,16 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "This font is used for e.g. the console and profiler screen." msgstr "" +"Pad naar het monospace-lettertype. \n" +"Als de instelling \"freetype\" is ingeschakeld: Moet een TrueType-lettertype " +"zijn. \n" +"Als de instelling \"freetype\" is uitgeschakeld: Moet een bitmap- of XML-" +"vectorenlettertype zijn. \n" +"Dit lettertype wordt o.a. gebruikt voor het console- en profilerscherm." #: src/settings_translation_file.cpp msgid "Pause on lost window focus" -msgstr "" +msgstr "Pauzeer als venster focus verliest" #: src/settings_translation_file.cpp msgid "Physics" @@ -5788,7 +5749,7 @@ msgstr "Vliegen toets" #: src/settings_translation_file.cpp msgid "Pitch move mode" -msgstr "" +msgstr "Pitch beweeg modus" #: src/settings_translation_file.cpp msgid "" @@ -5824,6 +5785,9 @@ msgid "" "Prevent digging and placing from repeating when holding the mouse buttons.\n" "Enable this when you dig or place too often by accident." msgstr "" +"Voorkom dat graven en plaatsen zich herhaalt wanneer u de muisknoppen " +"ingedrukt houdt. \n" +"Schakel dit in als u per ongeluk te vaak graaft of plaatst." #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." @@ -5857,7 +5821,7 @@ msgstr "Profileren" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." -msgstr "" +msgstr "Aandeel grote grotten die vloeistof bevatten." #: src/settings_translation_file.cpp msgid "" @@ -5883,7 +5847,7 @@ msgstr "Zichtafstand toets" #: src/settings_translation_file.cpp msgid "Recent Chat Messages" -msgstr "" +msgstr "Recente chatberichten" #: src/settings_translation_file.cpp #, fuzzy @@ -5903,6 +5867,9 @@ msgid "" "Remove color codes from incoming chat messages\n" "Use this to stop players from being able to use color in their messages" msgstr "" +"Verwijder kleurcodes van binnenkomende chatberichten\n" +"Gebruik dit om er voor te zorgen dat spelers geen kleuren kunnen gebruiken " +"in hun berichten" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." @@ -5925,6 +5892,18 @@ msgid "" "csm_restriction_noderange)\n" "READ_PLAYERINFO: 32 (disable get_player_names call client-side)" msgstr "" +"Beperkt de toegang van bepaalde client-side functies op servers. \n" +"Combineer de onderstaande byteflags om functies aan de clientzijde te " +"beperken of stel deze in op 0 \n" +"voor geen beperkingen: \n" +"LOAD_CLIENT_MODS: 1 (schakel het laden van door de gebruiker geleverde mods " +"uit) \n" +"CHAT_MESSAGES: 2 (schakel send_chat_message call client-side uit) \n" +"READ_ITEMDEFS: 4 (schakel get_item_def call client-side uit) \n" +"READ_NODEDEFS: 8 (schakel get_node_def call client-side uit) \n" +"LOOKUP_NODES_LIMIT: 16 (beperkt get_node call client-side tot \n" +"csm_restriction_noderange) \n" +"READ_PLAYERINFO: 32 (deactiveer get_player_names call client-side)" #: src/settings_translation_file.cpp #, fuzzy @@ -5959,9 +5938,8 @@ msgid "River channel depth" msgstr "Diepte van rivieren" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel width" -msgstr "Diepte van rivieren" +msgstr "Breedte van rivieren" #: src/settings_translation_file.cpp #, fuzzy @@ -5989,11 +5967,11 @@ msgstr "Opnemen terugrolgegevens" #: src/settings_translation_file.cpp msgid "Rolling hill size noise" -msgstr "" +msgstr "Ruis golvende heuvels" #: src/settings_translation_file.cpp msgid "Rolling hills spread noise" -msgstr "" +msgstr "Glooiende heuvels verspreiden ruis" #: src/settings_translation_file.cpp msgid "Round minimap" @@ -6001,7 +5979,7 @@ msgstr "Ronde mini-kaart" #: src/settings_translation_file.cpp msgid "Safe digging and placing" -msgstr "" +msgstr "Veilig breken en plaatsen" #: src/settings_translation_file.cpp msgid "Sandy beaches occur when np_beach exceeds this value." @@ -6013,7 +5991,7 @@ msgstr "Bewaar de ontvangen wereld lokaal (op de cliënt)." #: src/settings_translation_file.cpp msgid "Save window size automatically when modified." -msgstr "" +msgstr "Onthoud venstergrootte wanneer veranderd." #: src/settings_translation_file.cpp msgid "Saving map received from server" @@ -6065,9 +6043,8 @@ msgstr "" "0 = een redelijke standaardwaarde." #: src/settings_translation_file.cpp -#, fuzzy msgid "Seabed noise" -msgstr "Grot ruispatroon #1" +msgstr "Zeebodem ruis" #: src/settings_translation_file.cpp #, fuzzy @@ -6189,7 +6166,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Set the maximum character length of a chat message sent by clients." -msgstr "" +msgstr "Maximaal aantal tekens voor chatberichten van gebruikers instellen." #: src/settings_translation_file.cpp #, fuzzy @@ -6272,6 +6249,14 @@ msgid "" "Altering this value is for special usage, leaving it unchanged is\n" "recommended." msgstr "" +"Grootte van mapchunks gegenereerd door mapgen, vermeld in mapblocks (16 " +"blokken). \n" +"WAARSCHUWING !: Er is geen voordeel en er zijn verschillende gevaren het \n" +"verhogen van deze waarde boven 5. \n" +"Het verlagen van deze waarde verhoogt de dichtheid van grotten en kerkers. \n" +"Het wijzigen van deze waarde is voor speciaal gebruik, maar blijft " +"ongewijzigd \n" +"aanbevolen." #: src/settings_translation_file.cpp msgid "" @@ -6295,11 +6280,11 @@ msgstr "Helling en vulling bepalen in combinatie de hoogte" #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "" +msgstr "Maximaal aantal kleine grotten" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "" +msgstr "Minimaal aantal kleine grotten" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." @@ -6336,13 +6321,12 @@ msgid "Sneak key" msgstr "Sluipen toets" #: src/settings_translation_file.cpp -#, fuzzy msgid "Sneaking speed" -msgstr "Loopsnelheid" +msgstr "Sluipsnelheid" #: src/settings_translation_file.cpp msgid "Sneaking speed, in nodes per second." -msgstr "" +msgstr "Sluipsnelheid, in blokken per seconde." #: src/settings_translation_file.cpp msgid "Sound" @@ -6377,6 +6361,9 @@ msgid "" "Controls the width of the range to be boosted.\n" "Standard deviation of the light curve boost Gaussian." msgstr "" +"Verspreiding van het bereik van de lichtcurve. \n" +"Bepaalt de breedte van het bereik dat moet worden versterkt. \n" +"Standaardafwijking van de lichtcurve boost Gaussian." #: src/settings_translation_file.cpp msgid "Static spawnpoint" @@ -6406,6 +6393,9 @@ msgid "" "The 3 'boost' parameters define a range of the light\n" "curve that is boosted in brightness." msgstr "" +"Kracht van lichtcurve boost. \n" +"De 3 'boost'-parameters bepalen een bereik van het licht \n" +"curve die wordt versterkt in helderheid." #: src/settings_translation_file.cpp msgid "Strength of parallax." @@ -6417,7 +6407,7 @@ msgstr "Stricte protocolcontrole" #: src/settings_translation_file.cpp msgid "Strip color codes" -msgstr "" +msgstr "Kleurcodes weghalen" #: src/settings_translation_file.cpp msgid "Synchronous SQLite" @@ -6489,10 +6479,20 @@ msgid "" "this option allows enforcing it for certain node types. Note though that\n" "that is considered EXPERIMENTAL and may not work properly." msgstr "" +"Texturen op een blok kunnen worden uitgelijnd met het blok of met de wereld. " +"\n" +"De eerste modus past bij betere dingen zoals machines, meubels, enz \n" +"dit laatste zorgt ervoor dat trappen en microblokken beter in de omgeving " +"passen. \n" +"Deze mogelijkheid is echter nieuw en mag daarom niet worden gebruikt door " +"oudere servers, \n" +"Met deze optie kan deze voor bepaalde blokkentypen worden afgedwongen. Merk " +"echter op dat \n" +"die als EXPERIMENTEEL wordt beschouwd en mogelijk niet goed werkt." #: src/settings_translation_file.cpp msgid "The URL for the content repository" -msgstr "" +msgstr "De URL voor de inhoudsrepository" #: src/settings_translation_file.cpp msgid "" @@ -6522,6 +6522,7 @@ msgstr "De identificatie van de stuurknuppel die u gebruikt" #: src/settings_translation_file.cpp msgid "The length in pixels it takes for touch screen interaction to start." msgstr "" +"De lengte in pixels die nodig is om een touchscreeninteractie te starten." #: src/settings_translation_file.cpp msgid "" @@ -6531,6 +6532,11 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" +"De maximale hoogte van het oppervlak van golvende vloeistoffen. \n" +"4.0 = Golfhoogte is twee knooppunten. \n" +"0.0 = Golf beweegt helemaal niet. \n" +"De standaardwaarde is 1,0 (1/2 blok). \n" +"Vereist dat golvende vloeistoffen zijn ingeschakeld." #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -6555,6 +6561,13 @@ msgid "" "maintained.\n" "This should be configured together with active_object_range." msgstr "" +"De straal van het volume van blokken rond elke speler die onderworpen is aan " +"de \n" +"actieve blokspullen, vermeld in mapblocks (16 blokken). \n" +"In actieve blokken worden objecten geladen en ABM's uitgevoerd. \n" +"Dit is ook het minimumbereik waarin actieve objecten (mobs) worden " +"onderhouden. \n" +"Dit moet samen met active_object_range worden geconfigureerd." #: src/settings_translation_file.cpp msgid "" @@ -6565,6 +6578,12 @@ msgid "" "On other platforms, OpenGL is recommended, and it’s the only driver with\n" "shader support currently." msgstr "" +"De rendering back-end voor Irrlicht. \n" +"Na het wijzigen hiervan is een herstart vereist. \n" +"Opmerking: op Android, blijf bij OGLES1 als je het niet zeker weet! Anders " +"start de app mogelijk niet. \n" +"Op andere platforms wordt OpenGL aanbevolen en het is de enige driver met \n" +"shader-ondersteuning momenteel." #: src/settings_translation_file.cpp msgid "" @@ -6625,6 +6644,11 @@ msgid "" "enabled. Also the vertical distance over which humidity drops by 10 if\n" "'altitude_dry' is enabled." msgstr "" +"De verticale afstand waarover de warmte met 20 daalt als 'altitude_chill' is " +"\n" +"ingeschakeld. Ook de verticale afstand waarover de vochtigheid met 10 daalt " +"als \n" +"'altitude_dry' is ingeschakeld." #: src/settings_translation_file.cpp #, fuzzy @@ -6642,6 +6666,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Time of day when a new world is started, in millihours (0-23999)." msgstr "" +"Tijdstip waarop een nieuwe wereld wordt gestart, in mili-uren (0-23999)." #: src/settings_translation_file.cpp msgid "Time send interval" @@ -6710,9 +6735,8 @@ msgid "URL to the server list displayed in the Multiplayer Tab." msgstr "URL voor de serverlijst in de multiplayer tab." #: src/settings_translation_file.cpp -#, fuzzy msgid "Undersampling" -msgstr "Rendering:" +msgstr "Rendering" #: src/settings_translation_file.cpp #, fuzzy @@ -6739,7 +6763,7 @@ msgstr "Vergeet ongebruikte server gegevens" #: src/settings_translation_file.cpp msgid "Upper Y limit of dungeons." -msgstr "" +msgstr "Bovenste Y-limiet van kerkers." #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." @@ -6763,6 +6787,10 @@ msgid "" "especially when using a high resolution texture pack.\n" "Gamma correct downscaling is not supported." msgstr "" +"Gebruik mip-mapping om texturen te schalen. Kan de prestaties enigszins " +"verbeteren, \n" +"vooral bij gebruik van een textuurpakket met hoge resolutie. \n" +"Gamma-correcte verkleining wordt niet ondersteund." #: src/settings_translation_file.cpp msgid "Use trilinear filtering when scaling textures." @@ -6836,7 +6864,7 @@ msgstr "Bepaalt steilheid/hoogte van heuvels." #: src/settings_translation_file.cpp msgid "Vertical climbing speed, in nodes per second." -msgstr "" +msgstr "Verticale klimsnelheid, in blokken per seconde." #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." @@ -6873,7 +6901,7 @@ msgstr "Zichtafstand" #: src/settings_translation_file.cpp msgid "Virtual joystick triggers aux button" -msgstr "" +msgstr "Virtuele joystick activeert aux-knop" #: src/settings_translation_file.cpp msgid "Volume" @@ -6904,7 +6932,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Walking and flying speed, in nodes per second." -msgstr "" +msgstr "Loop- en vliegsnelheid, in blokken per seconde." #: src/settings_translation_file.cpp msgid "Walking speed" @@ -6912,7 +6940,7 @@ msgstr "Loopsnelheid" #: src/settings_translation_file.cpp msgid "Walking, flying and climbing speed in fast mode, in nodes per second." -msgstr "" +msgstr "Loop-, vlieg- en klimsnelheid in snelle modus, in blokken per seconde." #: src/settings_translation_file.cpp msgid "Water level" @@ -7041,12 +7069,19 @@ msgstr "" "Maak het einde van het zichtbereik mistig, zodat het einde niet opvalt." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Whether to mute sounds. You can unmute sounds at any time, unless the\n" "sound system is disabled (enable_sound=false).\n" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" +"Of geluiden moeten worden gedempt. U kunt het dempen van geluiden op elk " +"moment opheffen, tenzij de \n" +"geluidssysteem is uitgeschakeld (enable_sound = false). \n" +"In de game kun je de mute-status wijzigen met de mute-toets of door de te " +"gebruiken \n" +"pauzemenu." #: src/settings_translation_file.cpp msgid "" @@ -7097,10 +7132,18 @@ msgid "" "See also texture_min_size.\n" "Warning: This option is EXPERIMENTAL!" msgstr "" +"Wereldwijd uitgelijnde texturen kunnen worden geschaald over meerdere " +"knooppunten. Echter, \n" +"de server verzendt mogelijk niet de gewenste weegschaal, vooral als u " +"gebruikt \n" +"een speciaal ontworpen texture pack; met deze optie probeert de gebruiker\n" +"om de schaal automatisch te bepalen op basis van de textuurgrootte. \n" +"Zie ook texture_min_size. \n" +"Waarschuwing: deze optie is EXPERIMENTEEL!" #: src/settings_translation_file.cpp msgid "World-aligned textures mode" -msgstr "" +msgstr "Wereldwijd uitgelijnde texturenmodus" #: src/settings_translation_file.cpp msgid "Y of flat ground." @@ -7111,6 +7154,8 @@ msgid "" "Y of mountain density gradient zero level. Used to shift mountains " "vertically." msgstr "" +"Y van het niveau van de gradiënt nul van de bergdichtheid. Gebruikt om " +"bergen verticaal te verschuiven." #: src/settings_translation_file.cpp #, fuzzy @@ -7153,7 +7198,7 @@ msgstr "Maximaal parallellisme in cURL" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "cURL timeout" +msgstr "cURL time-out" #, fuzzy #~ msgid "" From e9052d60606f6f7fbafb77172d695c48296e2207 Mon Sep 17 00:00:00 2001 From: WaldiS Date: Sun, 31 May 2020 15:26:31 +0000 Subject: [PATCH 320/424] Translated using Weblate (Polish) Currently translated at 77.4% (997 of 1288 strings) --- po/pl/minetest.po | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/po/pl/minetest.po b/po/pl/minetest.po index ff03d9815..a9298522a 100644 --- a/po/pl/minetest.po +++ b/po/pl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Polish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-05-04 21:11+0000\n" -"Last-Translator: Dominik Kacprzak \n" +"PO-Revision-Date: 2020-06-02 00:46+0000\n" +"Last-Translator: WaldiS \n" "Language-Team: Polish \n" "Language: pl\n" @@ -68,7 +68,7 @@ msgstr "Serwer wspiera protokoły w wersjach od $1 do $2. " msgid "Try reenabling public serverlist and check your internet connection." msgstr "" "Spróbuj ponownie włączyć publiczną listę serwerów i sprawdź swoje połączenie " -"internetowe." +"z siecią Internet." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." @@ -129,9 +129,8 @@ msgid "No game description provided." msgstr "Brak dostępnych informacji o grze." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No hard dependencies" -msgstr "Brak wymaganych zależności." +msgstr "Brak wymaganych zależności" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." @@ -195,7 +194,7 @@ msgstr "Mody" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "Nie można pobrać żadnych pakietów" +msgstr "Nie można pobrać pakietów" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" @@ -1681,7 +1680,7 @@ msgstr "Skradanie" #: src/gui/guiKeyChangeMenu.cpp msgid "Special" -msgstr "Specjalny" +msgstr "Specialne" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" @@ -1801,7 +1800,6 @@ msgstr "" "węzłech." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) scale of fractal in nodes.\n" "Actual fractal size will be 2 to 3 times larger.\n" @@ -1811,7 +1809,7 @@ msgid "" "Default is for a vertically-squashed shape suitable for\n" "an island, set all 3 numbers equal for the raw shape." msgstr "" -"Skala (X.Y.Z) fraktali w blokach.\n" +"Skala (X.Y.Z) fraktali w węzłach.\n" "Rzeczywisty rozmiar fraktali będzie 2, 3 raz większy.\n" "Te wartości mogą być bardzo wysokie, \n" "fraktal nie musi mieścić się wewnątrz świata.\n" @@ -3353,7 +3351,7 @@ msgstr "Szum wysokości" #: src/settings_translation_file.cpp msgid "Height select noise" -msgstr "Szum wyboru wysokości" +msgstr "Rożnorodność wysokości\n" #: src/settings_translation_file.cpp msgid "High-precision FPU" @@ -3763,7 +3761,7 @@ msgstr "Kolor tła konsoli czatu w grze (R,G,B)." #: src/settings_translation_file.cpp msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." -msgstr "Wysokość konsoli w grze, od 0.1 (10%) do 1.0 (100%)." +msgstr "Przeźroczystość konsoli w grze (od 0.0 do 1.0)." #: src/settings_translation_file.cpp msgid "Inc. volume key" From a72a900c82c2895921bb24c56f822ac7a3da4ed8 Mon Sep 17 00:00:00 2001 From: Dominik Kacprzak Date: Sun, 31 May 2020 15:28:06 +0000 Subject: [PATCH 321/424] Translated using Weblate (Polish) Currently translated at 77.4% (997 of 1288 strings) --- po/pl/minetest.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/po/pl/minetest.po b/po/pl/minetest.po index a9298522a..cd2304d47 100644 --- a/po/pl/minetest.po +++ b/po/pl/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-06-02 00:46+0000\n" -"Last-Translator: WaldiS \n" +"Last-Translator: Dominik Kacprzak \n" "Language-Team: Polish \n" "Language: pl\n" @@ -1563,7 +1563,7 @@ msgid "" "creation, or click 'Cancel' to abort." msgstr "" "Próbujesz wejść na serwer \"%s\" o nazwie \"%2$s2\" po raz pierwszy . Jeśli " -"zdecydujesz się kontynuujesz na serwerze zostanie utworzone nowe konto z " +"zdecydujesz się kontynuować na serwerze zostanie utworzone nowe konto z " "Twoim danymi.\n" "Wpisz ponownie hasło i wciśnij \"Zarejestruj się i Dołącz\" aby potwierdzić " "utworzenie konta lub wciśnij \"Anuluj\" aby przerwać ten proces." From f86c7f5db60ca450e4f65fe5e46355d290ad69e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Wojs=C5=82aw?= Date: Sun, 31 May 2020 15:28:48 +0000 Subject: [PATCH 322/424] Translated using Weblate (Polish) Currently translated at 77.4% (997 of 1288 strings) --- po/pl/minetest.po | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/po/pl/minetest.po b/po/pl/minetest.po index cd2304d47..3eed803b5 100644 --- a/po/pl/minetest.po +++ b/po/pl/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-06-02 00:46+0000\n" -"Last-Translator: Dominik Kacprzak \n" +"Last-Translator: Damian Wojsław \n" "Language-Team: Polish \n" "Language: pl\n" @@ -2003,6 +2003,11 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Modyfikuje krzywą światła przez nałożenie na nią 'korekcji gamma'.\n" +"Im wyższa wartość, tym jaśniejsze światło ze średniego i niskiego zakresu.\n" +"Wartość '1.0' oznacza brak zmian.\n" +"Tylko światło dnia i sztuczne światło są znacząco zmieniane, \n" +"światło nocne podlega zmianie w minimalnym stopniu." #: src/settings_translation_file.cpp #, fuzzy From 849f7efac52f9f45fb454c0a209174325b7dfe7e Mon Sep 17 00:00:00 2001 From: Rostyslav Date: Mon, 1 Jun 2020 00:39:36 +0000 Subject: [PATCH 323/424] Translated using Weblate (Ukrainian) Currently translated at 42.0% (541 of 1288 strings) --- po/uk/minetest.po | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/po/uk/minetest.po b/po/uk/minetest.po index 28a2e01cd..14c334490 100644 --- a/po/uk/minetest.po +++ b/po/uk/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Ukrainian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-03-31 10:14+0000\n" -"Last-Translator: sfan5 \n" +"PO-Revision-Date: 2020-06-02 00:46+0000\n" +"Last-Translator: Rostyslav \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -384,23 +384,23 @@ msgstr "Х" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" -msgstr "" +msgstr "Розкидання по X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" -msgstr "" +msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" -msgstr "" +msgstr "Розкидання по Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" -msgstr "" +msgstr "Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" -msgstr "" +msgstr "Розкидання по Z" #. ~ "absvalue" is a noise parameter flag. #. It is short for "absolute value". @@ -423,7 +423,7 @@ msgstr "Стандартно" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" -msgstr "" +msgstr "полегшений" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" @@ -1450,11 +1450,11 @@ msgstr "OEM Clear" #: src/client/keycode.cpp msgid "Page down" -msgstr "" +msgstr "Сторінка вниз" #: src/client/keycode.cpp msgid "Page up" -msgstr "" +msgstr "Сторінка вгору" #: src/client/keycode.cpp msgid "Pause" From d69d6fe0039c171a01789d47c30eb7779e41138b Mon Sep 17 00:00:00 2001 From: Uko Koknevics Date: Tue, 2 Jun 2020 13:05:41 +0000 Subject: [PATCH 324/424] Added translation using Weblate (Latvian) --- po/lv/minetest.po | 6035 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 6035 insertions(+) create mode 100644 po/lv/minetest.po diff --git a/po/lv/minetest.po b/po/lv/minetest.po new file mode 100644 index 000000000..2f40a9654 --- /dev/null +++ b/po/lv/minetest.po @@ -0,0 +1,6035 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the minetest package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: minetest\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "You died" +msgstr "" + +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "Respawn" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "The server has requested a reconnect:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Reconnect" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Main menu" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occurred in a Lua script:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occurred:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Ok" +msgstr "" + +#: builtin/mainmenu/common.lua src/client/game.cpp +msgid "Loading..." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Try reenabling public serverlist and check your internet connection." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server supports protocol versions between $1 and $2. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server enforces protocol version $1. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We support protocol versions between version $1 and $2." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We only support protocol version $1." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Protocol version mismatch. " +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "World:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No modpack description provided." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No game description provided." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Mod:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No (optional) dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No hard dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Optional dependencies:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Dependencies:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No optional dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp +msgid "Save" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_delete_content.lua +#: builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp +#: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp +#: src/gui/guiPasswordChange.cpp +msgid "Cancel" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable modpack" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable modpack" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable all" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable all" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "" +"Failed to enable mod \"$1\" as it contains disallowed characters. Only " +"characters [a-z0-9_] are allowed." +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "All packages" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Texture packs" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Failed to download $1" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Downloading and installing $1, please wait..." +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Back" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Install" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Update" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Uninstall" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua +msgid "Search" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Back to Main Menu" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No results" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No packages could be retrieved" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "World name" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Seed" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Game" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Create" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "You have no games installed." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download one from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Warning: The minimal development test is meant for developers." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download a game, such as Minetest Game, from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "A world named \"$1\" already exists" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "No game selected" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "Are you sure you want to delete \"$1\"?" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua +#: src/client/keycode.cpp +msgid "Delete" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "pkgmgr: failed to delete \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "pkgmgr: invalid path \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_world.lua +msgid "Delete World \"$1\"?" +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Accept" +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "" +"This modpack has an explicit name given in its modpack.conf which will " +"override any renaming here." +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Rename Modpack:" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Offset" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Scale" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "2D Noise" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Octaves" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Persistance" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Lacunarity" +msgstr "" + +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "defaults" +msgstr "" + +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "eased" +msgstr "" + +#. ~ "absvalue" is a noise parameter flag. +#. It is short for "absolute value". +#. It can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "absvalue" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be at least $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must not be larger than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select directory" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select file" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "$1 (Enabled)" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a $1 as a texture pack" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Failed to install $1 to $2" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to find a valid mod or modpack" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a modpack as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install Mod: Unable to find suitable folder name for modpack $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a mod as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install Mod: Unable to find real mod name for: $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a game as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install: file: \"$1\"" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install: Unsupported file type \"$1\" or broken archive" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "$1 mods" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Installed Packages:" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Browse online content" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "No package description available" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Rename" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "No dependencies." +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Disable Texture Pack" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Use Texture Pack" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Information:" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Uninstall Package" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Credits" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Active Contributors" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Contributors" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Configure" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "New" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Select World:" +msgstr "" + +#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative Mode" +msgstr "" + +#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +msgid "Enable Damage" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Host Server" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Host Game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Announce Server" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Name/Password" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Bind Address" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Port" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Server Port" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Play Game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "No world created or selected!" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Start Game" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Address / Port" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Connect" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Ping" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative mode" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Damage enabled" +msgstr "" + +#. ~ PvP = Player versus Player +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "PvP enabled" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Join Game" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Simple Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Fancy Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Outlining" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "None" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "2x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "3D Clouds" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Connected Glass" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Screen:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Autosave Screen Size" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Shaders (unavailable)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Reset singleplayer world" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/client/game.cpp +msgid "Change Keys" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "All Settings" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold: (px)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Generate Normal Maps" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Liquids" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Settings" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Start Singleplayer" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Config mods" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Main" +msgstr "" + +#: src/client/client.cpp +msgid "Connection timed out." +msgstr "" + +#: src/client/client.cpp +msgid "Loading textures..." +msgstr "" + +#: src/client/client.cpp +msgid "Rebuilding shaders..." +msgstr "" + +#: src/client/client.cpp +msgid "Initializing nodes..." +msgstr "" + +#: src/client/client.cpp +msgid "Initializing nodes" +msgstr "" + +#: src/client/client.cpp +msgid "Done!" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Main Menu" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Player name too long." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Connection error (timed out?)" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided password file failed to open: " +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Please choose a name!" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "No world selected and no address provided. Nothing to do." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided world path doesn't exist: " +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Could not find or load game \"" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Invalid gamespec." +msgstr "" + +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. +#: src/client/fontengine.cpp +msgid "needs_fallback_font" +msgstr "" + +#: src/client/game.cpp +msgid "Shutting down..." +msgstr "" + +#: src/client/game.cpp +msgid "Creating server..." +msgstr "" + +#: src/client/game.cpp +msgid "Creating client..." +msgstr "" + +#: src/client/game.cpp +msgid "Resolving address..." +msgstr "" + +#: src/client/game.cpp +msgid "Connecting to server..." +msgstr "" + +#: src/client/game.cpp +msgid "Item definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "Node definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "Media..." +msgstr "" + +#: src/client/game.cpp +msgid "KiB/s" +msgstr "" + +#: src/client/game.cpp +msgid "MiB/s" +msgstr "" + +#: src/client/game.cpp +msgid "Client side scripting is disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Sound muted" +msgstr "" + +#: src/client/game.cpp +msgid "Sound unmuted" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Volume changed to %d%%" +msgstr "" + +#: src/client/game.cpp src/gui/modalMenu.cpp +msgid "ok" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode enabled (note: no 'fly' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Pitch move mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Pitch move mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode enabled (note: no 'fast' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode enabled (note: no 'noclip' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Cinematic mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Cinematic mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Automatic forward enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Automatic forward disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x1" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x2" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x4" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x1" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x2" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x4" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap currently disabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "Fog disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fog enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info shown" +msgstr "" + +#: src/client/game.cpp +msgid "Profiler graph shown" +msgstr "" + +#: src/client/game.cpp +msgid "Wireframe shown" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info, profiler graph, and wireframe hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info and profiler graph hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Camera update disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Camera update enabled" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at maximum: %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at minimum: %d" +msgstr "" + +#: src/client/game.cpp +msgid "Enabled unlimited viewing range" +msgstr "" + +#: src/client/game.cpp +msgid "Disabled unlimited viewing range" +msgstr "" + +#: src/client/game.cpp +msgid "Zoom currently disabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "" +"Default Controls:\n" +"No menu visible:\n" +"- single tap: button activate\n" +"- double tap: place/use\n" +"- slide finger: look around\n" +"Menu/Inventory visible:\n" +"- double tap (outside):\n" +" -->close\n" +"- touch stack, touch slot:\n" +" --> move stack\n" +"- touch&drag, tap 2nd finger\n" +" --> place single item to slot\n" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "" +"Controls:\n" +"- %s: move forwards\n" +"- %s: move backwards\n" +"- %s: move left\n" +"- %s: move right\n" +"- %s: jump/climb\n" +"- %s: sneak/go down\n" +"- %s: drop item\n" +"- %s: inventory\n" +"- Mouse: turn/look\n" +"- Mouse left: dig/punch\n" +"- Mouse right: place/use\n" +"- Mouse wheel: select item\n" +"- %s: chat\n" +msgstr "" + +#: src/client/game.cpp +msgid "Continue" +msgstr "" + +#: src/client/game.cpp +msgid "Change Password" +msgstr "" + +#: src/client/game.cpp +msgid "Game paused" +msgstr "" + +#: src/client/game.cpp +msgid "Sound Volume" +msgstr "" + +#: src/client/game.cpp +msgid "Exit to Menu" +msgstr "" + +#: src/client/game.cpp +msgid "Exit to OS" +msgstr "" + +#: src/client/game.cpp +msgid "Game info:" +msgstr "" + +#: src/client/game.cpp +msgid "- Mode: " +msgstr "" + +#: src/client/game.cpp +msgid "Remote server" +msgstr "" + +#: src/client/game.cpp +msgid "- Address: " +msgstr "" + +#: src/client/game.cpp +msgid "Hosting server" +msgstr "" + +#: src/client/game.cpp +msgid "- Port: " +msgstr "" + +#: src/client/game.cpp +msgid "Singleplayer" +msgstr "" + +#: src/client/game.cpp +msgid "On" +msgstr "" + +#: src/client/game.cpp +msgid "Off" +msgstr "" + +#: src/client/game.cpp +msgid "- Damage: " +msgstr "" + +#: src/client/game.cpp +msgid "- Creative Mode: " +msgstr "" + +#. ~ PvP = Player versus Player +#: src/client/game.cpp +msgid "- PvP: " +msgstr "" + +#: src/client/game.cpp +msgid "- Public: " +msgstr "" + +#: src/client/game.cpp +msgid "- Server Name: " +msgstr "" + +#: src/client/game.cpp +msgid "" +"\n" +"Check debug.txt for details." +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat shown" +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat hidden" +msgstr "" + +#: src/client/gameui.cpp +msgid "HUD shown" +msgstr "" + +#: src/client/gameui.cpp +msgid "HUD hidden" +msgstr "" + +#: src/client/gameui.cpp +#, c-format +msgid "Profiler shown (page %d of %d)" +msgstr "" + +#: src/client/gameui.cpp +msgid "Profiler hidden" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "Middle Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "X Button 1" +msgstr "" + +#: src/client/keycode.cpp +msgid "X Button 2" +msgstr "" + +#: src/client/keycode.cpp +msgid "Backspace" +msgstr "" + +#: src/client/keycode.cpp +msgid "Tab" +msgstr "" + +#: src/client/keycode.cpp +msgid "Clear" +msgstr "" + +#: src/client/keycode.cpp +msgid "Return" +msgstr "" + +#: src/client/keycode.cpp +msgid "Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Control" +msgstr "" + +#. ~ Key name, common on Windows keyboards +#: src/client/keycode.cpp +msgid "Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "Pause" +msgstr "" + +#: src/client/keycode.cpp +msgid "Caps Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Space" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page up" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page down" +msgstr "" + +#: src/client/keycode.cpp +msgid "End" +msgstr "" + +#: src/client/keycode.cpp +msgid "Home" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Left" +msgstr "" + +#: src/client/keycode.cpp +msgid "Up" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Right" +msgstr "" + +#: src/client/keycode.cpp +msgid "Down" +msgstr "" + +#. ~ Key name +#: src/client/keycode.cpp +msgid "Select" +msgstr "" + +#. ~ "Print screen" key +#: src/client/keycode.cpp +msgid "Print" +msgstr "" + +#: src/client/keycode.cpp +msgid "Execute" +msgstr "" + +#: src/client/keycode.cpp +msgid "Snapshot" +msgstr "" + +#: src/client/keycode.cpp +msgid "Insert" +msgstr "" + +#: src/client/keycode.cpp +msgid "Help" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 0" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 2" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 3" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 4" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 5" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 6" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 7" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 8" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 9" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad *" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad +" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad ." +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad -" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad /" +msgstr "" + +#: src/client/keycode.cpp +msgid "Num Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Scroll Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Control" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Control" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Escape" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Convert" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Nonconvert" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Accept" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Mode Change" +msgstr "" + +#: src/client/keycode.cpp +msgid "Apps" +msgstr "" + +#: src/client/keycode.cpp +msgid "Sleep" +msgstr "" + +#: src/client/keycode.cpp +msgid "Erase EOF" +msgstr "" + +#: src/client/keycode.cpp +msgid "Play" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Zoom" +msgstr "" + +#: src/client/keycode.cpp +msgid "OEM Clear" +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp +#, c-format +msgid "" +"You are about to join this server with the name \"%s\" for the first time.\n" +"If you proceed, a new account using your credentials will be created on this " +"server.\n" +"Please retype your password and click 'Register and Join' to confirm account " +"creation, or click 'Cancel' to abort." +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp +msgid "Register and Join" +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp +msgid "Passwords do not match!" +msgstr "" + +#: src/gui/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "\"Special\" = climb down" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Double tap \"jump\" to toggle fly" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Automatic jumping" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Key already in use" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "press key" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Forward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Backward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Special" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Jump" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Sneak" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Drop" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inventory" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Prev. item" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Next item" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Change camera" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle minimap" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fly" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle pitchmove" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fast" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle noclip" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Mute" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. volume" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. volume" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Autoforward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Chat" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Screenshot" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Range select" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. range" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. range" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Console" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Command" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Local command" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle HUD" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle chat log" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fog" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Old Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "New Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Confirm Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Change" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Sound Volume: " +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Exit" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Muted" +msgstr "" + +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. +#: src/gui/modalMenu.cpp +msgid "Enter " +msgstr "" + +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). +#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp +msgid "LANG_CODE" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Build inside player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place blocks at the position (feet + eye level) where " +"you stand.\n" +"This is helpful when working with nodeboxes in small areas." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Flying" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Player is able to fly without being affected by gravity.\n" +"This requires the \"fly\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, makes move directions relative to the player's pitch when flying " +"or swimming." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast movement" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Fast movement (via the \"special\" key).\n" +"This requires the \"fast\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled together with fly mode, player is able to fly through solid " +"nodes.\n" +"This requires the \"noclip\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths camera when looking around. Also called look or mouse smoothing.\n" +"Useful for recording videos." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera in cinematic mode. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert vertical mouse movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity multiplier." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key for climbing/descending" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, \"special\" key instead of \"sneak\" key is used for climbing " +"down and\n" +"descending." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double tap jump for fly" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double-tapping the jump key toggles fly mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Always fly and fast" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If disabled, \"special\" key is used to fly fast if both fly and fast mode " +"are\n" +"enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rightclick repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated right clicks when holding the " +"right\n" +"mouse button." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically jump up single-node obstacles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Safe digging and placing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prevent digging and placing from repeating when holding the mouse buttons.\n" +"Enable this when you dig or place too often by accident." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Random input" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random user input (only used for testing)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Continuous forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Continuous forward movement, toggled by autoforward key.\n" +"Press the autoforward key again or the backwards movement to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touch screen threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The length in pixels it takes for touch screen interaction to start." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed virtual joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(Android) Fixes the position of virtual joystick.\n" +"If disabled, virtual joystick will center to first-touch's position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Virtual joystick triggers aux button" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(Android) Use virtual joystick to trigger \"aux\" button.\n" +"If enabled, virtual joystick will also tap \"aux\" button when out of main " +"circle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable joysticks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick ID" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The identifier of the joystick to use" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The type of joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick button repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated events\n" +"when holding down a joystick button combination." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick frustum sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The sensitivity of the joystick axes for moving the\n" +"ingame view frustum around." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player forward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Backward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player backward.\n" +"Will also disable autoforward, when active.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Left key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player left.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Right key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player right.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for jumping.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneak key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for sneaking.\n" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the inventory.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving fast in fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Command key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type local commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Range select key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling unlimited view range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fly key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling flying.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling pitch move mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling noclip mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar next key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the next item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar previous key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the previous item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for muting the game.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inc. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dec. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatic forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling autoforward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling cinematic mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling display of minimap.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for taking screenshots.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Drop item key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for dropping the currently selected item.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View zoom key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key to use view zoom when possible.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 1 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the first hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 2 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the second hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 3 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the third hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 4 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fourth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 5 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fifth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 6 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the sixth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 7 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the seventh hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 8 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the eighth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 9 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the ninth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 10 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the tenth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 11 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 11th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 12 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 12th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 13 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 13th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 14 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 14th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 15 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 15th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 16 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 16th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 17 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 17th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 18 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 18th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 19 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 19th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 20 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 20th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 21 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 21st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 22 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 22nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 23 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 23rd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 24 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 24th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 25 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 25th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 26 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 26th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 27 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 27th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 28 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 28th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 29 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 29th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 30 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 30th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 31 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 31st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 32 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 32nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the HUD.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of chat.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large chat console key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the large chat console.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of fog.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera update toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the camera update. Only used for development\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug info toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of debug info.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the profiler. Used for development.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for switching between first- and third-person camera.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range increase key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range decrease key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Graphics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-Game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable vertex buffer objects.\n" +"This should greatly improve graphics performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to fog out the end of the visible area." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces, if defined special_tiles are used\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect glass" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connects glass if supported by node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooth lighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable smooth lighting with simple ambient occlusion.\n" +"Disable for speed or for different looks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds are a client side effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use 3D cloud look instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Digging particles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Adds particles when digging a node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use mip mapping to scale textures. May slightly increase performance,\n" +"especially when using a high resolution texture pack.\n" +"Gamma correct downscaling is not supported." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anisotropic filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use anisotropic filtering when viewing at textures from an angle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use trilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clean transparent textures" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Filtered textures can blend RGB values with fully-transparent neighbors,\n" +"which PNG optimizers usually discard, sometimes resulting in a dark or\n" +"light edge to transparent textures. Apply this filter to clean that up\n" +"at texture load time." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum texture size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" +"can be blurred, so automatically upscale them with nearest-neighbor\n" +"interpolation to preserve crisp pixels. This sets the minimum texture size\n" +"for the upscaled textures; higher values look sharper, but require more\n" +"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n" +"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" +"enabled.\n" +"This is also used as the base node texture size for world-aligned\n" +"texture autoscaling." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FSAA" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Experimental option, might cause visible spaces between blocks\n" +"when set to higher number than 0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Undersampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Undersampling is similar to using a lower screen resolution, but it applies\n" +"to the game world only, keeping the GUI intact.\n" +"It should give a significant performance boost at the cost of less detailed " +"image.\n" +"Higher values result in a less detailed image." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shaders allow advanced visual effects and may increase performance on some " +"video\n" +"cards.\n" +"This only works with the OpenGL video backend." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shader path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to shader directory. If no path is defined, default location will be " +"used." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables Hable's 'Uncharted 2' filmic tone mapping.\n" +"Simulates the tone curve of photographic film and how this approximates the\n" +"appearance of high dynamic range images. Mid-range contrast is slightly\n" +"enhanced, highlights and shadows are gradually compressed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bumpmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables bumpmapping for textures. Normalmaps need to be supplied by the " +"texture pack\n" +"or need to be auto-generated.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Generate normalmaps" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables on the fly normalmap generation (Emboss effect).\n" +"Requires bumpmapping to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of generated normalmaps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps sampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Defines sampling step of texture.\n" +"A higher value results in smoother normal maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables parallax occlusion mapping.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of parallax." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of parallax occlusion iterations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall scale of parallax occlusion effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion bias" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall bias of parallax occlusion effect, usually scale/2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving Nodes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving liquids (like water).\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The maximum height of the surface of waving liquids.\n" +"4.0 = Wave height is two nodes.\n" +"0.0 = Wave doesn't move at all.\n" +"Default is 1.0 (1/2 node).\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wavelength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of liquid waves.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How fast liquid waves will move. Higher = faster.\n" +"If negative, liquid waves will move backwards.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving leaves" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving leaves.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving plants" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving plants.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Advanced" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Arm inertia" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Arm inertia, gives a more realistic movement of\n" +"the arm when the camera moves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If FPS would go higher than this, limit it by sleeping\n" +"to not waste CPU power for no benefit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS in pause menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS when game is paused." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pause on lost window focus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Open the pause menu when the window's focus is lost. Does not pause if a " +"formspec is\n" +"open." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Viewing range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View distance in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Near plane" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" +"Increasing can reduce artifacting on weaker GPUs.\n" +"0.1 = Default, 0.25 = Good value for weaker tablets." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autosave screen size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save window size automatically when modified." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen BPP" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bits per pixel (aka color depth) in fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VSync" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical screen synchronization." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view in degrees." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Alters the light curve by applying 'gamma correction' to it.\n" +"Higher values make middle and lower light levels brighter.\n" +"Value '1.0' leaves the light curve unaltered.\n" +"This only has significant effect on daylight and artificial\n" +"light, it has very little effect on natural night light." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve low gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at minimum light level.\n" +"Controls the contrast of the lowest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve high gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at maximum light level.\n" +"Controls the contrast of the highest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Strength of light curve boost.\n" +"The 3 'boost' parameters define a range of the light\n" +"curve that is boosted in brightness." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost center" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Center of light curve boost range.\n" +"Where 0.0 is minimum light level, 1.0 is maximum light level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost spread" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Spread of light curve boost range.\n" +"Controls the width of the range to be boosted.\n" +"Standard deviation of the light curve boost Gaussian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to texture directory. All textures are first searched from here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Video driver" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The rendering back-end for Irrlicht.\n" +"A restart is required after changing this.\n" +"Note: On Android, stick with OGLES1 if unsure! App may fail to start " +"otherwise.\n" +"On other platforms, OpenGL is recommended, and it’s the only driver with\n" +"shader support currently." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cloud radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Radius of cloud area stated in number of 64 node cloud squares.\n" +"Values larger than 26 will start to produce sharp cutoffs at cloud area " +"corners." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable view bobbing and amount of view bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fall bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Multiplier for fall bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D support.\n" +"Currently supported:\n" +"- none: no 3d output.\n" +"- anaglyph: cyan/magenta color 3d.\n" +"- interlaced: odd/even line based polarisation screen support.\n" +"- topbottom: split screen top/bottom.\n" +"- sidebyside: split screen side by side.\n" +"- crossview: Cross-eyed 3d\n" +"- pageflip: quadbuffer based 3d.\n" +"Note that the interlaced mode requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box border color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selection box lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Recent Chat Messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of recent chat messages to show" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desynchronize block animation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether node texture animations should be desynchronized per mapblock." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum hotbar width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum proportion of current window to be used for hotbar.\n" +"Useful if there's something to be displayed right or left of hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD scale factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modifies the size of the hudbar elements." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mesh cache" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables caching of facedir rotated meshes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generation delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Delay between mesh updates on the client in ms. Increasing this will slow\n" +"down the rate of mesh updates, thus reducing jitter on slower clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generator's MapBlock cache size in MB" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of the MapBlock cache of the mesh generator. Increasing this will\n" +"increase the cache hit %, reducing the data being copied from the main\n" +"thread, thus reducing jitter." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables minimap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Round minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shape of the minimap. Enabled = round, disabled = square." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"True = 256\n" +"False = 128\n" +"Usable to make minimap smoother on slower machines." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Colored fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ambient occlusion gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The strength (darkness) of node ambient-occlusion shading.\n" +"Lower is darker, Higher is lighter. The valid range of values for this\n" +"setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" +"set to the nearest valid value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog start" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fraction of the visible distance at which fog starts to be rendered" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Opaque liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes all liquids opaque" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World-aligned textures mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Textures on a node may be aligned either to the node or to the world.\n" +"The former mode suits better things like machines, furniture, etc., while\n" +"the latter makes stairs and microblocks fit surroundings better.\n" +"However, as this possibility is new, thus may not be used by older servers,\n" +"this option allows enforcing it for certain node types. Note though that\n" +"that is considered EXPERIMENTAL and may not work properly." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autoscaling mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World-aligned textures may be scaled to span several nodes. However,\n" +"the server may not send the scale you want, especially if you use\n" +"a specially-designed texture pack; with this option, the client tries\n" +"to determine the scale automatically basing on the texture size.\n" +"See also texture_min_size.\n" +"Warning: This option is EXPERIMENTAL!" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Menus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Scale GUI by a user specified value.\n" +"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" +"This will smooth over some of the rough edges, and blend\n" +"pixels when scaling down, at the cost of blurring some\n" +"edge pixels when images are scaled by non-integer sizes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter is true, all GUI images need to be\n" +"filtered in software, but some images are generated directly\n" +"to hardware (e.g. render-to-texture for nodes in inventory)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter txr2img" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter_txr2img is true, copy those images\n" +"from hardware to software for scaling. When false, fall back\n" +"to the old scaling method, for video drivers that don't\n" +"properly support downloading textures back from hardware." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay showing tooltips, stated in milliseconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Append item name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Append item name to tooltip." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FreeType fonts" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether FreeType fonts are used, requires FreeType support to be compiled " +"in.\n" +"If disabled, bitmap and XML vectors fonts are used instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font bold by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font italic by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shadow offset (in pixels) of the default font. If 0, then shadow will not be " +"drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the default font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Regular font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the default font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"The fallback font will be used if the font cannot be loaded." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the monospace font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the monospace font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font is used for e.g. the console and profiler screen." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the fallback font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " +"be drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path of the fallback font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font will be used for certain languages or if the default font is " +"unavailable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot folder" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to save screenshots at." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "DPI" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " +"screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable console window" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Windows systems only: Start Minetest with the command line window in the " +"background.\n" +"Contains the same information as the file debug.txt (default name)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables the sound system.\n" +"If disabled, this completely disables all sounds everywhere and the in-game\n" +"sound controls will be non-functional.\n" +"Changing this setting requires a restart." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volume" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Volume of all sounds.\n" +"Requires the sound system to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to mute sounds. You can unmute sounds at any time, unless the\n" +"sound system is disabled (enable_sound=false).\n" +"In-game, you can toggle the mute state with the mute key or by using the\n" +"pause menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Network" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Address to connect to.\n" +"Leave this blank to start a local server.\n" +"Note that the address field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Port to connect to (UDP).\n" +"Note that the port field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Saving map received from server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save the map received by the client on disk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect to external media server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable usage of remote media server (if provided by server).\n" +"Remote servers offer a significantly faster way to download media (e.g. " +"textures)\n" +"when connecting to the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client modding" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable Lua modding support on client.\n" +"This support is experimental and API can change." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "URL to the server list displayed in the Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist file" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"File in client/serverlist/ that contains your favorite servers displayed in " +"the\n" +"Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum size of the out chat queue" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum size of the out chat queue.\n" +"0 to disable queueing and -1 to make the queue size unlimited." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable register confirmation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable register confirmation when connecting to server.\n" +"If disabled, new account will be registered automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock unload timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Timeout for client to remove unused map data from memory." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of mapblocks for client to be kept in memory.\n" +"Set to -1 for unlimited amount." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show debug info" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server / Singleplayer" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the server, to be displayed when players join and in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server description" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Description of server, to be displayed when players join and in the " +"serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Domain name of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Homepage of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically report to the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce to this serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strip color codes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Remove color codes from incoming chat messages\n" +"Use this to stop players from being able to use color in their messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Network port to listen (UDP).\n" +"This value will be overridden when starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bind address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The network interface that the server listens on." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strict protocol checking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable to disallow old clients from connecting.\n" +"Older clients are compatible in the sense that they will not crash when " +"connecting\n" +"to new servers, but they may not support all new features that you are " +"expecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies URL from which client fetches media instead of using UDP.\n" +"$filename should be accessible from $remote_media$filename via cURL\n" +"(obviously, remote_media should end with a slash).\n" +"Files that are not present will be fetched the usual way." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6 server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable/disable running an IPv6 server.\n" +"Ignored if bind_address is set.\n" +"Needs enable_ipv6 to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum simultaneous block sends per client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks that are simultaneously sent per client.\n" +"The maximum total count is calculated dynamically:\n" +"max_total = ceil((#clients + max_users) * per_client / 4)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay in sending blocks after building" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"To reduce lag, block transfers are slowed down when a player is building " +"something.\n" +"This determines how long they are slowed down after placing or removing a " +"node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. packets per iteration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step, if you have a slow connection\n" +"try reducing it, but don't reduce it to a number below double of targeted\n" +"client number." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default game when creating a new world.\n" +"This will be overridden when creating a world from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day displayed to players connecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum users" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of players that can be connected simultaneously." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map directory" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World directory (everything in the world is stored here).\n" +"Not needed if starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Item entity TTL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Time in seconds for item entity (dropped items) to live.\n" +"Setting it to -1 disables the feature." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Damage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable players getting damage and dying." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Creative" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable creative mode for new created maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed map seed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"A chosen map seed for a new map, leave empty for random.\n" +"Will be overridden when creating a new world in the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default password" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "New users need to input this password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The privileges that new users automatically get.\n" +"See /privs in game for a full list on your server and mod configuration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unlimited player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether players are shown to clients without any range limit.\n" +"Deprecated, use the setting player_transfer_distance instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player versus player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to allow players to damage and kill each other." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mod channels" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod channels support." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Static spawnpoint" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If this is set, players will always (re)spawn at the given position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disallow empty passwords" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, new players cannot join with an empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable anticheat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, disable cheat prevention in multiplayer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rollback recording" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, actions are recorded for rollback.\n" +"This option is only read when server starts." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Format of player chat messages. The following strings are valid " +"placeholders:\n" +"@name, @message, @timestamp (optional)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shutdown message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server shuts down." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crash message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server crashes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ask to reconnect after crash" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to ask clients to reconnect after a (Lua) crash.\n" +"Set this to true if your server is set up to restart automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active object send range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far clients know about objects, stated in mapblocks (16 nodes).\n" +"\n" +"Setting this larger than active_block_range will also cause the server\n" +"to maintain active objects up to this distance in the direction the\n" +"player is looking. (This can avoid mobs suddenly disappearing from view)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The radius of the volume of blocks around every player that is subject to " +"the\n" +"active block stuff, stated in mapblocks (16 nodes).\n" +"In active blocks objects are loaded and ABMs run.\n" +"This is also the minimum range in which active objects (mobs) are " +"maintained.\n" +"This should be configured together with active_object_range." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block send distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are sent to clients, stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum forceloaded blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of forceloaded mapblocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time send interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of sending time of day to clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls length of day/night cycle.\n" +"Examples:\n" +"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World start time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time of day when a new world is started, in millihours (0-23999)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map save interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of saving important changes in the world, stated in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message max length" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set the maximum character length of a chat message sent by clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message count limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amount of messages a player may send per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message kick threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Kick players who sent more than X messages per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Physics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration on ground or when climbing,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration in air" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal acceleration in air when jumping or falling,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration in fast mode,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking and flying speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking, flying and climbing speed in fast mode, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Climbing speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical climbing speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Initial vertical speed when jumping, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease this to increase liquid resistance to movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum liquid resistance. Controls deceleration when entering liquid at\n" +"high speed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid sinking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls sinking speed in liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gravity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration of gravity, in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Deprecated Lua API handling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Handling for deprecated Lua API calls:\n" +"- legacy: (try to) mimic old behaviour (default for release).\n" +"- log: mimic and log backtrace of deprecated call (default for debug).\n" +"- error: abort on usage of deprecated call (suggested for mod developers)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. clearobjects extra blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of extra blocks that can be loaded by /clearobjects at once.\n" +"This is a trade-off between sqlite transaction overhead and\n" +"memory consumption (4096=100MB, as a rule of thumb)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unload unused server data" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How much the server will wait before unloading unused mapblocks.\n" +"Higher value is smoother, but will use more RAM." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum objects per block" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of statically stored objects in a block." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Synchronous SQLite" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dedicated server step" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick and the interval at which objects are generally " +"updated over\n" +"network." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between active block management cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ABM interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between Active Block Modifier (ABM) execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ignore world errors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, invalid world data won't cause the server to shut down.\n" +"Only enable this if you know what you are doing." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid loop max" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max liquids processed per step." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid queue purge time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time (in seconds) that the liquids queue may grow beyond processing\n" +"capacity until an attempt is made to decrease its size by dumping old queue\n" +"items. A value of 0 disables the functionality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update tick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update interval in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block send optimize distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"At this distance the server will aggressively optimize which blocks are sent " +"to\n" +"clients.\n" +"Small values potentially improve performance a lot, at the expense of " +"visible\n" +"rendering glitches (some blocks will not be rendered under water and in " +"caves,\n" +"as well as sometimes on land).\n" +"Setting this to a value greater than max_block_send_distance disables this\n" +"optimization.\n" +"Stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server side occlusion culling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled the server will perform map block occlusion culling based on\n" +"on the eye position of the player. This can reduce the number of blocks\n" +"sent to the client 50-80%. The client will not longer receive most " +"invisible\n" +"so that the utility of noclip mode is reduced." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side modding restrictions" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Restricts the access of certain client-side functions on servers.\n" +"Combine the byteflags below to restrict client-side features, or set to 0\n" +"for no restrictions:\n" +"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n" +"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n" +"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n" +"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n" +"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n" +"csm_restriction_noderange)\n" +"READ_PLAYERINFO: 32 (disable get_player_names call client-side)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side node lookup range restriction" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the CSM restriction for node range is enabled, get_node calls are " +"limited\n" +"to this distance from the player to the node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prevent mods from doing insecure things like running shell commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trusted mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of trusted mods that are allowed to access insecure\n" +"functions even when mod security is on (via request_insecure_environment())." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HTTP mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Load the game profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Load the game profiler to collect game profiling data.\n" +"Provides a /profiler command to access the compiled profile.\n" +"Useful for mod developers and server operators." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default report format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The default format in which profiles are being saved,\n" +"when calling `/profiler save [format]` without format." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Report path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The file path relative to your worldpath in which profiles will be saved to." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrumentation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Entity methods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument the methods of entities on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Active Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Loading Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Loading Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chatcommands" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument chatcommands on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Global callbacks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument global callback functions on registration.\n" +"(anything you pass to a minetest.register_*() function)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Builtin" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument builtin.\n" +"This is usually only needed by core/builtin contributors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Have the profiler instrument itself:\n" +"* Instrument an empty function.\n" +"This estimates the overhead, that instrumentation is adding (+1 function " +"call).\n" +"* Instrument the sampler being used to update the statistics." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client and Server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the player.\n" +"When running a server, clients connecting with this name are admins.\n" +"When starting from the main menu, this is overridden." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Language" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the language. Leave empty to use the system language.\n" +"A restart is required after changing this." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Level of logging to be written to debug.txt:\n" +"- (no logging)\n" +"- none (messages with no level)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log file size threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the file size of debug.txt exceeds the number of megabytes specified in\n" +"this setting when it is opened, the file is moved to debug.txt.1,\n" +"deleting an older debug.txt.1 if it exists.\n" +"debug.txt is only moved if this setting is positive." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable IPv6 support (for both client and server).\n" +"Required for IPv6 connections to work at all." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default timeout for cURL, stated in milliseconds.\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL parallel limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limits number of parallel HTTP requests. Affects:\n" +"- Media fetch if server uses remote_media setting.\n" +"- Serverlist download and server announcement.\n" +"- Downloads performed by main menu (e.g. mod manager).\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum time in ms a file download (e.g. a mod download) may take." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "High-precision FPU" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Changes the main menu UI:\n" +"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, " +"etc.\n" +"- Simple: One singleplayer world, no game or texture pack choosers. May " +"be\n" +"necessary for smaller screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu script" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Replaces the default main menu with a custom one." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Engine profiling data print interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Print the engine's profiling data in regular intervals (in seconds).\n" +"0 = disable. Useful for developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of map generator to be used when creating a new world.\n" +"Creating a world in the main menu will override this.\n" +"Current mapgens in a highly unstable state:\n" +"- The optional floatlands of v7 (disabled by default)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water surface level of the world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block generate distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are generated for clients, stated in mapblocks (16 " +"nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" +"Only mapchunks completely within the mapgen limit are generated.\n" +"Value is stored per-world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome API temperature and humidity noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Temperature variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale temperature variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale humidity variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen v5." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls width of tunnels, a smaller value creates wider tunnels.\n" +"Value >= 10.0 completely disables generation of tunnels and avoids the\n" +"intensive noise calculations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave proportion flooded" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Proportion of large caves that contain liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of cavern upper limit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern taper" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-distance over which caverns expand to full size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines full size of caverns, smaller values create larger caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of biome filler depth." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Factor noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Variation of terrain vertical scale.\n" +"When noise is < -0.55 terrain is near-flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of average terrain surface." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Second of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise that determines number of dungeons per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"The 'snowbiomes' flag enables the new 5 biome system.\n" +"When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" +"the 'jungles' flag is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desert noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Deserts occur when np_biome exceeds this value.\n" +"When the 'snowbiomes' flag is enabled, this is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sandy beaches occur when np_beach exceeds this value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain base noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of lower terrain and seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain higher noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of higher terrain that creates cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Steepness noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height select noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mud noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies depth of biome surface nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas with sandy beaches." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of number of caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines tree areas and tree density." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Apple trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas where trees have apples." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"'ridges' enables the rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain zero level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y of mountain density gradient zero level. Used to shift mountains " +"vertically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain alternative noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain persistence noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Varies roughness of terrain.\n" +"Defines the 'persistence' value for terrain_base and terrain_alt noises." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain and steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of maximum mountain height (in nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge underwater noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines large-scale river channel structure." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining mountain structure and height.\n" +"Also defines structure of floatland mountain terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining structure of river canyon walls." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen Carpathian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the base ground level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the depth of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River valley width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river valley." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Second of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness3 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Third of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness4 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fourth of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rolling hills spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of rolling hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of ridged mountain ranges." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of step mountain ranges." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rolling hill size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of rolling hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridged mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of ridged mountains." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of step mountains." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that locates the river valleys and channels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain variation noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Flat.\n" +"Occasional lakes and hills can be added to the flat world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines location and terrain of optional hills and lakes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Fractal.\n" +"'terrain' enables the generation of non-fractal terrain:\n" +"ocean, islands and underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fractal type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Selects one of 18 fractal types.\n" +"1 = 4D \"Roundy\" Mandelbrot set.\n" +"2 = 4D \"Roundy\" Julia set.\n" +"3 = 4D \"Squarry\" Mandelbrot set.\n" +"4 = 4D \"Squarry\" Julia set.\n" +"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" Julia set.\n" +"7 = 4D \"Variation\" Mandelbrot set.\n" +"8 = 4D \"Variation\" Julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n" +"11 = 3D \"Christmas Tree\" Mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" Julia set.\n" +"13 = 3D \"Mandelbulb\" Mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" Julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" Julia set.\n" +"17 = 4D \"Mandelbulb\" Mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" Julia set." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Increasing this increases the amount of fine detail, but also\n" +"increases processing load.\n" +"At iterations = 20 this mapgen has a similar load to mapgen V7." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) scale of fractal in nodes.\n" +"Actual fractal size will be 2 to 3 times larger.\n" +"These numbers can be made very large, the fractal does\n" +"not have to fit inside the world.\n" +"Increase these to 'zoom' into the detail of the fractal.\n" +"Default is for a vertically-squashed shape suitable for\n" +"an island, set all 3 numbers equal for the raw shape." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" +"Can be used to move a desired point to (0, 0) to create a\n" +"suitable spawn point, or to allow 'zooming in' on a desired\n" +"point by increasing 'scale'.\n" +"The default is tuned for a suitable spawn point for Mandelbrot\n" +"sets with default parameters, it may need altering in other\n" +"situations.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slice w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"W coordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"X component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Y component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Z component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"W component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Seabed noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill': Reduces heat with altitude.\n" +"'humid_rivers': Increases humidity around rivers.\n" +"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n" +"to become shallower and occasionally dry.\n" +"'altitude_dry': Reduces humidity with altitude." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Altitude chill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n" +"enabled. Also the vertical distance over which humidity drops by 10 if\n" +"'altitude_dry' is enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern upper limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How deep to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other biome filler node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base terrain height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n" +"WARNING!: There is no benefit, and there are several dangers, in\n" +"increasing this value above 5.\n" +"Reducing this value increases cave and dungeon density.\n" +"Altering this value is for special usage, leaving it unchanged is\n" +"recommended." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dump the mapgen debug information." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Absolute limit of emerge queues" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of blocks that can be queued for loading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Limit of emerge queues on disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be loaded from file.\n" +"Set to blank for an appropriate amount to be chosen automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Limit of emerge queues to generate" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be generated.\n" +"Set to blank for an appropriate amount to be chosen automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of emerge threads" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of emerge threads to use.\n" +"WARNING: Currently there are multiple bugs that may cause crashes when\n" +"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" +"strongly recommended this value is set to the default '1'.\n" +"Value 0:\n" +"- Automatic selection. The number of emerge threads will be\n" +"- 'number of processors - 2', with a lower limit of 1.\n" +"Any other value:\n" +"- Specifies the number of emerge threads, with a lower limit of 1.\n" +"WARNING: Increasing the number of emerge threads increases engine mapgen\n" +"speed, but this may harm game performance by interfering with other\n" +"processes, especially in singleplayer and/or when running Lua code in\n" +"'on_generated'. For many users the optimum setting may be '1'." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Online Content Repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The URL for the content repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB Flag Blacklist" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of flags to hide in the content repository.\n" +"\"nonfree\" can be used to hide packages which do not qualify as 'free " +"software',\n" +"as defined by the Free Software Foundation.\n" +"You can also specify content ratings.\n" +"These flags are independent from Minetest versions,\n" +"so see a full list at https://content.minetest.net/help/content_flags/" +msgstr "" From d7106c4d5fe72ef25a38b3a3d6f087ec2b018a5e Mon Sep 17 00:00:00 2001 From: Uko Koknevics Date: Tue, 2 Jun 2020 13:06:02 +0000 Subject: [PATCH 325/424] Translated using Weblate (Latvian) Currently translated at 31.8% (410 of 1288 strings) --- po/lv/minetest.po | 853 +++++++++++++++++++++++++--------------------- 1 file changed, 455 insertions(+), 398 deletions(-) diff --git a/po/lv/minetest.po b/po/lv/minetest.po index 2f40a9654..5fdacd659 100644 --- a/po/lv/minetest.po +++ b/po/lv/minetest.po @@ -8,114 +8,120 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2020-06-04 16:41+0000\n" +"Last-Translator: Uko Koknevics \n" +"Language-Team: Latvian \n" "Language: lv\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 == 0 || n % 100 >= 11 && n % 100 <= " +"19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" -msgstr "" +msgstr "Jūs nomirāt" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" -msgstr "" +msgstr "Atdzīvoties" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Serveris ir pieprasījis savienojuma atjaunošanu:" #: builtin/fstk/ui.lua msgid "Reconnect" -msgstr "" +msgstr "Atjaunot savienojumu" #: builtin/fstk/ui.lua msgid "Main menu" -msgstr "" +msgstr "Galvenā izvēlne" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" -msgstr "" +msgstr "Radās kļūme Lua skriptā:" #: builtin/fstk/ui.lua msgid "An error occurred:" -msgstr "" +msgstr "Radās kļūme:" #: builtin/fstk/ui.lua msgid "Ok" -msgstr "" +msgstr "Ok" #: builtin/mainmenu/common.lua src/client/game.cpp msgid "Loading..." -msgstr "" +msgstr "Ielāde..." #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +"Pamēģiniet atkārtoti ieslēgt publisko serveru sarakstu un pārbaudiet " +"interneta savienojumu." #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Serveris atbalsta protokola versijas starp $1 un $2. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Serveris pieprasa protokola versiju $1. " #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Mēs atbalstam protokola versijas starp $1 un $2." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Mēs atbalstam tikai protokola versiju $1." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Protokola versiju neatbilstība. " #: builtin/mainmenu/dlg_config_world.lua msgid "World:" -msgstr "" +msgstr "Pasaule:" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "" +msgstr "Nav atrasts modu komplekta apraksts." #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr "" +msgstr "Nav atrasts spēles apraksts." #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" -msgstr "" +msgstr "Mods:" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" -msgstr "" +msgstr "Nav (neobligāto) atkarību" #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" -msgstr "" +msgstr "Nav obligāto atkarību" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "" +msgstr "Neobligātās atkarības:" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Dependencies:" -msgstr "" +msgstr "Atkarības:" #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" -msgstr "" +msgstr "Nav neobligāto atkarību" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp msgid "Save" -msgstr "" +msgstr "Saglabāt" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_delete_content.lua @@ -125,217 +131,222 @@ msgstr "" #: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp #: src/gui/guiPasswordChange.cpp msgid "Cancel" -msgstr "" +msgstr "Atcelt" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "" +msgstr "Atspējot modu komplektu" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "" +msgstr "Iespējot modu komplektu" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" -msgstr "" +msgstr "iespējots" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" -msgstr "" +msgstr "Atspējot visus" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "" +msgstr "Iespējot visus" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" +"Neizdevās iespējot modu \"$1\", jo tas satur neatļautus simbolus. Tikai " +"sekojošie simboli ir atļauti: [a-z0-9_]." #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" -msgstr "" +msgstr "Visi papildinājumi" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Games" -msgstr "" +msgstr "Spēles" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Mods" -msgstr "" +msgstr "Modi" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" -msgstr "" +msgstr "Tekstūru komplekti" #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" -msgstr "" +msgstr "Neizdevās lejuplādēt $1" #: builtin/mainmenu/dlg_contentstore.lua msgid "Downloading and installing $1, please wait..." -msgstr "" +msgstr "Lejuplādējas un instalējas $1, lūdzu uzgaidiet..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Back" -msgstr "" +msgstr "Atpakaļ" #: builtin/mainmenu/dlg_contentstore.lua msgid "Install" -msgstr "" +msgstr "Instalēt" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update" -msgstr "" +msgstr "Atjaunot" #: builtin/mainmenu/dlg_contentstore.lua msgid "Uninstall" -msgstr "" +msgstr "Atinstalēt" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua msgid "Search" -msgstr "" +msgstr "Meklēt" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" -msgstr "" +msgstr "Atpakaļ uz Galveno Izvēlni" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" -msgstr "" +msgstr "Nav resultātu" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "" +msgstr "Nevarēja iegūt papildinājumus" #: builtin/mainmenu/dlg_create_world.lua msgid "World name" -msgstr "" +msgstr "Pasaules nosaukums" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Seed" -msgstr "" +msgstr "Sēkla" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "" +msgstr "Kartes ģenerators" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" -msgstr "" +msgstr "Spēle" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" -msgstr "" +msgstr "Izveidot" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no games installed." -msgstr "" +msgstr "Jums nav instalēta neviena spēle." #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "" +msgstr "Varat tās lejuplādēt no minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." msgstr "" +"Uzmanību: “Minimal development test” ir domāts priekš spēles izstrādātājiem." #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "" +msgstr "Lejuplādējiet spēles, kā piemēram, “Minetest Game”, no minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" -msgstr "" +msgstr "Pasaule ar nosaukumu “$1” jau eksistē" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" -msgstr "" +msgstr "Nav izvēlētas spēles" #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "" +msgstr "Vai Jūs esat pārliecināts, ka vēlaties izdzēst “$1”?" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua #: src/client/keycode.cpp msgid "Delete" -msgstr "" +msgstr "Izdzēst" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" -msgstr "" +msgstr "pkgmgr: neizdevās izdzēst “$1”" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" -msgstr "" +msgstr "pkgmgr: nepieejama atrašanās vieta “$1”" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" -msgstr "" +msgstr "Vai izdzēst pasauli “$1”?" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" -msgstr "" +msgstr "Piekrist" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" +"Šim modu komplektam ir noteikts nosaukums, kas uzdots failā modpack.conf, un " +"tas anulēs jebkādu pārsaukšanu šeit." #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "" +msgstr "Pārsaukt modu komplektu:" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Disabled" -msgstr "" +msgstr "Atspējots" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Enabled" -msgstr "" +msgstr "Iespējots" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Browse" -msgstr "" +msgstr "Pārlūkot" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" -msgstr "" +msgstr "Nobīde" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" -msgstr "" +msgstr "Mērogs" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" -msgstr "" +msgstr "Izkaisījums pa X asi" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" -msgstr "" +msgstr "Izkaisījums pa Y asi" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "" +msgstr "2D Troksnis" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" -msgstr "" +msgstr "Izkaisījums pa Z asi" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Octaves" -msgstr "" +msgstr "Oktāvas" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" -msgstr "" +msgstr "Noturība" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Lacunarity" @@ -346,7 +357,7 @@ msgstr "" #. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" -msgstr "" +msgstr "noklusējuma" #. ~ "eased" is a noise parameter flag. #. It is used to make the map smoother and @@ -354,7 +365,7 @@ msgstr "" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" -msgstr "" +msgstr "atvieglots" #. ~ "absvalue" is a noise parameter flag. #. It is short for "absolute value". @@ -362,512 +373,515 @@ msgstr "" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" -msgstr "" +msgstr "absolūtā vērtība" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" -msgstr "" +msgstr "X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" -msgstr "" +msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" -msgstr "" +msgstr "Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" -msgstr "" +msgstr "(Nav iestatījuma apraksta)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." -msgstr "" +msgstr "Lūdzu ievadiet derīgu veselu skaitli." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must be at least $1." -msgstr "" +msgstr "Vērtībai jābūt vismaz $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must not be larger than $1." -msgstr "" +msgstr "Vērtībai jābūt ne lielākai par $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid number." -msgstr "" +msgstr "Lūdzu ievadiet derīgu skaitli." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select directory" -msgstr "" +msgstr "Izvēlēties mapi" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select file" -msgstr "" +msgstr "Izvēlēties failu" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" -msgstr "" +msgstr "< Atpakaļ uz Iestatījumu lapu" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Edit" -msgstr "" +msgstr "Izmainīt" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Restore Default" -msgstr "" +msgstr "Atiestatīt uz noklusējumu" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Show technical names" -msgstr "" +msgstr "Rādīt tehniskos nosaukumus" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" -msgstr "" +msgstr "$1 (Iespējots)" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "" +msgstr "Neizdevās ieinstalēt $1 kā tekstūru paku" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" -msgstr "" +msgstr "Neizdevās instalēt $1 uz $2" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to find a valid mod or modpack" -msgstr "" +msgstr "Neizdevās atrast derīgu modu vai modu komplektu" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a modpack as a $1" -msgstr "" +msgstr "Neizdevās instalēt modu komplektu kā $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" msgstr "" +"Moda instalācija: Neizdevās atrast derīgu mapes nosaukumu priekš modu " +"komplekta “$1”" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a mod as a $1" -msgstr "" +msgstr "Neizdevās instalēt modu kā $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "" +msgstr "Moda instalācija: Neizdevās atrast īsto moda nosaukumu priekš “$1”" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" -msgstr "" +msgstr "Neizdevās instalēt spēli kā $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" -msgstr "" +msgstr "Instalācija: fails: “$1”" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" -msgstr "" +msgstr "Instalācija: Neatbalstīts faila tips “$1” vai arī sabojāts arhīvs" #: builtin/mainmenu/pkgmgr.lua msgid "$1 mods" -msgstr "" +msgstr "$1 modi" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" -msgstr "" +msgstr "Instalētie papildinājumi:" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "" +msgstr "Pārlūkot tiešsaistes saturu" #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "" +msgstr "Nav atrasts papildinājuma apraksts" #: builtin/mainmenu/tab_content.lua msgid "Rename" -msgstr "" +msgstr "Pārsaukt" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "" +msgstr "Nav atkarību." #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" -msgstr "" +msgstr "Atspējot tekstūru komplektu" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" -msgstr "" +msgstr "Iespējot tekstūru komplektu" #: builtin/mainmenu/tab_content.lua msgid "Information:" -msgstr "" +msgstr "Informācija:" #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" -msgstr "" +msgstr "Atinstalēt papildinājumu" #: builtin/mainmenu/tab_content.lua msgid "Content" -msgstr "" +msgstr "Saturs" #: builtin/mainmenu/tab_credits.lua msgid "Credits" -msgstr "" +msgstr "Pateicības" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "" +msgstr "Pamata izstrādātāji" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "" +msgstr "Aktīvie dalībnieki" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "" +msgstr "Bijušie pamata izstrādātāji" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "" +msgstr "Bijušie dalībnieki" #: builtin/mainmenu/tab_local.lua msgid "Configure" -msgstr "" +msgstr "Iestatīt" #: builtin/mainmenu/tab_local.lua msgid "New" -msgstr "" +msgstr "Jauns" #: builtin/mainmenu/tab_local.lua msgid "Select World:" -msgstr "" +msgstr "Izvēlieties pasauli:" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative Mode" -msgstr "" +msgstr "Radošais režīms" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Enable Damage" -msgstr "" +msgstr "Iespējot bojājumus" #: builtin/mainmenu/tab_local.lua msgid "Host Server" -msgstr "" +msgstr "Palaist serveri" #: builtin/mainmenu/tab_local.lua msgid "Host Game" -msgstr "" +msgstr "Spēlēt (kā serveris)" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" -msgstr "" +msgstr "Paziņot par serveri" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" -msgstr "" +msgstr "Vārds/Parole" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" -msgstr "" +msgstr "Piesaistes adrese" #: builtin/mainmenu/tab_local.lua msgid "Port" -msgstr "" +msgstr "Ports" #: builtin/mainmenu/tab_local.lua msgid "Server Port" -msgstr "" +msgstr "Servera ports" #: builtin/mainmenu/tab_local.lua msgid "Play Game" -msgstr "" +msgstr "Spēlēt" #: builtin/mainmenu/tab_local.lua msgid "No world created or selected!" -msgstr "" +msgstr "Pasaule nav ne izveidota, ne izvēlēta!" #: builtin/mainmenu/tab_local.lua msgid "Start Game" -msgstr "" +msgstr "Sākt spēli" #: builtin/mainmenu/tab_online.lua msgid "Address / Port" -msgstr "" +msgstr "Adrese / Ports" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Name / Password" -msgstr "" +msgstr "Vārds / Parole" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" -msgstr "" +msgstr "Pieslēgties" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Del. Favorite" -msgstr "" +msgstr "Izdzēst no izlases" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Favorite" -msgstr "" +msgstr "Pievienot izlasei" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Ping" -msgstr "" +msgstr "Pings" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative mode" -msgstr "" +msgstr "Radošais režīms" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Damage enabled" -msgstr "" +msgstr "Bojājumi iespējoti" #. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "" +msgstr "PvP iespējots" #: builtin/mainmenu/tab_online.lua msgid "Join Game" -msgstr "" +msgstr "Pievienoties spēlei" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Leaves" -msgstr "" +msgstr "Necaurredzamas lapas" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" -msgstr "" +msgstr "Vienkāršas lapas" #: builtin/mainmenu/tab_settings.lua msgid "Fancy Leaves" -msgstr "" +msgstr "Skaistas lapas" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" -msgstr "" +msgstr "Bloku konturēšana" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" -msgstr "" +msgstr "Bloku izcelšana" #: builtin/mainmenu/tab_settings.lua msgid "None" -msgstr "" +msgstr "Nekas" #: builtin/mainmenu/tab_settings.lua msgid "No Filter" -msgstr "" +msgstr "Bez filtra" #: builtin/mainmenu/tab_settings.lua msgid "Bilinear Filter" -msgstr "" +msgstr "Bilineārais filtrs" #: builtin/mainmenu/tab_settings.lua msgid "Trilinear Filter" -msgstr "" +msgstr "Trilineārais filtrs" #: builtin/mainmenu/tab_settings.lua msgid "No Mipmap" -msgstr "" +msgstr "Bez “mipmap”" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap" -msgstr "" +msgstr "“Mipmap”" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap + Aniso. Filter" -msgstr "" +msgstr "“Mipmap” + anizotr. filtrs" #: builtin/mainmenu/tab_settings.lua msgid "2x" -msgstr "" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua msgid "4x" -msgstr "" +msgstr "4x" #: builtin/mainmenu/tab_settings.lua msgid "8x" -msgstr "" +msgstr "8x" #: builtin/mainmenu/tab_settings.lua msgid "Are you sure to reset your singleplayer world?" msgstr "" +"Vai esat pārliecināts, ka vēlaties atiestatīt savu viena spēlētāja pasauli?" #: builtin/mainmenu/tab_settings.lua msgid "Yes" -msgstr "" +msgstr "Jā" #: builtin/mainmenu/tab_settings.lua msgid "No" -msgstr "" +msgstr "Nē" #: builtin/mainmenu/tab_settings.lua msgid "Smooth Lighting" -msgstr "" +msgstr "Gluds apgaismojums" #: builtin/mainmenu/tab_settings.lua msgid "Particles" -msgstr "" +msgstr "Daļiņas" #: builtin/mainmenu/tab_settings.lua msgid "3D Clouds" -msgstr "" +msgstr "3D mākoņi" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Water" -msgstr "" +msgstr "Necaurredzams ūdens" #: builtin/mainmenu/tab_settings.lua msgid "Connected Glass" -msgstr "" +msgstr "Savienots stikls" #: builtin/mainmenu/tab_settings.lua msgid "Texturing:" -msgstr "" +msgstr "Teksturēšana:" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" -msgstr "" +msgstr "Gludināšana:" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" -msgstr "" +msgstr "Ekrāns:" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" -msgstr "" +msgstr "Atcerēties ekrāna izmēru" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Shaders" -msgstr "" +msgstr "Šeideri" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" -msgstr "" +msgstr "Šeideri (nepieejami)" #: builtin/mainmenu/tab_settings.lua msgid "Reset singleplayer world" -msgstr "" +msgstr "Atiestatīt viena spēlētāja pasauli" #: builtin/mainmenu/tab_settings.lua src/client/game.cpp msgid "Change Keys" -msgstr "" +msgstr "Nomainīt kontroles" #: builtin/mainmenu/tab_settings.lua msgid "All Settings" -msgstr "" +msgstr "Visi iestatījumi" #: builtin/mainmenu/tab_settings.lua msgid "Touchthreshold: (px)" -msgstr "" +msgstr "Pieskārienslieksnis: (px)" #: builtin/mainmenu/tab_settings.lua msgid "Bump Mapping" -msgstr "" +msgstr "“Bump Mapping”" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" -msgstr "" +msgstr "Toņu atbilstība" #: builtin/mainmenu/tab_settings.lua msgid "Generate Normal Maps" -msgstr "" +msgstr "Izveidot normāl-kartes" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Parallax Occlusion" -msgstr "" +msgstr "Tekstūru dziļums" #: builtin/mainmenu/tab_settings.lua msgid "Waving Liquids" -msgstr "" +msgstr "Viļņojoši šķidrumi" #: builtin/mainmenu/tab_settings.lua msgid "Waving Leaves" -msgstr "" +msgstr "Viļņojošas lapas" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" -msgstr "" +msgstr "Viļņojoši augi" #: builtin/mainmenu/tab_settings.lua msgid "To enable shaders the OpenGL driver needs to be used." -msgstr "" +msgstr "Lai iespējotu šeiderus, jāizmanto OpenGL draiveris." #: builtin/mainmenu/tab_settings.lua msgid "Settings" -msgstr "" +msgstr "Iestatījumi" #: builtin/mainmenu/tab_simple_main.lua msgid "Start Singleplayer" -msgstr "" +msgstr "Sākt viena spēlētāja spēli" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" -msgstr "" +msgstr "Iestatīt modus" #: builtin/mainmenu/tab_simple_main.lua msgid "Main" -msgstr "" +msgstr "Galvenā izvēlne" #: src/client/client.cpp msgid "Connection timed out." -msgstr "" +msgstr "Savienojuma noildze." #: src/client/client.cpp msgid "Loading textures..." -msgstr "" +msgstr "Ielādē tekstūras..." #: src/client/client.cpp msgid "Rebuilding shaders..." -msgstr "" +msgstr "Pārbūvē šeiderus..." #: src/client/client.cpp msgid "Initializing nodes..." -msgstr "" +msgstr "Inicializē blokus..." #: src/client/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "Inicializē blokus" #: src/client/client.cpp msgid "Done!" -msgstr "" +msgstr "Gatavs!" #: src/client/clientlauncher.cpp msgid "Main Menu" -msgstr "" +msgstr "Galvenā izvēlne" #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr "Spēlētāja vārds ir pārāk garš." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" -msgstr "" +msgstr "Savienojuma kļūme (noildze?)" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "" +msgstr "Neizdevās atvērt iestatīto paroļu failu: " #: src/client/clientlauncher.cpp msgid "Please choose a name!" -msgstr "" +msgstr "Lūdzu, izvēlieties vārdu!" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "" +msgstr "Nav izvēlēta ne pasaule, ne adrese. Nav, ko darīt." #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " -msgstr "" +msgstr "Sniegtā pasaules atrašanās vieta neeksistē: " #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "" +msgstr "Nevarēja atrast vai ielādēt spēli \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "" +msgstr "Nederīga spēles specifikācija." #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string. Put either "no" or "yes" @@ -879,223 +893,224 @@ msgstr "" #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "no" #: src/client/game.cpp msgid "Shutting down..." -msgstr "" +msgstr "Beidz darbu..." #: src/client/game.cpp msgid "Creating server..." -msgstr "" +msgstr "Izveido serveri..." #: src/client/game.cpp msgid "Creating client..." -msgstr "" +msgstr "Izveido klientu..." #: src/client/game.cpp msgid "Resolving address..." -msgstr "" +msgstr "Atrisina adresi..." #: src/client/game.cpp msgid "Connecting to server..." -msgstr "" +msgstr "Savienojas ar serveri..." #: src/client/game.cpp msgid "Item definitions..." -msgstr "" +msgstr "Priekšmetu apraksti..." #: src/client/game.cpp msgid "Node definitions..." -msgstr "" +msgstr "Bloku apraksti..." #: src/client/game.cpp msgid "Media..." -msgstr "" +msgstr "Mēdiji..." #: src/client/game.cpp msgid "KiB/s" -msgstr "" +msgstr "KiB/s" #: src/client/game.cpp msgid "MiB/s" -msgstr "" +msgstr "MiB/s" #: src/client/game.cpp msgid "Client side scripting is disabled" -msgstr "" +msgstr "Klienta puses skriptēšana ir atspējota" #: src/client/game.cpp msgid "Sound muted" -msgstr "" +msgstr "Skaņa izslēgta" #: src/client/game.cpp msgid "Sound unmuted" -msgstr "" +msgstr "Skaņa ieslēgta" #: src/client/game.cpp #, c-format msgid "Volume changed to %d%%" -msgstr "" +msgstr "Skaļums nomainīts uz %d%%" #: src/client/game.cpp src/gui/modalMenu.cpp msgid "ok" -msgstr "" +msgstr "ok" #: src/client/game.cpp msgid "Fly mode enabled" -msgstr "" +msgstr "Lidošanas režīms ieslēgts" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "" +msgstr "Lidošanas režīms ieslēgts (bet: nav “fly” privilēģijas)" #: src/client/game.cpp msgid "Fly mode disabled" -msgstr "" +msgstr "Lidošanas režīms izslēgts" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "" +msgstr "Kustība uz augšu/leju pēc skatīšanās virziena ieslēgta" #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "" +msgstr "Kustība uz augšu/leju pēc skatīšanās virziena izslēgta" #: src/client/game.cpp msgid "Fast mode enabled" -msgstr "" +msgstr "Ātrais režīms ieslēgts" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "" +msgstr "Ātrais režīms ieslēgts (bet: nav “fast” privilēģijas)" #: src/client/game.cpp msgid "Fast mode disabled" -msgstr "" +msgstr "Ātrais režīms izslēgts" #: src/client/game.cpp msgid "Noclip mode enabled" -msgstr "" +msgstr "“Noclip” režīms ieslēgts" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "" +msgstr "“Noclip” režīms ieslēgts (bet: nav “noclip” privilēģijas)" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "" +msgstr "“Noclip” režīms izslēgts" #: src/client/game.cpp msgid "Cinematic mode enabled" -msgstr "" +msgstr "Kino režīms ieslēgts" #: src/client/game.cpp msgid "Cinematic mode disabled" -msgstr "" +msgstr "Kino režīms izslēgts" #: src/client/game.cpp msgid "Automatic forward enabled" -msgstr "" +msgstr "Automātiskā pārvietošanās ieslēgta" #: src/client/game.cpp msgid "Automatic forward disabled" -msgstr "" +msgstr "Automātiskā pārvietošanās izslēgta" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x1" -msgstr "" +msgstr "Minikarte virsmas režīmā, palielinājums x1" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x2" -msgstr "" +msgstr "Minikarte virsmas režīmā, palielinājums x2" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x4" -msgstr "" +msgstr "Minikarte virsmas režīmā, palielinājums x4" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" -msgstr "" +msgstr "Minikarte radara režīmā, palielinājums x1" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x2" -msgstr "" +msgstr "Minikarte radara režīmā, palielinājums x2" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x4" -msgstr "" +msgstr "Minikarte radara režīmā, palielinājums x4" #: src/client/game.cpp msgid "Minimap hidden" -msgstr "" +msgstr "Minikarte paslēpta" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "" +msgstr "Minikarte šobrīd atspējota vai nu spēlei, vai modam" #: src/client/game.cpp msgid "Fog disabled" -msgstr "" +msgstr "Migla atspējota" #: src/client/game.cpp msgid "Fog enabled" -msgstr "" +msgstr "Migla iespējota" #: src/client/game.cpp msgid "Debug info shown" -msgstr "" +msgstr "Atkļūdošanas informācija parādīta" #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "" +msgstr "Profilēšanas grafiks parādīts" #: src/client/game.cpp msgid "Wireframe shown" -msgstr "" +msgstr "Karkasattēlojums iespējots" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" msgstr "" +"Atkļūdošanas informācija, profilēšanas grafiks un karkasattēlojums atspējoti" #: src/client/game.cpp msgid "Debug info and profiler graph hidden" -msgstr "" +msgstr "Atkļūdošanas informācija un profilēšanas grafiks paslēpti" #: src/client/game.cpp msgid "Camera update disabled" -msgstr "" +msgstr "Kameras atjaunošana atspējota" #: src/client/game.cpp msgid "Camera update enabled" -msgstr "" +msgstr "Kameras atjaunošana iespējota" #: src/client/game.cpp #, c-format msgid "Viewing range is at maximum: %d" -msgstr "" +msgstr "Redzamības diapazons ir maksimāls: %d" #: src/client/game.cpp #, c-format msgid "Viewing range changed to %d" -msgstr "" +msgstr "Redzamības diapazons nomainīts uz %d" #: src/client/game.cpp #, c-format msgid "Viewing range is at minimum: %d" -msgstr "" +msgstr "Redzamības diapazons ir minimāls: %d" #: src/client/game.cpp msgid "Enabled unlimited viewing range" -msgstr "" +msgstr "Iespējots neierobežots redzamības diapazons" #: src/client/game.cpp msgid "Disabled unlimited viewing range" -msgstr "" +msgstr "Atspējots neierobežots redzamības diapazons" #: src/client/game.cpp msgid "Zoom currently disabled by game or mod" -msgstr "" +msgstr "Tuvināšana šobrīd atspējota vai nu spēlei, vai modam" #: src/client/game.cpp msgid "" @@ -1112,6 +1127,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"Noklusējuma kontroles:\n" +"Ne izvēlnē:\n" +"- pieskāriens: aktivizē pogu\n" +"- dubultpieskāriens: nolikt/izmantot\n" +"- vilkt ar pirksto: skatīties apkārt\n" +"Izvēlnē/inventārā:\n" +"- dubultpieskāriens (ārpus izvēlnes)\n" +" --> aizvērt izvēlni\n" +"- pieskāriens priekšmetiem, pieskāriens kastītei:\n" +" --> pārvietot priekšmetus\n" +"- pieskāriens&vilkšana, ar otru pirkstu pieskāriens:\n" +" --> novietot vienu priekšmetu kastītē\n" #: src/client/game.cpp #, c-format @@ -1131,381 +1158,397 @@ msgid "" "- Mouse wheel: select item\n" "- %s: chat\n" msgstr "" +"Kontroles:\n" +"- %s: uz priekšu\n" +"- %s: uz atpakaļu\n" +"- %s: pa kreisi\n" +"- %s: pa labi\n" +"- %s: lekt/kāpt\n" +"- %s: lavīties/nolaisties\n" +"- %s: nomest priekšmetu\n" +"- %s: inventārs\n" +"- Pele: griezties/skatīties\n" +"- Peles kreisā poga: rakt/sist\n" +"- Peles labā poga: likt/izmantot\n" +"- Peles rullītis: izvēlēties priekšmetu\n" +"- %s: čats\n" #: src/client/game.cpp msgid "Continue" -msgstr "" +msgstr "Turpināt" #: src/client/game.cpp msgid "Change Password" -msgstr "" +msgstr "Nomainīt paroli" #: src/client/game.cpp msgid "Game paused" -msgstr "" +msgstr "Spēle nopauzēta" #: src/client/game.cpp msgid "Sound Volume" -msgstr "" +msgstr "Skaņas skaļums" #: src/client/game.cpp msgid "Exit to Menu" -msgstr "" +msgstr "Iziet uz izvēlni" #: src/client/game.cpp msgid "Exit to OS" -msgstr "" +msgstr "Iziet uz OS" #: src/client/game.cpp msgid "Game info:" -msgstr "" +msgstr "Spēles informācija:" #: src/client/game.cpp msgid "- Mode: " -msgstr "" +msgstr "- Režīms: " #: src/client/game.cpp msgid "Remote server" -msgstr "" +msgstr "Attālināts serveris" #: src/client/game.cpp msgid "- Address: " -msgstr "" +msgstr "- Adrese: " #: src/client/game.cpp msgid "Hosting server" -msgstr "" +msgstr "Lokāls serveris" #: src/client/game.cpp msgid "- Port: " -msgstr "" +msgstr "- Ports: " #: src/client/game.cpp msgid "Singleplayer" -msgstr "" +msgstr "Viena spēlētāja režīms" #: src/client/game.cpp msgid "On" -msgstr "" +msgstr "Ieslēgts" #: src/client/game.cpp msgid "Off" -msgstr "" +msgstr "Izslēgts" #: src/client/game.cpp msgid "- Damage: " -msgstr "" +msgstr "- Bojājumi: " #: src/client/game.cpp msgid "- Creative Mode: " -msgstr "" +msgstr "- Radošais režīms: " #. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " -msgstr "" +msgstr "- PvP: " #: src/client/game.cpp msgid "- Public: " -msgstr "" +msgstr "- Publisks: " #: src/client/game.cpp msgid "- Server Name: " -msgstr "" +msgstr "- Severa nosaukums: " #: src/client/game.cpp msgid "" "\n" "Check debug.txt for details." msgstr "" +"\n" +"Vairāk informācijas failā debug.txt." #: src/client/gameui.cpp msgid "Chat shown" -msgstr "" +msgstr "Čats parādīts" #: src/client/gameui.cpp msgid "Chat hidden" -msgstr "" +msgstr "Čats paslēpts" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "" +msgstr "Spēles saskarne parādīta" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "" +msgstr "Spēles saskarne paslēpta" #: src/client/gameui.cpp #, c-format msgid "Profiler shown (page %d of %d)" -msgstr "" +msgstr "Profilētājs parādīts (lapa %d no %d)" #: src/client/gameui.cpp msgid "Profiler hidden" -msgstr "" +msgstr "Profilētājs paslēpts" #: src/client/keycode.cpp msgid "Left Button" -msgstr "" +msgstr "Kreisā poga" #: src/client/keycode.cpp msgid "Right Button" -msgstr "" +msgstr "Labā poga" #: src/client/keycode.cpp msgid "Middle Button" -msgstr "" +msgstr "Vidējā poga" #: src/client/keycode.cpp msgid "X Button 1" -msgstr "" +msgstr "X Poga 1" #: src/client/keycode.cpp msgid "X Button 2" -msgstr "" +msgstr "X Poga 2" #: src/client/keycode.cpp msgid "Backspace" -msgstr "" +msgstr "Backspace" #: src/client/keycode.cpp msgid "Tab" -msgstr "" +msgstr "Tab" #: src/client/keycode.cpp msgid "Clear" -msgstr "" +msgstr "Notīrīt" #: src/client/keycode.cpp msgid "Return" -msgstr "" +msgstr "Return" #: src/client/keycode.cpp msgid "Shift" -msgstr "" +msgstr "Shift" #: src/client/keycode.cpp msgid "Control" -msgstr "" +msgstr "Ctrl" #. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" -msgstr "" +msgstr "Alt" #: src/client/keycode.cpp msgid "Pause" -msgstr "" +msgstr "Pause" #: src/client/keycode.cpp msgid "Caps Lock" -msgstr "" +msgstr "Caps Lock" #: src/client/keycode.cpp msgid "Space" -msgstr "" +msgstr "Atstarpe" #: src/client/keycode.cpp msgid "Page up" -msgstr "" +msgstr "Page up" #: src/client/keycode.cpp msgid "Page down" -msgstr "" +msgstr "Page down" #: src/client/keycode.cpp msgid "End" -msgstr "" +msgstr "End" #: src/client/keycode.cpp msgid "Home" -msgstr "" +msgstr "Home" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Left" -msgstr "" +msgstr "Pa kreisi" #: src/client/keycode.cpp msgid "Up" -msgstr "" +msgstr "Uz augšu" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Right" -msgstr "" +msgstr "Pa labi" #: src/client/keycode.cpp msgid "Down" -msgstr "" +msgstr "Uz leju" #. ~ Key name #: src/client/keycode.cpp msgid "Select" -msgstr "" +msgstr "Select" #. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" -msgstr "" +msgstr "Print Screen" #: src/client/keycode.cpp msgid "Execute" -msgstr "" +msgstr "Execute" #: src/client/keycode.cpp msgid "Snapshot" -msgstr "" +msgstr "Snapshot" #: src/client/keycode.cpp msgid "Insert" -msgstr "" +msgstr "Insert" #: src/client/keycode.cpp msgid "Help" -msgstr "" +msgstr "Help" #: src/client/keycode.cpp msgid "Left Windows" -msgstr "" +msgstr "Kreisā Windows poga" #: src/client/keycode.cpp msgid "Right Windows" -msgstr "" +msgstr "Labā Windows poga" #: src/client/keycode.cpp msgid "Numpad 0" -msgstr "" +msgstr "Ciparbloka 0" #: src/client/keycode.cpp msgid "Numpad 1" -msgstr "" +msgstr "Ciparbloka 1" #: src/client/keycode.cpp msgid "Numpad 2" -msgstr "" +msgstr "Ciparbloka 2" #: src/client/keycode.cpp msgid "Numpad 3" -msgstr "" +msgstr "Ciparbloka 3" #: src/client/keycode.cpp msgid "Numpad 4" -msgstr "" +msgstr "Ciparbloka 4" #: src/client/keycode.cpp msgid "Numpad 5" -msgstr "" +msgstr "Ciparbloka 5" #: src/client/keycode.cpp msgid "Numpad 6" -msgstr "" +msgstr "Ciparbloka 6" #: src/client/keycode.cpp msgid "Numpad 7" -msgstr "" +msgstr "Ciparbloka 7" #: src/client/keycode.cpp msgid "Numpad 8" -msgstr "" +msgstr "Ciparbloka 8" #: src/client/keycode.cpp msgid "Numpad 9" -msgstr "" +msgstr "Ciparbloka 9" #: src/client/keycode.cpp msgid "Numpad *" -msgstr "" +msgstr "Ciparbloka *" #: src/client/keycode.cpp msgid "Numpad +" -msgstr "" +msgstr "Ciparbloka +" #: src/client/keycode.cpp msgid "Numpad ." -msgstr "" +msgstr "Ciparbloka ." #: src/client/keycode.cpp msgid "Numpad -" -msgstr "" +msgstr "Ciparbloka -" #: src/client/keycode.cpp msgid "Numpad /" -msgstr "" +msgstr "Ciparbloka /" #: src/client/keycode.cpp msgid "Num Lock" -msgstr "" +msgstr "Num Lock" #: src/client/keycode.cpp msgid "Scroll Lock" -msgstr "" +msgstr "Scroll Lock" #: src/client/keycode.cpp msgid "Left Shift" -msgstr "" +msgstr "Kreisais Shift" #: src/client/keycode.cpp msgid "Right Shift" -msgstr "" +msgstr "Labais Shift" #: src/client/keycode.cpp msgid "Left Control" -msgstr "" +msgstr "Kreisais Ctrl" #: src/client/keycode.cpp msgid "Right Control" -msgstr "" +msgstr "Labais Ctrl" #: src/client/keycode.cpp msgid "Left Menu" -msgstr "" +msgstr "Kreisais Alt" #: src/client/keycode.cpp msgid "Right Menu" -msgstr "" +msgstr "Labais Alt" #: src/client/keycode.cpp msgid "IME Escape" -msgstr "" +msgstr "IME Escape" #: src/client/keycode.cpp msgid "IME Convert" -msgstr "" +msgstr "IME Convert" #: src/client/keycode.cpp msgid "IME Nonconvert" -msgstr "" +msgstr "IME Nonconvert" #: src/client/keycode.cpp msgid "IME Accept" -msgstr "" +msgstr "IME Accept" #: src/client/keycode.cpp msgid "IME Mode Change" -msgstr "" +msgstr "IME Mode Change" #: src/client/keycode.cpp msgid "Apps" -msgstr "" +msgstr "Menu" #: src/client/keycode.cpp msgid "Sleep" -msgstr "" +msgstr "Sleep" #: src/client/keycode.cpp msgid "Erase EOF" -msgstr "" +msgstr "Erase EOF" #: src/client/keycode.cpp msgid "Play" -msgstr "" +msgstr "Play" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Zoom" -msgstr "" +msgstr "Zoom" #: src/client/keycode.cpp msgid "OEM Clear" -msgstr "" +msgstr "OEM Clear" #: src/gui/guiConfirmRegistration.cpp #, c-format @@ -1516,211 +1559,219 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" +"Jūs tūlīt pievienosieties šim serverim ar vārdu \"%s\" pirmo reizi.\n" +"Ja Jūs turpināsiet, šajā serverī tiks izveidots jauns lietotājs ar jūsu " +"pierakstīšanās informāciju.\n" +"Lūdzu ievadiet savu paroli vēlreiz un nospiediet “Reģistrēties un " +"pievienoties”, lai apstiprinātu lietotāja izveidi, vai arī nospiediet " +"“Atcelt”, lai pārtrauktu šo darbību." #: src/gui/guiConfirmRegistration.cpp msgid "Register and Join" -msgstr "" +msgstr "Reģistrēties un pievienoties" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" -msgstr "" +msgstr "Paroles nesakrīt!" #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" -msgstr "" +msgstr "Turpināt" #: src/gui/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "" +"Taustiņu iestatījumi. (Ja šī izvēlne salūzt, izdzēsiet iestatījumus no " +"minetest.conf)" #: src/gui/guiKeyChangeMenu.cpp msgid "\"Special\" = climb down" -msgstr "" +msgstr "“Speciālais” = kāpt lejā" #: src/gui/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" -msgstr "" +msgstr "Nospied “lekt” divreiz, lai lidotu" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" -msgstr "" +msgstr "Automātiskā lekšana" #: src/gui/guiKeyChangeMenu.cpp msgid "Key already in use" -msgstr "" +msgstr "Šis taustiņš jau tiek izmantots" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" -msgstr "" +msgstr "nospiediet pogu" #: src/gui/guiKeyChangeMenu.cpp msgid "Forward" -msgstr "" +msgstr "Uz priekšu" #: src/gui/guiKeyChangeMenu.cpp msgid "Backward" -msgstr "" +msgstr "Atmuguriski" #: src/gui/guiKeyChangeMenu.cpp msgid "Special" -msgstr "" +msgstr "Speciālais" #: src/gui/guiKeyChangeMenu.cpp msgid "Jump" -msgstr "" +msgstr "Lekt" #: src/gui/guiKeyChangeMenu.cpp msgid "Sneak" -msgstr "" +msgstr "Lavīties" #: src/gui/guiKeyChangeMenu.cpp msgid "Drop" -msgstr "" +msgstr "Mest" #: src/gui/guiKeyChangeMenu.cpp msgid "Inventory" -msgstr "" +msgstr "Inventārs" #: src/gui/guiKeyChangeMenu.cpp msgid "Prev. item" -msgstr "" +msgstr "Iepr. priekšmets" #: src/gui/guiKeyChangeMenu.cpp msgid "Next item" -msgstr "" +msgstr "Nāk. priekšmets" #: src/gui/guiKeyChangeMenu.cpp msgid "Change camera" -msgstr "" +msgstr "Mainīt kameru" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle minimap" -msgstr "" +msgstr "Minikarte" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "" +msgstr "Lidot" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle pitchmove" -msgstr "" +msgstr "Pārvietoties pēc skatīšanās leņķa" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fast" -msgstr "" +msgstr "Ātrā pārvietošanās" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "" +msgstr "“Noclip”" #: src/gui/guiKeyChangeMenu.cpp msgid "Mute" -msgstr "" +msgstr "Skaņa" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. volume" -msgstr "" +msgstr "Sam. skaļumu" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. volume" -msgstr "" +msgstr "Pal. skaļumu" #: src/gui/guiKeyChangeMenu.cpp msgid "Autoforward" -msgstr "" +msgstr "Auto-iešana" #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" -msgstr "" +msgstr "Čats" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Screenshot" -msgstr "" +msgstr "Ekrānšāviņš" #: src/gui/guiKeyChangeMenu.cpp msgid "Range select" -msgstr "" +msgstr "Redzamības diapazons" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. range" -msgstr "" +msgstr "Sam. diapazonu" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. range" -msgstr "" +msgstr "Pal. diapazonu" #: src/gui/guiKeyChangeMenu.cpp msgid "Console" -msgstr "" +msgstr "Konsole" #: src/gui/guiKeyChangeMenu.cpp msgid "Command" -msgstr "" +msgstr "Komanda" #: src/gui/guiKeyChangeMenu.cpp msgid "Local command" -msgstr "" +msgstr "Lokālā komanda" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" -msgstr "" +msgstr "Spēles saskarne" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle chat log" -msgstr "" +msgstr "Čata logs" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fog" -msgstr "" +msgstr "Migla" #: src/gui/guiPasswordChange.cpp msgid "Old Password" -msgstr "" +msgstr "Vecā parole" #: src/gui/guiPasswordChange.cpp msgid "New Password" -msgstr "" +msgstr "Jaunā parole" #: src/gui/guiPasswordChange.cpp msgid "Confirm Password" -msgstr "" +msgstr "Apstiprināt paroli" #: src/gui/guiPasswordChange.cpp msgid "Change" -msgstr "" +msgstr "Nomainīt" #: src/gui/guiVolumeChange.cpp msgid "Sound Volume: " -msgstr "" +msgstr "Skaņas skaļums: " #: src/gui/guiVolumeChange.cpp msgid "Exit" -msgstr "" +msgstr "Iziet" #: src/gui/guiVolumeChange.cpp msgid "Muted" -msgstr "" +msgstr "Apklusināts" #. ~ Imperative, as in "Enter/type in text". #. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " -msgstr "" +msgstr "Ievadiet " #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string which needs to contain the translation's #. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" -msgstr "" +msgstr "lv" #: src/settings_translation_file.cpp msgid "Controls" -msgstr "" +msgstr "Vadība" #: src/settings_translation_file.cpp msgid "Build inside player" -msgstr "" +msgstr "Būvēt iekšā spēlētājā" #: src/settings_translation_file.cpp msgid "" @@ -1728,30 +1779,36 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"Ja iespējots, varat novietot blokus, kur Jūs stāvat.\n" +"Šis ir noderīgi, kad jābūvē šaurās vietās." #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "Lidošana" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" "This requires the \"fly\" privilege on the server." msgstr "" +"Spēlētājs var lidot ignorējot gravitāciju.\n" +"Šim ir vajadzīga “fly” privilēģija servera pusē." #: src/settings_translation_file.cpp msgid "Pitch move mode" -msgstr "" +msgstr "Kustība uz augšu/leju pēc skatīšanās virziena" #: src/settings_translation_file.cpp msgid "" "If enabled, makes move directions relative to the player's pitch when flying " "or swimming." msgstr "" +"Ja iespējota, liek visām kustībām peldot un lidojot būt relatīvām pret " +"spēlētāja skatīšanās virziena." #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "Ātrā pārvietošanās" #: src/settings_translation_file.cpp msgid "" From 7a8ba99c7597781dd52b8a2c2531bfe13be38c88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81cs=20Zolt=C3=A1n?= Date: Sat, 6 Jun 2020 22:08:51 +0000 Subject: [PATCH 326/424] Translated using Weblate (Hungarian) Currently translated at 70.8% (912 of 1288 strings) --- po/hu/minetest.po | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/po/hu/minetest.po b/po/hu/minetest.po index dd564ffe6..57b7453bf 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Hungarian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-05-12 14:46+0000\n" -"Last-Translator: Balázs Vámos \n" +"PO-Revision-Date: 2020-06-07 22:41+0000\n" +"Last-Translator: Ács Zoltán \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -136,7 +136,7 @@ msgstr "Nincs elérhető modcsomag-leírás." #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" -msgstr "Nincs választható függőségek" +msgstr "Nincsenek választható függőségek. " #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" @@ -384,7 +384,7 @@ msgstr "X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" -msgstr "X méret" +msgstr "X kiterjedés" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" @@ -392,7 +392,7 @@ msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" -msgstr "Y méret" +msgstr "Y kiterjedés" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" @@ -400,7 +400,7 @@ msgstr "Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" -msgstr "Z méret" +msgstr "Z kiterjedés" #. ~ "absvalue" is a noise parameter flag. #. It is short for "absolute value". @@ -408,7 +408,7 @@ msgstr "Z méret" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" -msgstr "abszérték" +msgstr "abszolút érték" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options @@ -792,7 +792,6 @@ msgid "Waving Leaves" msgstr "Hullámzó levelek" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Waving Liquids" msgstr "Hullámzó folyadékok" @@ -2835,8 +2834,9 @@ msgid "" "Enable view bobbing and amount of view bobbing.\n" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" -"nézet billegés, és mértéke.\n" -"például: 0 nincs billegés; 1.0 normál; 2.0 dupla." +"Bekapcsolja a fejmozgást és beállítja a mértékét.\n" +"Pl: 0 nincs fejmozgás; 1.0 alapértelmezett fejmozgás van; 2.0 dupla " +"fejmozgás van" #: src/settings_translation_file.cpp #, fuzzy From 60f635e335fec6e5041ebb4a60725e18be49a3ca Mon Sep 17 00:00:00 2001 From: Muhammad Rifqi Priyo Susanto Date: Tue, 9 Jun 2020 05:20:11 +0000 Subject: [PATCH 327/424] Translated using Weblate (Indonesian) Currently translated at 97.5% (1256 of 1288 strings) --- po/id/minetest.po | 710 ++++++++++++++++++++++++---------------------- 1 file changed, 365 insertions(+), 345 deletions(-) diff --git a/po/id/minetest.po b/po/id/minetest.po index e97885c11..e1507be4d 100644 --- a/po/id/minetest.po +++ b/po/id/minetest.po @@ -3,8 +3,9 @@ msgstr "" "Project-Id-Version: Indonesian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-04-03 20:24+0000\n" -"Last-Translator: Allan Nordhøy \n" +"PO-Revision-Date: 2020-06-09 12:14+0000\n" +"Last-Translator: Muhammad Rifqi Priyo Susanto " +"\n" "Language-Team: Indonesian \n" "Language: id\n" @@ -12,7 +13,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -24,7 +25,7 @@ msgstr "Anda mati" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" -msgstr "Kesalahan terjadi pada suatu skrip Lua:" +msgstr "Suatu galat terjadi pada suatu skrip Lua:" #: builtin/fstk/ui.lua msgid "An error occurred:" @@ -87,7 +88,7 @@ msgstr "Batal" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Dependencies:" -msgstr "Bergantung pada:" +msgstr "Dependensi:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" @@ -119,27 +120,27 @@ msgstr "Mod:" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" -msgstr "Tidak ada dependensi (opsional)" +msgstr "Tiada dependensi (opsional)" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr "Tidak ada penjelasan permainan yang tersedia." +msgstr "Tiada keterangan permainan yang tersedia." #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" -msgstr "Tidak ada dependensi yang sulit (keterkaitan dengan mod lain)" +msgstr "Tiada dependensi wajib" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "Tidak ada penjelasan paket mod yang tersedia." +msgstr "Tiada keterangan paket mod yang tersedia." #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" -msgstr "Tidak ada dependensi opsional" +msgstr "Tiada dependensi opsional" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "Tidak harus bergantung pada:" +msgstr "Dependensi opsional:" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp @@ -152,7 +153,7 @@ msgstr "Dunia:" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" -msgstr "diaktifkan" +msgstr "dinyalakan" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" @@ -190,11 +191,11 @@ msgstr "Mod" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "Tidak ada paket yang dapat diambil" +msgstr "Tiada paket yang dapat diambil" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" -msgstr "Tidak ada hasil" +msgstr "Tiada hasil" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua @@ -223,7 +224,7 @@ msgstr "Buat" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "Unduh sebuah permainan, misalnya Minetest Game, dari minetest.net" +msgstr "Unduh suatu permainan, misalnya Minetest Game, dari minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" @@ -239,7 +240,7 @@ msgstr "Pembuat peta" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" -msgstr "Tidak ada permainan yang dipilih" +msgstr "Tiada permainan yang dipilih" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -270,7 +271,7 @@ msgstr "Hapus" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" -msgstr "pkgmgr: gagal untuk menghapus \"$1\"" +msgstr "pkgmgr: gagal menghapus \"$1\"" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" @@ -294,11 +295,11 @@ msgid "" "override any renaming here." msgstr "" "Paket mod ini memiliki nama tersurat yang diberikan dalam modpack.conf yang " -"akan menimpa penamaan ulang yang ada." +"akan menimpa penggantian nama yang ada." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" -msgstr "(Tidak ada keterangan pengaturan yang diberikan)" +msgstr "(Tiada keterangan pengaturan yang diberikan)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" @@ -322,15 +323,15 @@ msgstr "Sunting" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Enabled" -msgstr "Diaktifkan" +msgstr "Dinyalakan" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Lacunarity" -msgstr "Lacunarity (celah)" +msgstr "Lakuna (celah)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Octaves" -msgstr "Oktav" +msgstr "Oktaf" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" @@ -406,7 +407,7 @@ msgstr "Persebaran Z" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" -msgstr "Nilai mutlak" +msgstr "nilai mutlak" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options @@ -433,7 +434,7 @@ msgstr "$1 mod" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" -msgstr "Gagal untuk memasang $1 ke $2" +msgstr "Gagal memasang $1 ke $2" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" @@ -499,7 +500,7 @@ msgstr "Tidak bergantung pada mod lain." #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "Tidak ada penjelasan paket tersedia" +msgstr "Tiada keterangan paket tersedia" #: builtin/mainmenu/tab_content.lua msgid "Rename" @@ -551,19 +552,19 @@ msgstr "Mode Kreatif" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Enable Damage" -msgstr "Nyalakan kerusakan" +msgstr "Nyalakan Kerusakan" #: builtin/mainmenu/tab_local.lua msgid "Host Game" -msgstr "Host permainan" +msgstr "Host Permainan" #: builtin/mainmenu/tab_local.lua msgid "Host Server" -msgstr "Host peladen" +msgstr "Host Server" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" -msgstr "Nama/Kata sandi" +msgstr "Nama/Kata Sandi" #: builtin/mainmenu/tab_local.lua msgid "New" @@ -571,11 +572,11 @@ msgstr "Baru" #: builtin/mainmenu/tab_local.lua msgid "No world created or selected!" -msgstr "Tidak ada dunia yang dibuat atau dipilih!" +msgstr "Tiada dunia yang dibuat atau dipilih!" #: builtin/mainmenu/tab_local.lua msgid "Play Game" -msgstr "Mainkan permainan" +msgstr "Mainkan Permainan" #: builtin/mainmenu/tab_local.lua msgid "Port" @@ -583,7 +584,7 @@ msgstr "Porta" #: builtin/mainmenu/tab_local.lua msgid "Select World:" -msgstr "Pilih dunia:" +msgstr "Pilih Dunia:" #: builtin/mainmenu/tab_local.lua msgid "Server Port" @@ -591,7 +592,7 @@ msgstr "Port Server" #: builtin/mainmenu/tab_local.lua msgid "Start Game" -msgstr "Mulai permainan" +msgstr "Mulai Permainan" #: builtin/mainmenu/tab_online.lua msgid "Address / Port" @@ -619,11 +620,11 @@ msgstr "Favorit" #: builtin/mainmenu/tab_online.lua msgid "Join Game" -msgstr "Gabung permainan" +msgstr "Gabung Permainan" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Name / Password" -msgstr "Nama/Kata sandi" +msgstr "Nama/Kata Sandi" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Ping" @@ -652,7 +653,7 @@ msgstr "8x" #: builtin/mainmenu/tab_settings.lua msgid "All Settings" -msgstr "Semua pengaturan" +msgstr "Semua Pengaturan" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" @@ -664,31 +665,31 @@ msgstr "Apakah Anda yakin ingin mengatur ulang dunia Anda?" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" -msgstr "Autosimpan Ukuran Layar" +msgstr "Simpan Ukuran Layar" #: builtin/mainmenu/tab_settings.lua msgid "Bilinear Filter" -msgstr "Filter bilinear" +msgstr "Filter Bilinear" #: builtin/mainmenu/tab_settings.lua msgid "Bump Mapping" -msgstr "Bump mapping" +msgstr "Bump Mapping" #: builtin/mainmenu/tab_settings.lua src/client/game.cpp msgid "Change Keys" -msgstr "Ubah tombol" +msgstr "Ubah Tombol" #: builtin/mainmenu/tab_settings.lua msgid "Connected Glass" -msgstr "Kaca tersambung" +msgstr "Kaca Tersambung" #: builtin/mainmenu/tab_settings.lua msgid "Fancy Leaves" -msgstr "Daun megah" +msgstr "Daun Megah" #: builtin/mainmenu/tab_settings.lua msgid "Generate Normal Maps" -msgstr "Buat normal maps" +msgstr "Buat Normal Maps" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap" @@ -696,7 +697,7 @@ msgstr "Mipmap" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap + Aniso. Filter" -msgstr "Filter aniso. + Mipmap" +msgstr "Filter Aniso. + Mipmap" #: builtin/mainmenu/tab_settings.lua msgid "No" @@ -704,19 +705,19 @@ msgstr "Tidak" #: builtin/mainmenu/tab_settings.lua msgid "No Filter" -msgstr "Tanpa filter" +msgstr "Tanpa Filter" #: builtin/mainmenu/tab_settings.lua msgid "No Mipmap" -msgstr "Tanpa mipmap" +msgstr "Tanpa Mipmap" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" -msgstr "Sorot Node" +msgstr "Sorot Nodus" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" -msgstr "Garis bentuk nodus" +msgstr "Garis Bentuk Nodus" #: builtin/mainmenu/tab_settings.lua msgid "None" @@ -724,11 +725,11 @@ msgstr "Tidak ada" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Leaves" -msgstr "Daun opak" +msgstr "Daun Opak" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Water" -msgstr "Air opak" +msgstr "Air Opak" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Parallax Occlusion" @@ -760,7 +761,7 @@ msgstr "Shader (tidak tersedia)" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" -msgstr "Daun sederhana" +msgstr "Daun Sederhana" #: builtin/mainmenu/tab_settings.lua msgid "Smooth Lighting" @@ -776,15 +777,15 @@ msgstr "Untuk menggunakan shader, pengandar OpenGL harus digunakan." #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" -msgstr "Tone mapping" +msgstr "Tone Mapping" #: builtin/mainmenu/tab_settings.lua msgid "Touchthreshold: (px)" -msgstr "Batas sentuhan: (px)" +msgstr "Batas Sentuhan: (px)" #: builtin/mainmenu/tab_settings.lua msgid "Trilinear Filter" -msgstr "Filter trilinear" +msgstr "Filter Trilinear" #: builtin/mainmenu/tab_settings.lua msgid "Waving Leaves" @@ -792,7 +793,7 @@ msgstr "Daun Melambai" #: builtin/mainmenu/tab_settings.lua msgid "Waving Liquids" -msgstr "Laimbaian Cairan" +msgstr "Air Berombak" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" @@ -812,7 +813,7 @@ msgstr "Beranda" #: builtin/mainmenu/tab_simple_main.lua msgid "Start Singleplayer" -msgstr "Mulai pemain tunggal" +msgstr "Mulai Pemain Tunggal" #: src/client/client.cpp msgid "Connection timed out." @@ -856,7 +857,7 @@ msgstr "Menu Utama" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "Tidak ada dunia yang dipilih dan tidak ada alamat yang diberikan." +msgstr "Tiada dunia yang dipilih dan tiada alamat yang diberikan." #: src/client/clientlauncher.cpp msgid "Player name too long." @@ -900,7 +901,7 @@ msgstr "- Alamat: " #: src/client/game.cpp msgid "- Creative Mode: " -msgstr "- Mode kreatif: " +msgstr "- Mode Kreatif: " #: src/client/game.cpp msgid "- Damage: " @@ -925,7 +926,7 @@ msgstr "- PvP: " #: src/client/game.cpp msgid "- Server Name: " -msgstr "- Nama peladen: " +msgstr "- Nama Server: " #: src/client/game.cpp msgid "Automatic forward disabled" @@ -961,7 +962,7 @@ msgstr "Skrip sisi klien dimatikan" #: src/client/game.cpp msgid "Connecting to server..." -msgstr "Menyambung ke peladen..." +msgstr "Menyambung ke server..." #: src/client/game.cpp msgid "Continue" @@ -1006,7 +1007,7 @@ msgstr "Membuat klien..." #: src/client/game.cpp msgid "Creating server..." -msgstr "Membuat peladen..." +msgstr "Membuat server..." #: src/client/game.cpp msgid "Debug info and profiler graph hidden" @@ -1058,11 +1059,11 @@ msgstr "Nyalakan jarak pandang tak terbatas" #: src/client/game.cpp msgid "Exit to Menu" -msgstr "Menu utama" +msgstr "Menu Utama" #: src/client/game.cpp msgid "Exit to OS" -msgstr "Tutup aplikasi" +msgstr "Tutup Aplikasi" #: src/client/game.cpp msgid "Fast mode disabled" @@ -1074,7 +1075,7 @@ msgstr "Mode cepat dinyalakan" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "Mode cepat dinyalakan (catatan: tanpa izin \"fast\")" +msgstr "Mode cepat dinyalakan (catatan: tanpa hak \"fast\")" #: src/client/game.cpp msgid "Fly mode disabled" @@ -1086,7 +1087,7 @@ msgstr "Mode terbang dinyalakan" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "Mode terbang dinyalakan (catatan: tanpa izin \"fly\")" +msgstr "Mode terbang dinyalakan (catatan: tanpa hak \"fly\")" #: src/client/game.cpp msgid "Fog disabled" @@ -1106,7 +1107,7 @@ msgstr "Permainan dijeda" #: src/client/game.cpp msgid "Hosting server" -msgstr "Membuat peladen" +msgstr "Membuat server" #: src/client/game.cpp msgid "Item definitions..." @@ -1166,7 +1167,7 @@ msgstr "Mode tembus blok dinyalakan" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "Mode tembus blok dinyalakan (catatan: tanpa izin \"noclip\")" +msgstr "Mode tembus blok dinyalakan (catatan: tanpa hak \"noclip\")" #: src/client/game.cpp msgid "Node definitions..." @@ -1194,7 +1195,7 @@ msgstr "Grafik profiler ditampilkan" #: src/client/game.cpp msgid "Remote server" -msgstr "Peladen jarak jauh" +msgstr "Server jarak jauh" #: src/client/game.cpp msgid "Resolving address..." @@ -1210,7 +1211,7 @@ msgstr "Pemain tunggal" #: src/client/game.cpp msgid "Sound Volume" -msgstr "Volume suara" +msgstr "Volume Suara" #: src/client/game.cpp msgid "Sound muted" @@ -1546,10 +1547,10 @@ msgstr "Kata sandi tidak cocok!" #: src/gui/guiConfirmRegistration.cpp msgid "Register and Join" -msgstr "Daftar dan gabung" +msgstr "Daftar dan Gabung" #: src/gui/guiConfirmRegistration.cpp -#, fuzzy, c-format +#, c-format msgid "" "You are about to join this server with the name \"%s\" for the first time.\n" "If you proceed, a new account using your credentials will be created on this " @@ -1557,10 +1558,10 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" -"Anda akan bergabung dengan server dengan nama \"%s\" untuk pertama kalinya. " +"Anda akan bergabung ke server dengan nama \"%s\" untuk pertama kalinya.\n" "Jika Anda melanjutkan, akun baru yang telah Anda isikan akan dibuat pada " "server ini.\n" -"Silakan ketik ulang kata sandi Anda dan klik Daftar dan gabung untuk " +"Silakan ketik ulang kata sandi Anda dan klik \"Daftar dan Gabung\" untuk " "mengonfirmasi pembuatan akun atau klik Batal untuk membatalkan." #: src/gui/guiFormSpecMenu.cpp @@ -1706,9 +1707,8 @@ msgid "Toggle noclip" msgstr "Tembus nodus" #: src/gui/guiKeyChangeMenu.cpp -#, fuzzy msgid "Toggle pitchmove" -msgstr "Alih log obrolan" +msgstr "Gerak sesuai pandang" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" @@ -1740,7 +1740,7 @@ msgstr "Dibisukan" #: src/gui/guiVolumeChange.cpp msgid "Sound Volume: " -msgstr "Volume suara: " +msgstr "Volume Suara: " #. ~ Imperative, as in "Enter/type in text". #. Don't forget the space. @@ -1761,8 +1761,7 @@ msgid "" "If disabled, virtual joystick will center to first-touch's position." msgstr "" "(Android) Tetapkan posisi joystick virtual.\n" -"Jika dimatikan, joystick virtual akan menengah kepada posisi sentuhan " -"pertama." +"Jika dimatikan, joystick virtual akan menengah di posisi sentuhan pertama." #: src/settings_translation_file.cpp msgid "" @@ -1775,7 +1774,6 @@ msgstr "" "berada di luar lingkaran utama." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1790,10 +1788,10 @@ msgstr "" "Dapat digunakan untuk memindahkan titik yang diinginkan ke (0, 0)\n" "untuk membuat titik bangkit atau untuk \"zum masuk\" pada titik yang\n" "diinginkan dengan menaikkan \"scale\".\n" -"Nilai bawaan telah diatur agar cocok untuk mandelbrot set dengan\n" -"parameter bawaan, butuh diganti untuk keadaan lain.\n" -"Jangkauan sekitar -2 ke 2. Kalikan dengan \"scale\" untuk pergeseran dalam\n" -"nodus." +"Nilai bawaan telah diatur agar cocok untuk Mandelbrot set dengan\n" +"parameter bawaan, ini mungkin butuh diganti untuk keadaan lain.\n" +"Jangkauan sekitar -2 ke 2. Kalikan dengan \"scale\" untuk pergeseran\n" +"dalam satuan nodus." #: src/settings_translation_file.cpp msgid "" @@ -1805,7 +1803,7 @@ msgid "" "Default is for a vertically-squashed shape suitable for\n" "an island, set all 3 numbers equal for the raw shape." msgstr "" -"Skala (X,Y,Z) dari fraktal dalam nodus.\n" +"Skala (X,Y,Z) fraktal dalam nodus.\n" "Ukuran fraktal sebenarnya bisa jadi 2 hingga 3 kali lebih besar.\n" "Angka-angka ini dapat dibuat sangat besar, fraktal tidak harus\n" "cukup di dalam dunia.\n" @@ -1846,9 +1844,8 @@ msgid "2D noise that controls the size/occurrence of step mountain ranges." msgstr "Noise 2D yang mengatur ukuran/kemunculan teras pegunungan." #: src/settings_translation_file.cpp -#, fuzzy msgid "2D noise that locates the river valleys and channels." -msgstr "Noise 2D yang mengatur bentuk/ukuran perbukitan." +msgstr "Noise 2D yang mengatur letak sungai dan kanal." #: src/settings_translation_file.cpp msgid "3D clouds" @@ -1885,7 +1882,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "" +msgstr "Noise 3D yang mengatur jumlah dungeon per mapchunk." #: src/settings_translation_file.cpp msgid "" @@ -1903,7 +1900,7 @@ msgstr "" "Dukungan 3D.\n" "Yang didukung saat ini:\n" "- none: tidak ada keluaran 3d.\n" -"- anaglyph: 3d berwarna cyan/magenta.\n" +"- anaglyph: 3d berwarna sian/magenta.\n" "- interlaced: garis ganjil/genap berdasarkan polarisasi layar.\n" "- topbottom: pisahkan layar atas/bawah.\n" "- sidebyside: pisahkan layar kiri/kanan.\n" @@ -1917,17 +1914,16 @@ msgid "" "Will be overridden when creating a new world in the main menu." msgstr "" "Seed peta terpilih untuk peta baru, kosongkan untuk nilai acak.\n" -"Akan diganti ketika menciptakan dunia baru dalam menu utama." +"Akan diganti ketika menciptakan dunia baru lewat menu utama." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." -msgstr "" -"Sebuah pesan yang akan ditampilkan ke semua klien ketika peladen gagal." +msgstr "Sebuah pesan yang akan ditampilkan ke semua klien ketika server gagal." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server shuts down." msgstr "" -"Sebuah pesan yang akan ditampilkan ke semua klien ketika peladen dimatikan." +"Sebuah pesan yang akan ditampilkan ke semua klien ketika server dimatikan." #: src/settings_translation_file.cpp msgid "ABM interval" @@ -1935,7 +1931,7 @@ msgstr "Selang waktu ABM" #: src/settings_translation_file.cpp msgid "Absolute limit of emerge queues" -msgstr "Batas mutlak dari antrean kemunculan (emerge queues)" +msgstr "Batas mutlak antrean kemunculan (emerge queues)" #: src/settings_translation_file.cpp msgid "Acceleration in air" @@ -1943,7 +1939,7 @@ msgstr "Percepatan di udara" #: src/settings_translation_file.cpp msgid "Acceleration of gravity, in nodes per second per second." -msgstr "" +msgstr "Percepatan gravitasi dalam nodus per detik per detik." #: src/settings_translation_file.cpp msgid "Active Block Modifiers" @@ -1968,7 +1964,7 @@ msgid "" "Note that the address field in the main menu overrides this setting." msgstr "" "Alamat tujuan sambungan.\n" -"Biarkan kosong untuk memulai sebuah peladen lokal.\n" +"Biarkan kosong untuk memulai sebuah server lokal.\n" "Perhatikan bahwa bidang alamat dalam menu utama menimpa pengaturan ini." #: src/settings_translation_file.cpp @@ -1980,7 +1976,7 @@ msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" -"Atur konfigurasi dpi ke layar Anda (selain X11/Android saja) misalkan untuk " +"Atur konfigurasi dpi ke layar Anda (selain X11/Android saja) misalnya untuk " "layar 4K." #: src/settings_translation_file.cpp @@ -1995,6 +1991,11 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Ubah kurva cahaya dengan menerapkan penyesuaian gama.\n" +"Nilai yang lebih tinggi menerangkan tingkatan cahaya rendah\n" +"dan menengah. Nilai \"1.0\" membiarkan kurva cahaya seperti\n" +"asalnya. Ini hanya berpengaruh kepada cahaya siang dan cahaya\n" +"buatan. Ini punya pengaruh kecil kepada cahaya malam alami." #: src/settings_translation_file.cpp msgid "Altitude chill" @@ -2026,7 +2027,7 @@ msgstr "Umumkan server" #: src/settings_translation_file.cpp msgid "Announce to this serverlist." -msgstr "Umumkan ke daftar peladen ini." +msgstr "Umumkan ke daftar server ini." #: src/settings_translation_file.cpp msgid "Append item name" @@ -2070,12 +2071,13 @@ msgid "" "optimization.\n" "Stated in mapblocks (16 nodes)." msgstr "" -"Pada jarak ini, peladen akan melakukan optimasi dengan agresif tentang blok\n" -"yang dikirim kepada klien.\n" -"Nilai yang kecil dapat meningkatkan banyak performa dengan glitch pada\n" -"tampilan (beberapa blok di bawah air dan dalam gua tidak akan digambar,\n" +"Pada jarak ini, server akan melakukan optimasi dengan agresif terhadap\n" +"blok yang dikirim kepada klien.\n" +"Nilai yang kecil dapat meningkatkan kinerja dengan glitch pada tampilan\n" +"(beberapa blok di bawah air dan dalam gua tidak akan digambar,\n" "terkadang juga di darat).\n" -"Nilai yang lebih besar daripada max_block_send_distance mematikan ini.\n" +"Nilai yang lebih besar daripada max_block_send_distance mematikan\n" +"optimasi ini.\n" "Dalam satuan blok peta (16 nodus)." #: src/settings_translation_file.cpp @@ -2088,7 +2090,7 @@ msgstr "Lompati otomatis halangan satu nodus." #: src/settings_translation_file.cpp msgid "Automatically report to the serverlist." -msgstr "Secara otomatis melaporkan ke daftar peladen." +msgstr "Secara otomatis melaporkan ke daftar server ini." #: src/settings_translation_file.cpp msgid "Autosave screen size" @@ -2116,7 +2118,7 @@ msgstr "Dasar" #: src/settings_translation_file.cpp msgid "Basic privileges" -msgstr "Izin dasar" +msgstr "Hak-hak dasar" #: src/settings_translation_file.cpp msgid "Beach noise" @@ -2151,24 +2153,20 @@ msgid "Block send optimize distance" msgstr "Jarak optimasi pengiriman blok" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "Jalur fon monospace" +msgstr "Jalur fon tebal dan miring" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" -msgstr "Jalur fon monospace" +msgstr "Jalur fon monospace tebal dan miring" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold font path" -msgstr "Jalur fon" +msgstr "Jalur fon tebal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" -msgstr "Jalur fon monospace" +msgstr "Jalur fon monospace tebal" #: src/settings_translation_file.cpp msgid "Build inside player" @@ -2183,7 +2181,6 @@ msgid "Bumpmapping" msgstr "Bumpmapping" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Only works on GLES platforms. Most users will not need to change this.\n" @@ -2191,7 +2188,7 @@ msgid "" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" "Jarak bidang dekat kamera dalam nodus, antara 0 dan 0.5\n" -"Kebanyakan pengguna tidak perlu mengganti ini.\n" +"Hanya untuk GLES. Kebanyakan pengguna tidak perlu mengganti ini.\n" "Menaikkan nilai dapat mengurangi cacat pada GPU yang lebih lemah.\n" "0.1 = Bawaan, 0.25 = Bagus untuk tablet yang lebih lemah." @@ -2241,7 +2238,7 @@ msgstr "Noise #1 gua besar" #: src/settings_translation_file.cpp msgid "Cavern taper" -msgstr "Gua lancip" +msgstr "Kelancipan gua" #: src/settings_translation_file.cpp msgid "Cavern threshold" @@ -2256,6 +2253,8 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Pertengahan rentang penguatan kurva cahaya.\n" +"Nilai 0.0 adalah minimum, 1.0 adalah maksimum." #: src/settings_translation_file.cpp msgid "" @@ -2280,9 +2279,8 @@ msgid "Chat message count limit" msgstr "Batas jumlah pesan obrolan" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat message format" -msgstr "Panjang maksimum pesan obrolan" +msgstr "Format pesan obrolan" #: src/settings_translation_file.cpp msgid "Chat message kick threshold" @@ -2322,7 +2320,7 @@ msgstr "Klien" #: src/settings_translation_file.cpp msgid "Client and Server" -msgstr "Klien dan peladen" +msgstr "Klien dan Server" #: src/settings_translation_file.cpp msgid "Client modding" @@ -2330,7 +2328,7 @@ msgstr "Mod klien" #: src/settings_translation_file.cpp msgid "Client side modding restrictions" -msgstr "Batasan mod sisi klien" +msgstr "Pembatasan mod sisi klien" #: src/settings_translation_file.cpp msgid "Client side node lookup range restriction" @@ -2338,7 +2336,7 @@ msgstr "Batas jangkauan pencarian nodus sisi klien" #: src/settings_translation_file.cpp msgid "Climbing speed" -msgstr "Kecepatan memanjat" +msgstr "Kelajuan memanjat" #: src/settings_translation_file.cpp msgid "Cloud radius" @@ -2407,7 +2405,7 @@ msgstr "Sambungkan kaca" #: src/settings_translation_file.cpp msgid "Connect to external media server" -msgstr "Sambungkan ke peladen media eksternal" +msgstr "Sambungkan ke server media eksternal" #: src/settings_translation_file.cpp msgid "Connects glass if supported by node." @@ -2462,7 +2460,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Controls sinking speed in liquid." -msgstr "" +msgstr "Atur kelajuan tenggelam dalam cairan." #: src/settings_translation_file.cpp msgid "Controls steepness/depth of lake depressions." @@ -2478,10 +2476,13 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" +"Atur lebah terowongan, nilai yang lebih kecil melebarkan terowongan.\n" +"Nilai >= 10.0 mematikan terowongan dan menghindari perhitungan\n" +"noise intensif." #: src/settings_translation_file.cpp msgid "Crash message" -msgstr "Pesan kerusakan" +msgstr "Pesan crash" #: src/settings_translation_file.cpp msgid "Creative" @@ -2516,9 +2517,8 @@ msgid "Debug info toggle key" msgstr "Tombol info awakutu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Debug log file size threshold" -msgstr "Ambang batas noise gurun" +msgstr "Ambang batas ukuran log awakutu" #: src/settings_translation_file.cpp msgid "Debug log level" @@ -2530,11 +2530,11 @@ msgstr "Tombol turunkan volume" #: src/settings_translation_file.cpp msgid "Decrease this to increase liquid resistance to movement." -msgstr "" +msgstr "Turunkan ini untuk menaikkan ketahanan cairan terhadap gerakan." #: src/settings_translation_file.cpp msgid "Dedicated server step" -msgstr "Langkah peladen khusus" +msgstr "Langkah server khusus" #: src/settings_translation_file.cpp msgid "Default acceleration" @@ -2550,7 +2550,7 @@ msgid "" "This will be overridden when creating a world from the main menu." msgstr "" "Permainan bawaan saat membuat dunia baru.\n" -"Ini akan diganti saat membuat dunia dari menu utama." +"Ini akan diganti saat membuat dunia lewat menu utama." #: src/settings_translation_file.cpp msgid "Default password" @@ -2558,7 +2558,7 @@ msgstr "Kata sandi bawaan" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "Izin bawaan" +msgstr "Hak-hak bawaan" #: src/settings_translation_file.cpp msgid "Default report format" @@ -2591,12 +2591,11 @@ msgstr "Mengatur persebaran medan yang lebih tinggi." #: src/settings_translation_file.cpp msgid "Defines full size of caverns, smaller values create larger caverns." msgstr "" -"Mengatur ukuran penuh dari gua besar, nilai yang lebih kecil membuat gua " -"yang lebih besar." +"Mengatur ukuran penuh gua besar, nilai yang lebih kecil memperbesar gua." #: src/settings_translation_file.cpp msgid "Defines large-scale river channel structure." -msgstr "Menetapkan struktur saluran sungai skala besar." +msgstr "Menetapkan struktur kanal sungai skala besar." #: src/settings_translation_file.cpp msgid "Defines location and terrain of optional hills and lakes." @@ -2607,7 +2606,7 @@ msgid "" "Defines sampling step of texture.\n" "A higher value results in smoother normal maps." msgstr "" -"Menentukan tahap sampling tekstur.\n" +"Menentukan langkah penyampelan tekstur.\n" "Nilai lebih tinggi menghasilkan peta lebih halus." #: src/settings_translation_file.cpp @@ -2615,9 +2614,8 @@ msgid "Defines the base ground level." msgstr "Mengatur ketinggian dasar tanah." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the depth of the river channel." -msgstr "Mengatur ketinggian dasar tanah." +msgstr "Mengatur kedalaman kanal sungai." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." @@ -2625,14 +2623,12 @@ msgstr "" "Menentukan jarak maksimal perpindahan pemain dalam blok (0 = tak terbatas)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river channel." -msgstr "Menetapkan struktur saluran sungai skala besar." +msgstr "Mengatur lebar kanal sungai." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river valley." -msgstr "Menetapkan daerah tempat pohon punya apel." +msgstr "Mengatur lebar ngarai sungai." #: src/settings_translation_file.cpp msgid "Defines tree areas and tree density." @@ -2645,15 +2641,15 @@ msgid "" msgstr "" "Jeda antarpembaruan mesh pada klien dalam milidetik. Menaikkan nilai ini " "akan\n" -"memperlambat pembaruan mesh, sehingga mengurangi jitter pada klien lambat." +"memperlambat pembaruan mesh sehingga mengurangi jitter pada klien lambat." #: src/settings_translation_file.cpp msgid "Delay in sending blocks after building" -msgstr "Jeda dalam mengirim blok setelah membangun" +msgstr "Jeda dalam pengiriman blok setelah membangun" #: src/settings_translation_file.cpp msgid "Delay showing tooltips, stated in milliseconds." -msgstr "Jeda menampilkan tooltip, dalam milidetik." +msgstr "Jeda menampilkan tooltip dalam milidetik." #: src/settings_translation_file.cpp msgid "Deprecated Lua API handling" @@ -2661,7 +2657,7 @@ msgstr "Penanganan Lua API usang" #: src/settings_translation_file.cpp msgid "Depth below which you'll find giant caverns." -msgstr "Kedalaman minimal tempat Anda akan menemukan gua besar." +msgstr "Kedalaman minimal tempat Anda akan menemukan gua raksasa." #: src/settings_translation_file.cpp msgid "Depth below which you'll find large caves." @@ -2672,21 +2668,20 @@ msgid "" "Description of server, to be displayed when players join and in the " "serverlist." msgstr "" -"Deskripsi dari peladen, ditampilkan saat pemain bergabung dan dalam daftar " -"peladen." +"Keterangan server yang ditampilkan saat pemain bergabung dan dalam daftar " +"server." #: src/settings_translation_file.cpp msgid "Desert noise threshold" msgstr "Ambang batas noise gurun" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Deserts occur when np_biome exceeds this value.\n" "When the 'snowbiomes' flag is enabled, this is ignored." msgstr "" "Gurun muncul saat np_biome melebihi nilai ini.\n" -"Saat sistem bioma baru digunakan, ini diabaikan." +"Ketika flag \"snowbiomes\" dinyalakan, nilai ini diabaikan." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" @@ -2706,11 +2701,11 @@ msgstr "Larang kata sandi kosong" #: src/settings_translation_file.cpp msgid "Domain name of server, to be displayed in the serverlist." -msgstr "Nama domain dari peladen yang akan ditampilkan pada daftar peladen." +msgstr "Nama domain dari server yang akan ditampilkan pada daftar server." #: src/settings_translation_file.cpp msgid "Double tap jump for fly" -msgstr "Tekan ganda \"lompat\" untuk terbang" +msgstr "Tekan ganda lompat untuk terbang" #: src/settings_translation_file.cpp msgid "Double-tapping the jump key toggles fly mode." @@ -2733,15 +2728,16 @@ msgid "Dungeon minimum Y" msgstr "Y minimum dungeon" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dungeon noise" -msgstr "Y minimum dungeon" +msgstr "Noise dungeon" #: src/settings_translation_file.cpp msgid "" "Enable IPv6 support (for both client and server).\n" "Required for IPv6 connections to work at all." msgstr "" +"Nyalakan dukungan IPv6 (untuk kllien dan server).\n" +"Membutuhkan sambungan IPv6." #: src/settings_translation_file.cpp msgid "" @@ -2781,14 +2777,14 @@ msgstr "Gunakan masukan pengguna acak (hanya digunakan untuk pengujian)." #: src/settings_translation_file.cpp msgid "Enable register confirmation" -msgstr "Nyalakan konfirmasi pendaftaran" +msgstr "Gunakan konfirmasi pendaftaran" #: src/settings_translation_file.cpp msgid "" "Enable register confirmation when connecting to server.\n" "If disabled, new account will be registered automatically." msgstr "" -"Nyalakan konfirmasi pendaftaran saat menyambung ke peladen.\n" +"Gunakan konfirmasi pendaftaran saat menyambung ke server.\n" "Jika dimatikan, akun baru akan didaftarkan otomatis." #: src/settings_translation_file.cpp @@ -2807,11 +2803,10 @@ msgid "" "to new servers, but they may not support all new features that you are " "expecting." msgstr "" -"Nyalakan untuk melarang klien lawas untuk tersambung.\n" -"Klien-klien lawas dianggap sesuai jika mereka tidak rusak saat " -"menyambungkan\n" -"ke peladen-peladen baru, tetapi mereka mungkin tidak mendukung semua fitur\n" -"baru yang Anda harapkan." +"Nyalakan untuk melarang sambungan dari klien lawas.\n" +"Klien lawas dianggap sesuai jika mereka tidak rusak saat menyambung ke " +"server-\n" +"server baru, tetapi mungkin tidak mendukung semua fitur baru yang diharapkan." #: src/settings_translation_file.cpp msgid "" @@ -2820,16 +2815,17 @@ msgid "" "textures)\n" "when connecting to the server." msgstr "" -"Gunakan peladen media jarak jauh (jika diberikan oleh peladen).\n" -"Peladen jarak jauh menawarkan cara lebih cepat untuk mengunduh media (misal: " -"tekstur)\n" -"saat tersambung ke peladen." +"Gunakan server media jarak jauh (jika diberikan oleh server).\n" +"Server jarak jauh menawarkan cara lebih cepat untuk mengunduh media\n" +"(misal: tekstur) saat tersambung ke server." #: src/settings_translation_file.cpp msgid "" "Enable vertex buffer objects.\n" "This should greatly improve graphics performance." msgstr "" +"Nyalakan vertex buffer object.\n" +"Ini dapat meningkatkan kinerja grafika." #: src/settings_translation_file.cpp msgid "" @@ -2840,14 +2836,14 @@ msgstr "" "Misalkan: 0 untuk tanpa view bobbing; 1.0 untuk normal; 2.0 untuk 2x lipat." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable/disable running an IPv6 server.\n" "Ignored if bind_address is set.\n" "Needs enable_ipv6 to be enabled." msgstr "" -"Nyalakan/matikan peladen IPv6.\n" -"Diabaikan jika bind_address telah diatur." +"Nyalakan/matikan server IPv6.\n" +"Diabaikan jika bind_address telah diatur.\n" +"Membutuhkan enable_ipv6 untuk dinyalakan." #: src/settings_translation_file.cpp msgid "" @@ -2856,6 +2852,10 @@ msgid "" "appearance of high dynamic range images. Mid-range contrast is slightly\n" "enhanced, highlights and shadows are gradually compressed." msgstr "" +"Nyalakan tone mapping \"Uncharted 2\" dari Hable.\n" +"Menyimulasikan kurva warna film foto dan memperkirakan penampilan\n" +"citra rentang dinamis tinggi (HDR). Kontras tengah sedikit dikuatkan,\n" +"sedangkan sorotan dan bayangan dilemahkan." #: src/settings_translation_file.cpp msgid "Enables animation of inventory items." @@ -2903,6 +2903,10 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"Nyalakan sistem suara.\n" +"Jika dimatikan, semua suara dimatikan dan pengaturan suara dalam permainan\n" +"akan tidak berfungsi.\n" +"Perubahan pengaturan ini membutuhkan mulai ulang." #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" @@ -2937,9 +2941,8 @@ msgid "Fall bobbing factor" msgstr "Faktor fall bobbing" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "Fon cadangan" +msgstr "Jalur fon cadangan" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -2959,23 +2962,23 @@ msgstr "Tombol gerak cepat" #: src/settings_translation_file.cpp msgid "Fast mode acceleration" -msgstr "Mode akselerasi cepat" +msgstr "Percepatan mode gerak cepat" #: src/settings_translation_file.cpp msgid "Fast mode speed" -msgstr "Mode cepat" +msgstr "Kelajuan mode gerak cepat" #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "Gerakan cepat" +msgstr "Gerak cepat" #: src/settings_translation_file.cpp msgid "" "Fast movement (via the \"special\" key).\n" "This requires the \"fast\" privilege on the server." msgstr "" -"Gerakan cepat (lewat tombol \"spesial\").\n" -"Membutuhkan izin \"fast\" pada peladen." +"Gerak cepat (lewat tombol \"spesial\").\n" +"Membutuhkan hak \"fast\" pada server." #: src/settings_translation_file.cpp msgid "Field of view" @@ -2991,7 +2994,7 @@ msgid "" "the\n" "Multiplayer Tab." msgstr "" -"Berkas dalam client/serverlist/ yang berisi peladen favorit Anda yang\n" +"Berkas dalam client/serverlist/ yang berisi server favorit Anda yang\n" "ditampilkan dalam Tab Multipemain." #: src/settings_translation_file.cpp @@ -3060,11 +3063,11 @@ msgstr "Tombol beralih kabut" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Fon tebal bawaan" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Fon miring bawaan" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3080,15 +3083,15 @@ msgstr "Ukuran fon" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "Ukuran fon bawaan dalam poin (pt)." #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "Ukuran fon cadangan bawaan dalam poin (pt)." #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "Ukuran fon monospace bawaan dalam poin (pt)." #: src/settings_translation_file.cpp msgid "" @@ -3096,6 +3099,8 @@ msgid "" "placeholders:\n" "@name, @message, @timestamp (optional)" msgstr "" +"Format pesan obrolan pemain. Berikut daftar kode yang sah:\n" +"@name, @message, @timestamp (opsional)" #: src/settings_translation_file.cpp msgid "Format of screenshots." @@ -3178,7 +3183,7 @@ msgstr "" "Jarak terjauh objek dapat diketahui klien, dalam blok peta (16 nodus).\n" "\n" "Mengatur dengan nilai yang lebih tinggi daripada active_block_range akan\n" -"menyebabkan peladen menjaga objek aktif hingga jarak ini pada arah pandang\n" +"menyebabkan server menjaga objek aktif hingga jarak ini pada arah pandang\n" "pemain. (Ini dapat menghindari makhluk yang mendadak hilang dari pandangan.)" #: src/settings_translation_file.cpp @@ -3225,22 +3230,24 @@ msgstr "" "semua dekorasi." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." -msgstr "Kemiringan kurva cahaya di titik maksimum." +msgstr "" +"Kemiringan kurva cahaya di titik maksimum.\n" +"Mengatur kontras tingkatan cahaya tertinggi." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." -msgstr "Kemiringan kurva cahaya di titik minimum." +msgstr "" +"Kemiringan kurva cahaya di titik minimum.\n" +"Mengatur kontras tingkatan cahaya terendah." #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "Grafik" +msgstr "Grafika" #: src/settings_translation_file.cpp msgid "Gravity" @@ -3267,14 +3274,13 @@ msgid "HUD toggle key" msgstr "Tombol beralih HUD" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- legacy: (try to) mimic old behaviour (default for release).\n" "- log: mimic and log backtrace of deprecated call (default for debug).\n" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" -"Penanganan panggilan lua api usang:\n" +"Penanganan panggilan Lua API usang:\n" "- legacy: (mencoba untuk) menyerupai aturan lawas (bawaan untuk rilis).\n" "- log: menyerupai dan mencatat asal-usul panggilan usang (bawaan untuk " "awakutu).\n" @@ -3344,25 +3350,31 @@ msgstr "Noise bukit4" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." -msgstr "Halaman awal peladen, ditampilkan pada daftar peladen." +msgstr "Halaman awal server, ditampilkan pada daftar server." #: src/settings_translation_file.cpp msgid "" "Horizontal acceleration in air when jumping or falling,\n" "in nodes per second per second." msgstr "" +"Percepatan mendatar di udara saat lompat atau jatuh\n" +"dalam nodus per detik per detik." #: src/settings_translation_file.cpp msgid "" "Horizontal and vertical acceleration in fast mode,\n" "in nodes per second per second." msgstr "" +"Percepatan mendatar dan vertikal dalam mode gerak\n" +"cepat dalam nodus per detik per detik." #: src/settings_translation_file.cpp msgid "" "Horizontal and vertical acceleration on ground or when climbing,\n" "in nodes per second per second." msgstr "" +"Percepatan mendatar dan vertikal di atas tanah atau saat memanjat\n" +"dalam nodus per detik per detik." #: src/settings_translation_file.cpp msgid "Hotbar next key" @@ -3510,13 +3522,16 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" +"Kelajuan gerakan ombak. Lebih tinggi = lebih cepat.\n" +"Jika negatif, ombak akan bergerak mundur.\n" +"Membutuhkan air berombak untuk dinyalakan." #: src/settings_translation_file.cpp msgid "" "How much the server will wait before unloading unused mapblocks.\n" "Higher value is smoother, but will use more RAM." msgstr "" -"Seberapa lama peladen akan menunggu sebelum membongkar blok peta yang tidak " +"Seberapa lama server akan menunggu sebelum membongkar blok peta yang tidak " "dipakai.\n" "Semakin tinggi semakin halus, tetapi menggunakan lebih banyak RAM." @@ -3542,7 +3557,7 @@ msgstr "IPv6" #: src/settings_translation_file.cpp msgid "IPv6 server" -msgstr "Peladen IPv6" +msgstr "Server IPv6" #: src/settings_translation_file.cpp msgid "" @@ -3570,7 +3585,7 @@ msgid "" "invisible\n" "so that the utility of noclip mode is reduced." msgstr "" -"Jika dinyalakan, peladen akan melakukan occlusion culling blok peta\n" +"Jika dinyalakan, server akan melakukan occlusion culling blok peta\n" "menurut posisi mata pemain. Ini dapat mengurangi jumlah blok yang\n" "dikirim ke klien sebesar 50-80%. Klien tidak dapat menerima yang tidak\n" "terlihat sehingga kemampuan mode tembus blok berkurang." @@ -3583,7 +3598,7 @@ msgid "" msgstr "" "Jika dinyalakan bersama mode terbang, pemain mampu terbang melalui nodus " "padat.\n" -"Hal ini membutuhkan izin \"noclip\" pada peladen." +"Hal ini membutuhkan hak \"noclip\" pada server." #: src/settings_translation_file.cpp msgid "" @@ -3601,7 +3616,7 @@ msgid "" "This option is only read when server starts." msgstr "" "Jika dinyalakan, perilaku akan direkam untuk cadangan.\n" -"Pilihan ini hanya dibaca saat peladen dimulai." +"Pilihan ini hanya dibaca saat server dimulai." #: src/settings_translation_file.cpp msgid "If enabled, disable cheat prevention in multiplayer." @@ -3612,7 +3627,7 @@ msgid "" "If enabled, invalid world data won't cause the server to shut down.\n" "Only enable this if you know what you are doing." msgstr "" -"Jika dinyalakan, data dunia yang tidak sah tidak akan menyebabkan peladen " +"Jika dinyalakan, data dunia yang tidak sah tidak akan menyebabkan server " "mati.\n" "Hanya nyalakan ini jika Anda tahu yang Anda lakukan." @@ -3621,8 +3636,8 @@ msgid "" "If enabled, makes move directions relative to the player's pitch when flying " "or swimming." msgstr "" -"Jika dinyalakan, menyebabkan arah gerak sesuai pandangan pemain saat terbang " -"atau menyelam." +"Jika dinyalakan, arah gerak menyesuaikan pandangan pemain saat terbang atau " +"menyelam." #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." @@ -3656,6 +3671,11 @@ msgid "" "deleting an older debug.txt.1 if it exists.\n" "debug.txt is only moved if this setting is positive." msgstr "" +"Jika ukuran berkas debug.txt melebihi nilai yang diberikan (dalam megabita)," +"\n" +"berkas tersebut akan dipindah ke debug.txt.1 dan berkas debug.txt.1 lama\n" +"akan dihapus jika ada.\n" +"Berkas debug.txt hanya dipindah jika pengaturan ini dinyalakan." #: src/settings_translation_file.cpp msgid "If this is set, players will always (re)spawn at the given position." @@ -3663,7 +3683,7 @@ msgstr "Jika diatur, pemain akan bangkit (ulang) pada posisi yang diberikan." #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "Abaikan kesalahan pada dunia" +msgstr "Abaikan galat pada dunia" #: src/settings_translation_file.cpp msgid "In-Game" @@ -3689,7 +3709,7 @@ msgstr "Tombol konsol" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." -msgstr "" +msgstr "Kelajuan vertikal awal ketika lompat dalam nodus per detik." #: src/settings_translation_file.cpp msgid "" @@ -3716,18 +3736,19 @@ msgstr "" msgid "" "Instrument the action function of Active Block Modifiers on registration." msgstr "" -"Melengkapi fungsi aksi Pengubah Blok Aktif saat didaftarkan, dengan perkakas." +"Melengkapi fungsi aksi Pengubah Blok Aktif dengan perkakas ketika " +"didaftarkan." #: src/settings_translation_file.cpp msgid "" "Instrument the action function of Loading Block Modifiers on registration." msgstr "" -"Melengkapi fungsi aksi Pengubah Blok Termuat saat didaftarkan, dengan " -"perkakas." +"Melengkapi fungsi aksi Pengubah Blok Termuat dengan perkakas ketika " +"didaftarkan." #: src/settings_translation_file.cpp msgid "Instrument the methods of entities on registration." -msgstr "Melengkapi metode entitas saat didaftarkan, dengan perkakas." +msgstr "Melengkapi metode entitas dengan perkakas ketika didaftarkan." #: src/settings_translation_file.cpp msgid "Instrumentation" @@ -3735,7 +3756,7 @@ msgstr "Instrumentasi" #: src/settings_translation_file.cpp msgid "Interval of saving important changes in the world, stated in seconds." -msgstr "Jarak waktu penyimpanan perubahan penting dari dunia, dalam detik." +msgstr "Jarak waktu penyimpanan perubahan penting dari dunia dalam detik." #: src/settings_translation_file.cpp msgid "Interval of sending time of day to clients." @@ -3758,18 +3779,16 @@ msgid "Invert vertical mouse movement." msgstr "Balik pergerakan vertikal tetikus." #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic font path" -msgstr "Jalur fon monospace" +msgstr "Jalur fon miring" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic monospace font path" -msgstr "Jalur fon monospace" +msgstr "Jalur fon monospace miring" #: src/settings_translation_file.cpp msgid "Item entity TTL" -msgstr "Umur hidup wujud barang" +msgstr "Umur hidup entitas barang" #: src/settings_translation_file.cpp msgid "Iterations" @@ -3812,7 +3831,7 @@ msgid "" "Has no effect on 3D fractals.\n" "Range roughly -2 to 2." msgstr "" -"Hanya Julia set.\n" +"Khusus Julia set.\n" "Komponen W dari tetapan hiperkompleks.\n" "Mengubah bentuk fraktal.\n" "Tidak berlaku pada fraktal 3D.\n" @@ -3825,7 +3844,7 @@ msgid "" "Alters the shape of the fractal.\n" "Range roughly -2 to 2." msgstr "" -"Hanya Julia set.\n" +"Khusus Julia set.\n" "Komponen X dari tetapan hiperkompleks.\n" "Mengubah bentuk fraktal.\n" "Jangkauan sekitar -2 ke 2." @@ -3837,7 +3856,7 @@ msgid "" "Alters the shape of the fractal.\n" "Range roughly -2 to 2." msgstr "" -"Hanya Julia set.\n" +"Khusus Julia set.\n" "Komponen Y dari tetapan hiperkompleks.\n" "Mengubah bentuk fraktal.\n" "Jangkauan sekitar -2 ke 2." @@ -3849,7 +3868,7 @@ msgid "" "Alters the shape of the fractal.\n" "Range roughly -2 to 2." msgstr "" -"Hanya Julia set.\n" +"Khusus Julia set.\n" "Komponen Z dari tetapan hiperkompleks.\n" "Mengubah bentuk fraktal.\n" "Jangkauan sekitar -2 ke 2." @@ -3876,7 +3895,7 @@ msgstr "Tombol lompat" #: src/settings_translation_file.cpp msgid "Jumping speed" -msgstr "Kecepatan lompat" +msgstr "Kelajuan lompat" #: src/settings_translation_file.cpp msgid "" @@ -4596,15 +4615,15 @@ msgstr "Kedalaman gua besar" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "Nilai maksimum gua besar" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "Nilai minimum gua besar" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" -msgstr "" +msgstr "Perbandingan cairan dalam gua besar" #: src/settings_translation_file.cpp msgid "Large chat console key" @@ -4637,18 +4656,17 @@ msgid "" "updated over\n" "network." msgstr "" -"Lama detikan peladen dan selang waktu bagi objek secara umum untuk " +"Lama detikan server dan selang waktu bagi objek secara umum untuk " "diperbarui\n" "ke jaringan." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Length of liquid waves.\n" "Requires waving liquids to be enabled." msgstr "" -"Atur ke true untuk menyalakan daun melambai.\n" -"Membutuhkan penggunaan shader." +"Panjang ombak.\n" +"Membutuhkan air berombak untuk dinyalakan." #: src/settings_translation_file.cpp msgid "Length of time between Active Block Modifier (ABM) execution cycles" @@ -4683,34 +4701,28 @@ msgstr "" "- verbose" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost" -msgstr "Penguatan tengah kurva cahaya" +msgstr "Penguatan kurva cahaya" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost center" -msgstr "Titik tengah penguatan tengah kurva cahaya" +msgstr "Titik tengah penguatan kurva cahaya" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost spread" -msgstr "Persebaran penguatan tengah kurva cahaya" +msgstr "Persebaran penguatan kurva cahaya" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve gamma" -msgstr "Penguatan tengah kurva cahaya" +msgstr "Gama kurva cahaya" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve high gradient" -msgstr "Penguatan tengah kurva cahaya" +msgstr "Titik tinggi gradasi kurva cahaya" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve low gradient" -msgstr "Titik tengah penguatan tengah kurva cahaya" +msgstr "Titik rendah gradasi kurva cahaya" #: src/settings_translation_file.cpp msgid "Limit of emerge queues on disk" @@ -4740,8 +4752,8 @@ msgid "" "Only has an effect if compiled with cURL." msgstr "" "Membatasi jumlah permintaan HTTP paralel. Memengaruhi:\n" -"- Pengambilan media jika peladen menggunakan pengaturan remote_media.\n" -"- Unduhan daftar peladen dan mengumumkan peladen.\n" +"- Pengambilan media jika server menggunakan pengaturan remote_media.\n" +"- Unduhan daftar server dan mengumumkan server.\n" "- Unduhan oleh menu utama (misal. pengelola mod).\n" "Hanya berlaku jika dikompilasi dengan cURL." @@ -4762,9 +4774,8 @@ msgid "Liquid queue purge time" msgstr "Waktu pembersihan antrean cairan" #: src/settings_translation_file.cpp -#, fuzzy msgid "Liquid sinking" -msgstr "Kecepatan tenggelam dalam cairan" +msgstr "Kelajuan tenggelam dalam cairan" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." @@ -4786,7 +4797,7 @@ msgid "" msgstr "" "Muat profiler permainan untuk mengumpulkan data game profiling.\n" "Menyediakan perintah /profiler untuk akses ke rangkuman profile.\n" -"Berguna untuk pengembang mod dan operator peladen." +"Berguna untuk pengembang mod dan operator server." #: src/settings_translation_file.cpp msgid "Loading Block Modifiers" @@ -4828,23 +4839,22 @@ msgid "Map generation attributes specific to Mapgen Carpathian." msgstr "Atribut pembuatan peta khusus untuk pembuat peta Carpathian." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Flat.\n" "Occasional lakes and hills can be added to the flat world." msgstr "" -"Atribut pembuatan peta khusus untuk pembuat peta flat.\n" +"Atribut pembuatan peta khusus untuk pembuat peta Flat.\n" "Beberapa danau dan bukit dapat ditambahkan ke dunia datar." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Fractal.\n" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" -"Atribut pembuatan peta khusus untuk pembuat peta v7.\n" -"\"ridges\" menyalakan sungai." +"Atribut pembuatan peta khusus untuk pembuat peta Fractal.\n" +"\"terrain\" membolehkan pembuatan medan nonfraktal:\n" +"samudra, pulau, dan bawah tanah." #: src/settings_translation_file.cpp msgid "" @@ -4867,7 +4877,6 @@ msgid "Map generation attributes specific to Mapgen v5." msgstr "Atribut pembuatan peta khusus untuk pembuat peta v5." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen v6.\n" "The 'snowbiomes' flag enables the new 5 biome system.\n" @@ -4925,16 +4934,15 @@ msgstr "Pembuat peta flat" #: src/settings_translation_file.cpp msgid "Mapgen Flat specific flags" -msgstr "Flag khusus pembuat peta flat" +msgstr "Flag khusus pembuat peta Flat" #: src/settings_translation_file.cpp msgid "Mapgen Fractal" msgstr "Pembuat peta fraktal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Fractal specific flags" -msgstr "Flag khusus pembuat peta flat" +msgstr "Flag khusus pembuat peta Fractal" #: src/settings_translation_file.cpp msgid "Mapgen V5" @@ -5018,17 +5026,19 @@ msgstr "Lebar maksimum hotbar" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "Batas maksimal nilai acak untuk gua besar per mapchunk." #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Batas maksimal nilai acak untuk gua kecil per mapchunk." #: src/settings_translation_file.cpp msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." msgstr "" +"Ketahanan cairan maksimum. Mengatur perlambatan ketika memasuki\n" +"cairan dengan kelajuan tinggi." #: src/settings_translation_file.cpp msgid "" @@ -5166,11 +5176,11 @@ msgstr "Ketinggian pemindaian peta mini" #: src/settings_translation_file.cpp msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "" +msgstr "Batas minimal nilai acak untuk gua besar per mapchunk." #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Batas minimal nilai acak untuk gua kecil per mapchunk." #: src/settings_translation_file.cpp msgid "Minimum texture size" @@ -5241,20 +5251,16 @@ msgid "Mute sound" msgstr "Bisukan suara" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Name of map generator to be used when creating a new world.\n" "Creating a world in the main menu will override this.\n" "Current mapgens in a highly unstable state:\n" "- The optional floatlands of v7 (disabled by default)." msgstr "" -"Nama dari pembuat peta yang digunakan saat membuat dunia baru.\n" +"Nama pembuat peta yang digunakan saat membuat dunia baru.\n" "Pembuatan dunia lewat menu utama akan menimpa ini.\n" -"Pembuat peta yang stabil saat ini:\n" -"v5, v6, v7 (kecuali floatland), flat, singlenode.\n" -"\"stabil\" berarti bentuk medan pada dunia yang telah ada tidak akan " -"berubah\n" -"pada masa depan. Catat bahwa bioma diatur oleh permainan dan dapat berubah." +"Pembuat peta yang tidak stabil saat ini:\n" +"- \"floatlands\" pada pembuat peta v7 (dimatikan secara bawaan)." #: src/settings_translation_file.cpp msgid "" @@ -5263,18 +5269,16 @@ msgid "" "When starting from the main menu, this is overridden." msgstr "" "Nama pemain.\n" -"Saat menjalankan peladen, klien yang tersambung dengan nama ini adalah " -"admin.\n" +"Saat menjalankan server, klien yang tersambung dengan nama ini adalah admin." +"\n" "Saat menjalankan dari menu utama, nilai ini ditimpa." #: src/settings_translation_file.cpp msgid "" "Name of the server, to be displayed when players join and in the serverlist." -msgstr "" -"Nama peladen, ditampilkan saat pemain bergabung dan pada daftar peladen." +msgstr "Nama server, ditampilkan saat pemain bergabung dan pada daftar server." #: src/settings_translation_file.cpp -#, fuzzy msgid "Near plane" msgstr "Bidang dekat" @@ -5327,7 +5331,6 @@ msgid "Number of emerge threads" msgstr "Jumlah utas kemunculan" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of emerge threads to use.\n" "WARNING: Currently there are multiple bugs that may cause crashes when\n" @@ -5344,16 +5347,19 @@ msgid "" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" "Jumlah utas kemunculan yang dipakai.\n" -"Kosong atau nilai 0:\n" +"PERINGATAN: Saat ini, terdapat beberapa kutu yang menyebabkan crash\n" +"ketika \"num_emerge_threads\" lebih dari 1. Sampai peringatan ini dicabut,\n" +"sangat disarankan untuk mengatur nilai ini ke bawaan, yaitu \"1\".\n" +"Nilai 0:\n" "- Pemilihan otomatis. Utas kemunculan akan berjumlah\n" "- 'jumlah prosesor - 2', dengan batas bawah 1.\n" "Nilai lain:\n" "- Menentukan jumlah utas kemunculan, dengan batas bawah 1.\n" -"Peringatan: Penambahan jumlah utas kemunculan mempercepat mesin\n" -"pembuat peta, tetapi dapat merusak kinerja permainan dengan mengganggu\n" -"proses lain, terutama dalam pemain tunggal dan/atau saat menjalankan kode\n" -"Lua dalam \"on_generated\".\n" -"Untuk kebanyakan pengguna, pengaturan yang cocok adalah \"1\"." +"PERINGATAN: Penambahan jumlah utas kemunculan mempercepat mesin pembuat\n" +"peta, tetapi dapat merusak kinerja permainan dengan mengganggu proses lain,\n" +"terutama dalam pemain tunggal dan/atau saat menjalankan kode Lua dalam\n" +"\"on_generated\". Untuk kebanyakan pengguna, pengaturan yang cocok adalah \"1" +"\"." #: src/settings_translation_file.cpp msgid "" @@ -5381,12 +5387,12 @@ msgstr "Cairan opak" #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." -msgstr "" +msgstr "Keburaman (alfa) bayangan di belakang fon bawaan, antara 0 dan 255." #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." -msgstr "" +msgstr "Keburaman (alfa) bayangan di belakang fon cadangan, antara 0 dan 255." #: src/settings_translation_file.cpp msgid "" @@ -5437,6 +5443,10 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" +"Jalur ke fon cadangan.\n" +"Jika pengaturan \"freetype\" dinyalakan, harus fon TrueType.\n" +"Jika pengaturan \"freetype\" dimatikan, harus fon bitmap atau vektor XML.\n" +"Fon ini akan dipakai dalam bahasa tertentu jika tidak didukung fon bawaan." #: src/settings_translation_file.cpp msgid "Path to save screenshots at." @@ -5460,6 +5470,10 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "The fallback font will be used if the font cannot be loaded." msgstr "" +"Jalur ke fon bawaan.\n" +"Jika pengaturan \"freetype\" dinyalakan, harus fon TrueType.\n" +"Jika pengaturan \"freetype\" dimatikan, harus fon bitmap atau vektor XML.\n" +"Fon cadangan akan dipakai jika fon tidak dapat dimuat." #: src/settings_translation_file.cpp msgid "" @@ -5468,6 +5482,10 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "This font is used for e.g. the console and profiler screen." msgstr "" +"Jalur ke fon monospace.\n" +"Jika pengaturan \"freetype\" dinyalakan, harus fon TrueType.\n" +"Jika pengaturan \"freetype\" dimatikan, harus fon bitmap atau vektor XML.\n" +"Fon ini dipakai dalam layar konsol dan profiler." #: src/settings_translation_file.cpp msgid "Pause on lost window focus" @@ -5491,7 +5509,7 @@ msgid "" "This requires the \"fly\" privilege on the server." msgstr "" "Pemain dapat terbang tanpa terpengaruh gravitasi.\n" -"Hal ini membutuhkan izin \"fly\" pada peladen." +"Hal ini membutuhkan hak \"fly\" pada server." #: src/settings_translation_file.cpp msgid "Player name" @@ -5537,7 +5555,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Privileges that players with basic_privs can grant" -msgstr "Izin yang dapat diberikan oleh pemain dengan basic_privs" +msgstr "Hak yang dapat diberikan oleh pemain dengan basic_privs" #: src/settings_translation_file.cpp msgid "Profiler" @@ -5553,7 +5571,7 @@ msgstr "Profiling" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." -msgstr "" +msgstr "Perbandingan gua besar yang punya cairan." #: src/settings_translation_file.cpp msgid "" @@ -5581,9 +5599,8 @@ msgid "Recent Chat Messages" msgstr "Pesan obrolan terkini" #: src/settings_translation_file.cpp -#, fuzzy msgid "Regular font path" -msgstr "Jalur pelaporan" +msgstr "Jalur fon biasa" #: src/settings_translation_file.cpp msgid "Remote media" @@ -5591,7 +5608,7 @@ msgstr "Media jarak jauh" #: src/settings_translation_file.cpp msgid "Remote port" -msgstr "Porta peladen jarak jauh" +msgstr "Porta server jarak jauh" #: src/settings_translation_file.cpp msgid "" @@ -5623,8 +5640,9 @@ msgid "" "csm_restriction_noderange)\n" "READ_PLAYERINFO: 32 (disable get_player_names call client-side)" msgstr "" -"Batasi akses beberapa fungsi sisi klien pada peladen\n" -"Gabungkan flag bita berikut untuk membatasi fitur pada sisi klien:\n" +"Batasi akses beberapa fungsi sisi klien pada server\n" +"Gabungkan flag bita berikut untuk membatasi fitur pada sisi klien atau\n" +"atur ke 0 untuk tanpa batasan:\n" "LOAD_CLIENT_MODS: 1 (matikan pemuatan mod klien)\n" "CHAT_MESSAGES: 2 (cegah pemanggilan send_chat_message sisi klien)\n" "READ_ITEMDEFS: 4 (cegah pemanggilan get_item_def sisi klien)\n" @@ -5658,14 +5676,12 @@ msgid "Rightclick repetition interval" msgstr "Jarak klik kanan berulang" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel depth" -msgstr "Kedalaman sungai" +msgstr "Kedalaman kanal sungai" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel width" -msgstr "Kedalaman sungai" +msgstr "Lebar kanal sungai" #: src/settings_translation_file.cpp msgid "River depth" @@ -5680,9 +5696,8 @@ msgid "River size" msgstr "Ukuran sungai" #: src/settings_translation_file.cpp -#, fuzzy msgid "River valley width" -msgstr "Kedalaman sungai" +msgstr "Lebar ngarai sungai" #: src/settings_translation_file.cpp msgid "Rollback recording" @@ -5718,7 +5733,7 @@ msgstr "Simpan otomatis ukuran jendela saat berubah." #: src/settings_translation_file.cpp msgid "Saving map received from server" -msgstr "Simpan peta yang diterima dari peladen" +msgstr "Simpan peta yang diterima dari server" #: src/settings_translation_file.cpp msgid "" @@ -5799,7 +5814,6 @@ msgid "Selection box width" msgstr "Lebar kotak pilihan" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Selects one of 18 fractal types.\n" "1 = 4D \"Roundy\" Mandelbrot set.\n" @@ -5843,39 +5857,39 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Server / Singleplayer" -msgstr "Peladen/Pemain tunggal" +msgstr "Server/Pemain tunggal" #: src/settings_translation_file.cpp msgid "Server URL" -msgstr "URL Peladen" +msgstr "URL server" #: src/settings_translation_file.cpp msgid "Server address" -msgstr "Alamat peladen" +msgstr "Alamat server" #: src/settings_translation_file.cpp msgid "Server description" -msgstr "Deskripsi peladen" +msgstr "Keterangan server" #: src/settings_translation_file.cpp msgid "Server name" -msgstr "Nama peladen" +msgstr "Nama server" #: src/settings_translation_file.cpp msgid "Server port" -msgstr "Port server" +msgstr "Porta server" #: src/settings_translation_file.cpp msgid "Server side occlusion culling" -msgstr "Occlusion culling sisi peladen" +msgstr "Occlusion culling sisi server" #: src/settings_translation_file.cpp msgid "Serverlist URL" -msgstr "URL daftar peladen" +msgstr "URL daftar server" #: src/settings_translation_file.cpp msgid "Serverlist file" -msgstr "Berkas daftar peladen" +msgstr "Berkas daftar server" #: src/settings_translation_file.cpp msgid "" @@ -5890,7 +5904,6 @@ msgid "Set the maximum character length of a chat message sent by clients." msgstr "Atur jumlah karakter maksimum per pesan obrolan yang dikirim klien." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving leaves.\n" "Requires shaders to be enabled." @@ -5899,7 +5912,6 @@ msgstr "" "Membutuhkan penggunaan shader." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving liquids (like water).\n" "Requires shaders to be enabled." @@ -5908,7 +5920,6 @@ msgstr "" "Membutuhkan penggunaan shader." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving plants.\n" "Requires shaders to be enabled." @@ -5933,18 +5944,20 @@ msgstr "" "Ini hanya bekerja dengan video OpenGL." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the default font. If 0, then shadow will not be " "drawn." -msgstr "Pergeseran bayangan fon, jika 0, bayangan tidak akan digambar." +msgstr "" +"Pergeseran bayangan fon bawaan dalam piksel. Jika 0, bayangan tidak akan " +"digambar." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " "be drawn." -msgstr "Pergeseran bayangan fon, jika 0, bayangan tidak akan digambar." +msgstr "" +"Pergeseran bayangan fon cadangan dalam piksel. Jika 0, bayangan tidak akan " +"digambar." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." @@ -5960,7 +5973,7 @@ msgstr "Tampilkan kotak pilihan benda" #: src/settings_translation_file.cpp msgid "Shutdown message" -msgstr "Pesan saat peladen mati" +msgstr "Pesan saat server dimatikan" #: src/settings_translation_file.cpp msgid "" @@ -5998,11 +6011,11 @@ msgstr "Kemiringan dan isian bekerja sama mengatur ketinggian." #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "" +msgstr "Nilai maksimum gua kecil" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "" +msgstr "Nilai minimum gua kecil" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." @@ -6040,11 +6053,11 @@ msgstr "Tombol menyelinap" #: src/settings_translation_file.cpp msgid "Sneaking speed" -msgstr "Kecepatan menyelinap" +msgstr "Kelajuan menyelinap" #: src/settings_translation_file.cpp msgid "Sneaking speed, in nodes per second." -msgstr "" +msgstr "Kelajuan menyelinap dalam nodus per detik." #: src/settings_translation_file.cpp msgid "Sound" @@ -6071,14 +6084,14 @@ msgstr "" "File yang tidak ada akan diambil cara yang biasa." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Spread of light curve boost range.\n" "Controls the width of the range to be boosted.\n" "Standard deviation of the light curve boost Gaussian." msgstr "" -"Persebaran penguatan tengah kurva cahaya.\n" -"Simpangan baku dari penguatan tengah Gauss." +"Persebaran rentang penguatan kurva cahaya.\n" +"Mengatur lebar rentang yang dikuatkan.\n" +"Simpangan baku dari penguatan kurva cahaya Gauss." #: src/settings_translation_file.cpp msgid "Static spawnpoint" @@ -6106,6 +6119,9 @@ msgid "" "The 3 'boost' parameters define a range of the light\n" "curve that is boosted in brightness." msgstr "" +"Besar penguatan kurva cahaya.\n" +"Tiga parameter \"boost\" menentukan rentang kurva\n" +"cahaya yang dikuatkan menurut kecerahannya." #: src/settings_translation_file.cpp msgid "Strength of parallax." @@ -6187,7 +6203,7 @@ msgstr "" "Tekstur pada nodus dapat disejajarkan, baik dengan nodus maupun dunia.\n" "Mode pertama cocok untuk mesin, furnitur, dll., sedangkan mode kedua\n" "cocok agar tangga dan mikroblok cocok dengan sekitarnya.\n" -"Namun, karena masih baru, ini tidak dipakai pada peladen lawas, pilihan ini\n" +"Namun, karena masih baru, ini tidak dipakai pada server lawas, pilihan ini\n" "bisa memaksakan untuk jenis nodus tertentu. Catat bahwa ini masih dalam\n" "tahap PERCOBAAN dan dapat tidak berjalan dengan semestinya." @@ -6231,19 +6247,24 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" +"Tinggi maksimum permukaan ombak.\n" +"4.0 = Tinggi ombak dua nodus.\n" +"0.0 = Ombak tidak bergerak sama sekali.\n" +"Bawaannya 1.0 (1/2 nodus).\n" +"Membutuhkan air berombak untuk dinyalakan." #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." -msgstr "Antarmuka jaringan yang peladen dengarkan." +msgstr "Antarmuka jaringan yang server dengarkan." #: src/settings_translation_file.cpp msgid "" "The privileges that new users automatically get.\n" "See /privs in game for a full list on your server and mod configuration." msgstr "" -"Izin yang didapatkan pengguna baru otomatis.\n" -"Lihat /privs dalam permainan untuk daftar lengkap pada peladen Anda dan " -"konfigurasi mod." +"Hak yang didapatkan pengguna baru otomatis.\n" +"Lihat /privs dalam permainan untuk daftar lengkap pada konfigurasi mod dan " +"server Anda." #: src/settings_translation_file.cpp msgid "" @@ -6359,7 +6380,7 @@ msgstr "Jarak pengiriman waktu" #: src/settings_translation_file.cpp msgid "Time speed" -msgstr "Kecepatan waktu" +msgstr "Kelajuan waktu" #: src/settings_translation_file.cpp msgid "Timeout for client to remove unused map data from memory." @@ -6400,7 +6421,6 @@ msgid "Trilinear filtering" msgstr "Pemfilteran trilinear" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "True = 256\n" "False = 128\n" @@ -6408,7 +6428,7 @@ msgid "" msgstr "" "True = 256\n" "False = 128\n" -"Berguna untuk membuat peta mini lebih halus pada mesin yang lebih lambat." +"Berguna untuk membuat peta mini lebih halus pada mesin yang lambat." #: src/settings_translation_file.cpp msgid "Trusted mods" @@ -6416,14 +6436,13 @@ msgstr "Mod yang dipercaya" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." -msgstr "URL ke daftar peladen yang tampil pada Tab Multipemain." +msgstr "URL ke daftar server yang tampil pada Tab Multipemain." #: src/settings_translation_file.cpp msgid "Undersampling" msgstr "Undersampling" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Undersampling is similar to using a lower screen resolution, but it applies\n" "to the game world only, keeping the GUI intact.\n" @@ -6433,7 +6452,8 @@ msgid "" msgstr "" "Undersampling seperti menggunakan resolusi layar yang lebih rendah, tetapi\n" "hanya berlaku untuk dunia permainan saja, antarmuka grafis tetap.\n" -"Seharusnya memberikan dorongan performa dengan gambar yang kurang rinci." +"Seharusnya memberikan dorongan kinerja dengan gambar yang kurang detail.\n" +"Nilai yang lebih tinggi menghasilkan gambar yang kurang detail." #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" @@ -6441,7 +6461,7 @@ msgstr "Jarak pemindahan pemain tak terbatas" #: src/settings_translation_file.cpp msgid "Unload unused server data" -msgstr "Membongkar data peladen yang tak terpakai" +msgstr "Membongkar data server yang tak terpakai" #: src/settings_translation_file.cpp msgid "Upper Y limit of dungeons." @@ -6541,7 +6561,7 @@ msgstr "Merubah kecuraman tebing." #: src/settings_translation_file.cpp msgid "Vertical climbing speed, in nodes per second." -msgstr "" +msgstr "Kelajuan vertikal memanjat dalam nodus per detik." #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." @@ -6584,13 +6604,12 @@ msgid "Volume" msgstr "Volume" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Volume of all sounds.\n" "Requires the sound system to be enabled." msgstr "" -"Gunakan pemetaan parallax occlusion.\n" -"Membutuhkan penggunaan shader." +"Volume semua suara.\n" +"Membutuhkan sistem suara untuk dinyalakan." #: src/settings_translation_file.cpp msgid "" @@ -6608,15 +6627,17 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Walking and flying speed, in nodes per second." -msgstr "" +msgstr "Kelajuan jalan dan terbang dalan nodus per detik." #: src/settings_translation_file.cpp msgid "Walking speed" -msgstr "Kecepatan berjalan" +msgstr "Kelajuan jalan" #: src/settings_translation_file.cpp msgid "Walking, flying and climbing speed in fast mode, in nodes per second." msgstr "" +"Kelajuan jalan, terbang, dan memanjat dalam mode gerak cepat dalam nodus per " +"detik." #: src/settings_translation_file.cpp msgid "Water level" @@ -6635,24 +6656,20 @@ msgid "Waving leaves" msgstr "Daun melambai" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids" -msgstr "Laimbaian Cairan" +msgstr "Air berombak" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave height" -msgstr "Ketinggian ombak" +msgstr "Ketinggian ombak air" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave speed" -msgstr "Kecepatan ombak" +msgstr "Kelajuan gelombang ombak" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wavelength" -msgstr "Panjang ombak" +msgstr "Panjang ombak air" #: src/settings_translation_file.cpp msgid "Waving plants" @@ -6705,14 +6722,14 @@ msgstr "" "otomatis tekstur yang sejajar dengan dunia." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Whether FreeType fonts are used, requires FreeType support to be compiled " "in.\n" "If disabled, bitmap and XML vectors fonts are used instead." msgstr "" "Apakah fon FreeType digunakan, membutuhkan dukungan FreeType saat " -"dikompilasi." +"dikompilasi.\n" +"Jika dimatikan, fon bitmap dan vektor XML akan dipakai." #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." @@ -6736,7 +6753,7 @@ msgid "" "Set this to true if your server is set up to restart automatically." msgstr "" "Apakah meminta klien untuk menyambung ulang setelah kerusakan (Lua)?\n" -"Atur ke true jika peladen Anda diatur untuk mulai ulang otomatis." +"Atur ke true jika server Anda diatur untuk mulai ulang otomatis." #: src/settings_translation_file.cpp msgid "Whether to fog out the end of the visible area." @@ -6749,6 +6766,10 @@ msgid "" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" +"Apakah akan membisukan suara atau tidak. Anda dapat membunyikan\n" +"suara kapan pun, kecuali sistem suara dimatikan (enable_sound = false).\n" +"Dalam permainan, Anda dapat beralih mode bisu dengan tombol bisu\n" +"atau melalui menu jeda." #: src/settings_translation_file.cpp msgid "" @@ -6794,12 +6815,11 @@ msgid "" "See also texture_min_size.\n" "Warning: This option is EXPERIMENTAL!" msgstr "" -"Tekstur yang sejajar dengan dunia dapat diperbesar hingga beberapa\n" -"nodus. Namun, peladen mungkin tidak mengirimkan Perbesaran yang\n" -"Anda inginkan, terlebih jika Anda menggunakan paket tekstur yang\n" -"didesain khusus; dengan pilihan ini, klien mencoba untuk menentukan\n" -"perbesaran otomatis sesuai ukuran tekstur.\n" -"Lihat juga texture_min_size.\n" +"Tekstur yang sejajar dengan dunia dapat diperbesar hingga beberapa nodus.\n" +"Namun, server mungkin tidak mengirimkan perbesaran yang Anda inginkan,\n" +"terlebih jika Anda menggunakan paket tekstur yang didesain khusus; dengan\n" +"pilihan ini, klien mencoba untuk menentukan perbesaran otomatis sesuai\n" +"ukuran tekstur. Lihat juga texture_min_size.\n" "Peringatan: Pilihan ini dalam tahap PERCOBAAN!" #: src/settings_translation_file.cpp From 978d9a667efb8a5d8b7310c7fb06aee4dae573ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Zaremba?= Date: Tue, 9 Jun 2020 09:52:46 +0000 Subject: [PATCH 328/424] Translated using Weblate (Polish) Currently translated at 77.6% (1000 of 1288 strings) --- po/pl/minetest.po | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/po/pl/minetest.po b/po/pl/minetest.po index 3eed803b5..3df132132 100644 --- a/po/pl/minetest.po +++ b/po/pl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Polish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-06-02 00:46+0000\n" -"Last-Translator: Damian Wojsław \n" +"PO-Revision-Date: 2020-06-09 12:14+0000\n" +"Last-Translator: Mikołaj Zaremba \n" "Language-Team: Polish \n" "Language: pl\n" @@ -24,9 +24,8 @@ msgid "You died" msgstr "Umarłeś" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred in a Lua script:" -msgstr "Wystąpił błąd w skrypcie Lua, na przykład w modyfikacji:" +msgstr "Wystąpił błąd w skrypcie Lua:" #: builtin/fstk/ui.lua msgid "An error occurred:" @@ -137,9 +136,8 @@ msgid "No modpack description provided." msgstr "Brak dostępnych informacji o modzie." #: builtin/mainmenu/dlg_config_world.lua -#, fuzzy msgid "No optional dependencies" -msgstr "Dodatkowe zależności:" +msgstr "Brak dodatkowych zależności." #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" @@ -795,9 +793,8 @@ msgid "Waving Leaves" msgstr "Falujące liście" #: builtin/mainmenu/tab_settings.lua -#, fuzzy msgid "Waving Liquids" -msgstr "Falujące bloki" +msgstr "Fale (Ciecze)" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" @@ -3356,7 +3353,7 @@ msgstr "Szum wysokości" #: src/settings_translation_file.cpp msgid "Height select noise" -msgstr "Rożnorodność wysokości\n" +msgstr "Rożnorodność wysokości" #: src/settings_translation_file.cpp msgid "High-precision FPU" From 2b42319cb82a865a856e4d7d64cc3e077c77b08f Mon Sep 17 00:00:00 2001 From: ferrumcccp Date: Fri, 12 Jun 2020 12:20:04 +0000 Subject: [PATCH 329/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 90.1% (1161 of 1288 strings) --- po/zh_CN/minetest.po | 188 ++++++++++++++++++++----------------------- 1 file changed, 88 insertions(+), 100 deletions(-) diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index eb47ccce5..82d26d4b8 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Chinese (Simplified) (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-05-14 11:41+0000\n" -"Last-Translator: Mivik \n" +"PO-Revision-Date: 2020-06-12 13:13+0000\n" +"Last-Translator: ferrumcccp \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" @@ -245,7 +245,7 @@ msgstr "种子" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The minimal development test is meant for developers." -msgstr "警告: 最小化开发测试为开发者提供。" +msgstr "警告: 最小化开发测试是为开发者提供的。" #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -429,7 +429,7 @@ msgstr "$1 mod" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" -msgstr "安装 $1 到 $2 失败" +msgstr "无法把$1安装到$2" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" @@ -1008,7 +1008,7 @@ msgstr "隐藏的调试信息和性能分析图" #: src/client/game.cpp msgid "Debug info shown" -msgstr "调试信息切换键" +msgstr "调试信息已显示" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" @@ -1600,7 +1600,7 @@ msgstr "减小音量" #: src/gui/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" -msgstr "连按两次“跳”切换飞行模式" +msgstr "连按两次“跳”启用/禁用飞行模式" #: src/gui/guiKeyChangeMenu.cpp msgid "Drop" @@ -1672,31 +1672,31 @@ msgstr "开关HUD" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle chat log" -msgstr "开关聊天记录" +msgstr "启用/禁用聊天记录" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fast" -msgstr "开关快速移动模式" +msgstr "启用/禁用快速移动模式" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "开关飞行模式" +msgstr "启用/禁用飞行模式" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fog" -msgstr "开关雾" +msgstr "启用/禁用雾" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle minimap" -msgstr "开关小地图" +msgstr "启用/禁用小地图" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "开关穿墙模式" +msgstr "启用/禁用穿墙模式" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle pitchmove" -msgstr "开关仰角移动模式" +msgstr "启用/禁用仰角移动模式" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" @@ -1808,31 +1808,31 @@ msgstr "" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of ridged mountains." -msgstr "控制山脊形状/大小的2D噪声。" +msgstr "控制山脊形状/大小的2D噪点。" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." -msgstr "控制丘陵形状/大小的2D噪声。" +msgstr "控制丘陵形状/大小的2D噪点。" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." -msgstr "控制平缓山形状/大小的2D噪声。" +msgstr "控制平缓山形状/大小的2D噪点。" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." -msgstr "控制山脊区域的大小/频率的2D噪声。" +msgstr "控制山脊区域的大小/频率的2D噪点。" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "控制丘陵的大小/频率的2D噪声。" +msgstr "控制丘陵的大小/频率的2D噪点。" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of step mountain ranges." -msgstr "控制平缓山的大小/频率的2D噪声。" +msgstr "控制平缓山的大小/频率的2D噪点。" #: src/settings_translation_file.cpp msgid "2D noise that locates the river valleys and channels." -msgstr "确定河谷及河道位置的2D噪声。" +msgstr "确定河谷及河道位置的2D噪点。" #: src/settings_translation_file.cpp msgid "3D clouds" @@ -1844,31 +1844,31 @@ msgstr "3D 模式" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." -msgstr "定义巨型洞穴的3D噪声。" +msgstr "定义巨型洞穴的3D噪点。" #: src/settings_translation_file.cpp msgid "" "3D noise defining mountain structure and height.\n" "Also defines structure of floatland mountain terrain." msgstr "" -"定义山丘结构和高度的3D噪声。\n" +"定义山丘结构和高度的3D噪点。\n" "也定义悬空岛山丘地形。" #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." -msgstr "定义河谷壁的结构的3D噪声。" +msgstr "定义河谷壁的结构的3D噪点。" #: src/settings_translation_file.cpp msgid "3D noise defining terrain." -msgstr "定义地形的3D噪声。" +msgstr "定义地形的3D噪点。" #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." -msgstr "用于突出崖、悬崖等的3D噪声。通常变化小。" +msgstr "用于突出崖、悬崖等的3D噪点。通常变化小。" #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "确定每个地图块的地窖数量的3D噪声。" +msgstr "确定每个地图块的地窖数量的3D噪点。" #: src/settings_translation_file.cpp msgid "" @@ -2022,7 +2022,7 @@ msgstr "添加物品名称至工具栏。" #: src/settings_translation_file.cpp msgid "Apple trees noise" -msgstr "苹果树噪音" +msgstr "苹果树噪点" #: src/settings_translation_file.cpp msgid "Arm inertia" @@ -2105,11 +2105,11 @@ msgstr "基本权限" #: src/settings_translation_file.cpp msgid "Beach noise" -msgstr "海滩噪音" +msgstr "海滩噪点" #: src/settings_translation_file.cpp msgid "Beach noise threshold" -msgstr "海滩噪音阈值" +msgstr "海滩噪点阈值" #: src/settings_translation_file.cpp msgid "Bilinear filtering" @@ -2121,11 +2121,11 @@ msgstr "绑定地址" #: src/settings_translation_file.cpp msgid "Biome API temperature and humidity noise parameters" -msgstr "群落 API 温度和湿度噪声参数" +msgstr "群落 API 温度和湿度噪点参数" #: src/settings_translation_file.cpp msgid "Biome noise" -msgstr "生态噪声" +msgstr "生态噪点" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." @@ -2185,19 +2185,19 @@ msgstr "电影模式下镜头平滑" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "镜头更新开关键" +msgstr "镜头更新启用/禁用键" #: src/settings_translation_file.cpp msgid "Cave noise" -msgstr "洞穴噪音" +msgstr "洞穴噪点" #: src/settings_translation_file.cpp msgid "Cave noise #1" -msgstr "洞穴噪音 #1" +msgstr "洞穴噪点 #1" #: src/settings_translation_file.cpp msgid "Cave noise #2" -msgstr "洞穴噪音 #2" +msgstr "洞穴噪点 #2" #: src/settings_translation_file.cpp msgid "Cave width" @@ -2205,11 +2205,11 @@ msgstr "洞穴宽度" #: src/settings_translation_file.cpp msgid "Cave1 noise" -msgstr "洞穴1噪音" +msgstr "洞穴1噪点" #: src/settings_translation_file.cpp msgid "Cave2 noise" -msgstr "洞穴2噪音" +msgstr "洞穴2噪点" #: src/settings_translation_file.cpp msgid "Cavern limit" @@ -2217,7 +2217,7 @@ msgstr "大型洞穴界限" #: src/settings_translation_file.cpp msgid "Cavern noise" -msgstr "大型洞穴噪音" +msgstr "大型洞穴噪点" #: src/settings_translation_file.cpp msgid "Cavern taper" @@ -2275,7 +2275,7 @@ msgstr "聊天消息最大长度" #: src/settings_translation_file.cpp msgid "Chat toggle key" -msgstr "聊天开关键" +msgstr "聊天启用/禁用键" #: src/settings_translation_file.cpp msgid "Chatcommands" @@ -2419,7 +2419,7 @@ msgid "" "Continuous forward movement, toggled by autoforward key.\n" "Press the autoforward key again or the backwards movement to disable." msgstr "" -"自动前进,通过自动前进键切换。\n" +"自动前进,通过自动前进键启用/禁用。\n" "再次按下自动前进键或后退以关闭。" #: src/settings_translation_file.cpp @@ -2455,7 +2455,8 @@ msgid "" "intensive noise calculations." msgstr "" "控制洞穴通道宽度,设置较小值以创建较宽通道。\n" -"值>=10.0则完全关闭通道生成,避免大量噪声计算。" +"值>=10.0则完全关闭通道生成,避免大量噪点\n" +"计算。" #: src/settings_translation_file.cpp msgid "Crash message" @@ -2491,7 +2492,7 @@ msgstr "伤害" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "调试信息开关键" +msgstr "调试信息启用/禁用键" #: src/settings_translation_file.cpp msgid "Debug log file size threshold" @@ -2645,7 +2646,7 @@ msgstr "服务器描述,将在玩家加入时发送给玩家,并显示在服 #: src/settings_translation_file.cpp msgid "Desert noise threshold" -msgstr "沙漠噪声阈值" +msgstr "沙漠噪点阈值" #: src/settings_translation_file.cpp msgid "" @@ -2681,7 +2682,7 @@ msgstr "双击“跳跃”键飞行" #: src/settings_translation_file.cpp msgid "Double-tapping the jump key toggles fly mode." -msgstr "连按两次“跳跃”键切换飞行模式。" +msgstr "连按两次“跳跃”键启用/禁用飞行模式。" #: src/settings_translation_file.cpp msgid "Drop item key" @@ -2701,7 +2702,7 @@ msgstr "地窖最小Y坐标" #: src/settings_translation_file.cpp msgid "Dungeon noise" -msgstr "地窖噪声" +msgstr "地窖噪点" #: src/settings_translation_file.cpp msgid "" @@ -2905,16 +2906,15 @@ msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Factor noise" -msgstr "系数噪音" +msgstr "系数噪点" #: src/settings_translation_file.cpp msgid "Fall bobbing factor" msgstr "坠落上下摆动系数" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "后备字体" +msgstr "后备字体路径" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -2975,7 +2975,7 @@ msgstr "填充深度" #: src/settings_translation_file.cpp msgid "Filler depth noise" -msgstr "填充深度噪声" +msgstr "填充深度噪点" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" @@ -2999,11 +2999,11 @@ msgstr "过滤" #: src/settings_translation_file.cpp msgid "First of 4 2D noises that together define hill/mountain range height." -msgstr "定义决定丘陵/山地范围高度的4个2D噪声的第一项。" +msgstr "定义决定丘陵/山地范围高度的4个2D噪点的第一项。" #: src/settings_translation_file.cpp msgid "First of two 3D noises that together define tunnels." -msgstr "定义决定通道的2个3D噪音的第一项。" +msgstr "定义决定通道的2个3D噪点的第一项。" #: src/settings_translation_file.cpp msgid "Fixed map seed" @@ -3031,7 +3031,7 @@ msgstr "雾开始" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "雾开关键" +msgstr "雾启用/禁用键" #: src/settings_translation_file.cpp msgid "Font bold by default" @@ -3116,7 +3116,7 @@ msgstr "前进键" #: src/settings_translation_file.cpp msgid "Fourth of 4 2D noises that together define hill/mountain range height." -msgstr "定义决定丘陵/山地范围高度的4个2D噪声的第四项。" +msgstr "定义决定丘陵/山地范围高度的4个2D噪点的第四项。" #: src/settings_translation_file.cpp msgid "Fractal type" @@ -3227,7 +3227,7 @@ msgstr "地面高度" #: src/settings_translation_file.cpp msgid "Ground noise" -msgstr "地面噪声" +msgstr "地面噪点" #: src/settings_translation_file.cpp msgid "HTTP mods" @@ -3239,7 +3239,7 @@ msgstr "HUD 缩放比例系数" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "HUD 开关键" +msgstr "HUD启用/禁用键" #: src/settings_translation_file.cpp msgid "" @@ -3268,11 +3268,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Heat blend noise" -msgstr "热混合噪声" +msgstr "热混合噪点" #: src/settings_translation_file.cpp msgid "Heat noise" -msgstr "热噪声" +msgstr "热噪点" #: src/settings_translation_file.cpp msgid "Height component of the initial window size." @@ -3280,11 +3280,11 @@ msgstr "初始窗口高度。" #: src/settings_translation_file.cpp msgid "Height noise" -msgstr "高度噪声" +msgstr "高度噪点" #: src/settings_translation_file.cpp msgid "Height select noise" -msgstr "高度选择噪声" +msgstr "高度选择噪点" #: src/settings_translation_file.cpp msgid "High-precision FPU" @@ -3300,19 +3300,19 @@ msgstr "山丘阈值" #: src/settings_translation_file.cpp msgid "Hilliness1 noise" -msgstr "山丘噪声 #1" +msgstr "山丘噪点 #1" #: src/settings_translation_file.cpp msgid "Hilliness2 noise" -msgstr "山丘噪声 #2" +msgstr "山丘噪点 #2" #: src/settings_translation_file.cpp msgid "Hilliness3 noise" -msgstr "山丘噪声 #3" +msgstr "山丘噪点 #3" #: src/settings_translation_file.cpp msgid "Hilliness4 noise" -msgstr "山丘噪声 #4" +msgstr "山丘噪点 #4" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." @@ -3506,11 +3506,11 @@ msgstr "生成河流多宽。" #: src/settings_translation_file.cpp msgid "Humidity blend noise" -msgstr "湿度混合噪声" +msgstr "湿度混合噪点" #: src/settings_translation_file.cpp msgid "Humidity noise" -msgstr "湿度噪声" +msgstr "湿度噪点" #: src/settings_translation_file.cpp msgid "Humidity variation for biomes." @@ -5143,15 +5143,15 @@ msgstr "等宽字体大小" #: src/settings_translation_file.cpp msgid "Mountain height noise" -msgstr "山高度噪声" +msgstr "山高度噪点" #: src/settings_translation_file.cpp msgid "Mountain noise" -msgstr "山噪声" +msgstr "山噪点" #: src/settings_translation_file.cpp msgid "Mountain variation noise" -msgstr "山变化噪声" +msgstr "山变化噪点" #: src/settings_translation_file.cpp msgid "Mountain zero level" @@ -5167,7 +5167,7 @@ msgstr "鼠标灵敏度倍数。" #: src/settings_translation_file.cpp msgid "Mud noise" -msgstr "泥土噪声" +msgstr "泥土噪点" #: src/settings_translation_file.cpp msgid "" @@ -5213,9 +5213,8 @@ msgid "" msgstr "服务器名称,将显示在提供给玩家的服务器列表。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Near plane" -msgstr "靠近裁切平面" +msgstr "近平面" #: src/settings_translation_file.cpp msgid "Network" @@ -5251,7 +5250,7 @@ msgstr "NodeTimer间隔" #: src/settings_translation_file.cpp msgid "Noises" -msgstr "噪声" +msgstr "噪点" #: src/settings_translation_file.cpp msgid "Normalmaps sampling" @@ -5432,9 +5431,8 @@ msgid "Pitch move key" msgstr "仰角移动键" #: src/settings_translation_file.cpp -#, fuzzy msgid "Pitch move mode" -msgstr "第三人称视角" +msgstr "仰角移动模式" #: src/settings_translation_file.cpp msgid "" @@ -5490,34 +5488,30 @@ msgstr "有\"basic_privs\"的玩家可以授予的权限" #: src/settings_translation_file.cpp msgid "Profiler" -msgstr "剖析器" +msgstr "性能分析" #: src/settings_translation_file.cpp msgid "Profiler toggle key" -msgstr "剖析器切换键" +msgstr "性能分析启用/禁用键" #: src/settings_translation_file.cpp -#, fuzzy msgid "Profiling" -msgstr "Mod 剖析" +msgstr "Mod 性能分析" #: src/settings_translation_file.cpp -#, fuzzy msgid "Proportion of large caves that contain liquid." msgstr "包含液体的大洞穴的比例。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Radius of cloud area stated in number of 64 node cloud squares.\n" "Values larger than 26 will start to produce sharp cutoffs at cloud area " "corners." msgstr "" -"以64个节点的云平方数表示的云区域半径。\n" -"大于26的值将开始在云区域的拐角处产生急剧的截止。" +"以64个节点的云立方体的数目表示的云区域半径。\n" +"大于26的值将开始在云区域的拐角处产生尖锐的边界。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Raises terrain to make valleys around the rivers." msgstr "抬高地形使河流周围形成山谷。" @@ -5530,7 +5524,6 @@ msgid "Range select key" msgstr "范围选择键" #: src/settings_translation_file.cpp -#, fuzzy msgid "Recent Chat Messages" msgstr "最近聊天消息" @@ -5557,9 +5550,8 @@ msgid "Replaces the default main menu with a custom one." msgstr "自定义默认的主菜单界面。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Report path" -msgstr "字体路径" +msgstr "报告路径" #: src/settings_translation_file.cpp #, fuzzy @@ -5585,22 +5577,20 @@ msgstr "" "READ_PLAYERINFO:32(禁止客户端调用 get_player_names)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Ridge mountain spread noise" -msgstr "山脊扩散噪声" +msgstr "山脊扩散噪点" #: src/settings_translation_file.cpp -#, fuzzy msgid "Ridge noise" -msgstr "河流噪音" +msgstr "河流噪点" #: src/settings_translation_file.cpp msgid "Ridge underwater noise" -msgstr "山脊地下水噪声" +msgstr "山脊地下水噪点" #: src/settings_translation_file.cpp msgid "Ridged mountain size noise" -msgstr "山脊大小噪声" +msgstr "山脊大小噪点" #: src/settings_translation_file.cpp msgid "Right key" @@ -5624,7 +5614,7 @@ msgstr "河流深度" #: src/settings_translation_file.cpp msgid "River noise" -msgstr "河流噪音" +msgstr "河流噪点" #: src/settings_translation_file.cpp msgid "River size" @@ -5640,11 +5630,11 @@ msgstr "回滚记录" #: src/settings_translation_file.cpp msgid "Rolling hill size noise" -msgstr "山丘大小噪音" +msgstr "山丘大小噪点" #: src/settings_translation_file.cpp msgid "Rolling hills spread noise" -msgstr "山丘扩散噪音" +msgstr "山丘扩散噪点" #: src/settings_translation_file.cpp msgid "Round minimap" @@ -5711,14 +5701,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Seabed noise" -msgstr "洞穴噪音 #1" +msgstr "海底噪点" #: src/settings_translation_file.cpp -#, fuzzy msgid "Second of 4 2D noises that together define hill/mountain range height." -msgstr "定义tunnels的最初2个3D噪音。" +msgstr "定义山/山丘范围高度的4个2D噪点的第二项。" #: src/settings_translation_file.cpp #, fuzzy @@ -6257,7 +6245,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Toggle camera mode key" -msgstr "切换拍照模式键" +msgstr "启用/禁用拍照模式键" #: src/settings_translation_file.cpp msgid "Tooltip delay" From b8b3cec9eb52e88a0495c4f768d6e37b306d1ccd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=92=E8=8D=89?= Date: Fri, 12 Jun 2020 12:33:19 +0000 Subject: [PATCH 330/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 90.1% (1161 of 1288 strings) --- po/zh_CN/minetest.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index 82d26d4b8..8b391e9b9 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-06-12 13:13+0000\n" -"Last-Translator: ferrumcccp \n" +"Last-Translator: 青草 \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" @@ -298,7 +298,7 @@ msgstr "(没有关于此设置的信息)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "2D 噪声" +msgstr "2D 噪点" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" @@ -774,7 +774,7 @@ msgstr "色调映射" #: builtin/mainmenu/tab_settings.lua msgid "Touchthreshold: (px)" -msgstr "触控阈值(px)" +msgstr "触控阈值:(px)" #: builtin/mainmenu/tab_settings.lua msgid "Trilinear Filter" From 0785802269311fe046ee4e0717de56f43e9f21f6 Mon Sep 17 00:00:00 2001 From: IFRFSX <1079092922@qq.com> Date: Fri, 12 Jun 2020 12:56:10 +0000 Subject: [PATCH 331/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 90.1% (1161 of 1288 strings) --- po/zh_CN/minetest.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index 8b391e9b9..7c11eb59b 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-06-12 13:13+0000\n" -"Last-Translator: 青草 \n" +"Last-Translator: IFRFSX <1079092922@qq.com>\n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" @@ -1176,7 +1176,7 @@ msgstr "开" #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "仰角移动模式已禁用" +msgstr "俯仰移动模式已禁用" #: src/client/game.cpp msgid "Pitch move mode enabled" From e0c094f414e2c098306e75ec2e08839e1636b0aa Mon Sep 17 00:00:00 2001 From: Yangjun Wang Date: Fri, 12 Jun 2020 13:00:56 +0000 Subject: [PATCH 332/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 90.1% (1161 of 1288 strings) --- po/zh_CN/minetest.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index 7c11eb59b..f554729aa 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" "PO-Revision-Date: 2020-06-12 13:13+0000\n" -"Last-Translator: IFRFSX <1079092922@qq.com>\n" +"Last-Translator: Yangjun Wang \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" @@ -1668,7 +1668,7 @@ msgstr "特殊" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" -msgstr "开关HUD" +msgstr "启用/禁用HUD" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle chat log" From 8aa1a36bebbf1ebed963177e6368e983b5fc1436 Mon Sep 17 00:00:00 2001 From: ferrumcccp Date: Fri, 12 Jun 2020 13:13:58 +0000 Subject: [PATCH 333/424] Translated using Weblate (Chinese (Simplified)) Currently translated at 92.9% (1197 of 1288 strings) --- po/zh_CN/minetest.po | 300 +++++++++++++++++++++++-------------------- 1 file changed, 162 insertions(+), 138 deletions(-) diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index f554729aa..a4daf878e 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Chinese (Simplified) (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-06-12 13:13+0000\n" -"Last-Translator: Yangjun Wang \n" +"PO-Revision-Date: 2020-06-13 21:08+0000\n" +"Last-Translator: ferrumcccp \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" @@ -298,7 +298,7 @@ msgstr "(没有关于此设置的信息)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "2D 噪点" +msgstr "2D 噪声" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" @@ -1180,7 +1180,7 @@ msgstr "俯仰移动模式已禁用" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "仰角移动模式已禁用" +msgstr "俯仰移动模式已禁用" #: src/client/game.cpp msgid "Profiler graph shown" @@ -1808,31 +1808,31 @@ msgstr "" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of ridged mountains." -msgstr "控制山脊形状/大小的2D噪点。" +msgstr "控制山脊形状/大小的2D噪声。" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." -msgstr "控制丘陵形状/大小的2D噪点。" +msgstr "控制波状丘陵形状/大小的2D噪声。" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." -msgstr "控制平缓山形状/大小的2D噪点。" +msgstr "控制平缓山形状/大小的2D噪声。" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." -msgstr "控制山脊区域的大小/频率的2D噪点。" +msgstr "控制山脊区域的大小/频率的2D噪声。" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "控制丘陵的大小/频率的2D噪点。" +msgstr "控制波状丘陵的大小/频率的2D噪声。" #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of step mountain ranges." -msgstr "控制平缓山的大小/频率的2D噪点。" +msgstr "控制平缓山的大小/频率的2D噪声。" #: src/settings_translation_file.cpp msgid "2D noise that locates the river valleys and channels." -msgstr "确定河谷及河道位置的2D噪点。" +msgstr "确定河谷及河道位置的2D噪声。" #: src/settings_translation_file.cpp msgid "3D clouds" @@ -1844,31 +1844,31 @@ msgstr "3D 模式" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." -msgstr "定义巨型洞穴的3D噪点。" +msgstr "定义巨型洞穴的3D噪声。" #: src/settings_translation_file.cpp msgid "" "3D noise defining mountain structure and height.\n" "Also defines structure of floatland mountain terrain." msgstr "" -"定义山丘结构和高度的3D噪点。\n" +"定义山丘结构和高度的3D噪声。\n" "也定义悬空岛山丘地形。" #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." -msgstr "定义河谷壁的结构的3D噪点。" +msgstr "定义河谷壁的结构的3D噪声。" #: src/settings_translation_file.cpp msgid "3D noise defining terrain." -msgstr "定义地形的3D噪点。" +msgstr "定义地形的3D噪声。" #: src/settings_translation_file.cpp msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." -msgstr "用于突出崖、悬崖等的3D噪点。通常变化小。" +msgstr "用于突出崖、悬崖等的3D噪声。通常变化小。" #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "确定每个地图块的地窖数量的3D噪点。" +msgstr "确定每个地图块的地窖数量的3D噪声。" #: src/settings_translation_file.cpp msgid "" @@ -2022,7 +2022,7 @@ msgstr "添加物品名称至工具栏。" #: src/settings_translation_file.cpp msgid "Apple trees noise" -msgstr "苹果树噪点" +msgstr "苹果树噪声" #: src/settings_translation_file.cpp msgid "Arm inertia" @@ -2105,11 +2105,11 @@ msgstr "基本权限" #: src/settings_translation_file.cpp msgid "Beach noise" -msgstr "海滩噪点" +msgstr "海滩噪声" #: src/settings_translation_file.cpp msgid "Beach noise threshold" -msgstr "海滩噪点阈值" +msgstr "海滩噪声阈值" #: src/settings_translation_file.cpp msgid "Bilinear filtering" @@ -2121,11 +2121,11 @@ msgstr "绑定地址" #: src/settings_translation_file.cpp msgid "Biome API temperature and humidity noise parameters" -msgstr "群落 API 温度和湿度噪点参数" +msgstr "生物群系 API 温度和湿度噪声参数" #: src/settings_translation_file.cpp msgid "Biome noise" -msgstr "生态噪点" +msgstr "生物群系噪声" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." @@ -2189,15 +2189,15 @@ msgstr "镜头更新启用/禁用键" #: src/settings_translation_file.cpp msgid "Cave noise" -msgstr "洞穴噪点" +msgstr "洞穴噪声" #: src/settings_translation_file.cpp msgid "Cave noise #1" -msgstr "洞穴噪点 #1" +msgstr "洞穴噪声 #1" #: src/settings_translation_file.cpp msgid "Cave noise #2" -msgstr "洞穴噪点 #2" +msgstr "洞穴噪声 #2" #: src/settings_translation_file.cpp msgid "Cave width" @@ -2205,11 +2205,11 @@ msgstr "洞穴宽度" #: src/settings_translation_file.cpp msgid "Cave1 noise" -msgstr "洞穴1噪点" +msgstr "洞穴1噪声" #: src/settings_translation_file.cpp msgid "Cave2 noise" -msgstr "洞穴2噪点" +msgstr "洞穴2噪声" #: src/settings_translation_file.cpp msgid "Cavern limit" @@ -2217,7 +2217,7 @@ msgstr "大型洞穴界限" #: src/settings_translation_file.cpp msgid "Cavern noise" -msgstr "大型洞穴噪点" +msgstr "大型洞穴噪声" #: src/settings_translation_file.cpp msgid "Cavern taper" @@ -2455,7 +2455,7 @@ msgid "" "intensive noise calculations." msgstr "" "控制洞穴通道宽度,设置较小值以创建较宽通道。\n" -"值>=10.0则完全关闭通道生成,避免大量噪点\n" +"值>=10.0则完全关闭通道生成,避免大量噪声\n" "计算。" #: src/settings_translation_file.cpp @@ -2646,7 +2646,7 @@ msgstr "服务器描述,将在玩家加入时发送给玩家,并显示在服 #: src/settings_translation_file.cpp msgid "Desert noise threshold" -msgstr "沙漠噪点阈值" +msgstr "沙漠噪声阈值" #: src/settings_translation_file.cpp msgid "" @@ -2702,7 +2702,7 @@ msgstr "地窖最小Y坐标" #: src/settings_translation_file.cpp msgid "Dungeon noise" -msgstr "地窖噪点" +msgstr "地窖噪声" #: src/settings_translation_file.cpp msgid "" @@ -2906,7 +2906,7 @@ msgstr "FSAA" #: src/settings_translation_file.cpp msgid "Factor noise" -msgstr "系数噪点" +msgstr "系数噪声" #: src/settings_translation_file.cpp msgid "Fall bobbing factor" @@ -2975,7 +2975,7 @@ msgstr "填充深度" #: src/settings_translation_file.cpp msgid "Filler depth noise" -msgstr "填充深度噪点" +msgstr "填充深度噪声" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" @@ -2999,11 +2999,11 @@ msgstr "过滤" #: src/settings_translation_file.cpp msgid "First of 4 2D noises that together define hill/mountain range height." -msgstr "定义决定丘陵/山地范围高度的4个2D噪点的第一项。" +msgstr "定义决定丘陵/山地范围高度的4个2D噪声的第一项。" #: src/settings_translation_file.cpp msgid "First of two 3D noises that together define tunnels." -msgstr "定义决定通道的2个3D噪点的第一项。" +msgstr "定义决定通道的2个3D噪声的第一项。" #: src/settings_translation_file.cpp msgid "Fixed map seed" @@ -3116,7 +3116,7 @@ msgstr "前进键" #: src/settings_translation_file.cpp msgid "Fourth of 4 2D noises that together define hill/mountain range height." -msgstr "定义决定丘陵/山地范围高度的4个2D噪点的第四项。" +msgstr "定义决定丘陵/山地范围高度的4个2D噪声的第四项。" #: src/settings_translation_file.cpp msgid "Fractal type" @@ -3227,7 +3227,7 @@ msgstr "地面高度" #: src/settings_translation_file.cpp msgid "Ground noise" -msgstr "地面噪点" +msgstr "地面噪声" #: src/settings_translation_file.cpp msgid "HTTP mods" @@ -3268,11 +3268,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Heat blend noise" -msgstr "热混合噪点" +msgstr "热混合噪声" #: src/settings_translation_file.cpp msgid "Heat noise" -msgstr "热噪点" +msgstr "热噪声" #: src/settings_translation_file.cpp msgid "Height component of the initial window size." @@ -3280,11 +3280,11 @@ msgstr "初始窗口高度。" #: src/settings_translation_file.cpp msgid "Height noise" -msgstr "高度噪点" +msgstr "高度噪声" #: src/settings_translation_file.cpp msgid "Height select noise" -msgstr "高度选择噪点" +msgstr "高度选择噪声" #: src/settings_translation_file.cpp msgid "High-precision FPU" @@ -3300,19 +3300,19 @@ msgstr "山丘阈值" #: src/settings_translation_file.cpp msgid "Hilliness1 noise" -msgstr "山丘噪点 #1" +msgstr "山丘噪声 #1" #: src/settings_translation_file.cpp msgid "Hilliness2 noise" -msgstr "山丘噪点 #2" +msgstr "山丘噪声 #2" #: src/settings_translation_file.cpp msgid "Hilliness3 noise" -msgstr "山丘噪点 #3" +msgstr "山丘噪声 #3" #: src/settings_translation_file.cpp msgid "Hilliness4 noise" -msgstr "山丘噪点 #4" +msgstr "山丘噪声 #4" #: src/settings_translation_file.cpp msgid "Homepage of server, to be displayed in the serverlist." @@ -3506,11 +3506,11 @@ msgstr "生成河流多宽。" #: src/settings_translation_file.cpp msgid "Humidity blend noise" -msgstr "湿度混合噪点" +msgstr "湿度混合噪声" #: src/settings_translation_file.cpp msgid "Humidity noise" -msgstr "湿度噪点" +msgstr "湿度噪声" #: src/settings_translation_file.cpp msgid "Humidity variation for biomes." @@ -3537,7 +3537,9 @@ msgid "" "If disabled, \"special\" key is used to fly fast if both fly and fast mode " "are\n" "enabled." -msgstr "如果禁用,当飞行和疾跑同时开启时“特殊”键用于急速飞行。" +msgstr "" +"如果禁用,当飞行和快速模式同时启用时“特殊”键用于快速\n" +"飞行。" #: src/settings_translation_file.cpp msgid "" @@ -3566,7 +3568,9 @@ msgid "" "If enabled, \"special\" key instead of \"sneak\" key is used for climbing " "down and\n" "descending." -msgstr "如果启用,“特殊”键将代替潜行键的向下攀爬和下降。" +msgstr "" +"如果启用,“特殊”键将代替潜行键的向下攀爬和\n" +"下降。" #: src/settings_translation_file.cpp msgid "" @@ -3592,7 +3596,7 @@ msgstr "" msgid "" "If enabled, makes move directions relative to the player's pitch when flying " "or swimming." -msgstr "如果启用,则在飞行或游泳时相对于玩家的视角来移动方向。" +msgstr "如果启用,则在飞行或游泳时相对于玩家的仰角来移动方向。" #: src/settings_translation_file.cpp msgid "If enabled, new players cannot join with an empty password." @@ -3906,7 +3910,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"快速模式移动键。\n" +"快速模式快速移动键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -3938,7 +3942,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"向左键。\n" +"左方向键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -3948,7 +3952,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"向右键。\n" +"右方向键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4381,7 +4385,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关自动前进键。\n" +"启用/禁用自动前进键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4401,7 +4405,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关小地图键。\n" +"启用/禁用小地图键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4411,7 +4415,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关快速移动键。\n" +"启用/禁用快速移动键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4421,7 +4425,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关飞行键。\n" +"启用/禁用飞行键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4431,7 +4435,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关穿墙模式键。\n" +"启用/禁用穿墙模式键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4441,7 +4445,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关仰角移动模式键。\n" +"启用/禁用俯仰移动模式键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4451,7 +4455,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关相机更新键。仅用于开发。\n" +"启用/禁用相机更新键。仅用于开发。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4461,7 +4465,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关聊天显示键。\n" +"启用/禁用聊天显示键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4471,7 +4475,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关调试信息键。\n" +"启用/禁用调试信息键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4481,7 +4485,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关雾显示键。\n" +"启用/禁用雾显示键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4491,7 +4495,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关HUD显示键。\n" +"启用/禁用HUD显示键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4501,7 +4505,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关大型聊天控制台显示键。\n" +"启用/禁用大型聊天控制台显示键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4511,7 +4515,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关性能分析图显示键。仅用于开发。\n" +"启用/禁用性能分析图显示键。仅用于开发。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4521,7 +4525,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关无限视野键。\n" +"启用/禁用无限视野键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4531,7 +4535,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"开关缩放(如有可能)键。\n" +"启用/禁用缩放(如有可能)键。\n" "见http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4821,7 +4825,7 @@ msgid "" "the 'jungles' flag is ignored." msgstr "" "针对v6地图生成器的属性。\n" -"'snowboimes'启用新版5群落系统。\n" +"'snowboimes'启用新版5生物群系系统。\n" "当'snowbiomes'开启使丛林自动启用,\n" "忽略'jungles'标签。" @@ -5131,7 +5135,7 @@ msgstr "mod频道" #: src/settings_translation_file.cpp msgid "Modifies the size of the hudbar elements." -msgstr "更改hud栏元素。" +msgstr "更改hud栏元素大小。" #: src/settings_translation_file.cpp msgid "Monospace font path" @@ -5143,19 +5147,19 @@ msgstr "等宽字体大小" #: src/settings_translation_file.cpp msgid "Mountain height noise" -msgstr "山高度噪点" +msgstr "山高度噪声" #: src/settings_translation_file.cpp msgid "Mountain noise" -msgstr "山噪点" +msgstr "山噪声" #: src/settings_translation_file.cpp msgid "Mountain variation noise" -msgstr "山变化噪点" +msgstr "山变化噪声" #: src/settings_translation_file.cpp msgid "Mountain zero level" -msgstr "山起点级" +msgstr "山起点高度" #: src/settings_translation_file.cpp msgid "Mouse sensitivity" @@ -5167,7 +5171,7 @@ msgstr "鼠标灵敏度倍数。" #: src/settings_translation_file.cpp msgid "Mud noise" -msgstr "泥土噪点" +msgstr "泥土噪声" #: src/settings_translation_file.cpp msgid "" @@ -5250,7 +5254,7 @@ msgstr "NodeTimer间隔" #: src/settings_translation_file.cpp msgid "Noises" -msgstr "噪点" +msgstr "噪声" #: src/settings_translation_file.cpp msgid "Normalmaps sampling" @@ -5388,11 +5392,11 @@ msgstr "屏幕截图保存路径。" msgid "" "Path to shader directory. If no path is defined, default location will be " "used." -msgstr "着色器目录路径。如果无路径,则使用默认路径。" +msgstr "着色器目录路径。如果未定义路径,则使用默认路径。" #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." -msgstr "材质目录路径。所有材质都从此路径搜索。" +msgstr "材质目录路径。所有材质都首先从此路径搜索。" #: src/settings_translation_file.cpp msgid "" @@ -5420,7 +5424,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Pause on lost window focus" -msgstr "丢失窗口焦点是暂停" +msgstr "丢失窗口焦点时暂停" #: src/settings_translation_file.cpp msgid "Physics" @@ -5428,11 +5432,11 @@ msgstr "物理" #: src/settings_translation_file.cpp msgid "Pitch move key" -msgstr "仰角移动键" +msgstr "俯仰移动键" #: src/settings_translation_file.cpp msgid "Pitch move mode" -msgstr "仰角移动模式" +msgstr "俯仰移动模式" #: src/settings_translation_file.cpp msgid "" @@ -5459,7 +5463,7 @@ msgid "" "Port to connect to (UDP).\n" "Note that the port field in the main menu overrides this setting." msgstr "" -"要连接到 (UDP) 的端口。 \n" +"要连接到的端口(UDP)。 \n" "请注意,主菜单中的端口字段将覆盖此设置。" #: src/settings_translation_file.cpp @@ -5467,19 +5471,19 @@ msgid "" "Prevent digging and placing from repeating when holding the mouse buttons.\n" "Enable this when you dig or place too often by accident." msgstr "" -"按住鼠标时,防止误破坏和误放置。 \n" -"当您意外破坏方块或意外放置方块时,可以启用此功能。" +"按住鼠标时,防止重复破坏和重复放置。 \n" +"当您意外地频繁破坏或放置方块时启用此功能。" #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." -msgstr "阻止 mod 执行危险操作,如运行 shell 命令。" +msgstr "阻止 mod 执行不安全操作,如运行 shell 命令。" #: src/settings_translation_file.cpp msgid "" "Print the engine's profiling data in regular intervals (in seconds).\n" "0 = disable. Useful for developers." msgstr "" -"以固定间隔(以秒为单位)打印引擎的分析数据。 \n" +"以固定间隔(以秒为单位)打印引擎的性能分析数据。 \n" "0 = 禁用。对开发人员很有用。" #: src/settings_translation_file.cpp @@ -5496,7 +5500,7 @@ msgstr "性能分析启用/禁用键" #: src/settings_translation_file.cpp msgid "Profiling" -msgstr "Mod 性能分析" +msgstr "性能分析" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." @@ -5529,7 +5533,7 @@ msgstr "最近聊天消息" #: src/settings_translation_file.cpp msgid "Regular font path" -msgstr "字体路径" +msgstr "常规字体路径" #: src/settings_translation_file.cpp msgid "Remote media" @@ -5544,17 +5548,18 @@ msgid "" "Remove color codes from incoming chat messages\n" "Use this to stop players from being able to use color in their messages" msgstr "" +"移除传入聊天消息的色彩码\n" +"使用该设置来防止玩家在消息中使用颜色" #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." -msgstr "自定义默认的主菜单界面。" +msgstr "将默认主菜单替换为自定义主菜单。" #: src/settings_translation_file.cpp msgid "Report path" msgstr "报告路径" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Restricts the access of certain client-side functions on servers.\n" "Combine the byteflags below to restrict client-side features, or set to 0\n" @@ -5568,29 +5573,31 @@ msgid "" "READ_PLAYERINFO: 32 (disable get_player_names call client-side)" msgstr "" "在服务器上限制一些客户端上的功能。\n" -"将下面的标志位结合来限制客户端功能,设置为0为无限制:\n" -"LOAD_CLIENT_MODS:1(禁止加载客户端的 Mods)\n" +"将下面的标志位结合来限制客户端功能,设置为0为\n" +"无限制:\n" +"LOAD_CLIENT_MODS:1(禁止加载客户端 mod)\n" "CHAT_MESSAGES:2(禁止客户端调用 send_chat_message)\n" "READ_ITEMDEFS:4(禁止客户端调用 get_item_def)\n" "READ_NODEDEFS:8(禁止客户端调用 get_node_def)\n" -"LOOKUP_NODES_LIMIT:16(禁止客户端调用 get_node 来获取 csm_restriction_noderange)\n" +"LOOKUP_NODES_LIMIT:16(禁止客户端 get_node 调用限制为\n" +"csm_restriction_noderange)\n" "READ_PLAYERINFO:32(禁止客户端调用 get_player_names)" #: src/settings_translation_file.cpp msgid "Ridge mountain spread noise" -msgstr "山脊扩散噪点" +msgstr "山脊扩散噪声" #: src/settings_translation_file.cpp msgid "Ridge noise" -msgstr "河流噪点" +msgstr "山脊噪声" #: src/settings_translation_file.cpp msgid "Ridge underwater noise" -msgstr "山脊地下水噪点" +msgstr "水下山脊噪声" #: src/settings_translation_file.cpp msgid "Ridged mountain size noise" -msgstr "山脊大小噪点" +msgstr "山脊大小噪声" #: src/settings_translation_file.cpp msgid "Right key" @@ -5614,7 +5621,7 @@ msgstr "河流深度" #: src/settings_translation_file.cpp msgid "River noise" -msgstr "河流噪点" +msgstr "河流噪声" #: src/settings_translation_file.cpp msgid "River size" @@ -5630,11 +5637,11 @@ msgstr "回滚记录" #: src/settings_translation_file.cpp msgid "Rolling hill size noise" -msgstr "山丘大小噪点" +msgstr "波状丘陵大小噪声" #: src/settings_translation_file.cpp msgid "Rolling hills spread noise" -msgstr "山丘扩散噪点" +msgstr "波状丘陵扩散噪声" #: src/settings_translation_file.cpp msgid "Round minimap" @@ -5649,14 +5656,12 @@ msgid "Sandy beaches occur when np_beach exceeds this value." msgstr "当 np_beach 超过这个值时会出现沙滩。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Save the map received by the client on disk." msgstr "将客户端接收到的地图保存在磁盘上。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Save window size automatically when modified." -msgstr "当窗口大小改变时自动记忆。" +msgstr "当窗口大小改变时自动保存。" #: src/settings_translation_file.cpp msgid "Saving map received from server" @@ -5670,6 +5675,11 @@ msgid "" "pixels when scaling down, at the cost of blurring some\n" "edge pixels when images are scaled by non-integer sizes." msgstr "" +"根据用户指定值缩放GUI。\n" +"使用最近的邻近抗锯齿滤镜缩放GUI。\n" +"这会将粗边处理光滑,并且在缩小时,\n" +"以在非整数缩放大小下模糊化部分边界\n" +"为代价混合像素。" #: src/settings_translation_file.cpp msgid "Screen height" @@ -5684,14 +5694,12 @@ msgid "Screenshot folder" msgstr "截图文件夹" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot format" -msgstr "截图文件夹" +msgstr "截图格式" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot quality" -msgstr "截图" +msgstr "截图品质" #: src/settings_translation_file.cpp msgid "" @@ -5699,19 +5707,21 @@ msgid "" "1 means worst quality; 100 means best quality.\n" "Use 0 for default quality." msgstr "" +"截图品质。仅用于JPEG格式。\n" +"1 代表最差品质,100 代表最佳品质。\n" +"使用 0 来使用预设品质。" #: src/settings_translation_file.cpp msgid "Seabed noise" -msgstr "海底噪点" +msgstr "海底噪声" #: src/settings_translation_file.cpp msgid "Second of 4 2D noises that together define hill/mountain range height." -msgstr "定义山/山丘范围高度的4个2D噪点的第二项。" +msgstr "定义山/山丘范围高度的4个2D噪声的第二项。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Second of two 3D noises that together define tunnels." -msgstr "定义tunnels的最初2个3D噪音。" +msgstr "定义通道的2个3D噪音的第二项。" #: src/settings_translation_file.cpp msgid "Security" @@ -5719,11 +5729,11 @@ msgstr "安全" #: src/settings_translation_file.cpp msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" -msgstr "" +msgstr "见 https://www.sqlite.org/pragma.html#pragma_synchronous" #: src/settings_translation_file.cpp msgid "Selection box border color (R,G,B)." -msgstr "" +msgstr "边框颜色 (红,绿,蓝) 选择框。" #: src/settings_translation_file.cpp msgid "Selection box color" @@ -5734,7 +5744,6 @@ msgid "Selection box width" msgstr "选择框宽度" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Selects one of 18 fractal types.\n" "1 = 4D \"Roundy\" Mandelbrot set.\n" @@ -5802,7 +5811,7 @@ msgstr "服务器端口" #: src/settings_translation_file.cpp msgid "Server side occlusion culling" -msgstr "" +msgstr "服务器端遮挡删除" #: src/settings_translation_file.cpp msgid "Serverlist URL" @@ -5817,10 +5826,12 @@ msgid "" "Set the language. Leave empty to use the system language.\n" "A restart is required after changing this." msgstr "" +"设定语言。留空以使用系统语言。\n" +"变更后须重新启动。" #: src/settings_translation_file.cpp msgid "Set the maximum character length of a chat message sent by clients." -msgstr "" +msgstr "设定客户端传送的聊天讯息的最大字符长度。" #: src/settings_translation_file.cpp msgid "" @@ -5857,24 +5868,25 @@ msgid "" "cards.\n" "This only works with the OpenGL video backend." msgstr "" +"着色器允许高级视觉效果并且在一些显卡上可能会提高\n" +"性能。\n" +"仅用于OpenGL视频后端。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the default font. If 0, then shadow will not be " "drawn." -msgstr "字体阴影偏移,0 表示不绘制阴影。" +msgstr "默认字体阴影偏移(单位为像素),0 表示不绘制阴影。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " "be drawn." -msgstr "字体阴影偏移,0 表示不绘制阴影。" +msgstr "后备字体阴影偏移(单位为像素),0 表示不绘制阴影。" #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." -msgstr "" +msgstr "小地图的形状。启用 = 圆形,停用 = 方形。" #: src/settings_translation_file.cpp msgid "Show debug info" @@ -5882,11 +5894,11 @@ msgstr "显示调试信息" #: src/settings_translation_file.cpp msgid "Show entity selection boxes" -msgstr "" +msgstr "显示实体选择框" #: src/settings_translation_file.cpp msgid "Shutdown message" -msgstr "关机消息" +msgstr "关闭消息" #: src/settings_translation_file.cpp msgid "" @@ -5897,6 +5909,12 @@ msgid "" "Altering this value is for special usage, leaving it unchanged is\n" "recommended." msgstr "" +"地图生成器生成的地图块的大小,以地图区块(16方块)表示。\n" +"警告!:将此值增加到大于5没有益处,而且有\n" +"多种危险。\n" +"减少此值增加洞穴和地窖密度。\n" +"修改此值适用于特殊用途,建议不改变\n" +"此值。" #: src/settings_translation_file.cpp msgid "" @@ -5904,10 +5922,13 @@ msgid "" "increase the cache hit %, reducing the data being copied from the main\n" "thread, thus reducing jitter." msgstr "" +"网格生成器的地图区块缓存大小。增加此值将会\n" +"增加缓存命中率,减少从主线程复制数据,从而\n" +"减少抖动。" #: src/settings_translation_file.cpp msgid "Slice w" -msgstr "" +msgstr "切片 w" #: src/settings_translation_file.cpp msgid "Slope and fill work together to modify the heights." @@ -5915,19 +5936,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "" +msgstr "小型洞穴最大数" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "" +msgstr "小型洞穴最小数" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." -msgstr "" +msgstr "在边界上的混合生物群系的湿度变化。" #: src/settings_translation_file.cpp msgid "Small-scale temperature variation for blending biomes on borders." -msgstr "" +msgstr "在边界上的混合生物群系的温度变化。" #: src/settings_translation_file.cpp msgid "Smooth lighting" @@ -5938,14 +5959,16 @@ msgid "" "Smooths camera when looking around. Also called look or mouse smoothing.\n" "Useful for recording videos." msgstr "" +"当转动视角时让摄影机变流畅。也称为观看或鼠标流畅。\n" +"对录影很有用。" #: src/settings_translation_file.cpp msgid "Smooths rotation of camera in cinematic mode. 0 to disable." -msgstr "" +msgstr "在电影模式中让摄影机旋转变流畅。设为 0 以停用。" #: src/settings_translation_file.cpp msgid "Smooths rotation of camera. 0 to disable." -msgstr "" +msgstr "让旋转摄影机时较流畅。设为 0 以停用。" #: src/settings_translation_file.cpp msgid "Sneak key" @@ -5957,21 +5980,19 @@ msgstr "潜行速度" #: src/settings_translation_file.cpp msgid "Sneaking speed, in nodes per second." -msgstr "" +msgstr "潜行速度,以方块每秒为单位。" #: src/settings_translation_file.cpp msgid "Sound" msgstr "音效" #: src/settings_translation_file.cpp -#, fuzzy msgid "Special key" -msgstr "潜行键" +msgstr "特殊键" #: src/settings_translation_file.cpp -#, fuzzy msgid "Special key for climbing/descending" -msgstr "攀登/降落的键" +msgstr "用于攀登/降落的特殊键" #: src/settings_translation_file.cpp msgid "" @@ -5980,6 +6001,10 @@ msgid "" "(obviously, remote_media should end with a slash).\n" "Files that are not present will be fetched the usual way." msgstr "" +"客户端从指定的 URL 而不是使用 UDP 获取媒体。\n" +"$filename 应该可以通过 cURL 从 $remote_media$filename 访问。\n" +"(显然,remote_media 部份应以斜线结束)。\n" +"没有在其中的文件将会以通常的方式获取。" #: src/settings_translation_file.cpp msgid "" @@ -6104,9 +6129,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "The depth of dirt or other biome filler node." -msgstr "泥土深度或其他过滤器" +msgstr "泥土深度或其他生物群系过滤节点" #: src/settings_translation_file.cpp msgid "" @@ -6427,7 +6451,7 @@ msgstr "可视范围增加键" #: src/settings_translation_file.cpp msgid "View zoom key" -msgstr "" +msgstr "检视缩放键" #: src/settings_translation_file.cpp msgid "Viewing range" From 24e58b75467d00965266d1b19f8216dca338625e Mon Sep 17 00:00:00 2001 From: Fontan 030 Date: Thu, 11 Jun 2020 19:56:06 +0000 Subject: [PATCH 334/424] Translated using Weblate (Kazakh) Currently translated at 1.8% (24 of 1288 strings) --- po/kk/minetest.po | 50 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/po/kk/minetest.po b/po/kk/minetest.po index ec85fafb6..baaade68c 100644 --- a/po/kk/minetest.po +++ b/po/kk/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Kazakh (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-01-11 18:26+0000\n" -"Last-Translator: rubenwardy \n" +"PO-Revision-Date: 2020-06-13 21:08+0000\n" +"Last-Translator: Fontan 030 \n" "Language-Team: Kazakh \n" "Language: kk\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10.1\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -32,7 +32,7 @@ msgstr "" #: builtin/fstk/ui.lua msgid "Main menu" -msgstr "" +msgstr "Басты мәзір" #: builtin/fstk/ui.lua msgid "Ok" @@ -141,7 +141,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp msgid "Save" -msgstr "" +msgstr "Сақтау" #: builtin/mainmenu/dlg_config_world.lua msgid "World:" @@ -208,7 +208,7 @@ msgstr "" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update" -msgstr "" +msgstr "Жаңарту" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -228,7 +228,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" -msgstr "" +msgstr "Ойын" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -560,7 +560,7 @@ msgstr "" #: builtin/mainmenu/tab_local.lua msgid "New" -msgstr "" +msgstr "Жаңа" #: builtin/mainmenu/tab_local.lua msgid "No world created or selected!" @@ -741,7 +741,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Settings" -msgstr "" +msgstr "Баптаулар" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Shaders" @@ -845,7 +845,7 @@ msgstr "" #: src/client/clientlauncher.cpp msgid "Main Menu" -msgstr "" +msgstr "Басты мәзір" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." @@ -1023,11 +1023,11 @@ msgstr "" #: src/client/game.cpp msgid "Exit to Menu" -msgstr "" +msgstr "Мәзірге шығу" #: src/client/game.cpp msgid "Exit to OS" -msgstr "" +msgstr "Ойыннан шығу" #: src/client/game.cpp msgid "Fast mode disabled" @@ -1095,7 +1095,7 @@ msgstr "" #: src/client/game.cpp msgid "Minimap hidden" -msgstr "" +msgstr "Миникарта жасырылды" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" @@ -1171,7 +1171,7 @@ msgstr "" #: src/client/game.cpp msgid "Singleplayer" -msgstr "" +msgstr "Бір ойыншы" #: src/client/game.cpp msgid "Sound Volume" @@ -1219,19 +1219,19 @@ msgstr "" #: src/client/gameui.cpp msgid "Chat hidden" -msgstr "" +msgstr "Чат жасырылды" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "" +msgstr "Чат көрсетілді" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "" +msgstr "HUD жасырылды" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "" +msgstr "HUD көрсетілді" #: src/client/gameui.cpp msgid "Profiler hidden" @@ -1332,7 +1332,7 @@ msgstr "" #: src/client/keycode.cpp msgid "Left Windows" -msgstr "" +msgstr "Сол Win" #. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp @@ -1425,7 +1425,7 @@ msgstr "" #: src/client/keycode.cpp msgid "Play" -msgstr "" +msgstr "Ойнау" #. ~ "Print screen" key #: src/client/keycode.cpp @@ -1483,7 +1483,7 @@ msgstr "" #: src/client/keycode.cpp msgid "Space" -msgstr "" +msgstr "Бос орын" #: src/client/keycode.cpp msgid "Tab" @@ -1948,11 +1948,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Apple trees noise" -msgstr "" +msgstr "Алма ағаштары шуы" #: src/settings_translation_file.cpp msgid "Arm inertia" -msgstr "" +msgstr "Қол инерциясы" #: src/settings_translation_file.cpp msgid "" @@ -2855,7 +2855,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fog" -msgstr "" +msgstr "Тұман" #: src/settings_translation_file.cpp msgid "Fog start" @@ -4866,7 +4866,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Physics" -msgstr "" +msgstr "Физика" #: src/settings_translation_file.cpp msgid "Pitch move key" From c013a24787a67a63c162298c1c9c760a9c3e8ff4 Mon Sep 17 00:00:00 2001 From: darkcloudcat Date: Thu, 11 Jun 2020 15:33:52 +0000 Subject: [PATCH 335/424] Translated using Weblate (Vietnamese) Currently translated at 2.5% (33 of 1288 strings) --- po/vi/minetest.po | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/po/vi/minetest.po b/po/vi/minetest.po index 7a5ad2659..03b42e1b8 100644 --- a/po/vi/minetest.po +++ b/po/vi/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Vietnamese (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-03 23:18+0200\n" -"PO-Revision-Date: 2020-01-11 18:26+0000\n" -"Last-Translator: rubenwardy \n" +"PO-Revision-Date: 2020-06-13 21:08+0000\n" +"Last-Translator: darkcloudcat \n" "Language-Team: Vietnamese \n" "Language: vi\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.10.1\n" +"X-Generator: Weblate 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -23,9 +23,8 @@ msgid "You died" msgstr "Bạn đã chết" #: builtin/fstk/ui.lua -#, fuzzy msgid "An error occurred in a Lua script:" -msgstr "Đã xảy ra lỗi trong tập lệnh Lua, chẳng hạn như mod:" +msgstr "Đã xảy ra lỗi trong tập lệnh Lua:" #: builtin/fstk/ui.lua msgid "An error occurred:" @@ -33,7 +32,7 @@ msgstr "Xảy ra lỗi:" #: builtin/fstk/ui.lua msgid "Main menu" -msgstr "Thực đơn chính" +msgstr "Trình đơn chính" #: builtin/fstk/ui.lua msgid "Ok" @@ -49,7 +48,7 @@ msgstr "Máy chủ đã yêu cầu kết nối lại:" #: builtin/mainmenu/common.lua src/client/game.cpp msgid "Loading..." -msgstr "Tải..." +msgstr "Đang tải..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " From 0ba19a08b80459f037f530cf94e25d1caa18e80b Mon Sep 17 00:00:00 2001 From: "updatepo.sh" Date: Sat, 13 Jun 2020 23:17:04 +0200 Subject: [PATCH 336/424] Update minetest.conf.example, settings_translation_file.cpp --- minetest.conf.example | 107 +++++++++++++++++++++++++++--- src/settings_translation_file.cpp | 44 +++++++++--- 2 files changed, 129 insertions(+), 22 deletions(-) diff --git a/minetest.conf.example b/minetest.conf.example index 17d24a566..a5f98ee5e 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -254,7 +254,7 @@ # Key for toggling display of minimap. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key -# keymap_minimap = KEY_F9 +# keymap_minimap = KEY_KEY_V # Key for taking screenshots. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 @@ -469,7 +469,7 @@ # Key for switching between first- and third-person camera. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key -# keymap_camera_mode = KEY_F7 +# keymap_camera_mode = KEY_KEY_C # Key for increasing the viewing range. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 @@ -636,10 +636,6 @@ # type: int min: 0 max: 1 # parallax_occlusion_mode = 1 -# Strength of parallax. -# type: float -# 3d_paralax_strength = 0.025 - # Number of parallax occlusion iterations. # type: int # parallax_occlusion_iterations = 4 @@ -823,6 +819,10 @@ # type: enum values: none, anaglyph, interlaced, topbottom, sidebyside, crossview, pageflip # 3d_mode = none +# Strength of 3D mode parallax. +# type: float +# 3d_paralax_strength = 0.025 + # In-game chat console height, between 0.1 (10%) and 1.0 (100%). # type: float min: 0.1 max: 1 # console_height = 0.6 @@ -1071,9 +1071,15 @@ # type: filepath # fallback_font_path = fonts/DroidSansFallbackFull.ttf -# Path to save screenshots at. +# Font size of the recent chat text and chat prompt in point (pt). +# Value 0 will use the default font size. +# type: int +# chat_font_size = 0 + +# Path to save screenshots at. Can be an absolute or relative path. +# The folder will be created if it doesn't already exist. # type: path -# screenshot_path = +# screenshot_path = screenshots # Format of screenshots. # type: enum values: png, jpg, bmp, pcx, ppm, tga @@ -1136,6 +1142,13 @@ # type: int min: 1 max: 65535 # remote_port = 30000 +# Prometheus listener address. +# If minetest is compiled with ENABLE_PROMETHEUS option enabled, +# enable metrics listener for Prometheus on that address. +# Metrics can be fetch on http://127.0.0.1:30000/metrics +# type: string +# prometheus_listener_address = 127.0.0.1:30000 + # Save the map received by the client on disk. # type: bool # enable_local_map_saving = false @@ -1292,6 +1305,11 @@ # type: int # item_entity_ttl = 900 +# Specifies the default stack size of nodes, items and tools. +# Note that mods or games may explicitly set a stack for certain (or all) items. +# type: int +# default_stack_max = 99 + # Enable players getting damage and dying. # type: bool # enable_damage = false @@ -1382,7 +1400,7 @@ # active block stuff, stated in mapblocks (16 nodes). # In active blocks objects are loaded and ABMs run. # This is also the minimum range in which active objects (mobs) are maintained. -# This should be configured together with active_object_range. +# This should be configured together with active_object_send_range_blocks. # type: int # active_block_range = 3 @@ -1662,7 +1680,7 @@ # Set the language. Leave empty to use the system language. # A restart is required after changing this. -# type: enum values: , ar, ca, cs, da, de, dv, el, eo, es, et, eu, fil, fr, hu, id, it, ja, ja_KS, jbo, kk, kn, lo, lt, ms, my, nb, nl, nn, pl, pt, pt_BR, ro, ru, sl, sr_Cyrl, sv, sw, th, tr, uk, vi +# type: enum values: , ar, ca, cs, da, de, dv, el, en, eo, es, et, eu, fil, fr, hu, id, it, ja, ja_KS, jbo, kk, kn, lo, lt, ms, my, nb, nl, nn, pl, pt, pt_BR, ro, ru, sl, sr_Cyrl, sv, sw, th, tr, uk, vi # language = # Level of logging to be written to debug.txt: @@ -1683,6 +1701,10 @@ # type: int # debug_log_size_max = 50 +# Minimal level of logging to be written to chat. +# type: enum values: , none, error, warning, action, info, verbose +# chat_log_level = error + # Enable IPv6 support (for both client and server). # Required for IPv6 connections to work at all. # type: bool @@ -2149,7 +2171,9 @@ ## Mapgen V7 # Map generation attributes specific to Mapgen v7. -# 'ridges' enables the rivers. +# 'ridges': Rivers. +# 'floatlands': Floating land masses in the atmosphere. +# 'caverns': Giant caves deep underground. # type: flags possible values: mountains, ridges, floatlands, caverns, nomountains, noridges, nofloatlands, nocaverns # mgv7_spflags = mountains,ridges,nofloatlands,caverns @@ -2157,6 +2181,51 @@ # type: int # mgv7_mount_zero_level = 0 +# Lower Y limit of floatlands. +# type: int +# mgv7_floatland_ymin = 1024 + +# Upper Y limit of floatlands. +# type: int +# mgv7_floatland_ymax = 4096 + +# Y-distance over which floatlands taper from full density to nothing. +# Tapering starts at this distance from the Y limit. +# For a solid floatland layer, this controls the height of hills/mountains. +# Must be less than or equal to half the distance between the Y limits. +# type: int +# mgv7_floatland_taper = 256 + +# Exponent of the floatland tapering. Alters the tapering behaviour. +# Value = 1.0 creates a uniform, linear tapering. +# Values > 1.0 create a smooth tapering suitable for the default separated +# floatlands. +# Values < 1.0 (for example 0.25) create a more defined surface level with +# flatter lowlands, suitable for a solid floatland layer. +# type: float +# mgv7_float_taper_exp = 2.0 + +# Adjusts the density of the floatland layer. +# Increase value to increase density. Can be positive or negative. +# Value = 0.0: 50% of volume is floatland. +# Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test +# to be sure) creates a solid floatland layer. +# type: float +# mgv7_floatland_density = -0.6 + +# Surface level of optional water placed on a solid floatland layer. +# Water is disabled by default and will only be placed if this value is set +# to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the +# upper tapering). +# ***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***: +# When enabling water placement the floatlands must be configured and tested +# to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other +# required value depending on 'mgv7_np_floatland'), to avoid +# server-intensive extreme water flow and to avoid vast flooding of the +# world surface below. +# type: int +# mgv7_floatland_ywater = -31000 + # Controls width of tunnels, a smaller value creates wider tunnels. # Value >= 10.0 completely disables generation of tunnels and avoids the # intensive noise calculations. @@ -2328,6 +2397,22 @@ # flags = # } +# 3D noise defining structure of floatlands. +# If altered from the default, the noise 'scale' (0.7 by default) may need +# to be adjusted, as floatland tapering functions best when this noise has +# a value range of approximately -2.0 to 2.0. +# type: noise_params_3d +# mgv7_np_floatland = { +# offset = 0, +# scale = 0.7, +# spread = (384, 96, 384), +# seed = 1009, +# octaves = 4, +# persistence = 0.75, +# lacunarity = 1.618, +# flags = +# } + # 3D noise defining giant caverns. # type: noise_params_3d # mgv7_np_cavern = { diff --git a/src/settings_translation_file.cpp b/src/settings_translation_file.cpp index 9156580c0..febfbb9d3 100644 --- a/src/settings_translation_file.cpp +++ b/src/settings_translation_file.cpp @@ -254,8 +254,6 @@ fake_function() { gettext("Enables parallax occlusion mapping.\nRequires shaders to be enabled."); gettext("Parallax occlusion mode"); gettext("0 = parallax occlusion with slope information (faster).\n1 = relief mapping (slower, more accurate)."); - gettext("Parallax occlusion strength"); - gettext("Strength of parallax."); gettext("Parallax occlusion iterations"); gettext("Number of parallax occlusion iterations."); gettext("Parallax occlusion scale"); @@ -326,6 +324,8 @@ fake_function() { gettext("Multiplier for fall bobbing.\nFor example: 0 for no view bobbing; 1.0 for normal; 2.0 for double."); gettext("3D mode"); gettext("3D support.\nCurrently supported:\n- none: no 3d output.\n- anaglyph: cyan/magenta color 3d.\n- interlaced: odd/even line based polarisation screen support.\n- topbottom: split screen top/bottom.\n- sidebyside: split screen side by side.\n- crossview: Cross-eyed 3d\n- pageflip: quadbuffer based 3d.\nNote that the interlaced mode requires shaders to be enabled."); + gettext("3D mode parallax strength"); + gettext("Strength of 3D mode parallax."); gettext("Console height"); gettext("In-game chat console height, between 0.1 (10%) and 1.0 (100%)."); gettext("Console color"); @@ -427,8 +427,10 @@ fake_function() { gettext("Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255."); gettext("Fallback font path"); gettext("Path of the fallback font.\nIf “freetype” setting is enabled: Must be a TrueType font.\nIf “freetype” setting is disabled: Must be a bitmap or XML vectors font.\nThis font will be used for certain languages or if the default font is unavailable."); + gettext("Chat font size"); + gettext("Font size of the recent chat text and chat prompt in point (pt).\nValue 0 will use the default font size."); gettext("Screenshot folder"); - gettext("Path to save screenshots at."); + gettext("Path to save screenshots at. Can be an absolute or relative path.\nThe folder will be created if it doesn't already exist."); gettext("Screenshot format"); gettext("Format of screenshots."); gettext("Screenshot quality"); @@ -451,6 +453,8 @@ fake_function() { gettext("Address to connect to.\nLeave this blank to start a local server.\nNote that the address field in the main menu overrides this setting."); gettext("Remote port"); gettext("Port to connect to (UDP).\nNote that the port field in the main menu overrides this setting."); + gettext("Prometheus listener address"); + gettext("Prometheus listener address.\nIf minetest is compiled with ENABLE_PROMETHEUS option enabled,\nenable metrics listener for Prometheus on that address.\nMetrics can be fetch on http://127.0.0.1:30000/metrics"); gettext("Saving map received from server"); gettext("Save the map received by the client on disk."); gettext("Connect to external media server"); @@ -516,6 +520,8 @@ fake_function() { gettext("World directory (everything in the world is stored here).\nNot needed if starting from the main menu."); gettext("Item entity TTL"); gettext("Time in seconds for item entity (dropped items) to live.\nSetting it to -1 disables the feature."); + gettext("Default stack size"); + gettext("Specifies the default stack size of nodes, items and tools.\nNote that mods or games may explicitly set a stack for certain (or all) items."); gettext("Damage"); gettext("Enable players getting damage and dying."); gettext("Creative"); @@ -555,7 +561,7 @@ fake_function() { gettext("Active object send range"); gettext("From how far clients know about objects, stated in mapblocks (16 nodes).\n\nSetting this larger than active_block_range will also cause the server\nto maintain active objects up to this distance in the direction the\nplayer is looking. (This can avoid mobs suddenly disappearing from view)"); gettext("Active block range"); - gettext("The radius of the volume of blocks around every player that is subject to the\nactive block stuff, stated in mapblocks (16 nodes).\nIn active blocks objects are loaded and ABMs run.\nThis is also the minimum range in which active objects (mobs) are maintained.\nThis should be configured together with active_object_range."); + gettext("The radius of the volume of blocks around every player that is subject to the\nactive block stuff, stated in mapblocks (16 nodes).\nIn active blocks objects are loaded and ABMs run.\nThis is also the minimum range in which active objects (mobs) are maintained.\nThis should be configured together with active_object_send_range_blocks."); gettext("Max block send distance"); gettext("From how far blocks are sent to clients, stated in mapblocks (16 nodes)."); gettext("Maximum forceloaded blocks"); @@ -674,6 +680,8 @@ fake_function() { gettext("Level of logging to be written to debug.txt:\n- (no logging)\n- none (messages with no level)\n- error\n- warning\n- action\n- info\n- verbose"); gettext("Debug log file size threshold"); gettext("If the file size of debug.txt exceeds the number of megabytes specified in\nthis setting when it is opened, the file is moved to debug.txt.1,\ndeleting an older debug.txt.1 if it exists.\ndebug.txt is only moved if this setting is positive."); + gettext("Chat log level"); + gettext("Minimal level of logging to be written to chat."); gettext("IPv6"); gettext("Enable IPv6 support (for both client and server).\nRequired for IPv6 connections to work at all."); gettext("Advanced"); @@ -791,9 +799,21 @@ fake_function() { gettext("Defines areas where trees have apples."); gettext("Mapgen V7"); gettext("Mapgen V7 specific flags"); - gettext("Map generation attributes specific to Mapgen v7.\n'ridges' enables the rivers."); + gettext("Map generation attributes specific to Mapgen v7.\n'ridges': Rivers.\n'floatlands': Floating land masses in the atmosphere.\n'caverns': Giant caves deep underground."); gettext("Mountain zero level"); gettext("Y of mountain density gradient zero level. Used to shift mountains vertically."); + gettext("Floatland minimum Y"); + gettext("Lower Y limit of floatlands."); + gettext("Floatland maximum Y"); + gettext("Upper Y limit of floatlands."); + gettext("Floatland tapering distance"); + gettext("Y-distance over which floatlands taper from full density to nothing.\nTapering starts at this distance from the Y limit.\nFor a solid floatland layer, this controls the height of hills/mountains.\nMust be less than or equal to half the distance between the Y limits."); + gettext("Floatland taper exponent"); + gettext("Exponent of the floatland tapering. Alters the tapering behaviour.\nValue = 1.0 creates a uniform, linear tapering.\nValues > 1.0 create a smooth tapering suitable for the default separated\nfloatlands.\nValues < 1.0 (for example 0.25) create a more defined surface level with\nflatter lowlands, suitable for a solid floatland layer."); + gettext("Floatland density"); + gettext("Adjusts the density of the floatland layer.\nIncrease value to increase density. Can be positive or negative.\nValue = 0.0: 50% of volume is floatland.\nValue = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\nto be sure) creates a solid floatland layer."); + gettext("Floatland water level"); + gettext("Surface level of optional water placed on a solid floatland layer.\nWater is disabled by default and will only be placed if this value is set\nto above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\nupper tapering).\n***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\nWhen enabling water placement the floatlands must be configured and tested\nto be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\nrequired value depending on 'mgv7_np_floatland'), to avoid\nserver-intensive extreme water flow and to avoid vast flooding of the\nworld surface below."); gettext("Cave width"); gettext("Controls width of tunnels, a smaller value creates wider tunnels.\nValue >= 10.0 completely disables generation of tunnels and avoids the\nintensive noise calculations."); gettext("Large cave depth"); @@ -837,6 +857,8 @@ fake_function() { gettext("3D noise defining mountain structure and height.\nAlso defines structure of floatland mountain terrain."); gettext("Ridge noise"); gettext("3D noise defining structure of river canyon walls."); + gettext("Floatland noise"); + gettext("3D noise defining structure of floatlands.\nIf altered from the default, the noise 'scale' (0.7 by default) may need\nto be adjusted, as floatland tapering functions best when this noise has\na value range of approximately -2.0 to 2.0."); gettext("Cavern noise"); gettext("3D noise defining giant caverns."); gettext("Cave1 noise"); @@ -1068,14 +1090,14 @@ fake_function() { gettext("Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\nWARNING!: There is no benefit, and there are several dangers, in\nincreasing this value above 5.\nReducing this value increases cave and dungeon density.\nAltering this value is for special usage, leaving it unchanged is\nrecommended."); gettext("Mapgen debug"); gettext("Dump the mapgen debug information."); - gettext("Absolute limit of emerge queues"); + gettext("Absolute limit of queued blocks to emerge"); gettext("Maximum number of blocks that can be queued for loading."); - gettext("Limit of emerge queues on disk"); - gettext("Maximum number of blocks to be queued that are to be loaded from file.\nSet to blank for an appropriate amount to be chosen automatically."); - gettext("Limit of emerge queues to generate"); - gettext("Maximum number of blocks to be queued that are to be generated.\nSet to blank for an appropriate amount to be chosen automatically."); + gettext("Per-player limit of queued blocks load from disk"); + gettext("Maximum number of blocks to be queued that are to be loaded from file.\nThis limit is enforced per player."); + gettext("Per-player limit of queued blocks to generate"); + gettext("Maximum number of blocks to be queued that are to be generated.\nThis limit is enforced per player."); gettext("Number of emerge threads"); - gettext("Number of emerge threads to use.\nWARNING: Currently there are multiple bugs that may cause crashes when\n'num_emerge_threads' is larger than 1. Until this warning is removed it is\nstrongly recommended this value is set to the default '1'.\nValue 0:\n- Automatic selection. The number of emerge threads will be\n- 'number of processors - 2', with a lower limit of 1.\nAny other value:\n- Specifies the number of emerge threads, with a lower limit of 1.\nWARNING: Increasing the number of emerge threads increases engine mapgen\nspeed, but this may harm game performance by interfering with other\nprocesses, especially in singleplayer and/or when running Lua code in\n'on_generated'. For many users the optimum setting may be '1'."); + gettext("Number of emerge threads to use.\nValue 0:\n- Automatic selection. The number of emerge threads will be\n- 'number of processors - 2', with a lower limit of 1.\nAny other value:\n- Specifies the number of emerge threads, with a lower limit of 1.\nWARNING: Increasing the number of emerge threads increases engine mapgen\nspeed, but this may harm game performance by interfering with other\nprocesses, especially in singleplayer and/or when running Lua code in\n'on_generated'. For many users the optimum setting may be '1'."); gettext("Online Content Repository"); gettext("ContentDB URL"); gettext("The URL for the content repository"); From 0a1181f7637adab6fe1ba5d3c09038912a06b37f Mon Sep 17 00:00:00 2001 From: "updatepo.sh" Date: Sat, 13 Jun 2020 23:17:54 +0200 Subject: [PATCH 337/424] Update translation files --- po/ar/minetest.po | 392 +- po/be/minetest.po | 704 ++- po/ca/minetest.po | 431 +- po/cs/minetest.po | 542 ++- po/da/minetest.po | 501 +- po/de/minetest.po | 638 ++- po/dv/minetest.po | 392 +- po/el/minetest.po | 384 +- po/eo/minetest.po | 603 ++- po/es/minetest.po | 569 ++- po/et/minetest.po | 424 +- po/eu/minetest.po | 399 +- po/fil/minetest.po | 380 +- po/fr/minetest.po | 641 ++- po/he/minetest.po | 386 +- po/hi/minetest.po | 10164 ++++++++++++++++++++------------------- po/hu/minetest.po | 745 ++- po/id/minetest.po | 662 ++- po/it/minetest.po | 640 ++- po/ja/minetest.po | 622 ++- po/ja_KS/minetest.po | 380 +- po/jbo/minetest.po | 393 +- po/kk/minetest.po | 380 +- po/kn/minetest.po | 392 +- po/ko/minetest.po | 505 +- po/ky/minetest.po | 402 +- po/lo/minetest.po | 380 +- po/lt/minetest.po | 410 +- po/lv/minetest.po | 10153 +++++++++++++++++++------------------- po/minetest.pot | 408 +- po/ms/minetest.po | 638 ++- po/my/minetest.po | 380 +- po/nb/minetest.po | 444 +- po/nl/minetest.po | 644 ++- po/nn/minetest.po | 399 +- po/pl/minetest.po | 656 ++- po/pt/minetest.po | 632 ++- po/pt_BR/minetest.po | 653 ++- po/ro/minetest.po | 441 +- po/ru/minetest.po | 642 ++- po/sl/minetest.po | 418 +- po/sr_Cyrl/minetest.po | 434 +- po/sv/minetest.po | 451 +- po/sw/minetest.po | 544 ++- po/th/minetest.po | 484 +- po/tr/minetest.po | 638 ++- po/uk/minetest.po | 427 +- po/vi/minetest.po | 384 +- po/zh_CN/minetest.po | 552 ++- po/zh_TW/minetest.po | 602 ++- 50 files changed, 30130 insertions(+), 14355 deletions(-) diff --git a/po/ar/minetest.po b/po/ar/minetest.po index e40d3d8b3..4d6dac075 100644 --- a/po/ar/minetest.po +++ b/po/ar/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-03-01 19:51+0000\n" "Last-Translator: abidin toumi \n" "Language-Team: Arabic 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2853,6 +3064,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2905,6 +3144,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4201,14 +4446,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4272,6 +4509,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4339,7 +4580,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4426,10 +4669,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4498,13 +4737,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4588,6 +4827,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4747,9 +4990,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4825,10 +5065,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4839,7 +5075,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4872,6 +5110,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -4940,6 +5186,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5377,6 +5635,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5400,6 +5665,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5411,10 +5680,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5423,6 +5688,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5537,7 +5816,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5689,6 +5968,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6008,6 +6291,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6039,3 +6330,12 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL timeout" msgstr "" + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "تنزيل وتثبيت $1, يرجى الإنتظار..." + +#~ msgid "Back" +#~ msgstr "عُد" + +#~ msgid "Ok" +#~ msgstr "موافق" diff --git a/po/be/minetest.po b/po/be/minetest.po index f8080df4f..ed091587d 100644 --- a/po/be/minetest.po +++ b/po/be/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Belarusian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2019-11-19 23:04+0000\n" "Last-Translator: Viktar Vauchkevich \n" "Language-Team: Belarusian 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS у меню паўзы" @@ -3033,6 +3265,41 @@ msgstr "Фіксацыя зерня мапы" msgid "Fixed virtual joystick" msgstr "Фіксацыя віртуальнага джойсціка" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Шчыльнасць гор лятучых астравоў" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Максімальная Y падзямелля" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Мінімальная Y падзямелля" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Базавы шум лятучых астравоў" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Шчыльнасць гор лятучых астравоў" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Базавы шум лятучых астравоў" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Узровень лятучых астравоў" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Клавіша палёту" @@ -3085,6 +3352,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4714,14 +4987,6 @@ msgstr "Сярэдні ўздым крывой святла" msgid "Light curve low gradient" msgstr "Цэнтр сярэдняга ўздыму крывой святла" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Абмежаванне чэргаў на дыску" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Абмежаванне чэргаў на генерацыю" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4797,6 +5062,11 @@ msgstr "Загрузка мадыфікатараў блокаў" msgid "Lower Y limit of dungeons." msgstr "Ніжні ліміт Y для падзямелляў." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Ніжні ліміт Y для падзямелляў." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Скрыпт галоўнага меню" @@ -4882,9 +5152,12 @@ msgstr "" "а параметр «jungles» ігнаруецца." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "Атрыбуты генерацыі для генератара 7.\n" "«ridges» уключае рэкі." @@ -4973,10 +5246,6 @@ msgstr "Адмысловыя параметры генератара далін" msgid "Mapgen debug" msgstr "Генератар мапы: адладка" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Генератар мапы: параметры" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Назва генератара мапы" @@ -5049,17 +5318,19 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Максімальная колькасць блокаў, што можна дадаць у чаргу загрузкі." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Максімальная колькасць блокаў, што можна дадаць у чаргу генерацыі.\n" "Пакінце пустым для аўтаматычнага выбару неабходнага значэння." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Максімальная колькасць блокаў у чарзе на загрузку з файла.\n" "Пакінце пустым для аўтаматычнага выбару неабходнага значэння." @@ -5158,6 +5429,10 @@ msgstr "Паведамленне, якое паказваецца для гул msgid "Method used to highlight selected object." msgstr "Метад падсвятлення абранага аб'екта." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Мінімапа" @@ -5330,11 +5605,9 @@ msgid "Number of emerge threads" msgstr "Колькасць узнікаючых патокаў" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5432,10 +5705,6 @@ msgstr "Рэжым паралакснай аклюзіі" msgid "Parallax occlusion scale" msgstr "Маштаб паралакснай аклюзіі" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Інтэнсіўнасць паралакснай аклюзіі" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5446,8 +5715,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Каталог для захоўвання здымкаў экрана." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5481,6 +5752,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Паўза пры страце фокусу" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Абмежаванне чэргаў на генерацыю" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Фізіка" @@ -5561,6 +5841,18 @@ msgstr "Клавіша пераключэння прафіліроўшчыка" msgid "Profiling" msgstr "Прафіляванне" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -6081,6 +6373,13 @@ msgstr "" "(відавочна, што remote_media мусіць заканчвацца скосам).\n" "Недасяжныя файлы будуць спампоўвацца звычайным чынам." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "" @@ -6107,6 +6406,11 @@ msgstr "Крок шуму памеру гары" msgid "Step mountain spread noise" msgstr "Крок шуму распаўсюджвання гор" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Моц паралакса." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Моц згенераваных мапаў нармаляў." @@ -6118,10 +6422,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Моц паралакса." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Строгая праверка пратакола" @@ -6130,6 +6430,20 @@ msgstr "Строгая праверка пратакола" msgid "Strip color codes" msgstr "Прыбіраць коды колераў" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "Сінхронны SQLite" @@ -6256,6 +6570,7 @@ msgstr "" "Глядзіце поўны спіс прывілеяў у /privs." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6263,7 +6578,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" "Радыус аб'ёму блокаў вакол кожнага гульца, у якім дзейнічаюць\n" "актыўныя блокі, вызначаны ў блоках мапы (16 блокаў).\n" @@ -6459,6 +6774,11 @@ msgstr "Выгрузіць невыкарыстоўваемыя даныя се msgid "Upper Y limit of dungeons." msgstr "Верхні ліміт Y для падзямелляў." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Верхні ліміт Y для падзямелляў." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Аб'ёмныя аблокі замест плоскіх." @@ -6839,6 +7159,14 @@ msgstr "Y верхняга ліміту шырокіх пячор." msgid "Y-distance over which caverns expand to full size." msgstr "Y-адлегласць, на якой пячора пашырыцца да поўнага памеру." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Y-узровень сярэдняй паверхні рэльефу." @@ -6872,130 +7200,40 @@ msgid "cURL timeout" msgstr "Таймаўт cURL" #~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ "Map generation attributes specific to Mapgen v5.\n" +#~ "Flags that are not enabled are not modified from the default.\n" +#~ "Flags starting with 'no' are used to explicitly disable them." #~ msgstr "" -#~ "Наладка гама-кадавання для светлавых табліц. Высокія значэнні — больш " -#~ "ярчэйшыя.\n" -#~ "Гэты параметр прызначаны толькі для кліента і ігнаруецца серверам." +#~ "Атрыбуты генерацыі мапы для генератара мапы 5.\n" +#~ "Нявызначаныя атрыбуты прадвызначана не змяняюцца.\n" +#~ "Атрыбуты, што пачынаюцца з 'no' выкарыстоўваюцца для іх выключэння." -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "Кіруе звужэннем астравоў горнага тыпу ніжэй сярэдняй кропкі." - -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Цэнтр сярэдняга ўздыму крывой святла." +#~ msgid "Toggle Cinematic" +#~ msgstr "Кінематаграфічнасць" #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Map generation attributes specific to Mapgen Carpathian.\n" +#~ "Flags that are not enabled are not modified from the default.\n" +#~ "Flags starting with 'no' are used to explicitly disable them." #~ msgstr "" -#~ "Кіруе шчыльнасцю горнага рэльефу лятучых астравоў.\n" -#~ "Гэты зрух дадаецца да значэння 'np_mountain'." +#~ "Атрыбуты генерацыі мапы для генератара мапы \"Карпаты\".\n" +#~ "Нявызначаныя атрыбуты прадвызначана не змяняюцца.\n" +#~ "Атрыбуты, што пачынаюцца з \"no\", выкарыстоўваюцца для іх выключэння." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Кіруе шырынёй тунэляў. Меншае значэнне стварае больш шырокія тунэлі." +#~ msgid "Content Store" +#~ msgstr "Крама дадаткаў" -#~ msgid "Darkness sharpness" -#~ msgstr "Рэзкасць цемры" +#~ msgid "Select Package File:" +#~ msgstr "Абраць файл пакунка:" -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Вызначае вобласці гладкага рэльефу лятучых астравоў.\n" -#~ "Гладкая паверхня з'яўляецца, калі шум больш нуля." +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y верхняга ліміту лавы ў шырокіх пячорах." -#~ msgid "" -#~ "Deprecated, define and locate cave liquids using biome definitions " -#~ "instead.\n" -#~ "Y of upper limit of lava in large caves." -#~ msgstr "" -#~ "Састарэлы. Вызначае і размяшчае пячорныя вадкасці з выкарыстаннем " -#~ "азначэнняў біёму.\n" -#~ "Y верхняй мяжы лавы ў вялікіх пячорах." - -#~ msgid "Enable VBO" -#~ msgstr "Уключыць VBO" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Уключае кінематаграфічнае танальнае адлюстраванне" - -#~ msgid "Floatland base height noise" -#~ msgstr "Шум базавай вышыні лятучых астравоў" - -#~ msgid "Floatland base noise" -#~ msgstr "Базавы шум лятучых астравоў" - -#~ msgid "Floatland level" -#~ msgstr "Узровень лятучых астравоў" - -#~ msgid "Floatland mountain density" -#~ msgstr "Шчыльнасць гор лятучых астравоў" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Шчыльнасць гор лятучых астравоў" - -#~ msgid "Floatland mountain height" -#~ msgstr "Вышыня гор на лятучых астравоў" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Празрыстасць цені шрыфту (ад 0 да 255)." - -#~ msgid "Gamma" -#~ msgstr "Гама" - -#~ msgid "IPv6 support." -#~ msgstr "Падтрымка IPv6." - -#~ msgid "Lava depth" -#~ msgstr "Глыбіня лавы" - -#~ msgid "Lightness sharpness" -#~ msgstr "Рэзкасць паваротлівасці" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Шлях да TrueTypeFont ці растравага шрыфту." - -#~ msgid "Shadow limit" -#~ msgstr "Ліміт ценяў" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Моц сярэдняга ўздыму крывой святла." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Гэты шрыфт будзе выкарыстоўваецца для некаторых моў." - -#~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "" -#~ "Тыповая максімальная вышыня, вышэй і ніжэй сярэдняй кропкі гор лятучых " -#~ "астравоў." - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "" -#~ "Варыяцыя вышыні пагоркаў і глыбінь азёр на гладкай мясцовасці лятучых " -#~ "астравоў." - -#~ msgid "Waving water" +#~ msgid "Waving Water" #~ msgstr "Хваляванне вады" -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Y-узровень сярэдняй кропкі і паверхні азёр лятучых астравоў." - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Y-узровень, да якога распаўсюджваюцца цені лятучых астравоў." - -#~ msgid "" -#~ "If enabled together with fly mode, makes move directions relative to the " -#~ "player's pitch." -#~ msgstr "" -#~ "Калі ўключана адначасова з рэжымам палёту, то вызначае напрамак руху " -#~ "адносна кроку гульца." - -#~ msgid "Projecting dungeons" -#~ msgstr "Праектаванне падзямелляў" +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Выступ падзямелляў па-над рэльефам." #~ msgid "" #~ "Map generation attributes specific to Mapgen v7.\n" @@ -7008,38 +7246,134 @@ msgstr "Таймаўт cURL" #~ "Нявызначаныя параметры прадвызначана не змяняюцца.\n" #~ "Параметры, што пачынаюцца з \"no\", выкарыстоўваюцца для выключэння." -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Выступ падзямелляў па-над рэльефам." +#~ msgid "Projecting dungeons" +#~ msgstr "Праектаванне падзямелляў" -#~ msgid "Waving Water" +#~ msgid "" +#~ "If enabled together with fly mode, makes move directions relative to the " +#~ "player's pitch." +#~ msgstr "" +#~ "Калі ўключана адначасова з рэжымам палёту, то вызначае напрамак руху " +#~ "адносна кроку гульца." + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Y-узровень, да якога распаўсюджваюцца цені лятучых астравоў." + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Y-узровень сярэдняй кропкі і паверхні азёр лятучых астравоў." + +#~ msgid "Waving water" #~ msgstr "Хваляванне вады" -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y верхняга ліміту лавы ў шырокіх пячорах." - -#~ msgid "Select Package File:" -#~ msgstr "Абраць файл пакунка:" - -#~ msgid "Content Store" -#~ msgstr "Крама дадаткаў" +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Варыяцыя вышыні пагоркаў і глыбінь азёр на гладкай мясцовасці лятучых " +#~ "астравоў." #~ msgid "" -#~ "Map generation attributes specific to Mapgen Carpathian.\n" -#~ "Flags that are not enabled are not modified from the default.\n" -#~ "Flags starting with 'no' are used to explicitly disable them." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Атрыбуты генерацыі мапы для генератара мапы \"Карпаты\".\n" -#~ "Нявызначаныя атрыбуты прадвызначана не змяняюцца.\n" -#~ "Атрыбуты, што пачынаюцца з \"no\", выкарыстоўваюцца для іх выключэння." +#~ "Тыповая максімальная вышыня, вышэй і ніжэй сярэдняй кропкі гор лятучых " +#~ "астравоў." -#~ msgid "Toggle Cinematic" -#~ msgstr "Кінематаграфічнасць" +#~ msgid "This font will be used for certain languages." +#~ msgstr "Гэты шрыфт будзе выкарыстоўваецца для некаторых моў." + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Моц сярэдняга ўздыму крывой святла." + +#~ msgid "Shadow limit" +#~ msgstr "Ліміт ценяў" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Шлях да TrueTypeFont ці растравага шрыфту." + +#~ msgid "Lightness sharpness" +#~ msgstr "Рэзкасць паваротлівасці" + +#~ msgid "Lava depth" +#~ msgstr "Глыбіня лавы" + +#~ msgid "IPv6 support." +#~ msgstr "Падтрымка IPv6." + +#~ msgid "Gamma" +#~ msgstr "Гама" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Празрыстасць цені шрыфту (ад 0 да 255)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Вышыня гор на лятучых астравоў" + +#~ msgid "Floatland base height noise" +#~ msgstr "Шум базавай вышыні лятучых астравоў" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Уключае кінематаграфічнае танальнае адлюстраванне" + +#~ msgid "Enable VBO" +#~ msgstr "Уключыць VBO" #~ msgid "" -#~ "Map generation attributes specific to Mapgen v5.\n" -#~ "Flags that are not enabled are not modified from the default.\n" -#~ "Flags starting with 'no' are used to explicitly disable them." +#~ "Deprecated, define and locate cave liquids using biome definitions " +#~ "instead.\n" +#~ "Y of upper limit of lava in large caves." #~ msgstr "" -#~ "Атрыбуты генерацыі мапы для генератара мапы 5.\n" -#~ "Нявызначаныя атрыбуты прадвызначана не змяняюцца.\n" -#~ "Атрыбуты, што пачынаюцца з 'no' выкарыстоўваюцца для іх выключэння." +#~ "Састарэлы. Вызначае і размяшчае пячорныя вадкасці з выкарыстаннем " +#~ "азначэнняў біёму.\n" +#~ "Y верхняй мяжы лавы ў вялікіх пячорах." + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Вызначае вобласці гладкага рэльефу лятучых астравоў.\n" +#~ "Гладкая паверхня з'яўляецца, калі шум больш нуля." + +#~ msgid "Darkness sharpness" +#~ msgstr "Рэзкасць цемры" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Кіруе шырынёй тунэляў. Меншае значэнне стварае больш шырокія тунэлі." + +#~ msgid "" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "Кіруе шчыльнасцю горнага рэльефу лятучых астравоў.\n" +#~ "Гэты зрух дадаецца да значэння 'np_mountain'." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Цэнтр сярэдняга ўздыму крывой святла." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "Кіруе звужэннем астравоў горнага тыпу ніжэй сярэдняй кропкі." + +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." +#~ msgstr "" +#~ "Наладка гама-кадавання для светлавых табліц. Высокія значэнні — больш " +#~ "ярчэйшыя.\n" +#~ "Гэты параметр прызначаны толькі для кліента і ігнаруецца серверам." + +#~ msgid "Path to save screenshots at." +#~ msgstr "Каталог для захоўвання здымкаў экрана." + +#~ msgid "Parallax occlusion strength" +#~ msgstr "Інтэнсіўнасць паралакснай аклюзіі" + +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Абмежаванне чэргаў на дыску" + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Спампоўванне і ўсталёўка $1. Калі ласка, пачакайце…" + +#~ msgid "Back" +#~ msgstr "Назад" + +#~ msgid "Ok" +#~ msgstr "Добра" diff --git a/po/ca/minetest.po b/po/ca/minetest.po index 3ffc59552..5ce219f7f 100644 --- a/po/ca/minetest.po +++ b/po/ca/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Catalan (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: Catalan 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -3054,6 +3276,35 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Soroll de cova #1" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -3106,6 +3357,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4623,14 +4880,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4695,6 +4944,11 @@ msgstr "Rang del bloc actiu" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Límit absolut de cues emergents" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4763,7 +5017,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4859,10 +5115,6 @@ msgstr "Generador de mapes" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4931,13 +5183,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -5021,6 +5273,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -5181,9 +5437,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5260,10 +5513,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "Oclusió de paral·laxi" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5274,7 +5523,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -5307,6 +5558,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -5376,6 +5635,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5844,6 +6115,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5867,6 +6145,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5878,10 +6160,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5890,6 +6168,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -6005,7 +6297,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6164,6 +6456,11 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Límit absolut de cues emergents" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6492,6 +6789,14 @@ msgstr "Límit absolut de cues emergents" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6524,6 +6829,20 @@ msgstr "" msgid "cURL timeout" msgstr "" +#~ msgid "Toggle Cinematic" +#~ msgstr "Activar Cinematogràfic" + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Selecciona el fitxer del mod:" + +#~ msgid "Enable VBO" +#~ msgstr "Activar VBO" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Controla l'amplada dels túnels, un valor més petit crea túnels més amples." + #, fuzzy #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " @@ -6534,16 +6853,12 @@ msgstr "" #~ "petits n'augmentaràn la brillantor.\n" #~ "Aquesta configuració només afecta al client, el servidor l'ignora." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Controla l'amplada dels túnels, un valor més petit crea túnels més amples." - -#~ msgid "Enable VBO" -#~ msgstr "Activar VBO" - #, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Selecciona el fitxer del mod:" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Descarregant $1, si us plau esperi ..." -#~ msgid "Toggle Cinematic" -#~ msgstr "Activar Cinematogràfic" +#~ msgid "Back" +#~ msgstr "Enrere" + +#~ msgid "Ok" +#~ msgstr "D'acord" diff --git a/po/cs/minetest.po b/po/cs/minetest.po index 451371877..6b6247b43 100644 --- a/po/cs/minetest.po +++ b/po/cs/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Czech (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-04-29 12:38+0000\n" "Last-Translator: Roman Ondráček \n" "Language-Team: Czech 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS v menu pauzy" @@ -3036,6 +3266,41 @@ msgstr "Fixované seedové čislo" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Koncentrace hor na létajících ostrovech" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Výška hor na létajících ostrovech" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Výška hor na létajících ostrovech" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Základní šum létajících ostrovů" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Koncentrace hor na létajících ostrovech" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Základní šum létajících ostrovů" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Výška létajících ostrovů" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Klávesa létání" @@ -3089,6 +3354,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4664,14 +4935,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4736,6 +4999,11 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Maximální počet emerge front" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Skript hlavní nabídky" @@ -4823,10 +5091,19 @@ msgstr "" "Příznaky začínající na 'no' slouží k zakázání možnosti." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" +"Globální parametry generování mapy.\n" +"V mapgenu v6 ovládal příznak 'decorations' všechny dekorace kromě\n" +"stromů a tropické trávy. V ostatních mapgenech tento příznak řídí\n" +"všechny dekorace.\n" +"Neuvedené příznaky zůstávají ve výchozím stavu.\n" +"Příznaky začínající na 'no' slouží k zakázání možnosti." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -4920,10 +5197,6 @@ msgstr "Mapgen údolí" msgid "Mapgen debug" msgstr "Ladění generátoru mapy" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Nastavení generátoru mapy" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Jméno generátoru mapy" @@ -4992,13 +5265,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -5082,6 +5355,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Minimapa" @@ -5243,9 +5520,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5322,10 +5596,6 @@ msgstr "Režim parallax occlusion" msgid "Parallax occlusion scale" msgstr "Škála parallax occlusion" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Síla parallax occlusion" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5336,7 +5606,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -5369,6 +5641,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Fyzika" @@ -5439,6 +5719,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5922,6 +6214,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5945,6 +6244,11 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Síla vygenerovaných normálových map." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Síla vygenerovaných normálových map." @@ -5956,10 +6260,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5968,6 +6268,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -6083,7 +6397,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6237,6 +6551,11 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Maximální počet emerge front" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6567,6 +6886,14 @@ msgstr "Maximální počet emerge front" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6599,14 +6926,53 @@ msgstr "cURL limit paralelních stahování" msgid "cURL timeout" msgstr "cURL timeout" -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ msgid "Toggle Cinematic" +#~ msgstr "Plynulá kamera" + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Vybrat soubor s modem:" + +#~ msgid "Waving Water" +#~ msgstr "Vlnění vody" + +#~ msgid "Waving water" +#~ msgstr "Vlnění vody" + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Hloubka velké jeskyně" + +#~ msgid "IPv6 support." #~ msgstr "" -#~ "Upraví gamma kódování světelných tabulek. Vyšší čísla znamenají světlejší " -#~ "hodnoty.\n" -#~ "Toto nastavení ovlivňuje pouze klienta a serverem není použito." +#~ "Nastavuje reálnou délku dne.\n" +#~ "Např.: 72 = 20 minut, 360 = 4 minuty, 1 = 24 hodin, 0 = čas zůstává stále " +#~ "stejný." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Neprůhlednost stínu písma (od 0 do 255)." + +#~ msgid "Floatland base height noise" +#~ msgstr "Šum základní výšky létajících ostrovů" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Zapne filmový tone mapping" + +#~ msgid "Enable VBO" +#~ msgstr "Zapnout VBO" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Určuje oblasti létajících ostrovů s rovinný terénem.\n" +#~ "Terén bude rovný v místech, kde hodnota šumu bude větší než 0." + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "Ovládá šířku tunelů, menší hodnota vytváří širší tunely." #, fuzzy #~ msgid "" @@ -6616,66 +6982,20 @@ msgstr "cURL timeout" #~ "Stanovuje hustotu horského terénu na létajících ostrovech.\n" #~ "Jedná se o posun přidaný k hodnotě šumu 'np_mountain'." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "Ovládá šířku tunelů, menší hodnota vytváří širší tunely." - #~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Určuje oblasti létajících ostrovů s rovinný terénem.\n" -#~ "Terén bude rovný v místech, kde hodnota šumu bude větší než 0." +#~ "Upraví gamma kódování světelných tabulek. Vyšší čísla znamenají světlejší " +#~ "hodnoty.\n" +#~ "Toto nastavení ovlivňuje pouze klienta a serverem není použito." -#~ msgid "Enable VBO" -#~ msgstr "Zapnout VBO" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Stahuji a instaluji $1, prosím čekejte..." -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Zapne filmový tone mapping" +#~ msgid "Back" +#~ msgstr "Zpět" -#~ msgid "Floatland base height noise" -#~ msgstr "Šum základní výšky létajících ostrovů" - -#~ msgid "Floatland base noise" -#~ msgstr "Základní šum létajících ostrovů" - -#~ msgid "Floatland level" -#~ msgstr "Výška létajících ostrovů" - -#~ msgid "Floatland mountain density" -#~ msgstr "Koncentrace hor na létajících ostrovech" - -#, fuzzy -#~ msgid "Floatland mountain exponent" -#~ msgstr "Koncentrace hor na létajících ostrovech" - -#~ msgid "Floatland mountain height" -#~ msgstr "Výška hor na létajících ostrovech" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Neprůhlednost stínu písma (od 0 do 255)." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "IPv6 support." -#~ msgstr "" -#~ "Nastavuje reálnou délku dne.\n" -#~ "Např.: 72 = 20 minut, 360 = 4 minuty, 1 = 24 hodin, 0 = čas zůstává stále " -#~ "stejný." - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Hloubka velké jeskyně" - -#~ msgid "Waving water" -#~ msgstr "Vlnění vody" - -#~ msgid "Waving Water" -#~ msgstr "Vlnění vody" - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Vybrat soubor s modem:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Plynulá kamera" +#~ msgid "Ok" +#~ msgstr "OK" diff --git a/po/da/minetest.po b/po/da/minetest.po index d1bcc36ce..931e3dbbf 100644 --- a/po/da/minetest.po +++ b/po/da/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Danish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: sfan5 \n" "Language-Team: Danish 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS i pausemenu" @@ -3061,6 +3290,39 @@ msgstr "Fast kortfødning" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Svævelandsniveau" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Svævelandsniveau" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Svævelandsgrundhøjdestøj" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Svævelandsgrundhøjdestøj" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Svævelandsniveau" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Flyvetast" @@ -3114,6 +3376,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4782,14 +5050,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Begrænsning af fremkomsten af forespørgsler på disk" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Begrænsning af fremkomsten af køer at oprette" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4862,6 +5122,11 @@ msgstr "Indlæser blokændringer" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Absolut begrænsning af fremkomstkøer" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Hovedmenuskript" @@ -4948,10 +5213,17 @@ msgstr "" "Flag starter med \"nej\" er brugt udtrykkeligt deaktivere dem." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" +"Kortoprettelsesattributter specifikke for Mapgen flat.\n" +"Undtagelsesvis kan søer og bakker tilføjes til den flade verden.\n" +"Flag som ikke er specificeret i flag-strengen ændres ikke fra standarden.\n" +"Flag der starter med »no« bruges til eksplicit at deaktivere dem." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5052,10 +5324,6 @@ msgstr "Flade flag for Mapgen" msgid "Mapgen debug" msgstr "Fejlsøgning for Mapgen" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Flag for Mapgen" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Mapgen-navn" @@ -5124,13 +5392,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -5215,6 +5483,10 @@ msgstr "Besked i dag vist til spillere, der forbinder." msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Minikort" @@ -5377,9 +5649,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5456,10 +5725,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "Parallax-okklusion" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5470,7 +5735,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -5503,6 +5770,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Begrænsning af fremkomsten af køer at oprette" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Fysik" @@ -5572,6 +5848,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -6062,6 +6350,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6086,6 +6381,10 @@ msgstr "Terræn base støj" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -6097,10 +6396,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -6109,6 +6404,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -6228,7 +6537,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6382,6 +6691,11 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Absolut begrænsning af fremkomstkøer" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6713,6 +7027,14 @@ msgstr "Absolut begrænsning af fremkomstkøer" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6745,6 +7067,43 @@ msgstr "" msgid "cURL timeout" msgstr "cURL-tidsudløb" +#~ msgid "Toggle Cinematic" +#~ msgstr "Aktiver filmisk" + +#~ msgid "Select Package File:" +#~ msgstr "Vælg pakke fil:" + +#, fuzzy +#~ msgid "Shadow limit" +#~ msgstr "Skygge grænse" + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Dybde for stor hule" + +#~ msgid "IPv6 support." +#~ msgstr "Understøttelse af IPv6." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Alfa for skrifttypeskygge (uigennemsigtighed, mellem 0 og 255)." + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Aktiverer filmisk toneoversættelse" + +#~ msgid "Enable VBO" +#~ msgstr "Aktiver VBO" + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "Søstejlhed" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Styrer bredden af tunneller. En lavere værdi giver bredere tunneller." + #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " #~ "brighter.\n" @@ -6753,46 +7112,14 @@ msgstr "cURL-tidsudløb" #~ "Justér gammakodningen for lystabellerne. Et større tal betyder lysere.\n" #~ "Denne indstilling gælder kun for klienten og ignoreres af serveren." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Styrer bredden af tunneller. En lavere værdi giver bredere tunneller." +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Begrænsning af fremkomsten af forespørgsler på disk" -#, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "Søstejlhed" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Henter og installerer $1, vent venligst..." -#~ msgid "Enable VBO" -#~ msgstr "Aktiver VBO" +#~ msgid "Back" +#~ msgstr "Tilbage" -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Aktiverer filmisk toneoversættelse" - -#~ msgid "Floatland base height noise" -#~ msgstr "Svævelandsgrundhøjdestøj" - -#, fuzzy -#~ msgid "Floatland level" -#~ msgstr "Svævelandsniveau" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Alfa for skrifttypeskygge (uigennemsigtighed, mellem 0 og 255)." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "IPv6 support." -#~ msgstr "Understøttelse af IPv6." - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Dybde for stor hule" - -#, fuzzy -#~ msgid "Shadow limit" -#~ msgstr "Skygge grænse" - -#~ msgid "Select Package File:" -#~ msgstr "Vælg pakke fil:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Aktiver filmisk" +#~ msgid "Ok" +#~ msgstr "Ok" diff --git a/po/de/minetest.po b/po/de/minetest.po index 382f4dfbe..42e274251 100644 --- a/po/de/minetest.po +++ b/po/de/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: German (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-04-04 19:54+0000\n" "Last-Translator: sfan5 \n" "Language-Team: German 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "Bildwiederholrate im Pausenmenü" @@ -3093,6 +3325,41 @@ msgstr "Fester Karten-Seed" msgid "Fixed virtual joystick" msgstr "Fester virtueller Joystick" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Schwebelandbergdichte" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Verlies: Max. Y" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Verlies: Min. Y" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Schwebelandbasisrauschen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Schwebelandbergexponent" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Schwebelandbasisrauschen" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Schwebelandhöhe" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Flugtaste" @@ -3145,6 +3412,12 @@ msgstr "Schriftgröße der Ersatzschrift in Punkt (pt)." msgid "Font size of the monospace font in point (pt)." msgstr "Schriftgröße der Festbreitenschrift in Punkt (pt)." +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4807,14 +5080,6 @@ msgstr "Lichtkurve: Hoher Gradient" msgid "Light curve low gradient" msgstr "Lichtkurve: Niedriger Gradient" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Erzeugungswarteschlangengrenze auf Festspeicher" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Limit der Erzeugungswarteschlangen" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4891,6 +5156,11 @@ msgstr "Loading Block Modifiers" msgid "Lower Y limit of dungeons." msgstr "Y-Untergrenze von Verliesen." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Y-Untergrenze von Verliesen." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Hauptmenü-Skript" @@ -4977,9 +5247,12 @@ msgstr "" "aktiviert und das „jungles“-Flag wird ignoriert." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "Kartengenerierungsattribute speziell für den Kartengenerator v7.\n" "„ridges“ aktiviert die Flüsse." @@ -5068,10 +5341,6 @@ msgstr "Flags spezifisch für Täler-Kartengenerator" msgid "Mapgen debug" msgstr "Kartengenerator-Debugging" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Kartengenerator-Flags" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Kartengeneratorname" @@ -5143,18 +5412,20 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Maximale Anzahl der Kartenblöcke in der Ladewarteschlange." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Maximale Anzahl der Kartenblöcke, die in die Erzeugungswarteschlage gesetzt " "werden.\n" "Feld frei lassen, um automatisch einen geeigneten Wert zu bestimmen." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Maximale Anzahl der Kartenblöcke, die in die Warteschlange zum Laden aus\n" "einer Datei gesetzt werden können.\n" @@ -5262,6 +5533,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "Verwendete Methode, um ein ausgewähltes Objekt hervorzuheben." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Übersichtskarte" @@ -5436,11 +5711,9 @@ msgid "Number of emerge threads" msgstr "Anzahl der Erzeugerthreads" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5543,10 +5816,6 @@ msgstr "Parallax-Occlusion-Modus" msgid "Parallax occlusion scale" msgstr "Parallax-Occlusion-Skalierung" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Parallax-Occlusion-Stärke" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5564,8 +5833,10 @@ msgstr "" "Standardschrift nicht verfügbar ist." #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Pfad, in dem Bildschirmfotos abgespeichert werden." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5614,6 +5885,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Pausieren bei Fensterfokusverlust" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Limit der Erzeugungswarteschlangen" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Physik" @@ -5695,6 +5975,18 @@ msgstr "Profiler-Umschalten-Taste" msgid "Profiling" msgstr "Profiling" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "Anteil der großen Höhlen, die eine Flüssigkeit enthalten." @@ -6218,6 +6510,13 @@ msgstr "" "Dateien, die nicht über diesen Server erreichbar sind, werden auf dem " "üblichen Weg heruntergeladen (UDP)." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6244,6 +6543,11 @@ msgstr "Stufenberggrößenrauschen" msgid "Step mountain spread noise" msgstr "Stufenbergsausbreitungsrauschen" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Stärke von Parallax." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Stärke der generierten Normalmaps." @@ -6258,10 +6562,6 @@ msgstr "" "Die 3 Verstärkungsparameter („boost“) definieren ein Intervall der\n" "Lichtkurve, die in ihrer Helligkeit verstärkt wird." -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Stärke von Parallax." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Strikte Protokollversionsprüfung" @@ -6270,6 +6570,20 @@ msgstr "Strikte Protokollversionsprüfung" msgid "Strip color codes" msgstr "Farbcodes entfernen" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "Synchrones SQLite" @@ -6406,6 +6720,7 @@ msgstr "" "auf Ihrem Server und die Modkonfiguration." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6413,7 +6728,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" "Der Radius des Volumens von Blöcken um jeden Spieler, der dem\n" "Active-Block-Zeugs unterliegt, in Kartenblöcken angegeben (16 Blöcke).\n" @@ -6625,6 +6940,11 @@ msgstr "Nicht benutzte Serverdaten entladen" msgid "Upper Y limit of dungeons." msgstr "Y-Obergrenze von Verliesen." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Y-Obergrenze von Verliesen." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Wolken blockförmig statt flach aussehen lassen." @@ -7019,6 +7339,14 @@ msgstr "Y-Wert der Obergrenze von großen Höhlen." msgid "Y-distance over which caverns expand to full size." msgstr "Y-Entfernung, über welche Hohlräume zu voller Größe expandieren." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Y-Höhe der durchschnittlichen Geländeoberfläche." @@ -7051,45 +7379,85 @@ msgstr "cURL-Parallel-Begrenzung" msgid "cURL timeout" msgstr "cURL-Zeitüberschreitung" -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "Ändert die Gammakodierung der Lichttabellen. Kleinere Werte sind heller.\n" -#~ "Diese Einstellung ist rein clientseitig und wird vom Server ignoriert." +#~ msgid "Toggle Cinematic" +#~ msgstr "Filmmodus umschalten" -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Verändert, wie Schwebeländer des Bergtyps sich über und unter dem " -#~ "Mittelpunkt zuspitzen." +#~ msgid "Select Package File:" +#~ msgstr "Paket-Datei auswählen:" -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Mitte der Lichtkurven-Mittenverstärkung." +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y-Wert der Obergrenze von Lava in großen Höhlen." + +#~ msgid "Waving Water" +#~ msgstr "Wasserwellen" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Ob Verliese manchmal aus dem Gelände herausragen." + +#~ msgid "Projecting dungeons" +#~ msgstr "Herausragende Verliese" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Y-Höhe, bis zu der sich die Schatten der Schwebeländer ausbreiten." + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "" +#~ "Y-Höhe vom Mittelpunkt der Schwebeländer sowie\n" +#~ "des Wasserspiegels von Seen." + +#~ msgid "Waving water" +#~ msgstr "Wasserwellen" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Variierung der Hügelhöhe und Seetiefe in den ruhig verlaufenden\n" +#~ "Regionen der Schwebeländer." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Legt die Dichte von Gebirgen in den Schwebeländern fest.\n" -#~ "Dies ist ein Versatz, der zum Rauschwert „mgv7_np_mountain“ addiert wird." +#~ "Typische Maximalhöhe, über und unter dem Mittelpunkt von Gebirgen in den\n" +#~ "Schwebeländern." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgid "This font will be used for certain languages." +#~ msgstr "Diese Schrift wird von bestimmten Sprachen benutzt." + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Stärke der Lichtkurven-Mittenverstärkung." + +#~ msgid "Shadow limit" +#~ msgstr "Schattenbegrenzung" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Pfad zu einer TrueType- oder Bitmap-Schrift." + +#~ msgid "Lightness sharpness" +#~ msgstr "Helligkeitsschärfe" + +#~ msgid "Lava depth" +#~ msgstr "Lavatiefe" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6-Unterstützung." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." #~ msgstr "" -#~ "Legt die Breite von Tunneln fest; ein kleinerer Wert erzeugt breitere " -#~ "Tunnel." +#~ "Undurchsichtigkeit des Schattens der Schrift (Wert zwischen 0 und 255)." -#~ msgid "Darkness sharpness" -#~ msgstr "Dunkelheits-Steilheit" +#~ msgid "Floatland mountain height" +#~ msgstr "Schwebelandberghöhe" -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Definiert Gebiete von ruhig verlaufendem\n" -#~ "Gelände in den Schwebeländern. Weiche\n" -#~ "Schwebeländer treten auf, wenn der\n" -#~ "Rauschwert > 0 ist." +#~ msgid "Floatland base height noise" +#~ msgstr "Schwebeland-Basishöhenrauschen" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Aktiviert filmisches Tone-Mapping" + +#~ msgid "Enable VBO" +#~ msgstr "VBO aktivieren" #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -7100,94 +7468,60 @@ msgstr "cURL-Zeitüberschreitung" #~ "Höhlenflüssigkeiten in Biomdefinitionen.\n" #~ "Y der Obergrenze von Lava in großen Höhlen." -#~ msgid "Enable VBO" -#~ msgstr "VBO aktivieren" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Aktiviert filmisches Tone-Mapping" - -#~ msgid "Floatland base height noise" -#~ msgstr "Schwebeland-Basishöhenrauschen" - -#~ msgid "Floatland base noise" -#~ msgstr "Schwebelandbasisrauschen" - -#~ msgid "Floatland level" -#~ msgstr "Schwebelandhöhe" - -#~ msgid "Floatland mountain density" -#~ msgstr "Schwebelandbergdichte" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Schwebelandbergexponent" - -#~ msgid "Floatland mountain height" -#~ msgstr "Schwebelandberghöhe" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." #~ msgstr "" -#~ "Undurchsichtigkeit des Schattens der Schrift (Wert zwischen 0 und 255)." +#~ "Definiert Gebiete von ruhig verlaufendem\n" +#~ "Gelände in den Schwebeländern. Weiche\n" +#~ "Schwebeländer treten auf, wenn der\n" +#~ "Rauschwert > 0 ist." -#~ msgid "Gamma" -#~ msgstr "Gamma" +#~ msgid "Darkness sharpness" +#~ msgstr "Dunkelheits-Steilheit" -#~ msgid "IPv6 support." -#~ msgstr "IPv6-Unterstützung." - -#~ msgid "Lava depth" -#~ msgstr "Lavatiefe" - -#~ msgid "Lightness sharpness" -#~ msgstr "Helligkeitsschärfe" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Pfad zu einer TrueType- oder Bitmap-Schrift." - -#~ msgid "Shadow limit" -#~ msgstr "Schattenbegrenzung" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Stärke der Lichtkurven-Mittenverstärkung." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Diese Schrift wird von bestimmten Sprachen benutzt." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Legt die Breite von Tunneln fest; ein kleinerer Wert erzeugt breitere " +#~ "Tunnel." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Typische Maximalhöhe, über und unter dem Mittelpunkt von Gebirgen in den\n" -#~ "Schwebeländern." +#~ "Legt die Dichte von Gebirgen in den Schwebeländern fest.\n" +#~ "Dies ist ein Versatz, der zum Rauschwert „mgv7_np_mountain“ addiert wird." -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Mitte der Lichtkurven-Mittenverstärkung." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." #~ msgstr "" -#~ "Variierung der Hügelhöhe und Seetiefe in den ruhig verlaufenden\n" -#~ "Regionen der Schwebeländer." +#~ "Verändert, wie Schwebeländer des Bergtyps sich über und unter dem " +#~ "Mittelpunkt zuspitzen." -#~ msgid "Waving water" -#~ msgstr "Wasserwellen" - -#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Y-Höhe vom Mittelpunkt der Schwebeländer sowie\n" -#~ "des Wasserspiegels von Seen." +#~ "Ändert die Gammakodierung der Lichttabellen. Kleinere Werte sind heller.\n" +#~ "Diese Einstellung ist rein clientseitig und wird vom Server ignoriert." -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Y-Höhe, bis zu der sich die Schatten der Schwebeländer ausbreiten." +#~ msgid "Path to save screenshots at." +#~ msgstr "Pfad, in dem Bildschirmfotos abgespeichert werden." -#~ msgid "Projecting dungeons" -#~ msgstr "Herausragende Verliese" +#~ msgid "Parallax occlusion strength" +#~ msgstr "Parallax-Occlusion-Stärke" -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Ob Verliese manchmal aus dem Gelände herausragen." +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Erzeugungswarteschlangengrenze auf Festspeicher" -#~ msgid "Waving Water" -#~ msgstr "Wasserwellen" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "$1 wird heruntergeladen und installiert, bitte warten …" -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y-Wert der Obergrenze von Lava in großen Höhlen." +#~ msgid "Back" +#~ msgstr "Rücktaste" -#~ msgid "Select Package File:" -#~ msgstr "Paket-Datei auswählen:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Filmmodus umschalten" +#~ msgid "Ok" +#~ msgstr "OK" diff --git a/po/dv/minetest.po b/po/dv/minetest.po index 41710bda4..c5d325108 100644 --- a/po/dv/minetest.po +++ b/po/dv/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Dhivehi (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2019-11-10 15:04+0000\n" "Last-Translator: Krock \n" "Language-Team: Dhivehi 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "ޕޯސް މެނޫގައި އެފް.ޕީ.އެސް" @@ -2894,6 +3108,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2946,6 +3188,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4242,14 +4490,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4313,6 +4553,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "މެއިން މެނޫ ސްކްރިޕްޓް" @@ -4381,7 +4625,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4474,10 +4720,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4546,13 +4788,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4636,6 +4878,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4798,9 +5044,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4876,10 +5119,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4890,7 +5129,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4923,6 +5164,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -4991,6 +5240,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5428,6 +5689,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5451,6 +5719,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5462,10 +5734,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5474,6 +5742,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5588,7 +5870,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5740,6 +6022,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6060,6 +6346,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6095,3 +6389,9 @@ msgstr "" #, fuzzy #~ msgid "Select Package File:" #~ msgstr "މޮޑްގެ ފައިލް އިހްތިޔާރުކުރޭ:" + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "$1 ޑައުންލޯޑޮކޮށް އިންސްޓޯލްކުރަނީ، މަޑުކުރައްވާ..." + +#~ msgid "Ok" +#~ msgstr "emme rangalhu" diff --git a/po/el/minetest.po b/po/el/minetest.po index 916bc48da..1992676a4 100644 --- a/po/el/minetest.po +++ b/po/el/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Greek (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-03-31 20:29+0000\n" "Last-Translator: THANOS SIOURDAKIS \n" "Language-Team: Greek 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2847,6 +3058,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2899,6 +3138,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4195,14 +4440,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4266,6 +4503,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4333,7 +4574,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4420,10 +4663,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4492,13 +4731,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4582,6 +4821,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4741,9 +4984,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4819,10 +5059,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4833,7 +5069,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4866,6 +5104,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -4934,6 +5180,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5371,6 +5629,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5394,6 +5659,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5405,10 +5674,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5417,6 +5682,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5531,7 +5810,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5683,6 +5962,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6002,6 +6285,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6033,3 +6324,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL timeout" msgstr "" + +#~ msgid "Ok" +#~ msgstr "Οκ" diff --git a/po/eo/minetest.po b/po/eo/minetest.po index 8c46dafd0..8c21667df 100644 --- a/po/eo/minetest.po +++ b/po/eo/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Esperanto (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: sfan5 \n" "Language-Team: Esperanto 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "Kadroj sekunde en paŭza menuo" @@ -3047,6 +3279,41 @@ msgstr "Fiksa mapa greno" msgid "Fixed virtual joystick" msgstr "Fiksita virtuala stirstango" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Denseco de fluginsulaj montoj" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Maksimuma Y de forgeskelo" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Minimuma Y de forgeskeloj" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Baza bruo de fluginsuloj" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Eksponento de fluginsulaj montoj" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Baza bruo de fluginsuloj" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Alteco de fluginsuloj" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Fluga klavo" @@ -3099,6 +3366,12 @@ msgstr "Grandeco de la reenpaŝa tiparo, punkte (pt)." msgid "Font size of the monospace font in point (pt)." msgstr "Grandeco de la egallarĝa tiparo, punkte (pt)." +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4711,14 +4984,6 @@ msgstr "Alta transiro de luma kurbo" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Limo de viceroj enlegotaj de disko" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Limo de viceroj estigotaj" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4793,6 +5058,11 @@ msgstr "Enlegante Modifilojn de Monderoj" msgid "Lower Y limit of dungeons." msgstr "Suba Y-limo de forgeskeloj." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Suba Y-limo de forgeskeloj." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Ĉefmenua skripto" @@ -4876,9 +5146,12 @@ msgstr "" "kaj la flago «jungles» estas malatentata." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "Mapestigilaj ecoj speciale por Mapestigilo v7.\n" "«ridges» ŝaltas la riverojn." @@ -4967,10 +5240,6 @@ msgstr "Parametroj specialaj por Vala Mondestigilo" msgid "Mapgen debug" msgstr "Mapestigila erarserĉilo" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Parametroj de mondestigilo" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Nomo de mondestigilo" @@ -5044,17 +5313,19 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Maksimuma nombro da mondopecoj atendantaj legon." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Maksimumo nombro de mondopecoj atendantaj estigon.\n" "Vakigu por memaga elekto de ĝusta kvanto." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Maksimuma nombro de atendantaj mondopecoj legotaj de loka dosiero.\n" "Agordi vake por memaga elekto de ĝusta nombro." @@ -5151,6 +5422,10 @@ msgstr "Tagmesaĝo montrota al konektantaj ludantoj." msgid "Method used to highlight selected object." msgstr "Metodo emfazi elektitan objekton." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Mapeto" @@ -5321,11 +5596,9 @@ msgid "Number of emerge threads" msgstr "Nombro da mondestigaj fadenoj" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5425,10 +5698,6 @@ msgstr "Reĝimo de paralaksa ombrigo" msgid "Parallax occlusion scale" msgstr "Skalo de paralaksa ombrigo" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Potenco de paralaksa ombrigo" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5445,8 +5714,10 @@ msgstr "" "disponeblas." #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Dosierindiko por konservi ekrankopiojn." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5490,6 +5761,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Paŭzigi je perdita fokuso de la fenestro" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Limo de viceroj estigotaj" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Fiziko" @@ -5568,6 +5848,18 @@ msgstr "Profilila baskula klavo" msgid "Profiling" msgstr "Profilado" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "Proporcio de grandaj kavernoj, kiu enhavas fluaĵon." @@ -6076,6 +6368,13 @@ msgstr "" "(kompreneble, «remote_media» finiĝu per dekliva streko).\n" "Dosieroj mankantaj elŝutiĝos per la kutima maniero." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6102,6 +6401,11 @@ msgstr "Bruo de grandeco de terasaj montoj" msgid "Step mountain spread noise" msgstr "Bruo de disvastiĝo de terasaj montoj" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Potenco de paralakso." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Forteco de estigitaj normalmapoj." @@ -6116,10 +6420,6 @@ msgstr "" "La 3 parametroj de «boost» definas amplekson\n" "de la luma kurbo, kies heleco estas pliigita." -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Potenco de paralakso." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Severa kontrolo de protokoloj" @@ -6128,6 +6428,20 @@ msgstr "Severa kontrolo de protokoloj" msgid "Strip color codes" msgstr "Forpreni kolorkodojn" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "Akorda SQLite" @@ -6265,7 +6579,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6451,6 +6765,11 @@ msgstr "Mallegi neuzatajn servilajn datenojn" msgid "Upper Y limit of dungeons." msgstr "Supra Y-limo de forgeskeloj." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Supra Y-limo de forgeskeloj." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Uzi 3d-ajn nubojn anstataŭ ebenajn." @@ -6825,6 +7144,14 @@ msgstr "Y de supera limo de grandaj kavernoj." msgid "Y-distance over which caverns expand to full size." msgstr "Y-distanco trans kiu kavernoj etendiĝas al plena grandeco." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Y-nivelo de mezuma terena surfaco." @@ -6857,40 +7184,70 @@ msgstr "Samtempa limo de cURL" msgid "cURL timeout" msgstr "cURL tempolimo" -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "Alĝustigi la gamaan kodadon al la lumtabeloj. Pli altaj nombroj estas pli " -#~ "helaj.\n" -#~ "Ĉi tiu agordo estas klientflanka, kaj serviloj ĝin malatentos." +#~ msgid "Toggle Cinematic" +#~ msgstr "Baskuligi glitan vidpunkton" -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgid "Select Package File:" +#~ msgstr "Elekti pakaĵan dosieron:" + +#, fuzzy +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y de supera limo de grandaj kvazaŭ-hazardaj kavernoj." + +#~ msgid "Waving Water" +#~ msgstr "Ondanta akvo" + +#~ msgid "Projecting dungeons" +#~ msgstr "Planante forgeskelojn" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Y-nivelo kien etendiĝas ombroj de fluginsuloj." + +#~ msgid "Waving water" +#~ msgstr "Ondanta akvo" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." #~ msgstr "" -#~ "Ŝanĝas kiel montecaj fluginsuloj maldikiĝas super kaj sub la mezpunkto." +#~ "Variaĵo de alteco de montetoj kaj profundeco de lagoj sur glata tereno de " +#~ "fluginsuloj." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Regas densecon de montecaj fluginsuloj.\n" -#~ "Temas pri deŝovo de la brua valoro «np_mountain»." +#~ "Ordinara plejalto, super kaj sub la mezpunkto, de fluginsulaj montoj." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Regas larĝecon de tuneloj; pli malgranda valoro kreas pri larĝajn " -#~ "tunelojn." +#~ msgid "This font will be used for certain languages." +#~ msgstr "Tiu ĉi tiparo uziĝos por iuj lingvoj." -#~ msgid "Darkness sharpness" -#~ msgstr "Akreco de mallumo" +#~ msgid "Shadow limit" +#~ msgstr "Limo por ombroj" -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Difinas zonojn de glata tereno sur fluginsuloj.\n" -#~ "Glataj fluginsuloj okazas kiam bruo superas nulon." +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Dosierindiko al tiparo «TrueType» aŭ bitbildo." + +#~ msgid "Lightness sharpness" +#~ msgstr "Akreco de heleco" + +#~ msgid "Lava depth" +#~ msgstr "Lafo-profundeco" + +#~ msgid "IPv6 support." +#~ msgstr "Subteno de IPv6." + +#~ msgid "Gamma" +#~ msgstr "Helĝustigo" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Maltravidebleco de tipara ombro (inter 0 kaj 255)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Alteco de fluginsulaj montoj" + +#~ msgid "Floatland base height noise" +#~ msgstr "Bruo de baza alteco de fluginsuloj" + +#~ msgid "Enable VBO" +#~ msgstr "Ŝalti VBO(Vertex Buffer Object)" #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -6901,79 +7258,55 @@ msgstr "cURL tempolimo" #~ "difinoj\n" #~ "Y de supra limo de lafo en grandaj kavernoj." -#~ msgid "Enable VBO" -#~ msgstr "Ŝalti VBO(Vertex Buffer Object)" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Difinas zonojn de glata tereno sur fluginsuloj.\n" +#~ "Glataj fluginsuloj okazas kiam bruo superas nulon." -#~ msgid "Floatland base height noise" -#~ msgstr "Bruo de baza alteco de fluginsuloj" +#~ msgid "Darkness sharpness" +#~ msgstr "Akreco de mallumo" -#~ msgid "Floatland base noise" -#~ msgstr "Baza bruo de fluginsuloj" - -#~ msgid "Floatland level" -#~ msgstr "Alteco de fluginsuloj" - -#~ msgid "Floatland mountain density" -#~ msgstr "Denseco de fluginsulaj montoj" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Eksponento de fluginsulaj montoj" - -#~ msgid "Floatland mountain height" -#~ msgstr "Alteco de fluginsulaj montoj" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Maltravidebleco de tipara ombro (inter 0 kaj 255)." - -#~ msgid "Gamma" -#~ msgstr "Helĝustigo" - -#~ msgid "IPv6 support." -#~ msgstr "Subteno de IPv6." - -#~ msgid "Lava depth" -#~ msgstr "Lafo-profundeco" - -#~ msgid "Lightness sharpness" -#~ msgstr "Akreco de heleco" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Dosierindiko al tiparo «TrueType» aŭ bitbildo." - -#~ msgid "Shadow limit" -#~ msgstr "Limo por ombroj" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Tiu ĉi tiparo uziĝos por iuj lingvoj." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Regas larĝecon de tuneloj; pli malgranda valoro kreas pri larĝajn " +#~ "tunelojn." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Ordinara plejalto, super kaj sub la mezpunkto, de fluginsulaj montoj." +#~ "Regas densecon de montecaj fluginsuloj.\n" +#~ "Temas pri deŝovo de la brua valoro «np_mountain»." -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." #~ msgstr "" -#~ "Variaĵo de alteco de montetoj kaj profundeco de lagoj sur glata tereno de " -#~ "fluginsuloj." +#~ "Ŝanĝas kiel montecaj fluginsuloj maldikiĝas super kaj sub la mezpunkto." -#~ msgid "Waving water" -#~ msgstr "Ondanta akvo" +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." +#~ msgstr "" +#~ "Alĝustigi la gamaan kodadon al la lumtabeloj. Pli altaj nombroj estas pli " +#~ "helaj.\n" +#~ "Ĉi tiu agordo estas klientflanka, kaj serviloj ĝin malatentos." -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Y-nivelo kien etendiĝas ombroj de fluginsuloj." +#~ msgid "Path to save screenshots at." +#~ msgstr "Dosierindiko por konservi ekrankopiojn." -#~ msgid "Projecting dungeons" -#~ msgstr "Planante forgeskelojn" +#~ msgid "Parallax occlusion strength" +#~ msgstr "Potenco de paralaksa ombrigo" -#~ msgid "Waving Water" -#~ msgstr "Ondanta akvo" +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Limo de viceroj enlegotaj de disko" -#, fuzzy -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y de supera limo de grandaj kvazaŭ-hazardaj kavernoj." +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Elŝutante kaj instalante $1, bonvolu atendi…" -#~ msgid "Select Package File:" -#~ msgstr "Elekti pakaĵan dosieron:" +#~ msgid "Back" +#~ msgstr "Reeniri" -#~ msgid "Toggle Cinematic" -#~ msgstr "Baskuligi glitan vidpunkton" +#~ msgid "Ok" +#~ msgstr "Bone" diff --git a/po/es/minetest.po b/po/es/minetest.po index 687e8a046..7f4776516 100644 --- a/po/es/minetest.po +++ b/po/es/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Spanish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-05-23 12:41+0000\n" "Last-Translator: runs \n" "Language-Team: Spanish 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS (cuadros/s) en el menú de pausa" @@ -3081,6 +3311,41 @@ msgstr "Semilla de mapa fija" msgid "Fixed virtual joystick" msgstr "Joystick virtual fijo" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Densidad de las montañas en tierras flotantes" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Mazmorras, máx. Y" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Mazmorras, mín. Y" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Ruido base para tierra flotante" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Exponente de las montañas en tierras flotantes" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Ruido base para tierra flotante" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Nivel de tierra flotante" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Tecla vuelo" @@ -3133,6 +3398,12 @@ msgstr "Tamaño de la fuente de reserva en punto (pt)." msgid "Font size of the monospace font in point (pt)." msgstr "Tamaño de la fuente del monoespacio en punto (pt)." +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4788,14 +5059,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4861,6 +5124,11 @@ msgstr "Intervalo de modificador de bloques activos" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Limite absoluto de colas emergentes" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Script del menú principal" @@ -4957,10 +5225,22 @@ msgstr "" "inhabilitar esas opciones." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" +"Atributos del generador de mapas globales.\n" +"En el generador de mapas V6 la opción (o marcador) \"decorations\" controla " +"todos los elementos decorativos excepto los árboles y la hierba de la " +"jungla, en todos los otros generadores de mapas esta opción controla todas " +"las decoraciones.\n" +"Las opciones que no son incluidas en el texto con la cadena de opciones no " +"serán modificadas y mantendrán su valor por defecto.\n" +"Las opciones que comienzan con el prefijo \"no\" son utilizadas para " +"inhabilitar esas opciones." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5059,10 +5339,6 @@ msgstr "Banderas planas de Mapgen" msgid "Mapgen debug" msgstr "Depuración del generador de mapas" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Banderas de Mapgen" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Generador de mapas" @@ -5135,13 +5411,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -5226,6 +5502,10 @@ msgstr "Mensaje del día mostrado a los jugadores que se conectan." msgid "Method used to highlight selected object." msgstr "Método utilizado para resaltar el objeto seleccionado." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Minimapa" @@ -5387,9 +5667,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5470,11 +5747,6 @@ msgstr "Oclusión de paralaje" msgid "Parallax occlusion scale" msgstr "Oclusión de paralaje" -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Parallax occlusion strength" -msgstr "Oclusión de paralaje" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5485,8 +5757,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Ruta para guardar las capturas de pantalla." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5518,6 +5792,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Físicas" @@ -5588,6 +5870,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -6071,6 +6365,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6094,6 +6395,11 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Generar mapas normales" + #: src/settings_translation_file.cpp #, fuzzy msgid "Strength of generated normalmaps." @@ -6106,10 +6412,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -6118,6 +6420,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -6233,7 +6549,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6388,6 +6704,11 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Limite absoluto de colas emergentes" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6719,6 +7040,14 @@ msgstr "Limite absoluto de colas emergentes" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6751,6 +7080,70 @@ msgstr "" msgid "cURL timeout" msgstr "Tiempo de espera de cURL" +#~ msgid "Toggle Cinematic" +#~ msgstr "Activar cinemático" + +#~ msgid "Select Package File:" +#~ msgstr "Seleccionar el archivo del paquete:" + +#~ msgid "Waving Water" +#~ msgstr "Oleaje" + +#~ msgid "Waving water" +#~ msgstr "Oleaje en el agua" + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Características de la Lava" + +#~ msgid "IPv6 support." +#~ msgstr "soporte IPv6." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Alfa de sombra de fuentes (opacidad, entre 0 y 255)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Altura de las montañas en tierras flotantes" + +#~ msgid "Floatland base height noise" +#~ msgstr "Ruido de altura base para tierra flotante" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Habilita el mapeado de tonos fílmico" + +#~ msgid "Enable VBO" +#~ msgstr "Activar VBO" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Define áreas de terreno liso flotante.\n" +#~ "Las zonas flotantes lisas se producen cuando el ruido > 0." + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "Agudeza de la obscuridad" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Controla el ancho de los túneles, un valor menor crea túneles más anchos." + +#~ msgid "" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "Controla la densidad del terreno montañoso flotante.\n" +#~ "Se agrega un desplazamiento al valor de ruido 'mgv7_np_mountain'." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "" +#~ "Modifica cómo las tierras flotantes del tipo montaña aparecen arriba y " +#~ "abajo del punto medio." + #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " #~ "brighter.\n" @@ -6760,78 +7153,14 @@ msgstr "Tiempo de espera de cURL" #~ "mayores son mas brillantes.\n" #~ "Este ajuste es solo para cliente y es ignorado por el servidor." -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Modifica cómo las tierras flotantes del tipo montaña aparecen arriba y " -#~ "abajo del punto medio." +#~ msgid "Path to save screenshots at." +#~ msgstr "Ruta para guardar las capturas de pantalla." -#~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "Controla la densidad del terreno montañoso flotante.\n" -#~ "Se agrega un desplazamiento al valor de ruido 'mgv7_np_mountain'." +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Descargando e instalando $1, por favor espere..." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Controla el ancho de los túneles, un valor menor crea túneles más anchos." +#~ msgid "Back" +#~ msgstr "Atrás" -#, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "Agudeza de la obscuridad" - -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Define áreas de terreno liso flotante.\n" -#~ "Las zonas flotantes lisas se producen cuando el ruido > 0." - -#~ msgid "Enable VBO" -#~ msgstr "Activar VBO" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Habilita el mapeado de tonos fílmico" - -#~ msgid "Floatland base height noise" -#~ msgstr "Ruido de altura base para tierra flotante" - -#~ msgid "Floatland base noise" -#~ msgstr "Ruido base para tierra flotante" - -#~ msgid "Floatland level" -#~ msgstr "Nivel de tierra flotante" - -#~ msgid "Floatland mountain density" -#~ msgstr "Densidad de las montañas en tierras flotantes" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Exponente de las montañas en tierras flotantes" - -#~ msgid "Floatland mountain height" -#~ msgstr "Altura de las montañas en tierras flotantes" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Alfa de sombra de fuentes (opacidad, entre 0 y 255)." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "IPv6 support." -#~ msgstr "soporte IPv6." - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Características de la Lava" - -#~ msgid "Waving water" -#~ msgstr "Oleaje en el agua" - -#~ msgid "Waving Water" -#~ msgstr "Oleaje" - -#~ msgid "Select Package File:" -#~ msgstr "Seleccionar el archivo del paquete:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Activar cinemático" +#~ msgid "Ok" +#~ msgstr "Aceptar" diff --git a/po/et/minetest.po b/po/et/minetest.po index 7312d20b9..67b8210b3 100644 --- a/po/et/minetest.po +++ b/po/et/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Estonian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-05-03 19:14+0000\n" "Last-Translator: Janar Leas \n" "Language-Team: Estonian 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2893,6 +3114,35 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Põlvkonna kaardid" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2945,6 +3195,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4255,14 +4511,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4326,6 +4574,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Main menu script" @@ -4395,7 +4647,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4497,11 +4751,6 @@ msgstr "Põlvkonna kaardid" msgid "Mapgen debug" msgstr "Põlvkonna kaardid" -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Mapgen flags" -msgstr "Põlvkonna kaardid" - #: src/settings_translation_file.cpp #, fuzzy msgid "Mapgen name" @@ -4571,13 +4820,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4662,6 +4911,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4823,9 +5076,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4901,10 +5151,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4915,7 +5161,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4948,6 +5196,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -5017,6 +5273,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5469,6 +5737,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5492,6 +5767,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5503,10 +5782,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5515,6 +5790,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5630,7 +5919,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5784,6 +6073,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6110,6 +6403,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6142,20 +6443,29 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Darkness sharpness" -#~ msgstr "Pimeduse teravus" - -#~ msgid "Enable VBO" -#~ msgstr "Luba VBO" - #, fuzzy -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Lubab filmic tone mapping" +#~ msgid "Toggle Cinematic" +#~ msgstr "Lülita kiirus sisse" #, fuzzy #~ msgid "Select Package File:" #~ msgstr "Vali modifikatsiooni fail:" #, fuzzy -#~ msgid "Toggle Cinematic" -#~ msgstr "Lülita kiirus sisse" +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Lubab filmic tone mapping" + +#~ msgid "Enable VBO" +#~ msgstr "Luba VBO" + +#~ msgid "Darkness sharpness" +#~ msgstr "Pimeduse teravus" + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Palun oota $1 allalaadimist ja paigaldamist…" + +#~ msgid "Back" +#~ msgstr "Tagasi" + +#~ msgid "Ok" +#~ msgstr "Olgu." diff --git a/po/eu/minetest.po b/po/eu/minetest.po index 5a3c67ca6..7c3398569 100644 --- a/po/eu/minetest.po +++ b/po/eu/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-05-16 17:41+0000\n" "Last-Translator: aitzol berasategi \n" "Language-Team: Basque 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2866,6 +3079,35 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Jokalariaren transferentzia distantzia" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Hegaz egin tekla" @@ -2918,6 +3160,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4241,14 +4489,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4315,6 +4555,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4382,7 +4626,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4469,10 +4715,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4541,13 +4783,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4631,6 +4873,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4790,9 +5036,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4868,10 +5111,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4882,7 +5121,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4915,6 +5156,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -4983,6 +5232,18 @@ msgstr "Profilaria txandakatzeko tekla" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5420,6 +5681,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5443,6 +5711,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5454,10 +5726,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5466,6 +5734,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5582,7 +5864,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5737,6 +6019,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6058,6 +6344,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6089,3 +6383,12 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL timeout" msgstr "cURL-en denbora muga" + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "$1 deskargatu eta instalatzen, itxaron mesedez..." + +#~ msgid "Back" +#~ msgstr "Atzera" + +#~ msgid "Ok" +#~ msgstr "Ados" diff --git a/po/fil/minetest.po b/po/fil/minetest.po index df9f52b7f..c78b043ed 100644 --- a/po/fil/minetest.po +++ b/po/fil/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Filipino (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Filipino 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2846,6 +3056,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2898,6 +3136,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4194,14 +4438,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4265,6 +4501,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4332,7 +4572,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4419,10 +4661,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4491,13 +4729,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4581,6 +4819,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4740,9 +4982,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4818,10 +5057,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4832,7 +5067,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4865,6 +5102,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -4933,6 +5178,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5370,6 +5627,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5393,6 +5657,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5404,10 +5672,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5416,6 +5680,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5530,7 +5808,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5682,6 +5960,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6001,6 +6283,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" diff --git a/po/fr/minetest.po b/po/fr/minetest.po index 6a5c8641a..f17b5721f 100644 --- a/po/fr/minetest.po +++ b/po/fr/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: French (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-05-24 13:41+0000\n" "Last-Translator: NicHan \n" "Language-Team: French 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS maximum sur le menu pause" @@ -3080,6 +3312,41 @@ msgstr "Graine de génération de terrain déterminée" msgid "Fixed virtual joystick" msgstr "Fixer le joystick virtuel" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Densité des montagnes flottantes" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Maximum Y des donjons" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Minimum Y des donjons" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Le bruit de base des terres flottantes" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Densité des montagnes flottantes" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Le bruit de base des terres flottantes" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Hauteur des terrains flottants" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Voler" @@ -3132,6 +3399,12 @@ msgstr "Taille de police secondaire au point (pt)." msgid "Font size of the monospace font in point (pt)." msgstr "Taille de la police monospace en point (pt)." +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4782,14 +5055,6 @@ msgstr "Boost intermédiaire de la courbe de lumière" msgid "Light curve low gradient" msgstr "Centre du boost intermédiaire de la courbe de lumière" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Limite des files émergentes sur le disque" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Limite des files émergentes à générer" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4866,6 +5131,11 @@ msgstr "Chargement des modificateurs de blocs" msgid "Lower Y limit of dungeons." msgstr "Limite basse Y des donjons." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Limite basse Y des donjons." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Script du menu principal" @@ -4954,9 +5224,12 @@ msgstr "" "le signal ‹jungles› est ignoré." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "Attributs spécifiques au Mapgen v7.\n" "'crêtes' activent les rivières." @@ -5045,10 +5318,6 @@ msgstr "Signaux spécifiques au générateur de terrain Valleys" msgid "Mapgen debug" msgstr "Débogage de la génération du terrain" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Drapeaux de génération de terrain" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Nom du générateur de carte" @@ -5122,17 +5391,19 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Nombre maximum de mapblocks qui peuvent être listés pour chargement." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Nombre maximum de mapblocks à lister qui doivent être générés.\n" "Laisser ce champ vide pour un montant approprié défini automatiquement." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Nombre maximum de mapblocks à lister qui doivent être générés depuis un " "fichier.\n" @@ -5232,6 +5503,10 @@ msgstr "Message du jour affiché aux joueurs lors de la connexion." msgid "Method used to highlight selected object." msgstr "Méthodes utilisées pour l'éclairage des objets." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Mini-carte" @@ -5416,9 +5691,6 @@ msgstr "Nombre de tâches en cours" #, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5516,10 +5788,6 @@ msgstr "Mode occlusion parallaxe" msgid "Parallax occlusion scale" msgstr "Echelle de l'occlusion parallaxe" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Force de l'occlusion parallaxe" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5536,8 +5804,10 @@ msgstr "" "n’est pas disponible." #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Chemin où les captures d'écran sont sauvegardées." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5585,6 +5855,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Mettre en pause sur perte du focus de la fenêtre" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Limite des files émergentes à générer" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Physique" @@ -5667,6 +5946,18 @@ msgstr "Profilage" msgid "Profiling" msgstr "Profilage" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "Proportion de grandes grottes qui contiennent du liquide." @@ -6203,6 +6494,13 @@ msgstr "" "Les fichiers qui ne sont pas présents seront récupérés de la manière " "habituelle." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "" @@ -6229,6 +6527,11 @@ msgstr "Bruit pour la taille des montagnes en escalier" msgid "Step mountain spread noise" msgstr "Bruit pour l’étalement des montagnes en escalier" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Force de l'occlusion parallaxe." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Force des normalmaps autogénérés." @@ -6244,10 +6547,6 @@ msgstr "" "Les 3 paramètres 'boost' définissent une gamme de la lumière\n" "courbe qui est stimulée dans la luminosité." -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Force de l'occlusion parallaxe." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Vérification stricte du protocole" @@ -6256,6 +6555,20 @@ msgstr "Vérification stricte du protocole" msgid "Strip color codes" msgstr "Echapper les codes de couleur" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "SQLite synchronisé" @@ -6391,6 +6704,7 @@ msgstr "" "Entrer /privs dans le jeu pour voir une liste complète des privilèges." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6398,7 +6712,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" "Le rayon du volume de blocs autour de chaque joueur soumis à la\n" "truc de bloc actif, indiqué dans mapblocks (16 noeuds).\n" @@ -6608,6 +6922,11 @@ msgstr "Purger les données de serveur inutiles" msgid "Upper Y limit of dungeons." msgstr "Limite haute Y des donjons." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Limite haute Y des donjons." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Activer les nuages 3D au lieu des nuages 2D (plats)." @@ -7009,6 +7328,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "La distance Y jusqu'à laquelle la caverne peut s'étendre." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Hauteur (Y) moyenne de la surface du terrain." @@ -7041,36 +7368,84 @@ msgstr "Limite parallèle de cURL" msgid "cURL timeout" msgstr "Délais d'interruption de cURL" -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "Ajuster la correction gamma. Les valeurs plus basses sont plus claires.\n" -#~ "Ce paramètre s'applique au client seulement et est ignoré par le serveur." +#~ msgid "Toggle Cinematic" +#~ msgstr "Mode cinématique" -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Modifie la façon dont les terres flottantes montagneuses s’effilent au-" -#~ "dessus et au-dessous du point médian." +#~ msgid "Select Package File:" +#~ msgstr "Sélectionner le fichier du mod :" -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Milieu de la courbe de lumière mi-boost." +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "" +#~ "Coordonnée Y de la limite supérieure des grandes grottes pseudo-" +#~ "aléatoires." + +#~ msgid "Waving Water" +#~ msgstr "Eau ondulante" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Si les donjons font parfois saillie du terrain." + +#~ msgid "Projecting dungeons" +#~ msgstr "Projection des donjons" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Hauteur (Y) auquel les ombres portées s’étendent." + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Hauteur (Y) du point de flottaison et de la surface des lacs." + +#~ msgid "Waving water" +#~ msgstr "Vagues" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Variation de la hauteur des collines et de la profondeur des lacs sur les " +#~ "terrains plats flottants." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Contrôle la densité des terrains montagneux sur les terres flottantes.\n" -#~ "C'est un décalage ajouté à la valeur du bruit 'mgv7_np_mountain'." +#~ "Hauteur maximum typique, au-dessus et au-dessous du point médian, du " +#~ "terrain de montagne flottantes." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Contrôle la largeur des tunnels, une valeur plus petite crée des tunnels " -#~ "plus larges." +#~ msgid "This font will be used for certain languages." +#~ msgstr "Cette police sera utilisée pour certaines langues." -#~ msgid "Darkness sharpness" -#~ msgstr "Démarcation de l'obscurité" +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Force de la courbe de lumière mi-boost." + +#~ msgid "Shadow limit" +#~ msgstr "Limite des ombres" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Chemin vers police TrueType ou Bitmap." + +#~ msgid "Lightness sharpness" +#~ msgstr "Démarcation de la luminosité" + +#~ msgid "Lava depth" +#~ msgstr "Profondeur de lave" + +#~ msgid "IPv6 support." +#~ msgstr "Support IPv6." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Niveau d'opacité de l'ombre de la police (entre 0 et 255)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Hauteur des montagnes flottantes" + +#~ msgid "Floatland base height noise" +#~ msgstr "Le bruit de hauteur de base des terres flottantes" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Autorise le mappage tonal cinématographique" + +#~ msgid "Enable VBO" +#~ msgstr "Activer Vertex Buffer Object: objet tampon de vertex" #~ msgid "" #~ "Defines areas of floatland smooth terrain.\n" @@ -7079,93 +7454,51 @@ msgstr "Délais d'interruption de cURL" #~ "Défini les zones de terrain plat flottant.\n" #~ "Des terrains plats flottants apparaissent lorsque le bruit > 0." -#~ msgid "Enable VBO" -#~ msgstr "Activer Vertex Buffer Object: objet tampon de vertex" +#~ msgid "Darkness sharpness" +#~ msgstr "Démarcation de l'obscurité" -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Autorise le mappage tonal cinématographique" - -#~ msgid "Floatland base height noise" -#~ msgstr "Le bruit de hauteur de base des terres flottantes" - -#~ msgid "Floatland base noise" -#~ msgstr "Le bruit de base des terres flottantes" - -#~ msgid "Floatland level" -#~ msgstr "Hauteur des terrains flottants" - -#~ msgid "Floatland mountain density" -#~ msgstr "Densité des montagnes flottantes" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Densité des montagnes flottantes" - -#~ msgid "Floatland mountain height" -#~ msgstr "Hauteur des montagnes flottantes" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Niveau d'opacité de l'ombre de la police (entre 0 et 255)." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "IPv6 support." -#~ msgstr "Support IPv6." - -#~ msgid "Lava depth" -#~ msgstr "Profondeur de lave" - -#~ msgid "Lightness sharpness" -#~ msgstr "Démarcation de la luminosité" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Chemin vers police TrueType ou Bitmap." - -#~ msgid "Shadow limit" -#~ msgstr "Limite des ombres" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Force de la courbe de lumière mi-boost." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Cette police sera utilisée pour certaines langues." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Contrôle la largeur des tunnels, une valeur plus petite crée des tunnels " +#~ "plus larges." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Hauteur maximum typique, au-dessus et au-dessous du point médian, du " -#~ "terrain de montagne flottantes." +#~ "Contrôle la densité des terrains montagneux sur les terres flottantes.\n" +#~ "C'est un décalage ajouté à la valeur du bruit 'mgv7_np_mountain'." -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Milieu de la courbe de lumière mi-boost." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." #~ msgstr "" -#~ "Variation de la hauteur des collines et de la profondeur des lacs sur les " -#~ "terrains plats flottants." +#~ "Modifie la façon dont les terres flottantes montagneuses s’effilent au-" +#~ "dessus et au-dessous du point médian." -#~ msgid "Waving water" -#~ msgstr "Vagues" - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Hauteur (Y) du point de flottaison et de la surface des lacs." - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Hauteur (Y) auquel les ombres portées s’étendent." - -#~ msgid "Projecting dungeons" -#~ msgstr "Projection des donjons" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Si les donjons font parfois saillie du terrain." - -#~ msgid "Waving Water" -#~ msgstr "Eau ondulante" - -#~ msgid "Y of upper limit of lava in large caves." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Coordonnée Y de la limite supérieure des grandes grottes pseudo-" -#~ "aléatoires." +#~ "Ajuster la correction gamma. Les valeurs plus basses sont plus claires.\n" +#~ "Ce paramètre s'applique au client seulement et est ignoré par le serveur." -#~ msgid "Select Package File:" -#~ msgstr "Sélectionner le fichier du mod :" +#~ msgid "Path to save screenshots at." +#~ msgstr "Chemin où les captures d'écran sont sauvegardées." -#~ msgid "Toggle Cinematic" -#~ msgstr "Mode cinématique" +#~ msgid "Parallax occlusion strength" +#~ msgstr "Force de l'occlusion parallaxe" + +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Limite des files émergentes sur le disque" + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Téléchargement et installation de $1, veuillez patienter..." + +#~ msgid "Back" +#~ msgstr "Retour" + +#~ msgid "Ok" +#~ msgstr "Ok" diff --git a/po/he/minetest.po b/po/he/minetest.po index 9a4daa2c7..f0a49f82e 100644 --- a/po/he/minetest.po +++ b/po/he/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Hebrew (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2019-11-10 15:04+0000\n" "Last-Translator: Krock \n" "Language-Team: Hebrew 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2889,6 +3102,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2941,6 +3182,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4238,14 +4485,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4309,6 +4548,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4377,7 +4620,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4470,10 +4715,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4542,13 +4783,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4632,6 +4873,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4791,9 +5036,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4869,10 +5111,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4883,7 +5121,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4916,6 +5156,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -4984,6 +5232,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5421,6 +5681,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5444,6 +5711,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5455,10 +5726,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5467,6 +5734,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5581,7 +5862,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5733,6 +6014,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6053,6 +6338,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6088,3 +6381,6 @@ msgstr "" #, fuzzy #~ msgid "Enable VBO" #~ msgstr "אפשר בכל" + +#~ msgid "Ok" +#~ msgstr "אישור" diff --git a/po/hi/minetest.po b/po/hi/minetest.po index 7cc989754..b83db4629 100644 --- a/po/hi/minetest.po +++ b/po/hi/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-05-02 07:11+0000\n" "Last-Translator: Eyekay49 \n" "Language-Team: Hindi 1;\n" "X-Generator: Weblate 4.1-dev\n" -#: builtin/client/death_formspec.lua src/client/game.cpp -msgid "You died" -msgstr "आपकी मौत हो गयी" - #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" msgstr "वापस ज़िंदा होएं" -#: builtin/fstk/ui.lua -msgid "The server has requested a reconnect:" -msgstr "सर्वर वापस कनेक्ट करना चाहता है :" +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "You died" +msgstr "आपकी मौत हो गयी" -#: builtin/fstk/ui.lua -msgid "Reconnect" -msgstr "वापस कनेक्ट करें" - -#: builtin/fstk/ui.lua -msgid "Main menu" -msgstr "मुख्य पृष्ठ" +#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp +msgid "OK" +msgstr "" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -48,78 +40,44 @@ msgid "An error occurred:" msgstr "एक खराबी हो गयी :" #: builtin/fstk/ui.lua -msgid "Ok" -msgstr "ठीक है" +msgid "Main menu" +msgstr "मुख्य पृष्ठ" + +#: builtin/fstk/ui.lua +msgid "Reconnect" +msgstr "वापस कनेक्ट करें" + +#: builtin/fstk/ui.lua +msgid "The server has requested a reconnect:" +msgstr "सर्वर वापस कनेक्ट करना चाहता है :" #: builtin/mainmenu/common.lua src/client/game.cpp msgid "Loading..." msgstr "लोड हो रहा है ..." #: builtin/mainmenu/common.lua -msgid "Try reenabling public serverlist and check your internet connection." -msgstr "" -"सार्वजनिक सर्वर शृंखला (सर्वर लिस्ट) को 'हां' करें और इंटरनेट कनेक्शन जांचें।" - -#: builtin/mainmenu/common.lua -msgid "Server supports protocol versions between $1 and $2. " -msgstr "सर्वर केवल प्रोटोकॉल $1 से $2 ही लेता है। " +msgid "Protocol version mismatch. " +msgstr "प्रोटोकॉल संख्या एक नहीं है। " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " msgstr "सर्वर केवल प्रोटोकॉल $1 लेता है। " #: builtin/mainmenu/common.lua -msgid "We support protocol versions between version $1 and $2." -msgstr "हम प्रोटोकॉल $1 से $2 ही लेते हैं।" +msgid "Server supports protocol versions between $1 and $2. " +msgstr "सर्वर केवल प्रोटोकॉल $1 से $2 ही लेता है। " + +#: builtin/mainmenu/common.lua +msgid "Try reenabling public serverlist and check your internet connection." +msgstr "सार्वजनिक सर्वर शृंखला (सर्वर लिस्ट) को 'हां' करें और इंटरनेट कनेक्शन जांचें।" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." msgstr "हम केवल प्रोटोकॉल $1 ही लेते हैं।" #: builtin/mainmenu/common.lua -msgid "Protocol version mismatch. " -msgstr "प्रोटोकॉल संख्या एक नहीं है। " - -#: builtin/mainmenu/dlg_config_world.lua -msgid "World:" -msgstr "दुनिया :" - -#: builtin/mainmenu/dlg_config_world.lua -msgid "No modpack description provided." -msgstr "माॅडपैक ने अपने बारे में कुछ नहीं बताया।" - -#: builtin/mainmenu/dlg_config_world.lua -msgid "No game description provided." -msgstr "खेल ने अपने बारे में कुछ नहीं बताया।" - -#: builtin/mainmenu/dlg_config_world.lua -msgid "Mod:" -msgstr "माॅड :" - -#: builtin/mainmenu/dlg_config_world.lua -msgid "No (optional) dependencies" -msgstr "कोई (अनावश्यक) निर्भरताएं नहीं हैं" - -#: builtin/mainmenu/dlg_config_world.lua -msgid "No hard dependencies" -msgstr "कोई आवश्यक निर्भरताएं नहीं" - -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua -msgid "Optional dependencies:" -msgstr "अनावश्यक निर्भरताएं :" - -#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua -msgid "Dependencies:" -msgstr "निर्भरताएं :" - -#: builtin/mainmenu/dlg_config_world.lua -msgid "No optional dependencies" -msgstr "कोई अनावश्यक निर्भरताएं नहीं" - -#: builtin/mainmenu/dlg_config_world.lua -#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp -msgid "Save" -msgstr "सेव करें" +msgid "We support protocol versions between version $1 and $2." +msgstr "हम प्रोटोकॉल $1 से $2 ही लेते हैं।" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_delete_content.lua @@ -131,75 +89,121 @@ msgstr "सेव करें" msgid "Cancel" msgstr "रोकें" -#: builtin/mainmenu/dlg_config_world.lua -msgid "Disable modpack" -msgstr "माॅडपैक रोकें" - -#: builtin/mainmenu/dlg_config_world.lua -msgid "Enable modpack" -msgstr "माॅडपैक चालू करें" - -#: builtin/mainmenu/dlg_config_world.lua -msgid "enabled" -msgstr "चालू" +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Dependencies:" +msgstr "निर्भरताएं :" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" msgstr "प्रत्येक रोकें" +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable modpack" +msgstr "माॅडपैक रोकें" + #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" msgstr "प्रत्येक चालू करें" +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable modpack" +msgstr "माॅडपैक चालू करें" + #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" -"मना किए गए वर्णों के कारण माॅड \"$1\" चालू नहीं हो सका। कृपया [a-z0-9] " -"अंग्रेजी वर्ण का ही प्रयोग करें।" +"मना किए गए वर्णों के कारण माॅड \"$1\" चालू नहीं हो सका। कृपया [a-z0-9] अंग्रेजी वर्ण का " +"ही प्रयोग करें।" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Find More Mods" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Mod:" +msgstr "माॅड :" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No (optional) dependencies" +msgstr "कोई (अनावश्यक) निर्भरताएं नहीं हैं" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No game description provided." +msgstr "खेल ने अपने बारे में कुछ नहीं बताया।" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No hard dependencies" +msgstr "कोई आवश्यक निर्भरताएं नहीं" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No modpack description provided." +msgstr "माॅडपैक ने अपने बारे में कुछ नहीं बताया।" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No optional dependencies" +msgstr "कोई अनावश्यक निर्भरताएं नहीं" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Optional dependencies:" +msgstr "अनावश्यक निर्भरताएं :" + +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp +msgid "Save" +msgstr "सेव करें" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "World:" +msgstr "दुनिया :" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +msgstr "चालू" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "सभी पैकेज" +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Back to Main Menu" +msgstr "वापस मुख्य पृष्ठ पर जाएं" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "ContentDB is not available when Minetest was compiled without cURL" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#, fuzzy +msgid "Downloading..." +msgstr "लोड हो रहा है ..." + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Failed to download $1" +msgstr "$1 का डाऊनलोड असफल हुआ" + #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Games" msgstr "अनेक खेल" +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Install" +msgstr "इन्स्टाल करें" + #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Mods" msgstr "माॅड" #: builtin/mainmenu/dlg_contentstore.lua -msgid "Texture packs" -msgstr "कला संकुल" +msgid "No packages could be retrieved" +msgstr "कोई पैकेज नहीं ला पाया गया" #: builtin/mainmenu/dlg_contentstore.lua -msgid "Failed to download $1" -msgstr "$1 का डाऊनलोड असफल हुआ" - -#: builtin/mainmenu/dlg_contentstore.lua -msgid "Downloading and installing $1, please wait..." -msgstr "$1 का डाऊनलोड व इन्स्टाल चल रहा है, कृपया ठहरें ..." - -#: builtin/mainmenu/dlg_contentstore.lua -msgid "Back" -msgstr "पीछे" - -#: builtin/mainmenu/dlg_contentstore.lua -msgid "Install" -msgstr "इन्स्टाल करें" - -#: builtin/mainmenu/dlg_contentstore.lua -msgid "Update" -msgstr "नया संस्करण इन्स्टाल करें" - -#: builtin/mainmenu/dlg_contentstore.lua -msgid "Uninstall" -msgstr "हटाऐं" +msgid "No results" +msgstr "कुछ नहीं मिला" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua @@ -207,64 +211,220 @@ msgid "Search" msgstr "ढूंढें" #: builtin/mainmenu/dlg_contentstore.lua -msgid "Back to Main Menu" -msgstr "वापस मुख्य पृष्ठ पर जाएं" +msgid "Texture packs" +msgstr "कला संकुल" #: builtin/mainmenu/dlg_contentstore.lua -msgid "No results" -msgstr "कुछ नहीं मिला" +msgid "Uninstall" +msgstr "हटाऐं" #: builtin/mainmenu/dlg_contentstore.lua -msgid "No packages could be retrieved" -msgstr "कोई पैकेज नहीं ला पाया गया" +msgid "Update" +msgstr "नया संस्करण इन्स्टाल करें" -#: builtin/mainmenu/dlg_create_world.lua -msgid "World name" -msgstr "दुनिया का नाम" - -#: builtin/mainmenu/dlg_create_world.lua -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Seed" -msgstr "स्रोत" - -#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp -msgid "Mapgen" -msgstr "नक्शा स्रोत" - -#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp -msgid "Game" -msgstr "खेल" - -#: builtin/mainmenu/dlg_create_world.lua -msgid "Create" -msgstr "बनाइए" - -#: builtin/mainmenu/dlg_create_world.lua -msgid "You have no games installed." -msgstr "आपने कोई खेल इन्स्टाल नहीं किया है।" - -#: builtin/mainmenu/dlg_create_world.lua -msgid "Download one from minetest.net" -msgstr "आप किसी भी खेल को minetest.net से डाऊनलोड कर सकते हैं" - -#: builtin/mainmenu/dlg_create_world.lua -msgid "Warning: The minimal development test is meant for developers." +#: builtin/mainmenu/dlg_contentstore.lua +msgid "View" msgstr "" -"चेतावनी : न्यूनतम विकास खेल (Minimal development test) खेल बनाने वालों के लि" -"ए है।" - -#: builtin/mainmenu/dlg_create_world.lua -msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "मैनटेस्ट खेल जैसे अन्य खेल minetest.net से डाऊनलोड किए जा सकते हैं" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" msgstr "\"$1\" नामक दुनिया पहले से ही है" +#: builtin/mainmenu/dlg_create_world.lua +msgid "Additional terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Altitude chill" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Altitude dry" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Biome blending" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Caverns" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Caves" +msgstr "सप्टक (आक्टेव)" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Create" +msgstr "बनाइए" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Decorations" +msgstr "जानकारी :" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download a game, such as Minetest Game, from minetest.net" +msgstr "मैनटेस्ट खेल जैसे अन्य खेल minetest.net से डाऊनलोड किए जा सकते हैं" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download one from minetest.net" +msgstr "आप किसी भी खेल को minetest.net से डाऊनलोड कर सकते हैं" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Dungeons" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Flat terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Floating landmasses in the sky" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Floatlands (experimental)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Game" +msgstr "खेल" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Generate non-fractal terrain: Oceans and underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Hills" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Humid rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Increases humidity around rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Lakes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Low humidity and high heat causes shallow or dry rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen" +msgstr "नक्शा स्रोत" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mapgen-specific flags" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mountains" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mud flow" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Network of tunnels and caves" +msgstr "" + #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" msgstr "कोई खेल चूना नहीं गया है" +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces heat with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces humidity with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Sea level rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Seed" +msgstr "स्रोत" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Smooth transition between biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "" +"Structures appearing on the terrain (no effect on trees and jungle grass " +"created by v6)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Structures appearing on the terrain, typically trees and plants" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle, Tundra, Taiga" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Terrain surface erosion" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Trees and jungle grass" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Vary river depth" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Very large caverns deep in the underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Warning: The Development Test is meant for developers." +msgstr "" +"चेतावनी : न्यूनतम विकास खेल (Minimal development test) खेल बनाने वालों के लिए है।" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "World name" +msgstr "दुनिया का नाम" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "You have no games installed." +msgstr "आपने कोई खेल इन्स्टाल नहीं किया है।" + #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" msgstr "क्या आप सचमुच \"$1\" को रद्द करना चाहते हैं?" @@ -291,63 +451,127 @@ msgstr "दुनिया रद्द करें?" msgid "Accept" msgstr "हां" +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Rename Modpack:" +msgstr "माॅडपैक का नाम बदलें :" + #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "modpack.conf फाईल में इस माॅडपैक को जो नाम दिया गया है वही माना जाएगा।" -#: builtin/mainmenu/dlg_rename_modpack.lua -msgid "Rename Modpack:" -msgstr "माॅडपैक का नाम बदलें :" - #: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Disabled" -msgstr "रुका हुआ" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Enabled" -msgstr "चालू" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Browse" -msgstr "ढूंढें" - -#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp -msgid "Offset" -msgstr "आफसेट" - -#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp -msgid "Scale" -msgstr "स्केल" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "X spread" -msgstr "X स्प्रेड" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Y spread" -msgstr "Y स्प्रेड" +msgid "(No description of setting given)" +msgstr "(सेटिंग के बारे में कुछ नहीं बताया गया है)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" msgstr "द्वि आयामी नॉइस" #: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Z spread" -msgstr "Z स्प्रेड" +msgid "< Back to Settings page" +msgstr "वापस सेटिंग पृष्ठ पर जाएं" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "ढूंढें" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "रुका हुआ" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "बदलें" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "चालू" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Lacunarity" +msgstr "लैकुनारिटी" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Octaves" msgstr "सप्टक (आक्टेव)" +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Offset" +msgstr "आफसेट" + #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" msgstr "हठ (पर्सिस्टेन्स)" #: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Lacunarity" -msgstr "लैकुनारिटी" +msgid "Please enter a valid integer." +msgstr "कृपया एक पूर्णांक (integer) भरें।" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "कृपया एक अंक भरें।" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "मूल चुनें" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Scale" +msgstr "स्केल" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select directory" +msgstr "फाईल पाथ चुनें" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select file" +msgstr "फाईल चुनें" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "तकनीकी नाम देखें" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be at least $1." +msgstr "इसका मूल्य कम-से-कम $1 होना चाहिए।" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must not be larger than $1." +msgstr "इसका मूल्य $1 से अधिक नहीं होना चाहिए।" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X" +msgstr "एक्स" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X spread" +msgstr "X स्प्रेड" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y" +msgstr "वाई" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y spread" +msgstr "Y स्प्रेड" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z" +msgstr "जेड" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z spread" +msgstr "Z स्प्रेड" + +#. ~ "absvalue" is a noise parameter flag. +#. It is short for "absolute value". +#. It can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "absvalue" +msgstr "एब्सोल्यूट वैल्यू" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options @@ -364,125 +588,77 @@ msgstr "डीफाल्ट" msgid "eased" msgstr "आरामदायक (ईज़्ड)" -#. ~ "absvalue" is a noise parameter flag. -#. It is short for "absolute value". -#. It can be enabled in noise settings in -#. main menu -> "All Settings". -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "absvalue" -msgstr "एब्सोल्यूट वैल्यू" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "X" -msgstr "एक्स" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Y" -msgstr "वाई" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Z" -msgstr "जेड" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "(No description of setting given)" -msgstr "(सेटिंग के बारे में कुछ नहीं बताया गया है)" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Please enter a valid integer." -msgstr "कृपया एक पूर्णांक (integer) भरें।" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "The value must be at least $1." -msgstr "इसका मूल्य कम-से-कम $1 होना चाहिए।" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "The value must not be larger than $1." -msgstr "इसका मूल्य $1 से अधिक नहीं होना चाहिए।" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Please enter a valid number." -msgstr "कृपया एक अंक भरें।" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Select directory" -msgstr "फाईल पाथ चुनें" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Select file" -msgstr "फाईल चुनें" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "< Back to Settings page" -msgstr "वापस सेटिंग पृष्ठ पर जाएं" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Edit" -msgstr "बदलें" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Restore Default" -msgstr "मूल चुनें" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Show technical names" -msgstr "तकनीकी नाम देखें" - #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" msgstr "($1) चालू" #: builtin/mainmenu/pkgmgr.lua -msgid "Unable to install a $1 as a texture pack" -msgstr "$1 कला संकुल के रूप में इन्स्टाल नहीं किया जा सका" +msgid "$1 mods" +msgstr "$1 यह सब मॉड" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" msgstr "$2 में $1 को इन्स्टाल नहीं किया जा सका" #: builtin/mainmenu/pkgmgr.lua -msgid "Unable to find a valid mod or modpack" -msgstr "सही माॅड या माॅडपैक नहीं ढूंढ पाया गया" - -#: builtin/mainmenu/pkgmgr.lua -msgid "Unable to install a modpack as a $1" -msgstr "माॅडपैक को $1 के रूप में इन्स्टाल नहीं किया जा सका" +msgid "Install Mod: Unable to find real mod name for: $1" +msgstr "इन्स्टाल मॉड: $1 का असल नाम नहीं जान पाया गया" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" msgstr "माॅड इन्स्टाल: माॅडपैक $1 के लिए सही फोल्डर नहीं ढूंढा जा सका" #: builtin/mainmenu/pkgmgr.lua -msgid "Unable to install a mod as a $1" -msgstr "मॉड को $1 के रूप में इन्स्टाल नहीं किया जा सका" - -#: builtin/mainmenu/pkgmgr.lua -msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "इन्स्टाल मॉड: $1 का असल नाम नहीं जान पाया गया" - -#: builtin/mainmenu/pkgmgr.lua -msgid "Unable to install a game as a $1" -msgstr "खेल को $1 के रूप में इन्स्टाल नहीं किया जा सका" +msgid "Install: Unsupported file type \"$1\" or broken archive" +msgstr "इन्स्टाल : \"$1\" का फाईल टाईप अंजान है याफिर आरकाइव खराब है" #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" msgstr "इन्स्टाल : फाईल : \"$1\"" #: builtin/mainmenu/pkgmgr.lua -msgid "Install: Unsupported file type \"$1\" or broken archive" -msgstr "इन्स्टाल : \"$1\" का फाईल टाईप अंजान है याफिर आरकाइव खराब है" +msgid "Unable to find a valid mod or modpack" +msgstr "सही माॅड या माॅडपैक नहीं ढूंढ पाया गया" #: builtin/mainmenu/pkgmgr.lua -msgid "$1 mods" -msgstr "$1 यह सब मॉड" +msgid "Unable to install a $1 as a texture pack" +msgstr "$1 कला संकुल के रूप में इन्स्टाल नहीं किया जा सका" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a game as a $1" +msgstr "खेल को $1 के रूप में इन्स्टाल नहीं किया जा सका" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a mod as a $1" +msgstr "मॉड को $1 के रूप में इन्स्टाल नहीं किया जा सका" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a modpack as a $1" +msgstr "माॅडपैक को $1 के रूप में इन्स्टाल नहीं किया जा सका" + +#: builtin/mainmenu/tab_content.lua +msgid "Browse online content" +msgstr "नेट पर वस्तुएं ढूंढें" + +#: builtin/mainmenu/tab_content.lua +msgid "Content" +msgstr "वस्तुएं" + +#: builtin/mainmenu/tab_content.lua +msgid "Disable Texture Pack" +msgstr "कला संकुल रोकें" + +#: builtin/mainmenu/tab_content.lua +msgid "Information:" +msgstr "जानकारी :" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" msgstr "इन्स्टाल किये गये पैकेज :" #: builtin/mainmenu/tab_content.lua -msgid "Browse online content" -msgstr "नेट पर वस्तुएं ढूंढें" +msgid "No dependencies." +msgstr "कोई निर्भर्ताएं नहीं हैं|" #: builtin/mainmenu/tab_content.lua msgid "No package description available" @@ -492,62 +668,46 @@ msgstr "पैकेज के बारे में कुछ नहीं ब msgid "Rename" msgstr "नाम बदलें" -#: builtin/mainmenu/tab_content.lua -msgid "No dependencies." -msgstr "कोई निर्भर्ताएं नहीं हैं|" - -#: builtin/mainmenu/tab_content.lua -msgid "Disable Texture Pack" -msgstr "कला संकुल रोकें" - -#: builtin/mainmenu/tab_content.lua -msgid "Use Texture Pack" -msgstr "कला संकुल चालू करें" - -#: builtin/mainmenu/tab_content.lua -msgid "Information:" -msgstr "जानकारी :" - #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" msgstr "पैकेज हटाएं" #: builtin/mainmenu/tab_content.lua -msgid "Content" -msgstr "वस्तुएं" - -#: builtin/mainmenu/tab_credits.lua -msgid "Credits" -msgstr "आभार सूची" - -#: builtin/mainmenu/tab_credits.lua -msgid "Core Developers" -msgstr "मुख्य डेवेलपर" +msgid "Use Texture Pack" +msgstr "कला संकुल चालू करें" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" msgstr "सक्रिय सहायक" #: builtin/mainmenu/tab_credits.lua -msgid "Previous Core Developers" -msgstr "पूर्व मुख्य डेवेलपर" +msgid "Core Developers" +msgstr "मुख्य डेवेलपर" + +#: builtin/mainmenu/tab_credits.lua +msgid "Credits" +msgstr "आभार सूची" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" msgstr "पूर्व सहायक" +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Core Developers" +msgstr "पूर्व मुख्य डेवेलपर" + +#: builtin/mainmenu/tab_local.lua +msgid "Announce Server" +msgstr "सर्वर सार्वजनिक सर्वर सूची (server list) में दिखे" + +#: builtin/mainmenu/tab_local.lua +msgid "Bind Address" +msgstr "बाईंड एड्रेस" + #: builtin/mainmenu/tab_local.lua msgid "Configure" msgstr "सेटिंग बदलें" -#: builtin/mainmenu/tab_local.lua -msgid "New" -msgstr "नया" - -#: builtin/mainmenu/tab_local.lua -msgid "Select World:" -msgstr "दुनिया चुन्हें :" - #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative Mode" msgstr "असीमित संसाधन" @@ -556,41 +716,45 @@ msgstr "असीमित संसाधन" msgid "Enable Damage" msgstr "हानि व मृत्यु हो सकती है" -#: builtin/mainmenu/tab_local.lua -msgid "Host Server" -msgstr "सर्वर चलाएं" - #: builtin/mainmenu/tab_local.lua msgid "Host Game" msgstr "खेल चलाएं" #: builtin/mainmenu/tab_local.lua -msgid "Announce Server" -msgstr "सर्वर सार्वजनिक सर्वर सूची (server list) में दिखे" +msgid "Host Server" +msgstr "सर्वर चलाएं" + +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" msgstr "नाम/पासवर्ड" #: builtin/mainmenu/tab_local.lua -msgid "Bind Address" -msgstr "बाईंड एड्रेस" +msgid "New" +msgstr "नया" #: builtin/mainmenu/tab_local.lua -msgid "Port" -msgstr "पोर्ट" - -#: builtin/mainmenu/tab_local.lua -msgid "Server Port" -msgstr "सर्वर पोर्ट" +msgid "No world created or selected!" +msgstr "कोई दुनिया उपस्थित या चुनी गयी नहीं है !" #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "खेल खेलें" #: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "कोई दुनिया उपस्थित या चुनी गयी नहीं है !" +msgid "Port" +msgstr "पोर्ट" + +#: builtin/mainmenu/tab_local.lua +msgid "Select World:" +msgstr "दुनिया चुन्हें :" + +#: builtin/mainmenu/tab_local.lua +msgid "Server Port" +msgstr "सर्वर पोर्ट" #: builtin/mainmenu/tab_local.lua msgid "Start Game" @@ -600,26 +764,10 @@ msgstr "खेल शुरू करें" msgid "Address / Port" msgstr "ऐडरेस / पोर्ट" -#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua -msgid "Name / Password" -msgstr "नाम/पासवर्ड" - #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" msgstr "कनेक्ट करें" -#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua -msgid "Del. Favorite" -msgstr "पसंद हटाएं" - -#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua -msgid "Favorite" -msgstr "पसंद" - -#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua -msgid "Ping" -msgstr "पिंग" - #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative mode" msgstr "असीमित संसाधन" @@ -628,67 +776,39 @@ msgstr "असीमित संसाधन" msgid "Damage enabled" msgstr "हानि व मृत्यु हो सकती है" -#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua -msgid "PvP enabled" -msgstr "खिलाडियों में मारा-पीटी की अनुमती है" +msgid "Del. Favorite" +msgstr "पसंद हटाएं" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "पसंद" #: builtin/mainmenu/tab_online.lua msgid "Join Game" msgstr "खेल में शामिल होएं" -#: builtin/mainmenu/tab_settings.lua -msgid "Opaque Leaves" -msgstr "अपारदर्शी पत्ते" +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "नाम/पासवर्ड" -#: builtin/mainmenu/tab_settings.lua -msgid "Simple Leaves" -msgstr "मामूली पत्ते" +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Ping" +msgstr "पिंग" -#: builtin/mainmenu/tab_settings.lua -msgid "Fancy Leaves" -msgstr "रोचक पत्ते" - -#: builtin/mainmenu/tab_settings.lua -msgid "Node Outlining" -msgstr "डिब्बों की रूपरेखा" - -#: builtin/mainmenu/tab_settings.lua -msgid "Node Highlighting" -msgstr "डिब्बें उजाले हों" - -#: builtin/mainmenu/tab_settings.lua -msgid "None" -msgstr "कुछ नहीं" - -#: builtin/mainmenu/tab_settings.lua -msgid "No Filter" -msgstr "कोई फिल्टर नहीं" - -#: builtin/mainmenu/tab_settings.lua -msgid "Bilinear Filter" -msgstr "द्विरेखिय फिल्टर" - -#: builtin/mainmenu/tab_settings.lua -msgid "Trilinear Filter" -msgstr "त्रिरेखीय फिल्टर" - -#: builtin/mainmenu/tab_settings.lua -msgid "No Mipmap" -msgstr "मिपमैप नहीं हो" - -#: builtin/mainmenu/tab_settings.lua -msgid "Mipmap" -msgstr "मिपमैप" - -#: builtin/mainmenu/tab_settings.lua -msgid "Mipmap + Aniso. Filter" -msgstr "मिपमैप व अनीसो. फिल्टर" +#. ~ PvP = Player versus Player +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "PvP enabled" +msgstr "खिलाडियों में मारा-पीटी की अनुमती है" #: builtin/mainmenu/tab_settings.lua msgid "2x" msgstr "दुग्ना" +#: builtin/mainmenu/tab_settings.lua +msgid "3D Clouds" +msgstr "त्रिविम दृश्यन बादल" + #: builtin/mainmenu/tab_settings.lua msgid "4x" msgstr "चार गुना" @@ -698,53 +818,105 @@ msgid "8x" msgstr "आठ गुना" #: builtin/mainmenu/tab_settings.lua -msgid "Are you sure to reset your singleplayer world?" -msgstr "क्या आप सचमुच अपने एक-खिलाडी दुनिया रद्द करना चाहते हैं?" - -#: builtin/mainmenu/tab_settings.lua -msgid "Yes" -msgstr "हां" - -#: builtin/mainmenu/tab_settings.lua -msgid "No" -msgstr "नहीं" - -#: builtin/mainmenu/tab_settings.lua -msgid "Smooth Lighting" -msgstr "चिकना उजाला" - -#: builtin/mainmenu/tab_settings.lua -msgid "Particles" -msgstr "कण" - -#: builtin/mainmenu/tab_settings.lua -msgid "3D Clouds" -msgstr "त्रिविम दृश्यन बादल" - -#: builtin/mainmenu/tab_settings.lua -msgid "Opaque Water" -msgstr "अपारदर्शी पानी" - -#: builtin/mainmenu/tab_settings.lua -msgid "Connected Glass" -msgstr "जुडे शिशे" - -#: builtin/mainmenu/tab_settings.lua -msgid "Texturing:" -msgstr "कला बनावट :" +msgid "All Settings" +msgstr "सभी सेटिंग देखें" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" msgstr "ऐन्टी एलियासिंग :" #: builtin/mainmenu/tab_settings.lua -msgid "Screen:" -msgstr "स्क्रीन :" +msgid "Are you sure to reset your singleplayer world?" +msgstr "क्या आप सचमुच अपने एक-खिलाडी दुनिया रद्द करना चाहते हैं?" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" msgstr "स्क्रीन परिमाण स्वयं सेव हो" +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "द्विरेखिय फिल्टर" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "टकराव मैपिंग" + +#: builtin/mainmenu/tab_settings.lua src/client/game.cpp +msgid "Change Keys" +msgstr "की बदलें" + +#: builtin/mainmenu/tab_settings.lua +msgid "Connected Glass" +msgstr "जुडे शिशे" + +#: builtin/mainmenu/tab_settings.lua +msgid "Fancy Leaves" +msgstr "रोचक पत्ते" + +#: builtin/mainmenu/tab_settings.lua +msgid "Generate Normal Maps" +msgstr "मामूली नक्शे बनाएं" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "मिपमैप" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "मिपमैप व अनीसो. फिल्टर" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "नहीं" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "कोई फिल्टर नहीं" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "मिपमैप नहीं हो" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "डिब्बें उजाले हों" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Outlining" +msgstr "डिब्बों की रूपरेखा" + +#: builtin/mainmenu/tab_settings.lua +msgid "None" +msgstr "कुछ नहीं" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "अपारदर्शी पत्ते" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "अपारदर्शी पानी" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "पेरलेक्स ऑक्लूजन" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "कण" + +#: builtin/mainmenu/tab_settings.lua +msgid "Reset singleplayer world" +msgstr "एक-खिलाडी दुनिया रीसेट करें" + +#: builtin/mainmenu/tab_settings.lua +msgid "Screen:" +msgstr "स्क्रीन :" + +#: builtin/mainmenu/tab_settings.lua +msgid "Settings" +msgstr "सेटिंग" + #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Shaders" msgstr "छाया बनावट" @@ -754,60 +926,48 @@ msgid "Shaders (unavailable)" msgstr "छाया बनावट (अनुपलब्ध)" #: builtin/mainmenu/tab_settings.lua -msgid "Reset singleplayer world" -msgstr "एक-खिलाडी दुनिया रीसेट करें" - -#: builtin/mainmenu/tab_settings.lua src/client/game.cpp -msgid "Change Keys" -msgstr "की बदलें" +msgid "Simple Leaves" +msgstr "मामूली पत्ते" #: builtin/mainmenu/tab_settings.lua -msgid "All Settings" -msgstr "सभी सेटिंग देखें" +msgid "Smooth Lighting" +msgstr "चिकना उजाला" #: builtin/mainmenu/tab_settings.lua -msgid "Touchthreshold: (px)" -msgstr "छूने की त्रिज्या : (px)" +msgid "Texturing:" +msgstr "कला बनावट :" #: builtin/mainmenu/tab_settings.lua -msgid "Bump Mapping" -msgstr "टकराव मैपिंग" +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "छाया बनावट कॆ लिये OpenGL ड्राईवर आवश्यक हैं|" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" msgstr "टोन मैपिंग" #: builtin/mainmenu/tab_settings.lua -msgid "Generate Normal Maps" -msgstr "मामूली नक्शे बनाएं" - -#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "पेरलेक्स ऑक्लूजन" +msgid "Touchthreshold: (px)" +msgstr "छूने की त्रिज्या : (px)" #: builtin/mainmenu/tab_settings.lua -msgid "Waving Liquids" -msgstr "पानी में लहरें बनें" +msgid "Trilinear Filter" +msgstr "त्रिरेखीय फिल्टर" #: builtin/mainmenu/tab_settings.lua msgid "Waving Leaves" msgstr "पत्ते लहराएं" +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Liquids" +msgstr "पानी में लहरें बनें" + #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" msgstr "पाैधे लहराएं" #: builtin/mainmenu/tab_settings.lua -msgid "To enable shaders the OpenGL driver needs to be used." -msgstr "छाया बनावट कॆ लिये OpenGL ड्राईवर आवश्यक हैं|" - -#: builtin/mainmenu/tab_settings.lua -msgid "Settings" -msgstr "सेटिंग" - -#: builtin/mainmenu/tab_simple_main.lua -msgid "Start Singleplayer" -msgstr "एक-खिलाडी शुरू करें" +msgid "Yes" +msgstr "हां" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -817,10 +977,26 @@ msgstr "मॉड कॆ सेटिंग बदलें" msgid "Main" msgstr "मुख्य" +#: builtin/mainmenu/tab_simple_main.lua +msgid "Start Singleplayer" +msgstr "एक-खिलाडी शुरू करें" + #: src/client/client.cpp msgid "Connection timed out." msgstr "कनेक्शन समय अंत|" +#: src/client/client.cpp +msgid "Done!" +msgstr "हो गया !" + +#: src/client/client.cpp +msgid "Initializing nodes" +msgstr "डीब्बे बन रहे हें" + +#: src/client/client.cpp +msgid "Initializing nodes..." +msgstr "डिब्बे बन रहें हैं ..." + #: src/client/client.cpp msgid "Loading textures..." msgstr "कला लोड हो रही है ..." @@ -829,46 +1005,10 @@ msgstr "कला लोड हो रही है ..." msgid "Rebuilding shaders..." msgstr "छायाएं वापस बन रहीं हैं ..." -#: src/client/client.cpp -msgid "Initializing nodes..." -msgstr "डिब्बे बन रहें हैं ..." - -#: src/client/client.cpp -msgid "Initializing nodes" -msgstr "डीब्बे बन रहे हें" - -#: src/client/client.cpp -msgid "Done!" -msgstr "हो गया !" - -#: src/client/clientlauncher.cpp -msgid "Main Menu" -msgstr "मुख्य पृ़ष्ठ" - -#: src/client/clientlauncher.cpp -msgid "Player name too long." -msgstr "खिलाडी का नाम अधिक लंबा है|" - #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" msgstr "कनेक्शन खराबी (समय अंत?)" -#: src/client/clientlauncher.cpp -msgid "Provided password file failed to open: " -msgstr "पासवर्ड फाईल नहीं खुला :- " - -#: src/client/clientlauncher.cpp -msgid "Please choose a name!" -msgstr "कृपया एक नाम चुनें!" - -#: src/client/clientlauncher.cpp -msgid "No world selected and no address provided. Nothing to do." -msgstr "कोई दुनिया नहीं चुनी गयी है, ना ही पता दिया गया है। कुछ नहीं करना।" - -#: src/client/clientlauncher.cpp -msgid "Provided world path doesn't exist: " -msgstr "दुनिया का फाईल पाथ नहीं है : " - #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" msgstr "खेल ढूंढा ना जा सका या लोड नहीं किया जा सका \"" @@ -877,6 +1017,30 @@ msgstr "खेल ढूंढा ना जा सका या लोड न msgid "Invalid gamespec." msgstr "गलत गेमस्पेक कोड।" +#: src/client/clientlauncher.cpp +msgid "Main Menu" +msgstr "मुख्य पृ़ष्ठ" + +#: src/client/clientlauncher.cpp +msgid "No world selected and no address provided. Nothing to do." +msgstr "कोई दुनिया नहीं चुनी गयी है, ना ही पता दिया गया है। कुछ नहीं करना।" + +#: src/client/clientlauncher.cpp +msgid "Player name too long." +msgstr "खिलाडी का नाम अधिक लंबा है|" + +#: src/client/clientlauncher.cpp +msgid "Please choose a name!" +msgstr "कृपया एक नाम चुनें!" + +#: src/client/clientlauncher.cpp +msgid "Provided password file failed to open: " +msgstr "पासवर्ड फाईल नहीं खुला :- " + +#: src/client/clientlauncher.cpp +msgid "Provided world path doesn't exist: " +msgstr "दुनिया का फाईल पाथ नहीं है : " + #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string. Put either "no" or "yes" #. into the translation field (literally). @@ -890,185 +1054,53 @@ msgid "needs_fallback_font" msgstr "yes" #: src/client/game.cpp -msgid "Shutting down..." -msgstr "शट डाउन हो रहा है ..." +msgid "" +"\n" +"Check debug.txt for details." +msgstr "" +"\n" +"अधिक जानकारी के लिए debug.txt देखें।" #: src/client/game.cpp -msgid "Creating server..." -msgstr "सर्वर बनाया जा रहा है ..." +msgid "- Address: " +msgstr "- एड्रेस : " #: src/client/game.cpp -msgid "Creating client..." -msgstr "क्लाइंट बनाया जा रहा है ..." +msgid "- Creative Mode: " +msgstr "- असीमित साधन " #: src/client/game.cpp -msgid "Resolving address..." -msgstr "एड्रेस समझा जा रहा है ..." +msgid "- Damage: " +msgstr "- हानि : " #: src/client/game.cpp -msgid "Connecting to server..." -msgstr "सर्वर से कनेक्ट हुआ जा रहा है ..." +msgid "- Mode: " +msgstr "- तकनीक : " #: src/client/game.cpp -msgid "Item definitions..." -msgstr "वस्तुओं के अर्थ ..." +msgid "- Port: " +msgstr "- पोर्ट : " #: src/client/game.cpp -msgid "Node definitions..." -msgstr "डिब्बों का अर्थ ..." +msgid "- Public: " +msgstr "- सार्वजनिक : " + +#. ~ PvP = Player versus Player +#: src/client/game.cpp +msgid "- PvP: " +msgstr "- खिलाड़ियों में मारा-पीटी : " #: src/client/game.cpp -msgid "Media..." -msgstr "कला एवं आवाज़ें ..." - -#: src/client/game.cpp -msgid "KiB/s" -msgstr "कि॰बी॰/एस॰" - -#: src/client/game.cpp -msgid "MiB/s" -msgstr "एम॰ आई॰ बी॰/ एस॰" - -#: src/client/game.cpp -msgid "Client side scripting is disabled" -msgstr "क्लाइंट की तरफ से स्क्रिप्ट लगाना मना है" - -#: src/client/game.cpp -msgid "Sound muted" -msgstr "आवाज़ बंद" - -#: src/client/game.cpp -msgid "Sound unmuted" -msgstr "आवाज चालू" - -#: src/client/game.cpp -#, c-format -msgid "Volume changed to %d%%" -msgstr "वॉल्यूम को बदलकर %d%%" - -#: src/client/game.cpp src/gui/modalMenu.cpp -msgid "ok" -msgstr "ठीक है" - -#: src/client/game.cpp -msgid "Fly mode enabled" -msgstr "उड़ान उपलब्ध है" - -#: src/client/game.cpp -msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "उड़ान उपलब्ध है (सूचना: आपके पास 'उड़ान' विशेषाधिकार नहीं है)" - -#: src/client/game.cpp -msgid "Fly mode disabled" -msgstr "उड़ान अनुपलब्ध है" - -#: src/client/game.cpp -msgid "Pitch move mode enabled" -msgstr "पिच चलन चालू" - -#: src/client/game.cpp -msgid "Pitch move mode disabled" -msgstr "पिच चलन रुका हुआ" - -#: src/client/game.cpp -msgid "Fast mode enabled" -msgstr "तेज जलन चालू" - -#: src/client/game.cpp -msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "तेज चैनल चालू (सूचना: आपके पास 'तेज' विशेषाधिकार नहीं है)" - -#: src/client/game.cpp -msgid "Fast mode disabled" -msgstr "तेज चलन रुका हुआ" - -#: src/client/game.cpp -msgid "Noclip mode enabled" -msgstr "तरल चाल चालू" - -#: src/client/game.cpp -msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "तरल चाल चालू (सूचना: आपके पास तरल विशेषाधिकार नहीं है)" - -#: src/client/game.cpp -msgid "Noclip mode disabled" -msgstr "तरल चाल रुका हुआ" - -#: src/client/game.cpp -msgid "Cinematic mode enabled" -msgstr "सिनेमा चाल चालू" - -#: src/client/game.cpp -msgid "Cinematic mode disabled" -msgstr "सिनेमा चाल रुका हुआ" - -#: src/client/game.cpp -msgid "Automatic forward enabled" -msgstr "स्वचाल चालू" +msgid "- Server Name: " +msgstr "- सर्वर का नाम : " #: src/client/game.cpp msgid "Automatic forward disabled" msgstr "स्वचाल रुका हुआ" #: src/client/game.cpp -msgid "Minimap in surface mode, Zoom x1" -msgstr "छोटा नक्शा जमीन मोड, 1 गुना ज़ूम" - -#: src/client/game.cpp -msgid "Minimap in surface mode, Zoom x2" -msgstr "छोटा नक्शा जमीन मोड, दोगुना जूम" - -#: src/client/game.cpp -msgid "Minimap in surface mode, Zoom x4" -msgstr "छोटा नक्शा जमीन मोड, 4 गुना जून" - -#: src/client/game.cpp -msgid "Minimap in radar mode, Zoom x1" -msgstr "छोटा नक्शा रेडार मोड, 1 गुना ज़ूम" - -#: src/client/game.cpp -msgid "Minimap in radar mode, Zoom x2" -msgstr "छोटा नक्शा रेडर मोड, दोगुना जूम" - -#: src/client/game.cpp -msgid "Minimap in radar mode, Zoom x4" -msgstr "छोटा नक्शा रेडार मोड, 4 गुना ज़ूम" - -#: src/client/game.cpp -msgid "Minimap hidden" -msgstr "छोटा नक्शा गायब" - -#: src/client/game.cpp -msgid "Minimap currently disabled by game or mod" -msgstr "खेल या मॉड़ के वजह से छोटा नक्शा मना है" - -#: src/client/game.cpp -msgid "Fog disabled" -msgstr "कोहरा रुका हुआ" - -#: src/client/game.cpp -msgid "Fog enabled" -msgstr "कोहरा चालू" - -#: src/client/game.cpp -msgid "Debug info shown" -msgstr "डीबग जानकारी दिखाई दे रही है" - -#: src/client/game.cpp -msgid "Profiler graph shown" -msgstr "प्रोफाईलर दिखाई दे रहा है" - -#: src/client/game.cpp -msgid "Wireframe shown" -msgstr "डिब्बे रेखांकित" - -#: src/client/game.cpp -msgid "Debug info, profiler graph, and wireframe hidden" -msgstr "डीबग जानकारी, प्रोफाइलर व रूपरेखा गायब" - -#: src/client/game.cpp -msgid "Debug info and profiler graph hidden" -msgstr "डीबग जानकारी व प्रोफाइल गायब" +msgid "Automatic forward enabled" +msgstr "स्वचाल चालू" #: src/client/game.cpp msgid "Camera update disabled" @@ -1079,59 +1111,28 @@ msgid "Camera update enabled" msgstr "कैमरा चालू" #: src/client/game.cpp -#, c-format -msgid "Viewing range is at maximum: %d" -msgstr "दृष्टि सीमा अधिकतम : %d" +msgid "Change Password" +msgstr "पासवर्ड बदलें" #: src/client/game.cpp -#, c-format -msgid "Viewing range changed to %d" -msgstr "दृष्टि सीमा बदलकर %d है" +msgid "Cinematic mode disabled" +msgstr "सिनेमा चाल रुका हुआ" #: src/client/game.cpp -#, c-format -msgid "Viewing range is at minimum: %d" -msgstr "दृष्टि सीमा न्यूनतम : %d" +msgid "Cinematic mode enabled" +msgstr "सिनेमा चाल चालू" #: src/client/game.cpp -msgid "Enabled unlimited viewing range" -msgstr "दृष्टि असीमित" +msgid "Client side scripting is disabled" +msgstr "क्लाइंट की तरफ से स्क्रिप्ट लगाना मना है" #: src/client/game.cpp -msgid "Disabled unlimited viewing range" -msgstr "दृष्टि सीमित" +msgid "Connecting to server..." +msgstr "सर्वर से कनेक्ट हुआ जा रहा है ..." #: src/client/game.cpp -msgid "Zoom currently disabled by game or mod" -msgstr "खेल या मॉड़ के वजह से इस समय ज़ूम मना है" - -#: src/client/game.cpp -msgid "" -"Default Controls:\n" -"No menu visible:\n" -"- single tap: button activate\n" -"- double tap: place/use\n" -"- slide finger: look around\n" -"Menu/Inventory visible:\n" -"- double tap (outside):\n" -" -->close\n" -"- touch stack, touch slot:\n" -" --> move stack\n" -"- touch&drag, tap 2nd finger\n" -" --> place single item to slot\n" -msgstr "" -"आम कंट्रोल्स :\n" -"कोई मेनू खुला नहीं है :\n" -"-एक बार टैप : बटन दबेगा\n" -"-दो टॉप: डालना/ इस्तेमाल करना\n" -"-उंगली फिसलाना : मुड़ना\n" -"कोई मेनू या वस्तु सूची खुली है :\n" -"-बाहर दो बार टैप :\n" -"--> बंद\n" -"- ढेर छूएं, स्थान छूएं\n" -"--> ढेर का स्थान बदलने के लिए\n" -"- छुए व खींचे, दूसरी उंगली से टैप करें\n" -"--> एक वस्तु स्थान में डालें\n" +msgid "Continue" +msgstr "आगे बढ़ें" #: src/client/game.cpp #, c-format @@ -1167,20 +1168,60 @@ msgstr "" "- %s : बात करने के लिए\n" #: src/client/game.cpp -msgid "Continue" -msgstr "आगे बढ़ें" +msgid "Creating client..." +msgstr "क्लाइंट बनाया जा रहा है ..." #: src/client/game.cpp -msgid "Change Password" -msgstr "पासवर्ड बदलें" +msgid "Creating server..." +msgstr "सर्वर बनाया जा रहा है ..." #: src/client/game.cpp -msgid "Game paused" -msgstr "खेल रुका हुआ है" +msgid "Debug info and profiler graph hidden" +msgstr "डीबग जानकारी व प्रोफाइल गायब" #: src/client/game.cpp -msgid "Sound Volume" -msgstr "आवाज़ वॉल्यूम" +msgid "Debug info shown" +msgstr "डीबग जानकारी दिखाई दे रही है" + +#: src/client/game.cpp +msgid "Debug info, profiler graph, and wireframe hidden" +msgstr "डीबग जानकारी, प्रोफाइलर व रूपरेखा गायब" + +#: src/client/game.cpp +msgid "" +"Default Controls:\n" +"No menu visible:\n" +"- single tap: button activate\n" +"- double tap: place/use\n" +"- slide finger: look around\n" +"Menu/Inventory visible:\n" +"- double tap (outside):\n" +" -->close\n" +"- touch stack, touch slot:\n" +" --> move stack\n" +"- touch&drag, tap 2nd finger\n" +" --> place single item to slot\n" +msgstr "" +"आम कंट्रोल्स :\n" +"कोई मेनू खुला नहीं है :\n" +"-एक बार टैप : बटन दबेगा\n" +"-दो टॉप: डालना/ इस्तेमाल करना\n" +"-उंगली फिसलाना : मुड़ना\n" +"कोई मेनू या वस्तु सूची खुली है :\n" +"-बाहर दो बार टैप :\n" +"--> बंद\n" +"- ढेर छूएं, स्थान छूएं\n" +"--> ढेर का स्थान बदलने के लिए\n" +"- छुए व खींचे, दूसरी उंगली से टैप करें\n" +"--> एक वस्तु स्थान में डालें\n" + +#: src/client/game.cpp +msgid "Disabled unlimited viewing range" +msgstr "दृष्टि सीमित" + +#: src/client/game.cpp +msgid "Enabled unlimited viewing range" +msgstr "दृष्टि असीमित" #: src/client/game.cpp msgid "Exit to Menu" @@ -1190,222 +1231,351 @@ msgstr "बंद करके मेनू पर जाएं" msgid "Exit to OS" msgstr "बंद करके ओ॰ एस॰ में जाएं" +#: src/client/game.cpp +msgid "Fast mode disabled" +msgstr "तेज चलन रुका हुआ" + +#: src/client/game.cpp +msgid "Fast mode enabled" +msgstr "तेज जलन चालू" + +#: src/client/game.cpp +msgid "Fast mode enabled (note: no 'fast' privilege)" +msgstr "तेज चैनल चालू (सूचना: आपके पास 'तेज' विशेषाधिकार नहीं है)" + +#: src/client/game.cpp +msgid "Fly mode disabled" +msgstr "उड़ान अनुपलब्ध है" + +#: src/client/game.cpp +msgid "Fly mode enabled" +msgstr "उड़ान उपलब्ध है" + +#: src/client/game.cpp +msgid "Fly mode enabled (note: no 'fly' privilege)" +msgstr "उड़ान उपलब्ध है (सूचना: आपके पास 'उड़ान' विशेषाधिकार नहीं है)" + +#: src/client/game.cpp +msgid "Fog disabled" +msgstr "कोहरा रुका हुआ" + +#: src/client/game.cpp +msgid "Fog enabled" +msgstr "कोहरा चालू" + #: src/client/game.cpp msgid "Game info:" msgstr "खेल की जानकारी :" #: src/client/game.cpp -msgid "- Mode: " -msgstr "- तकनीक : " - -#: src/client/game.cpp -msgid "Remote server" -msgstr "बाहर का सर्वर" - -#: src/client/game.cpp -msgid "- Address: " -msgstr "- एड्रेस : " +msgid "Game paused" +msgstr "खेल रुका हुआ है" #: src/client/game.cpp msgid "Hosting server" msgstr "सर्वर चलन" #: src/client/game.cpp -msgid "- Port: " -msgstr "- पोर्ट : " +msgid "Item definitions..." +msgstr "वस्तुओं के अर्थ ..." #: src/client/game.cpp -msgid "Singleplayer" -msgstr "एक-खिलाडी" +msgid "KiB/s" +msgstr "कि॰बी॰/एस॰" #: src/client/game.cpp -msgid "On" -msgstr "ऑन" +msgid "Media..." +msgstr "कला एवं आवाज़ें ..." + +#: src/client/game.cpp +msgid "MiB/s" +msgstr "एम॰ आई॰ बी॰/ एस॰" + +#: src/client/game.cpp +msgid "Minimap currently disabled by game or mod" +msgstr "खेल या मॉड़ के वजह से छोटा नक्शा मना है" + +#: src/client/game.cpp +msgid "Minimap hidden" +msgstr "छोटा नक्शा गायब" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x1" +msgstr "छोटा नक्शा रेडार मोड, 1 गुना ज़ूम" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x2" +msgstr "छोटा नक्शा रेडर मोड, दोगुना जूम" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x4" +msgstr "छोटा नक्शा रेडार मोड, 4 गुना ज़ूम" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x1" +msgstr "छोटा नक्शा जमीन मोड, 1 गुना ज़ूम" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x2" +msgstr "छोटा नक्शा जमीन मोड, दोगुना जूम" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x4" +msgstr "छोटा नक्शा जमीन मोड, 4 गुना जून" + +#: src/client/game.cpp +msgid "Noclip mode disabled" +msgstr "तरल चाल रुका हुआ" + +#: src/client/game.cpp +msgid "Noclip mode enabled" +msgstr "तरल चाल चालू" + +#: src/client/game.cpp +msgid "Noclip mode enabled (note: no 'noclip' privilege)" +msgstr "तरल चाल चालू (सूचना: आपके पास तरल विशेषाधिकार नहीं है)" + +#: src/client/game.cpp +msgid "Node definitions..." +msgstr "डिब्बों का अर्थ ..." #: src/client/game.cpp msgid "Off" msgstr "ऑफ" #: src/client/game.cpp -msgid "- Damage: " -msgstr "- हानि : " +msgid "On" +msgstr "ऑन" #: src/client/game.cpp -msgid "- Creative Mode: " -msgstr "- असीमित साधन " - -#. ~ PvP = Player versus Player -#: src/client/game.cpp -msgid "- PvP: " -msgstr "- खिलाड़ियों में मारा-पीटी : " +msgid "Pitch move mode disabled" +msgstr "पिच चलन रुका हुआ" #: src/client/game.cpp -msgid "- Public: " -msgstr "- सार्वजनिक : " +msgid "Pitch move mode enabled" +msgstr "पिच चलन चालू" #: src/client/game.cpp -msgid "- Server Name: " -msgstr "- सर्वर का नाम : " +msgid "Profiler graph shown" +msgstr "प्रोफाईलर दिखाई दे रहा है" #: src/client/game.cpp -msgid "" -"\n" -"Check debug.txt for details." +msgid "Remote server" +msgstr "बाहर का सर्वर" + +#: src/client/game.cpp +msgid "Resolving address..." +msgstr "एड्रेस समझा जा रहा है ..." + +#: src/client/game.cpp +msgid "Shutting down..." +msgstr "शट डाउन हो रहा है ..." + +#: src/client/game.cpp +msgid "Singleplayer" +msgstr "एक-खिलाडी" + +#: src/client/game.cpp +msgid "Sound Volume" +msgstr "आवाज़ वॉल्यूम" + +#: src/client/game.cpp +msgid "Sound muted" +msgstr "आवाज़ बंद" + +#: src/client/game.cpp +msgid "Sound system is disabled" msgstr "" -"\n" -"अधिक जानकारी के लिए debug.txt देखें।" -#: src/client/gameui.cpp -msgid "Chat shown" -msgstr "बातें दिखाई देंगी" +#: src/client/game.cpp +msgid "Sound system is not supported on this build" +msgstr "" + +#: src/client/game.cpp +msgid "Sound unmuted" +msgstr "आवाज चालू" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d" +msgstr "दृष्टि सीमा बदलकर %d है" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at maximum: %d" +msgstr "दृष्टि सीमा अधिकतम : %d" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at minimum: %d" +msgstr "दृष्टि सीमा न्यूनतम : %d" + +#: src/client/game.cpp +#, c-format +msgid "Volume changed to %d%%" +msgstr "वॉल्यूम को बदलकर %d%%" + +#: src/client/game.cpp +msgid "Wireframe shown" +msgstr "डिब्बे रेखांकित" + +#: src/client/game.cpp +msgid "Zoom currently disabled by game or mod" +msgstr "खेल या मॉड़ के वजह से इस समय ज़ूम मना है" + +#: src/client/game.cpp +msgid "ok" +msgstr "ठीक है" #: src/client/gameui.cpp msgid "Chat hidden" msgstr "बातें दिखाई नहीं देंगी" #: src/client/gameui.cpp -msgid "HUD shown" -msgstr "हे॰अ॰डि॰ दिखाई देंगी" +msgid "Chat shown" +msgstr "बातें दिखाई देंगी" #: src/client/gameui.cpp msgid "HUD hidden" msgstr "हे॰अ॰डि॰ दिखाई नहीं देंगी" #: src/client/gameui.cpp -#, c-format -msgid "Profiler shown (page %d of %d)" -msgstr "प्रोफाईलर दिखाई दे रही है (पृष्ठ %d %d पृष्ठों में से)" +msgid "HUD shown" +msgstr "हे॰अ॰डि॰ दिखाई देंगी" #: src/client/gameui.cpp msgid "Profiler hidden" msgstr "प्रोफाइलर नहीं दिखाई देगा" -#: src/client/keycode.cpp -msgid "Left Button" -msgstr "बायां बटन" +#: src/client/gameui.cpp +#, c-format +msgid "Profiler shown (page %d of %d)" +msgstr "प्रोफाईलर दिखाई दे रही है (पृष्ठ %d %d पृष्ठों में से)" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "दाहिना बटन" - -#: src/client/keycode.cpp -msgid "Middle Button" -msgstr "बीच का बटन" - -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "X बटन १" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "X बटन २" +msgid "Apps" +msgstr "एप्स" #: src/client/keycode.cpp msgid "Backspace" msgstr "बैकस्पेस" #: src/client/keycode.cpp -msgid "Tab" -msgstr "टैब बटन" +msgid "Caps Lock" +msgstr "कैप्स लाक" #: src/client/keycode.cpp msgid "Clear" msgstr "खाली करें" -#: src/client/keycode.cpp -msgid "Return" -msgstr "रिटर्न बटन" - -#: src/client/keycode.cpp -msgid "Shift" -msgstr "शिफ्ट" - #: src/client/keycode.cpp msgid "Control" msgstr "कंट्रोल" +#: src/client/keycode.cpp +msgid "Down" +msgstr "नीचे" + +#: src/client/keycode.cpp +msgid "End" +msgstr "एंड" + +#: src/client/keycode.cpp +msgid "Erase EOF" +msgstr "ई.ओ.एफ खाली करें" + +#: src/client/keycode.cpp +msgid "Execute" +msgstr "एग्सीक्यूट" + +#: src/client/keycode.cpp +msgid "Help" +msgstr "हेल्प" + +#: src/client/keycode.cpp +msgid "Home" +msgstr "होम" + +#: src/client/keycode.cpp +msgid "IME Accept" +msgstr "आई एम ई एक्सेप्ट" + +#: src/client/keycode.cpp +msgid "IME Convert" +msgstr "आई एम ई कन्वर्ट" + +#: src/client/keycode.cpp +msgid "IME Escape" +msgstr "आई एम ई एस्केप" + +#: src/client/keycode.cpp +msgid "IME Mode Change" +msgstr "आई एम ई मोड चेंज" + +#: src/client/keycode.cpp +msgid "IME Nonconvert" +msgstr "आई एम ई नानकन्वर्ट" + +#: src/client/keycode.cpp +msgid "Insert" +msgstr "इन्सर्ट" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Left" +msgstr "बायां" + +#: src/client/keycode.cpp +msgid "Left Button" +msgstr "बायां बटन" + +#: src/client/keycode.cpp +msgid "Left Control" +msgstr "बायां कंट्रोल" + +#: src/client/keycode.cpp +msgid "Left Menu" +msgstr "बायां मेनू" + +#: src/client/keycode.cpp +msgid "Left Shift" +msgstr "लेफ्ट शिफ्ट" + +#: src/client/keycode.cpp +msgid "Left Windows" +msgstr "लेफ्ट विंडोज" + #. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "मेनू (कीबोर्ड)" #: src/client/keycode.cpp -msgid "Pause" -msgstr "पॉज़" +msgid "Middle Button" +msgstr "बीच का बटन" #: src/client/keycode.cpp -msgid "Caps Lock" -msgstr "कैप्स लाक" +msgid "Num Lock" +msgstr "नम लाक" #: src/client/keycode.cpp -msgid "Space" -msgstr "स्पेसबार" +msgid "Numpad *" +msgstr "नम्पैड *" #: src/client/keycode.cpp -msgid "Page up" -msgstr "पेज अप" +msgid "Numpad +" +msgstr "नम्पैड +" #: src/client/keycode.cpp -msgid "Page down" -msgstr "पेज डाऊन" +msgid "Numpad -" +msgstr "नम्पैड -" #: src/client/keycode.cpp -msgid "End" -msgstr "एंड" +msgid "Numpad ." +msgstr "नम्पैड ." #: src/client/keycode.cpp -msgid "Home" -msgstr "होम" - -#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp -msgid "Left" -msgstr "बायां" - -#: src/client/keycode.cpp -msgid "Up" -msgstr "ऊपर" - -#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp -msgid "Right" -msgstr "दाहिना" - -#: src/client/keycode.cpp -msgid "Down" -msgstr "नीचे" - -#. ~ Key name -#: src/client/keycode.cpp -msgid "Select" -msgstr "सिलेक्ट" - -#. ~ "Print screen" key -#: src/client/keycode.cpp -msgid "Print" -msgstr "प्रिन्ट बटन" - -#: src/client/keycode.cpp -msgid "Execute" -msgstr "एग्सीक्यूट" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "स्नैपशॉट" - -#: src/client/keycode.cpp -msgid "Insert" -msgstr "इन्सर्ट" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "हेल्प" - -#: src/client/keycode.cpp -msgid "Left Windows" -msgstr "लेफ्ट विंडोज" - -#: src/client/keycode.cpp -msgid "Right Windows" -msgstr "राईट विंडोज" +msgid "Numpad /" +msgstr "नम्पैड /" #: src/client/keycode.cpp msgid "Numpad 0" @@ -1448,100 +1618,110 @@ msgid "Numpad 9" msgstr "नम्पैड ९" #: src/client/keycode.cpp -msgid "Numpad *" -msgstr "नम्पैड *" +msgid "OEM Clear" +msgstr "ओ ई एम क्लीयर" #: src/client/keycode.cpp -msgid "Numpad +" -msgstr "नम्पैड +" +msgid "Page down" +msgstr "पेज डाऊन" #: src/client/keycode.cpp -msgid "Numpad ." -msgstr "नम्पैड ." +msgid "Page up" +msgstr "पेज अप" #: src/client/keycode.cpp -msgid "Numpad -" -msgstr "नम्पैड -" +msgid "Pause" +msgstr "पॉज़" #: src/client/keycode.cpp -msgid "Numpad /" -msgstr "नम्पैड /" +msgid "Play" +msgstr "खेलें" + +#. ~ "Print screen" key +#: src/client/keycode.cpp +msgid "Print" +msgstr "प्रिन्ट बटन" #: src/client/keycode.cpp -msgid "Num Lock" -msgstr "नम लाक" +msgid "Return" +msgstr "रिटर्न बटन" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Right" +msgstr "दाहिना" #: src/client/keycode.cpp -msgid "Scroll Lock" -msgstr "स्क्रोल लाक" - -#: src/client/keycode.cpp -msgid "Left Shift" -msgstr "लेफ्ट शिफ्ट" - -#: src/client/keycode.cpp -msgid "Right Shift" -msgstr "राईट शिफ्ट" - -#: src/client/keycode.cpp -msgid "Left Control" -msgstr "बायां कंट्रोल" +msgid "Right Button" +msgstr "दाहिना बटन" #: src/client/keycode.cpp msgid "Right Control" msgstr "दाहिना" -#: src/client/keycode.cpp -msgid "Left Menu" -msgstr "बायां मेनू" - #: src/client/keycode.cpp msgid "Right Menu" msgstr "दाहिना मेनू" #: src/client/keycode.cpp -msgid "IME Escape" -msgstr "आई एम ई एस्केप" +msgid "Right Shift" +msgstr "राईट शिफ्ट" #: src/client/keycode.cpp -msgid "IME Convert" -msgstr "आई एम ई कन्वर्ट" +msgid "Right Windows" +msgstr "राईट विंडोज" #: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "आई एम ई नानकन्वर्ट" +msgid "Scroll Lock" +msgstr "स्क्रोल लाक" + +#. ~ Key name +#: src/client/keycode.cpp +msgid "Select" +msgstr "सिलेक्ट" #: src/client/keycode.cpp -msgid "IME Accept" -msgstr "आई एम ई एक्सेप्ट" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "आई एम ई मोड चेंज" - -#: src/client/keycode.cpp -msgid "Apps" -msgstr "एप्स" +msgid "Shift" +msgstr "शिफ्ट" #: src/client/keycode.cpp msgid "Sleep" msgstr "स्लीप" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "ई.ओ.एफ खाली करें" +msgid "Snapshot" +msgstr "स्नैपशॉट" #: src/client/keycode.cpp -msgid "Play" -msgstr "खेलें" +msgid "Space" +msgstr "स्पेसबार" + +#: src/client/keycode.cpp +msgid "Tab" +msgstr "टैब बटन" + +#: src/client/keycode.cpp +msgid "Up" +msgstr "ऊपर" + +#: src/client/keycode.cpp +msgid "X Button 1" +msgstr "X बटन १" + +#: src/client/keycode.cpp +msgid "X Button 2" +msgstr "X बटन २" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Zoom" msgstr "ज़ूम" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "ओ ई एम क्लीयर" +#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp +msgid "Passwords do not match!" +msgstr "पासवर्ड अलग अलग हैं!" + +#: src/gui/guiConfirmRegistration.cpp +msgid "Register and Join" +msgstr "पंजीकरण व खेलें" #: src/gui/guiConfirmRegistration.cpp #, c-format @@ -1552,158 +1732,124 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" -"आप \"%s\" नाम से इस सरवर में पहली बार आने वाले हैं। अगर आप आगे बढ़ते हैं तो " -"आपके लिए इस सर्वर पर एक अकाउंट बनाया जाएगा।\n" +"आप \"%s\" नाम से इस सरवर में पहली बार आने वाले हैं। अगर आप आगे बढ़ते हैं तो आपके लिए इस " +"सर्वर पर एक अकाउंट बनाया जाएगा।\n" "\n" -"आगे बढ़ने ए लिखें कृपया अपने पासवर्ड को वापस लिखें और फिर 'पंजीकरण व खेलें' " -"दबाएं, अथवा 'रोकें' दबाएं।" - -#: src/gui/guiConfirmRegistration.cpp -msgid "Register and Join" -msgstr "पंजीकरण व खेलें" - -#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp -msgid "Passwords do not match!" -msgstr "पासवर्ड अलग अलग हैं!" +"आगे बढ़ने ए लिखें कृपया अपने पासवर्ड को वापस लिखें और फिर 'पंजीकरण व खेलें' दबाएं, अथवा " +"'रोकें' दबाएं।" #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" msgstr "आगे बढ़े" -#: src/gui/guiKeyChangeMenu.cpp -msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" -msgstr "" -"कीबोर्ड सेटिंग (अगर यह मेनू खराब हो जाए तो minetest.conf से सब कुछ खाली कर " -"दें)" - #: src/gui/guiKeyChangeMenu.cpp msgid "\"Special\" = climb down" msgstr "\"स्पेशल\" = नीचे उतरना" #: src/gui/guiKeyChangeMenu.cpp -msgid "Double tap \"jump\" to toggle fly" -msgstr "उड़ने के लिए दो बार कूदें" +msgid "Autoforward" +msgstr "स्वचालन" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" msgstr "कूदने के लिए बटन दबाना अनावश्यक" -#: src/gui/guiKeyChangeMenu.cpp -msgid "Key already in use" -msgstr "की पहले से इस्तेमाल में है" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "press key" -msgstr "की दबाएं" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Forward" -msgstr "आगे जाएं" - #: src/gui/guiKeyChangeMenu.cpp msgid "Backward" msgstr "पीछे जाएं" -#: src/gui/guiKeyChangeMenu.cpp -msgid "Special" -msgstr "स्पेशल" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Jump" -msgstr "कूदना" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Sneak" -msgstr "संभल के चलना" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Drop" -msgstr "वस्तु गिराना" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Inventory" -msgstr "वस्तु सूची" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Prev. item" -msgstr "पिछली वस्तु" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Next item" -msgstr "अगला वस्तु" - #: src/gui/guiKeyChangeMenu.cpp msgid "Change camera" msgstr "कैमरा बदलना" -#: src/gui/guiKeyChangeMenu.cpp -msgid "Toggle minimap" -msgstr "छोटा नक्शा" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Toggle fly" -msgstr "उड़ना" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Toggle pitchmove" -msgstr "पिच चलन" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Toggle fast" -msgstr "तेज चलन" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Toggle noclip" -msgstr "तरल चाल" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Mute" -msgstr "आवाज बंद" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Dec. volume" -msgstr "आवाज़ कम" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Inc. volume" -msgstr "आवाज अधिक" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Autoforward" -msgstr "स्वचालन" - #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" msgstr "बातें" -#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp -msgid "Screenshot" -msgstr "स्क्रीनशॉट" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Range select" -msgstr "दृष्टि सीमा चुनना" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Dec. range" -msgstr "दृष्टि सीमा कम" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Inc. range" -msgstr "दृष्टि सीमा अधिक" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Console" -msgstr "कन्सोल" - #: src/gui/guiKeyChangeMenu.cpp msgid "Command" msgstr "आज्ञा" +#: src/gui/guiKeyChangeMenu.cpp +msgid "Console" +msgstr "कन्सोल" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. range" +msgstr "दृष्टि सीमा कम" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. volume" +msgstr "आवाज़ कम" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Double tap \"jump\" to toggle fly" +msgstr "उड़ने के लिए दो बार कूदें" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Drop" +msgstr "वस्तु गिराना" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Forward" +msgstr "आगे जाएं" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. range" +msgstr "दृष्टि सीमा अधिक" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. volume" +msgstr "आवाज अधिक" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inventory" +msgstr "वस्तु सूची" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Jump" +msgstr "कूदना" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Key already in use" +msgstr "की पहले से इस्तेमाल में है" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" +msgstr "कीबोर्ड सेटिंग (अगर यह मेनू खराब हो जाए तो minetest.conf से सब कुछ खाली कर दें)" + #: src/gui/guiKeyChangeMenu.cpp msgid "Local command" msgstr "लोकल कमांड" +#: src/gui/guiKeyChangeMenu.cpp +msgid "Mute" +msgstr "आवाज बंद" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Next item" +msgstr "अगला वस्तु" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Prev. item" +msgstr "पिछली वस्तु" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Range select" +msgstr "दृष्टि सीमा चुनना" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Screenshot" +msgstr "स्क्रीनशॉट" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Sneak" +msgstr "संभल के चलना" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Special" +msgstr "स्पेशल" + #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" msgstr "हे. अ. डि" @@ -1712,29 +1858,49 @@ msgstr "हे. अ. डि" msgid "Toggle chat log" msgstr "बातें दिखना" +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fast" +msgstr "तेज चलन" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fly" +msgstr "उड़ना" + #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fog" msgstr "कोहरा" -#: src/gui/guiPasswordChange.cpp -msgid "Old Password" -msgstr "पुराना पासवर्ड" +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle minimap" +msgstr "छोटा नक्शा" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle noclip" +msgstr "तरल चाल" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle pitchmove" +msgstr "पिच चलन" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "press key" +msgstr "की दबाएं" #: src/gui/guiPasswordChange.cpp -msgid "New Password" -msgstr "नया पासवर्ड" +msgid "Change" +msgstr "बदलें" #: src/gui/guiPasswordChange.cpp msgid "Confirm Password" msgstr "पासवर्ड दोबारा लिखें" #: src/gui/guiPasswordChange.cpp -msgid "Change" -msgstr "बदलें" +msgid "New Password" +msgstr "नया पासवर्ड" -#: src/gui/guiVolumeChange.cpp -msgid "Sound Volume: " -msgstr "आवाज " +#: src/gui/guiPasswordChange.cpp +msgid "Old Password" +msgstr "पुराना पासवर्ड" #: src/gui/guiVolumeChange.cpp msgid "Exit" @@ -1744,6 +1910,10 @@ msgstr "निकास" msgid "Muted" msgstr "चुप" +#: src/gui/guiVolumeChange.cpp +msgid "Sound Volume: " +msgstr "आवाज " + #. ~ Imperative, as in "Enter/type in text". #. Don't forget the space. #: src/gui/modalMenu.cpp @@ -1757,214 +1927,12 @@ msgstr "डालें " msgid "LANG_CODE" msgstr "hi" -#: src/settings_translation_file.cpp -msgid "Controls" -msgstr "कंट्रोल्स" - -#: src/settings_translation_file.cpp -msgid "Build inside player" -msgstr "खिलाडी पर डिब्बे डालना" - -#: src/settings_translation_file.cpp -msgid "" -"If enabled, you can place blocks at the position (feet + eye level) where " -"you stand.\n" -"This is helpful when working with nodeboxes in small areas." -msgstr "" -"अगर यह चालू होगा तो आप जिस स्थान मैं खडें हैं वही पर डिब्बे डाल सकेंगे |\n" -"यह छोटी जगहों में काम करते वख़्त काम आ सकता है |" - -#: src/settings_translation_file.cpp -msgid "Flying" -msgstr "उडना" - -#: src/settings_translation_file.cpp -msgid "" -"Player is able to fly without being affected by gravity.\n" -"This requires the \"fly\" privilege on the server." -msgstr "" -"खिलाडी के असर से मुक्त उड सकेगा |\n" -"इसके लिये \"उडान\" विषेशाधिकार आवश्यक है |" - -#: src/settings_translation_file.cpp -msgid "Pitch move mode" -msgstr "पिच चलन" - -#: src/settings_translation_file.cpp -msgid "" -"If enabled, makes move directions relative to the player's pitch when flying " -"or swimming." -msgstr "चालू होने पर आप जहां देखेंगे उस दिशा को सामने माना जाएगा (पिच चलन)|" - -#: src/settings_translation_file.cpp -msgid "Fast movement" -msgstr "तेज चलन" - -#: src/settings_translation_file.cpp -msgid "" -"Fast movement (via the \"special\" key).\n" -"This requires the \"fast\" privilege on the server." -msgstr "" -"स्पेशल की दबाने पर आप बहुत तॆज चलने लगेंगे |\n" -"इसके लिये \"तेज\" विषेशाधिकार आवश्यक है |" - -#: src/settings_translation_file.cpp -msgid "Noclip" -msgstr "तरल चाल" - -#: src/settings_translation_file.cpp -msgid "" -"If enabled together with fly mode, player is able to fly through solid " -"nodes.\n" -"This requires the \"noclip\" privilege on the server." -msgstr "" -"अगर यह उडान के साथ चालू होगा तो आप हर चीज़ के आर-पार उड पाएंगे |\n" -"इसके लिये \"तरल चाल\" विषेशाधिकार आवश्यक है |" - -#: src/settings_translation_file.cpp -msgid "Cinematic mode" -msgstr "सिनेमा मोड" - -#: src/settings_translation_file.cpp -msgid "" -"Smooths camera when looking around. Also called look or mouse smoothing.\n" -"Useful for recording videos." -msgstr "" -"आपका माउस चिकने तरीके से हिलेगा | इसे माउस या दृष्टि चिकनाई भी कहा जाता है |" -"\n" -"विडियो बनाते वख़्त काम आ सकता है |" - -#: src/settings_translation_file.cpp -msgid "Camera smoothing" -msgstr "केमरा चिकनाई" - -#: src/settings_translation_file.cpp -msgid "Smooths rotation of camera. 0 to disable." -msgstr "केमरा के मुडने की चिकनाई. मना करने के लिये 0." - -#: src/settings_translation_file.cpp -msgid "Camera smoothing in cinematic mode" -msgstr "सिनेमा मोड में केमरा चिकनाई" - -#: src/settings_translation_file.cpp -msgid "Smooths rotation of camera in cinematic mode. 0 to disable." -msgstr "सिनेमा मोड में केमरा चिकने तरीके से मुडेगा | मना करने के लिये 0." - -#: src/settings_translation_file.cpp -msgid "Invert mouse" -msgstr "माउस उल्टा" - -#: src/settings_translation_file.cpp -msgid "Invert vertical mouse movement." -msgstr "माउस ऊपर करने पर केमरा नीचे जाएगा, और नीचे करने पर ऊपर |" - -#: src/settings_translation_file.cpp -msgid "Mouse sensitivity" -msgstr "माउस संवेदनशीलता" - -#: src/settings_translation_file.cpp -msgid "Mouse sensitivity multiplier." -msgstr "माउस संवेदनशीलता गुणक।" - -#: src/settings_translation_file.cpp -msgid "Special key for climbing/descending" -msgstr "चलने उतरने के लिए स्पेशल की" - -#: src/settings_translation_file.cpp -msgid "" -"If enabled, \"special\" key instead of \"sneak\" key is used for climbing " -"down and\n" -"descending." -msgstr "" -"अगर यहां चालू हुआ तो नीचे उतरने के लिए स्पेशल\n" -"की का इस्तेमाल होगा।" - -#: src/settings_translation_file.cpp -msgid "Double tap jump for fly" -msgstr "उड़ने के लिए दो बार कूदें" - -#: src/settings_translation_file.cpp -msgid "Double-tapping the jump key toggles fly mode." -msgstr "दो बार कूदने से उड़ान चलन चालू हो जाता है।" - -#: src/settings_translation_file.cpp -msgid "Always fly and fast" -msgstr "हमेशा उड़ान और तेज" - -#: src/settings_translation_file.cpp -msgid "" -"If disabled, \"special\" key is used to fly fast if both fly and fast mode " -"are\n" -"enabled." -msgstr "" -"अगर यह रुका हुआ हुआ तो तेज उड़ने के लिए\n" -"स्पेशल की दबानी पड़ेगी |" - -#: src/settings_translation_file.cpp -msgid "Rightclick repetition interval" -msgstr "राइट क्लिक के दोहराने का समय" - -#: src/settings_translation_file.cpp -msgid "" -"The time in seconds it takes between repeated right clicks when holding the " -"right\n" -"mouse button." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Automatically jump up single-node obstacles." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Safe digging and placing" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Prevent digging and placing from repeating when holding the mouse buttons.\n" -"Enable this when you dig or place too often by accident." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Random input" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable random user input (only used for testing)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Continuous forward" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Continuous forward movement, toggled by autoforward key.\n" -"Press the autoforward key again or the backwards movement to disable." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Touch screen threshold" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "The length in pixels it takes for touch screen interaction to start." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fixed virtual joystick" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "(Android) Fixes the position of virtual joystick.\n" "If disabled, virtual joystick will center to first-touch's position." msgstr "" -#: src/settings_translation_file.cpp -msgid "Virtual joystick triggers aux button" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "(Android) Use virtual joystick to trigger \"aux\" button.\n" @@ -1972,1065 +1940,27 @@ msgid "" "circle." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable joysticks" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Joystick ID" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "The identifier of the joystick to use" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Joystick type" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "The type of joystick" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Joystick button repetition interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The time in seconds it takes between repeated events\n" -"when holding down a joystick button combination." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Joystick frustum sensitivity" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The sensitivity of the joystick axes for moving the\n" -"ingame view frustum around." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Forward key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for moving the player forward.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Backward key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for moving the player backward.\n" -"Will also disable autoforward, when active.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Left key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for moving the player left.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Right key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for moving the player right.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Jump key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for jumping.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Sneak key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for sneaking.\n" -"Also used for climbing down and descending in water if aux1_descends is " -"disabled.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Inventory key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for opening the inventory.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Special key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for moving fast in fast mode.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chat key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for opening the chat window.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Command key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for opening the chat window to type commands.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for opening the chat window to type local commands.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Range select key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling unlimited view range.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fly key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling flying.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Pitch move key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling pitch move mode.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fast key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling fast mode.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Noclip key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling noclip mode.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar next key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the next item in the hotbar.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar previous key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the previous item in the hotbar.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mute key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for muting the game.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Inc. volume key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for increasing the volume.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Dec. volume key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for decreasing the volume.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Automatic forward key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling autoforward.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cinematic mode key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling cinematic mode.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Minimap key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling display of minimap.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for taking screenshots.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Drop item key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for dropping the currently selected item.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "View zoom key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key to use view zoom when possible.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 1 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the first hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 2 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the second hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 3 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the third hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 4 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the fourth hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 5 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the fifth hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 6 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the sixth hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 7 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the seventh hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 8 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the eighth hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 9 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the ninth hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 10 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the tenth hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 11 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 11th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 12 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 12th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 13 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 13th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 14 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 14th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 15 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 15th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 16 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 16th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 17 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 17th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 18 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 18th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 19 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 19th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 20 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 20th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 21 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 21st hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 22 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 22nd hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 23 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 23rd hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 24 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 24th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 25 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 25th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 26 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 26th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 27 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 27th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 28 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 28th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 29 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 29th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 30 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 30th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 31 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 31st hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 32 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 32nd hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "HUD toggle key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the display of the HUD.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chat toggle key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the display of chat.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Large chat console key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the display of the large chat console.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fog toggle key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the display of fog.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Camera update toggle key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the camera update. Only used for development\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Debug info toggle key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the display of debug info.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Profiler toggle key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the display of the profiler. Used for development.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Toggle camera mode key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for switching between first- and third-person camera.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "View range increase key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for increasing the viewing range.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "View range decrease key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for decreasing the viewing range.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Graphics" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "In-Game" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Basic" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "VBO" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable vertex buffer objects.\n" -"This should greatly improve graphics performance." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fog" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Whether to fog out the end of the visible area." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Leaves style" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Leaves style:\n" -"- Fancy: all faces visible\n" -"- Simple: only outer faces, if defined special_tiles are used\n" -"- Opaque: disable transparency" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Connect glass" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Connects glass if supported by node." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Smooth lighting" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable smooth lighting with simple ambient occlusion.\n" -"Disable for speed or for different looks." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Clouds" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Clouds are a client side effect." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "3D clouds" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Use 3D cloud look instead of flat." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Node highlighting" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Method used to highlight selected object." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Digging particles" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Adds particles when digging a node." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Filtering" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mipmapping" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Use mip mapping to scale textures. May slightly increase performance,\n" -"especially when using a high resolution texture pack.\n" -"Gamma correct downscaling is not supported." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Anisotropic filtering" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Use anisotropic filtering when viewing at textures from an angle." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bilinear filtering" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Use bilinear filtering when scaling textures." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Trilinear filtering" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Use trilinear filtering when scaling textures." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Clean transparent textures" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Filtered textures can blend RGB values with fully-transparent neighbors,\n" -"which PNG optimizers usually discard, sometimes resulting in a dark or\n" -"light edge to transparent textures. Apply this filter to clean that up\n" -"at texture load time." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Minimum texture size" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" -"can be blurred, so automatically upscale them with nearest-neighbor\n" -"interpolation to preserve crisp pixels. This sets the minimum texture size\n" -"for the upscaled textures; higher values look sharper, but require more\n" -"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n" -"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" -"enabled.\n" -"This is also used as the base node texture size for world-aligned\n" -"texture autoscaling." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "FSAA" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Experimental option, might cause visible spaces between blocks\n" -"when set to higher number than 0." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Undersampling" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Undersampling is similar to using a lower screen resolution, but it applies\n" -"to the game world only, keeping the GUI intact.\n" -"It should give a significant performance boost at the cost of less detailed " -"image.\n" -"Higher values result in a less detailed image." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Shaders allow advanced visual effects and may increase performance on some " -"video\n" -"cards.\n" -"This only works with the OpenGL video backend." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Shader path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Path to shader directory. If no path is defined, default location will be " -"used." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Filmic tone mapping" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enables Hable's 'Uncharted 2' filmic tone mapping.\n" -"Simulates the tone curve of photographic film and how this approximates the\n" -"appearance of high dynamic range images. Mid-range contrast is slightly\n" -"enhanced, highlights and shadows are gradually compressed." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bumpmapping" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enables bumpmapping for textures. Normalmaps need to be supplied by the " -"texture pack\n" -"or need to be auto-generated.\n" -"Requires shaders to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Generate normalmaps" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enables on the fly normalmap generation (Emboss effect).\n" -"Requires bumpmapping to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Normalmaps strength" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Strength of generated normalmaps." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Normalmaps sampling" -msgstr "" - #: src/settings_translation_file.cpp msgid "" -"Defines sampling step of texture.\n" -"A higher value results in smoother normal maps." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Parallax occlusion" +"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" +"Can be used to move a desired point to (0, 0) to create a\n" +"suitable spawn point, or to allow 'zooming in' on a desired\n" +"point by increasing 'scale'.\n" +"The default is tuned for a suitable spawn point for Mandelbrot\n" +"sets with default parameters, it may need altering in other\n" +"situations.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Enables parallax occlusion mapping.\n" -"Requires shaders to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Parallax occlusion mode" +"(X,Y,Z) scale of fractal in nodes.\n" +"Actual fractal size will be 2 to 3 times larger.\n" +"These numbers can be made very large, the fractal does\n" +"not have to fit inside the world.\n" +"Increase these to 'zoom' into the detail of the fractal.\n" +"Default is for a vertically-squashed shape suitable for\n" +"an island, set all 3 numbers equal for the raw shape." msgstr "" #: src/settings_translation_file.cpp @@ -3040,346 +1970,79 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" +msgid "2D noise that controls the shape/size of ridged mountains." msgstr "" #: src/settings_translation_file.cpp -msgid "Strength of parallax." +msgid "2D noise that controls the shape/size of rolling hills." msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax occlusion iterations" +msgid "2D noise that controls the shape/size of step mountains." msgstr "" #: src/settings_translation_file.cpp -msgid "Number of parallax occlusion iterations." +msgid "2D noise that controls the size/occurrence of ridged mountain ranges." msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax occlusion scale" +msgid "2D noise that controls the size/occurrence of rolling hills." msgstr "" #: src/settings_translation_file.cpp -msgid "Overall scale of parallax occlusion effect." +msgid "2D noise that controls the size/occurrence of step mountain ranges." msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax occlusion bias" +msgid "2D noise that locates the river valleys and channels." msgstr "" #: src/settings_translation_file.cpp -msgid "Overall bias of parallax occlusion effect, usually scale/2." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving Nodes" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving liquids" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Set to true to enable waving liquids (like water).\n" -"Requires shaders to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving liquids wave height" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The maximum height of the surface of waving liquids.\n" -"4.0 = Wave height is two nodes.\n" -"0.0 = Wave doesn't move at all.\n" -"Default is 1.0 (1/2 node).\n" -"Requires waving liquids to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving liquids wavelength" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Length of liquid waves.\n" -"Requires waving liquids to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving liquids wave speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"How fast liquid waves will move. Higher = faster.\n" -"If negative, liquid waves will move backwards.\n" -"Requires waving liquids to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving leaves" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Set to true to enable waving leaves.\n" -"Requires shaders to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving plants" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Set to true to enable waving plants.\n" -"Requires shaders to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Advanced" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Arm inertia" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Arm inertia, gives a more realistic movement of\n" -"the arm when the camera moves." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum FPS" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If FPS would go higher than this, limit it by sleeping\n" -"to not waste CPU power for no benefit." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "FPS in pause menu" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum FPS when game is paused." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Pause on lost window focus" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Open the pause menu when the window's focus is lost. Does not pause if a " -"formspec is\n" -"open." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "View distance in nodes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Near plane" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" -"Only works on GLES platforms. Most users will not need to change this.\n" -"Increasing can reduce artifacting on weaker GPUs.\n" -"0.1 = Default, 0.25 = Good value for weaker tablets." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Screen width" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Width component of the initial window size." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Screen height" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Height component of the initial window size." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Autosave screen size" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Save window size automatically when modified." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Full screen" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fullscreen mode." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Full screen BPP" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "VSync" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Vertical screen synchronization." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Field of view" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Field of view in degrees." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Light curve gamma" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Alters the light curve by applying 'gamma correction' to it.\n" -"Higher values make middle and lower light levels brighter.\n" -"Value '1.0' leaves the light curve unaltered.\n" -"This only has significant effect on daylight and artificial\n" -"light, it has very little effect on natural night light." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Light curve low gradient" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Gradient of light curve at minimum light level.\n" -"Controls the contrast of the lowest light levels." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Light curve high gradient" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Gradient of light curve at maximum light level.\n" -"Controls the contrast of the highest light levels." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Light curve boost" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Strength of light curve boost.\n" -"The 3 'boost' parameters define a range of the light\n" -"curve that is boosted in brightness." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Light curve boost center" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Center of light curve boost range.\n" -"Where 0.0 is minimum light level, 1.0 is maximum light level." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Light curve boost spread" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Spread of light curve boost range.\n" -"Controls the width of the range to be boosted.\n" -"Standard deviation of the light curve boost Gaussian." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Texture path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Path to texture directory. All textures are first searched from here." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Video driver" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The rendering back-end for Irrlicht.\n" -"A restart is required after changing this.\n" -"Note: On Android, stick with OGLES1 if unsure! App may fail to start " -"otherwise.\n" -"On other platforms, OpenGL is recommended, and it’s the only driver with\n" -"shader support currently." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cloud radius" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Radius of cloud area stated in number of 64 node cloud squares.\n" -"Values larger than 26 will start to produce sharp cutoffs at cloud area " -"corners." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "View bobbing factor" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable view bobbing and amount of view bobbing.\n" -"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fall bobbing factor" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Multiplier for fall bobbing.\n" -"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgid "3D clouds" msgstr "" #: src/settings_translation_file.cpp msgid "3D mode" msgstr "" +#: src/settings_translation_file.cpp +msgid "3D mode parallax strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining mountain structure and height.\n" +"Also defines structure of floatland mountain terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining structure of floatlands.\n" +"If altered from the default, the noise 'scale' (0.7 by default) may need\n" +"to be adjusted, as floatland tapering functions best when this noise has\n" +"a value range of approximately -2.0 to 2.0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining structure of river canyon walls." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise that determines number of dungeons per mapchunk." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "3D support.\n" @@ -3395,314 +2058,117 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Console height" +msgid "" +"A chosen map seed for a new map, leave empty for random.\n" +"Will be overridden when creating a new world in the main menu." msgstr "" #: src/settings_translation_file.cpp -msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgid "A message to be displayed to all clients when the server crashes." msgstr "" #: src/settings_translation_file.cpp -msgid "Console color" +msgid "A message to be displayed to all clients when the server shuts down." msgstr "" #: src/settings_translation_file.cpp -msgid "In-game chat console background color (R,G,B)." +msgid "ABM interval" msgstr "" #: src/settings_translation_file.cpp -msgid "Console alpha" +msgid "Absolute limit of queued blocks to emerge" msgstr "" #: src/settings_translation_file.cpp -msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." +msgid "Acceleration in air" msgstr "" #: src/settings_translation_file.cpp -msgid "Formspec Full-Screen Background Opacity" +msgid "Acceleration of gravity, in nodes per second per second." msgstr "" #: src/settings_translation_file.cpp -msgid "Formspec full-screen background opacity (between 0 and 255)." +msgid "Active Block Modifiers" msgstr "" #: src/settings_translation_file.cpp -msgid "Formspec Full-Screen Background Color" +msgid "Active block management interval" msgstr "" #: src/settings_translation_file.cpp -msgid "Formspec full-screen background color (R,G,B)." +msgid "Active block range" msgstr "" #: src/settings_translation_file.cpp -msgid "Formspec Default Background Opacity" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Formspec default background opacity (between 0 and 255)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Formspec Default Background Color" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Formspec default background color (R,G,B)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Selection box color" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Selection box border color (R,G,B)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Selection box width" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Width of the selection box lines around nodes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crosshair color" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crosshair color (R,G,B)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crosshair alpha" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Recent Chat Messages" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum number of recent chat messages to show" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Desynchronize block animation" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Whether node texture animations should be desynchronized per mapblock." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum hotbar width" +msgid "Active object send range" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Maximum proportion of current window to be used for hotbar.\n" -"Useful if there's something to be displayed right or left of hotbar." +"Address to connect to.\n" +"Leave this blank to start a local server.\n" +"Note that the address field in the main menu overrides this setting." msgstr "" #: src/settings_translation_file.cpp -msgid "HUD scale factor" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Modifies the size of the hudbar elements." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mesh cache" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enables caching of facedir rotated meshes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapblock mesh generation delay" +msgid "Adds particles when digging a node." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Delay between mesh updates on the client in ms. Increasing this will slow\n" -"down the rate of mesh updates, thus reducing jitter on slower clients." +"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " +"screens." msgstr "" #: src/settings_translation_file.cpp -msgid "Mapblock mesh generator's MapBlock cache size in MB" +#, c-format +msgid "" +"Adjusts the density of the floatland layer.\n" +"Increase value to increase density. Can be positive or negative.\n" +"Value = 0.0: 50% of volume is floatland.\n" +"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" +"to be sure) creates a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Advanced" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Size of the MapBlock cache of the mesh generator. Increasing this will\n" -"increase the cache hit %, reducing the data being copied from the main\n" -"thread, thus reducing jitter." +"Alters the light curve by applying 'gamma correction' to it.\n" +"Higher values make middle and lower light levels brighter.\n" +"Value '1.0' leaves the light curve unaltered.\n" +"This only has significant effect on daylight and artificial\n" +"light, it has very little effect on natural night light." msgstr "" #: src/settings_translation_file.cpp -msgid "Minimap" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enables minimap." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Round minimap" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Shape of the minimap. Enabled = round, disabled = square." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Minimap scan height" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"True = 256\n" -"False = 128\n" -"Usable to make minimap smoother on slower machines." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Colored fog" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." -msgstr "" +msgid "Always fly and fast" +msgstr "हमेशा उड़ान और तेज" #: src/settings_translation_file.cpp msgid "Ambient occlusion gamma" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"The strength (darkness) of node ambient-occlusion shading.\n" -"Lower is darker, Higher is lighter. The valid range of values for this\n" -"setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" -"set to the nearest valid value." +msgid "Amount of messages a player may send per 10 seconds." msgstr "" #: src/settings_translation_file.cpp -msgid "Inventory items animations" +msgid "Amplifies the valleys." msgstr "" #: src/settings_translation_file.cpp -msgid "Enables animation of inventory items." +msgid "Anisotropic filtering" msgstr "" #: src/settings_translation_file.cpp -msgid "Fog start" +msgid "Announce server" msgstr "" #: src/settings_translation_file.cpp -msgid "Fraction of the visible distance at which fog starts to be rendered" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Opaque liquids" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Makes all liquids opaque" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "World-aligned textures mode" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Textures on a node may be aligned either to the node or to the world.\n" -"The former mode suits better things like machines, furniture, etc., while\n" -"the latter makes stairs and microblocks fit surroundings better.\n" -"However, as this possibility is new, thus may not be used by older servers,\n" -"this option allows enforcing it for certain node types. Note though that\n" -"that is considered EXPERIMENTAL and may not work properly." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Autoscaling mode" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"World-aligned textures may be scaled to span several nodes. However,\n" -"the server may not send the scale you want, especially if you use\n" -"a specially-designed texture pack; with this option, the client tries\n" -"to determine the scale automatically basing on the texture size.\n" -"See also texture_min_size.\n" -"Warning: This option is EXPERIMENTAL!" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Show entity selection boxes" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Menus" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Clouds in menu" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Use a cloud animation for the main menu background." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "GUI scaling" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Scale GUI by a user specified value.\n" -"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" -"This will smooth over some of the rough edges, and blend\n" -"pixels when scaling down, at the cost of blurring some\n" -"edge pixels when images are scaled by non-integer sizes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "GUI scaling filter" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"When gui_scaling_filter is true, all GUI images need to be\n" -"filtered in software, but some images are generated directly\n" -"to hardware (e.g. render-to-texture for nodes in inventory)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "GUI scaling filter txr2img" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"When gui_scaling_filter_txr2img is true, copy those images\n" -"from hardware to software for scaling. When false, fall back\n" -"to the old scaling method, for video drivers that don't\n" -"properly support downloading textures back from hardware." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Tooltip delay" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Delay showing tooltips, stated in milliseconds." +msgid "Announce to this serverlist." msgstr "" #: src/settings_translation_file.cpp @@ -3714,1039 +2180,23 @@ msgid "Append item name to tooltip." msgstr "" #: src/settings_translation_file.cpp -msgid "FreeType fonts" +msgid "Apple trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Arm inertia" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Whether FreeType fonts are used, requires FreeType support to be compiled " -"in.\n" -"If disabled, bitmap and XML vectors fonts are used instead." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font bold by default" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font italic by default" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font shadow" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Shadow offset (in pixels) of the default font. If 0, then shadow will not be " -"drawn." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font shadow alpha" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font size" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font size of the default font in point (pt)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Regular font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Path to the default font.\n" -"If “freetype” setting is enabled: Must be a TrueType font.\n" -"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" -"The fallback font will be used if the font cannot be loaded." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bold font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Italic font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bold and italic font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Monospace font size" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font size of the monospace font in point (pt)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Monospace font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Path to the monospace font.\n" -"If “freetype” setting is enabled: Must be a TrueType font.\n" -"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" -"This font is used for e.g. the console and profiler screen." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bold monospace font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Italic monospace font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bold and italic monospace font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fallback font size" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font size of the fallback font in point (pt)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fallback font shadow" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " -"be drawn." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fallback font shadow alpha" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fallback font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Path of the fallback font.\n" -"If “freetype” setting is enabled: Must be a TrueType font.\n" -"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" -"This font will be used for certain languages or if the default font is " -"unavailable." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Screenshot folder" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Screenshot format" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Format of screenshots." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Screenshot quality" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Screenshot quality. Only used for JPEG format.\n" -"1 means worst quality; 100 means best quality.\n" -"Use 0 for default quality." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "DPI" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " -"screens." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable console window" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Windows systems only: Start Minetest with the command line window in the " -"background.\n" -"Contains the same information as the file debug.txt (default name)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Sound" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enables the sound system.\n" -"If disabled, this completely disables all sounds everywhere and the in-game\n" -"sound controls will be non-functional.\n" -"Changing this setting requires a restart." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Volume" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Volume of all sounds.\n" -"Requires the sound system to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mute sound" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Whether to mute sounds. You can unmute sounds at any time, unless the\n" -"sound system is disabled (enable_sound=false).\n" -"In-game, you can toggle the mute state with the mute key or by using the\n" -"pause menu." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Client" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Network" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Server address" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Address to connect to.\n" -"Leave this blank to start a local server.\n" -"Note that the address field in the main menu overrides this setting." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Remote port" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Port to connect to (UDP).\n" -"Note that the port field in the main menu overrides this setting." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Saving map received from server" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Save the map received by the client on disk." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Connect to external media server" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable usage of remote media server (if provided by server).\n" -"Remote servers offer a significantly faster way to download media (e.g. " -"textures)\n" -"when connecting to the server." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Client modding" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable Lua modding support on client.\n" -"This support is experimental and API can change." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Serverlist URL" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "URL to the server list displayed in the Multiplayer Tab." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Serverlist file" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"File in client/serverlist/ that contains your favorite servers displayed in " -"the\n" -"Multiplayer Tab." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum size of the out chat queue" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Maximum size of the out chat queue.\n" -"0 to disable queueing and -1 to make the queue size unlimited." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable register confirmation" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable register confirmation when connecting to server.\n" -"If disabled, new account will be registered automatically." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapblock unload timeout" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Timeout for client to remove unused map data from memory." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapblock limit" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Maximum number of mapblocks for client to be kept in memory.\n" -"Set to -1 for unlimited amount." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Show debug info" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Whether to show the client debug info (has the same effect as hitting F5)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Server / Singleplayer" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Server name" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Name of the server, to be displayed when players join and in the serverlist." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Server description" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Description of server, to be displayed when players join and in the " -"serverlist." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Server URL" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Announce server" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Automatically report to the serverlist." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Announce to this serverlist." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Strip color codes" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Remove color codes from incoming chat messages\n" -"Use this to stop players from being able to use color in their messages" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Server port" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Network port to listen (UDP).\n" -"This value will be overridden when starting from the main menu." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bind address" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "The network interface that the server listens on." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Strict protocol checking" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable to disallow old clients from connecting.\n" -"Older clients are compatible in the sense that they will not crash when " -"connecting\n" -"to new servers, but they may not support all new features that you are " -"expecting." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Remote media" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Specifies URL from which client fetches media instead of using UDP.\n" -"$filename should be accessible from $remote_media$filename via cURL\n" -"(obviously, remote_media should end with a slash).\n" -"Files that are not present will be fetched the usual way." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "IPv6 server" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable/disable running an IPv6 server.\n" -"Ignored if bind_address is set.\n" -"Needs enable_ipv6 to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum simultaneous block sends per client" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Maximum number of blocks that are simultaneously sent per client.\n" -"The maximum total count is calculated dynamically:\n" -"max_total = ceil((#clients + max_users) * per_client / 4)" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Delay in sending blocks after building" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"To reduce lag, block transfers are slowed down when a player is building " -"something.\n" -"This determines how long they are slowed down after placing or removing a " -"node." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Max. packets per iteration" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Maximum number of packets sent per send step, if you have a slow connection\n" -"try reducing it, but don't reduce it to a number below double of targeted\n" -"client number." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Default game" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Default game when creating a new world.\n" -"This will be overridden when creating a world from the main menu." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Message of the day" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Message of the day displayed to players connecting." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum users" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum number of players that can be connected simultaneously." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Map directory" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"World directory (everything in the world is stored here).\n" -"Not needed if starting from the main menu." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Item entity TTL" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Time in seconds for item entity (dropped items) to live.\n" -"Setting it to -1 disables the feature." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Damage" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable players getting damage and dying." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Creative" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fixed map seed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"A chosen map seed for a new map, leave empty for random.\n" -"Will be overridden when creating a new world in the main menu." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Default password" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "New users need to input this password." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Default privileges" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The privileges that new users automatically get.\n" -"See /privs in game for a full list on your server and mod configuration." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Basic privileges" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Privileges that players with basic_privs can grant" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Unlimited player transfer distance" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Whether players are shown to clients without any range limit.\n" -"Deprecated, use the setting player_transfer_distance instead." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Player transfer distance" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Player versus player" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Whether to allow players to damage and kill each other." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mod channels" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable mod channels support." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Static spawnpoint" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "If this is set, players will always (re)spawn at the given position." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Disallow empty passwords" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "If enabled, new players cannot join with an empty password." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Disable anticheat" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "If enabled, disable cheat prevention in multiplayer." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Rollback recording" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If enabled, actions are recorded for rollback.\n" -"This option is only read when server starts." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chat message format" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Format of player chat messages. The following strings are valid " -"placeholders:\n" -"@name, @message, @timestamp (optional)" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Shutdown message" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "A message to be displayed to all clients when the server shuts down." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crash message" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "A message to be displayed to all clients when the server crashes." +"Arm inertia, gives a more realistic movement of\n" +"the arm when the camera moves." msgstr "" #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Whether to ask clients to reconnect after a (Lua) crash.\n" -"Set this to true if your server is set up to restart automatically." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Active object send range" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"From how far clients know about objects, stated in mapblocks (16 nodes).\n" -"\n" -"Setting this larger than active_block_range will also cause the server\n" -"to maintain active objects up to this distance in the direction the\n" -"player is looking. (This can avoid mobs suddenly disappearing from view)" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Active block range" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The radius of the volume of blocks around every player that is subject to " -"the\n" -"active block stuff, stated in mapblocks (16 nodes).\n" -"In active blocks objects are loaded and ABMs run.\n" -"This is also the minimum range in which active objects (mobs) are " -"maintained.\n" -"This should be configured together with active_object_range." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Max block send distance" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"From how far blocks are sent to clients, stated in mapblocks (16 nodes)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum forceloaded blocks" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum number of forceloaded mapblocks." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Time send interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Interval of sending time of day to clients." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Time speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Controls length of day/night cycle.\n" -"Examples:\n" -"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "World start time" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Time of day when a new world is started, in millihours (0-23999)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Map save interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Interval of saving important changes in the world, stated in seconds." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chat message max length" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Set the maximum character length of a chat message sent by clients." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chat message count limit" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Amount of messages a player may send per 10 seconds." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chat message kick threshold" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Kick players who sent more than X messages per 10 seconds." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Physics" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Default acceleration" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Horizontal and vertical acceleration on ground or when climbing,\n" -"in nodes per second per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Acceleration in air" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Horizontal acceleration in air when jumping or falling,\n" -"in nodes per second per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fast mode acceleration" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Horizontal and vertical acceleration in fast mode,\n" -"in nodes per second per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Walking speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Walking and flying speed, in nodes per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Sneaking speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Sneaking speed, in nodes per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fast mode speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Walking, flying and climbing speed in fast mode, in nodes per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Climbing speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Vertical climbing speed, in nodes per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Jumping speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Initial vertical speed when jumping, in nodes per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid fluidity" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Decrease this to increase liquid resistance to movement." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid fluidity smoothing" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Maximum liquid resistance. Controls deceleration when entering liquid at\n" -"high speed." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid sinking" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Controls sinking speed in liquid." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Gravity" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Acceleration of gravity, in nodes per second per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Deprecated Lua API handling" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Handling for deprecated Lua API calls:\n" -"- legacy: (try to) mimic old behaviour (default for release).\n" -"- log: mimic and log backtrace of deprecated call (default for debug).\n" -"- error: abort on usage of deprecated call (suggested for mod developers)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Max. clearobjects extra blocks" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Number of extra blocks that can be loaded by /clearobjects at once.\n" -"This is a trade-off between sqlite transaction overhead and\n" -"memory consumption (4096=100MB, as a rule of thumb)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Unload unused server data" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"How much the server will wait before unloading unused mapblocks.\n" -"Higher value is smoother, but will use more RAM." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum objects per block" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum number of statically stored objects in a block." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Synchronous SQLite" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Dedicated server step" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Length of a server tick and the interval at which objects are generally " -"updated over\n" -"network." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Active block management interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Length of time between active block management cycles" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "ABM interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Length of time between Active Block Modifier (ABM) execution cycles" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "NodeTimer interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Length of time between NodeTimer execution cycles" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Ignore world errors" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If enabled, invalid world data won't cause the server to shut down.\n" -"Only enable this if you know what you are doing." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid loop max" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Max liquids processed per step." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid queue purge time" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The time (in seconds) that the liquids queue may grow beyond processing\n" -"capacity until an attempt is made to decrease its size by dumping old queue\n" -"items. A value of 0 disables the functionality." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid update tick" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid update interval in seconds." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Block send optimize distance" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "At this distance the server will aggressively optimize which blocks are sent " @@ -4763,9 +2213,1422 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Server side occlusion culling" +msgid "Automatic forward key" msgstr "" +#: src/settings_translation_file.cpp +msgid "Automatically jump up single-node obstacles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically report to the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autosave screen size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autoscaling mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Backward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base terrain height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bind address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome API temperature and humidity noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bits per pixel (aka color depth) in fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block send optimize distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Build inside player" +msgstr "खिलाडी पर डिब्बे डालना" + +#: src/settings_translation_file.cpp +msgid "Builtin" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bumpmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" +"Increasing can reduce artifacting on weaker GPUs.\n" +"0.1 = Default, 0.25 = Good value for weaker tablets." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing" +msgstr "केमरा चिकनाई" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "सिनेमा मोड में केमरा चिकनाई" + +#: src/settings_translation_file.cpp +msgid "Camera update toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern taper" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern upper limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Center of light curve boost range.\n" +"Where 0.0 is minimum light level, 1.0 is maximum light level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Changes the main menu UI:\n" +"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, " +"etc.\n" +"- Simple: One singleplayer world, no game or texture pack choosers. May " +"be\n" +"necessary for smaller screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message count limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message kick threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message max length" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chatcommands" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode" +msgstr "सिनेमा मोड" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clean transparent textures" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client and Server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client modding" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side modding restrictions" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side node lookup range restriction" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Climbing speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cloud radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds are a client side effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Colored fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of flags to hide in the content repository.\n" +"\"nonfree\" can be used to hide packages which do not qualify as 'free " +"software',\n" +"as defined by the Free Software Foundation.\n" +"You can also specify content ratings.\n" +"These flags are independent from Minetest versions,\n" +"so see a full list at https://content.minetest.net/help/content_flags/" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of trusted mods that are allowed to access insecure\n" +"functions even when mod security is on (via request_insecure_environment())." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Command key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect glass" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect to external media server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connects glass if supported by node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB Flag Blacklist" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Continuous forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Continuous forward movement, toggled by autoforward key.\n" +"Press the autoforward key again or the backwards movement to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls" +msgstr "कंट्रोल्स" + +#: src/settings_translation_file.cpp +msgid "" +"Controls length of day/night cycle.\n" +"Examples:\n" +"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls sinking speed in liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls width of tunnels, a smaller value creates wider tunnels.\n" +"Value >= 10.0 completely disables generation of tunnels and avoids the\n" +"intensive noise calculations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crash message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Creative" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "DPI" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Damage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug info toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log file size threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dec. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease this to increase liquid resistance to movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dedicated server step" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default game when creating a new world.\n" +"This will be overridden when creating a world from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default password" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default report format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default stack size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default timeout for cURL, stated in milliseconds.\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas where trees have apples." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas with sandy beaches." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain and steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines full size of caverns, smaller values create larger caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines large-scale river channel structure." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines location and terrain of optional hills and lakes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Defines sampling step of texture.\n" +"A higher value results in smoother normal maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the base ground level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the depth of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river valley." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines tree areas and tree density." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Delay between mesh updates on the client in ms. Increasing this will slow\n" +"down the rate of mesh updates, thus reducing jitter on slower clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay in sending blocks after building" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay showing tooltips, stated in milliseconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Deprecated Lua API handling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Description of server, to be displayed when players join and in the " +"serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desert noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Deserts occur when np_biome exceeds this value.\n" +"When the 'snowbiomes' flag is enabled, this is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desynchronize block animation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Digging particles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable anticheat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disallow empty passwords" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Domain name of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double tap jump for fly" +msgstr "उड़ने के लिए दो बार कूदें" + +#: src/settings_translation_file.cpp +msgid "Double-tapping the jump key toggles fly mode." +msgstr "दो बार कूदने से उड़ान चलन चालू हो जाता है।" + +#: src/settings_translation_file.cpp +msgid "Drop item key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dump the mapgen debug information." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable IPv6 support (for both client and server).\n" +"Required for IPv6 connections to work at all." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable Lua modding support on client.\n" +"This support is experimental and API can change." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable console window" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable creative mode for new created maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable joysticks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod channels support." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable players getting damage and dying." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random user input (only used for testing)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable register confirmation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable register confirmation when connecting to server.\n" +"If disabled, new account will be registered automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable smooth lighting with simple ambient occlusion.\n" +"Disable for speed or for different looks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable to disallow old clients from connecting.\n" +"Older clients are compatible in the sense that they will not crash when " +"connecting\n" +"to new servers, but they may not support all new features that you are " +"expecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable usage of remote media server (if provided by server).\n" +"Remote servers offer a significantly faster way to download media (e.g. " +"textures)\n" +"when connecting to the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable vertex buffer objects.\n" +"This should greatly improve graphics performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable view bobbing and amount of view bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable/disable running an IPv6 server.\n" +"Ignored if bind_address is set.\n" +"Needs enable_ipv6 to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables Hable's 'Uncharted 2' filmic tone mapping.\n" +"Simulates the tone curve of photographic film and how this approximates the\n" +"appearance of high dynamic range images. Mid-range contrast is slightly\n" +"enhanced, highlights and shadows are gradually compressed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables bumpmapping for textures. Normalmaps need to be supplied by the " +"texture pack\n" +"or need to be auto-generated.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables caching of facedir rotated meshes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables minimap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables on the fly normalmap generation (Emboss effect).\n" +"Requires bumpmapping to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables parallax occlusion mapping.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables the sound system.\n" +"If disabled, this completely disables all sounds everywhere and the in-game\n" +"sound controls will be non-functional.\n" +"Changing this setting requires a restart." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Engine profiling data print interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Entity methods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Experimental option, might cause visible spaces between blocks\n" +"when set to higher number than 0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Exponent of the floatland tapering. Alters the tapering behaviour.\n" +"Value = 1.0 creates a uniform, linear tapering.\n" +"Values > 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS in pause menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FSAA" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Factor noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fall bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast movement" +msgstr "तेज चलन" + +#: src/settings_translation_file.cpp +msgid "" +"Fast movement (via the \"special\" key).\n" +"This requires the \"fast\" privilege on the server." +msgstr "" +"स्पेशल की दबाने पर आप बहुत तॆज चलने लगेंगे |\n" +"इसके लिये \"तेज\" विषेशाधिकार आवश्यक है |" + +#: src/settings_translation_file.cpp +msgid "Field of view" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view in degrees." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"File in client/serverlist/ that contains your favorite servers displayed in " +"the\n" +"Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Filtered textures can blend RGB values with fully-transparent neighbors,\n" +"which PNG optimizers usually discard, sometimes resulting in a dark or\n" +"light edge to transparent textures. Apply this filter to clean that up\n" +"at texture load time." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed map seed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed virtual joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fly key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Flying" +msgstr "उडना" + +#: src/settings_translation_file.cpp +msgid "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog start" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font bold by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font italic by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the default font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the fallback font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the monospace font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Format of player chat messages. The following strings are valid " +"placeholders:\n" +"@name, @message, @timestamp (optional)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fourth of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fractal type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fraction of the visible distance at which fog starts to be rendered" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FreeType fonts" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are generated for clients, stated in mapblocks (16 " +"nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are sent to clients, stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far clients know about objects, stated in mapblocks (16 nodes).\n" +"\n" +"Setting this larger than active_block_range will also cause the server\n" +"to maintain active objects up to this distance in the direction the\n" +"player is looking. (This can avoid mobs suddenly disappearing from view)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen BPP" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter txr2img" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Generate normalmaps" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Global callbacks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at maximum light level.\n" +"Controls the contrast of the highest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at minimum light level.\n" +"Controls the contrast of the lowest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Graphics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gravity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HTTP mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD scale factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Handling for deprecated Lua API calls:\n" +"- legacy: (try to) mimic old behaviour (default for release).\n" +"- log: mimic and log backtrace of deprecated call (default for debug).\n" +"- error: abort on usage of deprecated call (suggested for mod developers)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Have the profiler instrument itself:\n" +"* Instrument an empty function.\n" +"This estimates the overhead, that instrumentation is adding (+1 function " +"call).\n" +"* Instrument the sampler being used to update the statistics." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height select noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "High-precision FPU" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness3 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness4 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Homepage of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal acceleration in air when jumping or falling,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration in fast mode,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration on ground or when climbing,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar next key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar previous key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 1 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 10 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 11 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 12 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 13 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 14 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 15 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 16 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 17 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 18 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 19 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 2 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 20 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 21 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 22 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 23 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 24 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 25 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 26 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 27 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 28 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 29 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 3 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 30 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 31 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 32 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 4 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 5 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 6 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 7 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 8 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 9 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How deep to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How fast liquid waves will move. Higher = faster.\n" +"If negative, liquid waves will move backwards.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How much the server will wait before unloading unused mapblocks.\n" +"Higher value is smoother, but will use more RAM." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6 server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If FPS would go higher than this, limit it by sleeping\n" +"to not waste CPU power for no benefit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If disabled, \"special\" key is used to fly fast if both fly and fast mode " +"are\n" +"enabled." +msgstr "" +"अगर यह रुका हुआ हुआ तो तेज उड़ने के लिए\n" +"स्पेशल की दबानी पड़ेगी |" + #: src/settings_translation_file.cpp msgid "" "If enabled the server will perform map block occlusion culling based on\n" @@ -4776,7 +3639,1664 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Client side modding restrictions" +msgid "" +"If enabled together with fly mode, player is able to fly through solid " +"nodes.\n" +"This requires the \"noclip\" privilege on the server." +msgstr "" +"अगर यह उडान के साथ चालू होगा तो आप हर चीज़ के आर-पार उड पाएंगे |\n" +"इसके लिये \"तरल चाल\" विषेशाधिकार आवश्यक है |" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, \"special\" key instead of \"sneak\" key is used for climbing " +"down and\n" +"descending." +msgstr "" +"अगर यहां चालू हुआ तो नीचे उतरने के लिए स्पेशल\n" +"की का इस्तेमाल होगा।" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, actions are recorded for rollback.\n" +"This option is only read when server starts." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, disable cheat prevention in multiplayer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, invalid world data won't cause the server to shut down.\n" +"Only enable this if you know what you are doing." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, makes move directions relative to the player's pitch when flying " +"or swimming." +msgstr "चालू होने पर आप जहां देखेंगे उस दिशा को सामने माना जाएगा (पिच चलन)|" + +#: src/settings_translation_file.cpp +msgid "If enabled, new players cannot join with an empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place blocks at the position (feet + eye level) where " +"you stand.\n" +"This is helpful when working with nodeboxes in small areas." +msgstr "" +"अगर यह चालू होगा तो आप जिस स्थान मैं खडें हैं वही पर डिब्बे डाल सकेंगे |\n" +"यह छोटी जगहों में काम करते वख़्त काम आ सकता है |" + +#: src/settings_translation_file.cpp +msgid "" +"If the CSM restriction for node range is enabled, get_node calls are " +"limited\n" +"to this distance from the player to the node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the file size of debug.txt exceeds the number of megabytes specified in\n" +"this setting when it is opened, the file is moved to debug.txt.1,\n" +"deleting an older debug.txt.1 if it exists.\n" +"debug.txt is only moved if this setting is positive." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If this is set, players will always (re)spawn at the given position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ignore world errors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-Game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inc. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Initial vertical speed when jumping, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument builtin.\n" +"This is usually only needed by core/builtin contributors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument chatcommands on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument global callback functions on registration.\n" +"(anything you pass to a minetest.register_*() function)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Active Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Loading Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument the methods of entities on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrumentation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of saving important changes in the world, stated in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of sending time of day to clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "माउस उल्टा" + +#: src/settings_translation_file.cpp +msgid "Invert vertical mouse movement." +msgstr "माउस ऊपर करने पर केमरा नीचे जाएगा, और नीचे करने पर ऊपर |" + +#: src/settings_translation_file.cpp +msgid "Italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Item entity TTL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Increasing this increases the amount of fine detail, but also\n" +"increases processing load.\n" +"At iterations = 20 this mapgen has a similar load to mapgen V7." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick ID" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick button repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick frustum sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"W component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"X component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Y component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Z component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for dropping the currently selected item.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for jumping.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving fast in fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player backward.\n" +"Will also disable autoforward, when active.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player forward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player left.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player right.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for muting the game.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type local commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the inventory.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 11th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 12th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 13th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 14th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 15th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 16th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 17th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 18th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 19th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 20th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 21st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 22nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 23rd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 24th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 25th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 26th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 27th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 28th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 29th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 30th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 31st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 32nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the eighth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fifth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the first hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fourth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the next item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the ninth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the previous item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the second hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the seventh hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the sixth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the tenth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the third hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for sneaking.\n" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for switching between first- and third-person camera.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for taking screenshots.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling autoforward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling cinematic mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling display of minimap.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling flying.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling noclip mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling pitch move mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the camera update. Only used for development\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of chat.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of debug info.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of fog.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the HUD.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the large chat console.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the profiler. Used for development.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling unlimited view range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key to use view zoom when possible.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Kick players who sent more than X messages per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Language" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave proportion flooded" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large chat console key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces, if defined special_tiles are used\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Left key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick and the interval at which objects are generally " +"updated over\n" +"network." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of liquid waves.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between Active Block Modifier (ABM) execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between active block management cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Level of logging to be written to debug.txt:\n" +"- (no logging)\n" +"- none (messages with no level)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost center" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost spread" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve high gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve low gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" +"Only mapchunks completely within the mapgen limit are generated.\n" +"Value is stored per-world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limits number of parallel HTTP requests. Affects:\n" +"- Media fetch if server uses remote_media setting.\n" +"- Serverlist download and server announcement.\n" +"- Downloads performed by main menu (e.g. mod manager).\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid loop max" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid queue purge time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid sinking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update interval in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update tick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Load the game profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Load the game profiler to collect game profiling data.\n" +"Provides a /profiler command to access the compiled profile.\n" +"Useful for mod developers and server operators." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Loading Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu script" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes all liquids opaque" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map directory" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen Carpathian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Flat.\n" +"Occasional lakes and hills can be added to the flat world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Fractal.\n" +"'terrain' enables the generation of non-fractal terrain:\n" +"ocean, islands and underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill': Reduces heat with altitude.\n" +"'humid_rivers': Increases humidity around rivers.\n" +"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n" +"to become shallower and occasionally dry.\n" +"'altitude_dry': Reduces humidity with altitude." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen v5." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"The 'snowbiomes' flag enables the new 5 biome system.\n" +"When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" +"the 'jungles' flag is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map save interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generation delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generator's MapBlock cache size in MB" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock unload timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block generate distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block send distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max liquids processed per step." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. clearobjects extra blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. packets per iteration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS when game is paused." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum forceloaded blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum hotbar width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum liquid resistance. Controls deceleration when entering liquid at\n" +"high speed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks that are simultaneously sent per client.\n" +"The maximum total count is calculated dynamically:\n" +"max_total = ceil((#clients + max_users) * per_client / 4)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of blocks that can be queued for loading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be generated.\n" +"This limit is enforced per player." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be loaded from file.\n" +"This limit is enforced per player." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of forceloaded mapblocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of mapblocks for client to be kept in memory.\n" +"Set to -1 for unlimited amount." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step, if you have a slow connection\n" +"try reducing it, but don't reduce it to a number below double of targeted\n" +"client number." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of players that can be connected simultaneously." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of recent chat messages to show" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of statically stored objects in a block." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum objects per block" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum proportion of current window to be used for hotbar.\n" +"Useful if there's something to be displayed right or left of hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum simultaneous block sends per client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum size of the out chat queue" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum size of the out chat queue.\n" +"0 to disable queueing and -1 to make the queue size unlimited." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum time in ms a file download (e.g. a mod download) may take." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum users" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Menus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mesh cache" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day displayed to players connecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum texture size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mod channels" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modifies the size of the hudbar elements." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain variation noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain zero level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity" +msgstr "माउस संवेदनशीलता" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity multiplier." +msgstr "माउस संवेदनशीलता गुणक।" + +#: src/settings_translation_file.cpp +msgid "Mud noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Multiplier for fall bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of map generator to be used when creating a new world.\n" +"Creating a world in the main menu will override this.\n" +"Current mapgens in a highly unstable state:\n" +"- The optional floatlands of v7 (disabled by default)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the player.\n" +"When running a server, clients connecting with this name are admins.\n" +"When starting from the main menu, this is overridden." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the server, to be displayed when players join and in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Near plane" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Network" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Network port to listen (UDP).\n" +"This value will be overridden when starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "New users need to input this password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip" +msgstr "तरल चाल" + +#: src/settings_translation_file.cpp +msgid "Noclip key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps sampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of emerge threads" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of emerge threads to use.\n" +"Value 0:\n" +"- Automatic selection. The number of emerge threads will be\n" +"- 'number of processors - 2', with a lower limit of 1.\n" +"Any other value:\n" +"- Specifies the number of emerge threads, with a lower limit of 1.\n" +"WARNING: Increasing the number of emerge threads increases engine mapgen\n" +"speed, but this may harm game performance by interfering with other\n" +"processes, especially in singleplayer and/or when running Lua code in\n" +"'on_generated'. For many users the optimum setting may be '1'." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of extra blocks that can be loaded by /clearobjects at once.\n" +"This is a trade-off between sqlite transaction overhead and\n" +"memory consumption (4096=100MB, as a rule of thumb)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of parallax occlusion iterations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Online Content Repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Opaque liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Open the pause menu when the window's focus is lost. Does not pause if a " +"formspec is\n" +"open." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall bias of parallax occlusion effect, usually scale/2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall scale of parallax occlusion effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion bias" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path of the fallback font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font will be used for certain languages or if the default font is " +"unavailable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to shader directory. If no path is defined, default location will be " +"used." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to texture directory. All textures are first searched from here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the default font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"The fallback font will be used if the font cannot be loaded." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the monospace font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font is used for e.g. the console and profiler screen." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pause on lost window focus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Physics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move mode" +msgstr "पिच चलन" + +#: src/settings_translation_file.cpp +msgid "" +"Player is able to fly without being affected by gravity.\n" +"This requires the \"fly\" privilege on the server." +msgstr "" +"खिलाडी के असर से मुक्त उड सकेगा |\n" +"इसके लिये \"उडान\" विषेशाधिकार आवश्यक है |" + +#: src/settings_translation_file.cpp +msgid "Player name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player versus player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Port to connect to (UDP).\n" +"Note that the port field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prevent digging and placing from repeating when holding the mouse buttons.\n" +"Enable this when you dig or place too often by accident." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prevent mods from doing insecure things like running shell commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Print the engine's profiling data in regular intervals (in seconds).\n" +"0 = disable. Useful for developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Proportion of large caves that contain liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Radius of cloud area stated in number of 64 node cloud squares.\n" +"Values larger than 26 will start to produce sharp cutoffs at cloud area " +"corners." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Random input" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Range select key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Recent Chat Messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Regular font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Remove color codes from incoming chat messages\n" +"Use this to stop players from being able to use color in their messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Replaces the default main menu with a custom one." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Report path" msgstr "" #: src/settings_translation_file.cpp @@ -4794,732 +5314,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Client side node lookup range restriction" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If the CSM restriction for node range is enabled, get_node calls are " -"limited\n" -"to this distance from the player to the node." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Security" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable mod security" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Trusted mods" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Comma-separated list of trusted mods that are allowed to access insecure\n" -"functions even when mod security is on (via request_insecure_environment())." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "HTTP mods" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Comma-separated list of mods that are allowed to access HTTP APIs, which\n" -"allow them to upload and download data to/from the internet." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Profiling" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Load the game profiler" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Load the game profiler to collect game profiling data.\n" -"Provides a /profiler command to access the compiled profile.\n" -"Useful for mod developers and server operators." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Default report format" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The default format in which profiles are being saved,\n" -"when calling `/profiler save [format]` without format." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Report path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The file path relative to your worldpath in which profiles will be saved to." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Instrumentation" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Entity methods" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Instrument the methods of entities on registration." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Active Block Modifiers" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Instrument the action function of Active Block Modifiers on registration." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Loading Block Modifiers" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Instrument the action function of Loading Block Modifiers on registration." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chatcommands" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Instrument chatcommands on registration." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Global callbacks" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Instrument global callback functions on registration.\n" -"(anything you pass to a minetest.register_*() function)" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Builtin" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Instrument builtin.\n" -"This is usually only needed by core/builtin contributors" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Profiler" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Have the profiler instrument itself:\n" -"* Instrument an empty function.\n" -"This estimates the overhead, that instrumentation is adding (+1 function " -"call).\n" -"* Instrument the sampler being used to update the statistics." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Client and Server" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Player name" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Name of the player.\n" -"When running a server, clients connecting with this name are admins.\n" -"When starting from the main menu, this is overridden." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Language" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Set the language. Leave empty to use the system language.\n" -"A restart is required after changing this." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Debug log level" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Level of logging to be written to debug.txt:\n" -"- (no logging)\n" -"- none (messages with no level)\n" -"- error\n" -"- warning\n" -"- action\n" -"- info\n" -"- verbose" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Debug log file size threshold" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If the file size of debug.txt exceeds the number of megabytes specified in\n" -"this setting when it is opened, the file is moved to debug.txt.1,\n" -"deleting an older debug.txt.1 if it exists.\n" -"debug.txt is only moved if this setting is positive." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "IPv6" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable IPv6 support (for both client and server).\n" -"Required for IPv6 connections to work at all." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "cURL timeout" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Default timeout for cURL, stated in milliseconds.\n" -"Only has an effect if compiled with cURL." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "cURL parallel limit" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Limits number of parallel HTTP requests. Affects:\n" -"- Media fetch if server uses remote_media setting.\n" -"- Serverlist download and server announcement.\n" -"- Downloads performed by main menu (e.g. mod manager).\n" -"Only has an effect if compiled with cURL." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "cURL file download timeout" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum time in ms a file download (e.g. a mod download) may take." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "High-precision FPU" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Main menu style" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Changes the main menu UI:\n" -"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, " -"etc.\n" -"- Simple: One singleplayer world, no game or texture pack choosers. May " -"be\n" -"necessary for smaller screens." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Main menu script" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Replaces the default main menu with a custom one." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Engine profiling data print interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Print the engine's profiling data in regular intervals (in seconds).\n" -"0 = disable. Useful for developers." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen name" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Name of map generator to be used when creating a new world.\n" -"Creating a world in the main menu will override this.\n" -"Current mapgens in a highly unstable state:\n" -"- The optional floatlands of v7 (disabled by default)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Water level" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Water surface level of the world." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Max block generate distance" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"From how far blocks are generated for clients, stated in mapblocks (16 " -"nodes)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Map generation limit" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" -"Only mapchunks completely within the mapgen limit are generated.\n" -"Value is stored per-world." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Global map generation attributes.\n" -"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" -"and junglegrass, in all other mapgens this flag controls all decorations." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Biome API temperature and humidity noise parameters" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Heat noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Temperature variation for biomes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Heat blend noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Small-scale temperature variation for blending biomes on borders." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Humidity noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Humidity variation for biomes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Humidity blend noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Small-scale humidity variation for blending biomes on borders." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen V5" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen V5 specific flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Map generation attributes specific to Mapgen v5." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cave width" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Controls width of tunnels, a smaller value creates wider tunnels.\n" -"Value >= 10.0 completely disables generation of tunnels and avoids the\n" -"intensive noise calculations." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Large cave depth" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Y of upper limit of large caves." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Small cave minimum number" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Small cave maximum number" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Large cave minimum number" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Large cave maximum number" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Large cave proportion flooded" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Proportion of large caves that contain liquid." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cavern limit" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Y-level of cavern upper limit." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cavern taper" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Y-distance over which caverns expand to full size." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cavern threshold" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines full size of caverns, smaller values create larger caverns." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Dungeon minimum Y" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Lower Y limit of dungeons." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Dungeon maximum Y" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Upper Y limit of dungeons." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Noises" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Filler depth noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Variation of biome filler depth." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Factor noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Variation of terrain vertical scale.\n" -"When noise is < -0.55 terrain is near-flat." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Height noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Y-level of average terrain surface." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cave1 noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "First of two 3D noises that together define tunnels." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cave2 noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Second of two 3D noises that together define tunnels." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cavern noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "3D noise defining giant caverns." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Ground noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "3D noise defining terrain." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Dungeon noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen V6" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen V6 specific flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Map generation attributes specific to Mapgen v6.\n" -"The 'snowbiomes' flag enables the new 5 biome system.\n" -"When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" -"the 'jungles' flag is ignored." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Desert noise threshold" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Deserts occur when np_biome exceeds this value.\n" -"When the 'snowbiomes' flag is enabled, this is ignored." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Beach noise threshold" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Sandy beaches occur when np_beach exceeds this value." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Terrain base noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Y-level of lower terrain and seabed." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Terrain higher noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Y-level of higher terrain that creates cliffs." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Steepness noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Varies steepness of cliffs." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Height select noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines distribution of higher terrain." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mud noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Varies depth of biome surface nodes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Beach noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines areas with sandy beaches." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Biome noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cave noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Variation of number of caves." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Trees noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines tree areas and tree density." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Apple trees noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines areas where trees have apples." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen V7" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen V7 specific flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mountain zero level" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Y of mountain density gradient zero level. Used to shift mountains " -"vertically." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Terrain alternative noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Terrain persistence noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Varies roughness of terrain.\n" -"Defines the 'persistence' value for terrain_base and terrain_alt noises." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines distribution of higher terrain and steepness of cliffs." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mountain height noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Variation of maximum mountain height (in nodes)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Ridge underwater noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines large-scale river channel structure." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mountain noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"3D noise defining mountain structure and height.\n" -"Also defines structure of floatland mountain terrain." +msgid "Ridge mountain spread noise" msgstr "" #: src/settings_translation_file.cpp @@ -5527,115 +5322,7 @@ msgid "Ridge noise" msgstr "" #: src/settings_translation_file.cpp -msgid "3D noise defining structure of river canyon walls." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen Carpathian" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen Carpathian specific flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Map generation attributes specific to Mapgen Carpathian." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Base ground level" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines the base ground level." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "River channel width" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines the width of the river channel." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "River channel depth" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines the depth of the river channel." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "River valley width" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines the width of the river valley." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hilliness1 noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "First of 4 2D noises that together define hill/mountain range height." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hilliness2 noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Second of 4 2D noises that together define hill/mountain range height." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hilliness3 noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Third of 4 2D noises that together define hill/mountain range height." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hilliness4 noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fourth of 4 2D noises that together define hill/mountain range height." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Rolling hills spread noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Ridge mountain spread noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "2D noise that controls the size/occurrence of ridged mountain ranges." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Step mountain spread noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "2D noise that controls the size/occurrence of step mountain ranges." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Rolling hill size noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "2D noise that controls the shape/size of rolling hills." +msgid "Ridge underwater noise" msgstr "" #: src/settings_translation_file.cpp @@ -5643,15 +5330,23 @@ msgid "Ridged mountain size noise" msgstr "" #: src/settings_translation_file.cpp -msgid "2D noise that controls the shape/size of ridged mountains." +msgid "Right key" msgstr "" #: src/settings_translation_file.cpp -msgid "Step mountain size noise" +msgid "Rightclick repetition interval" +msgstr "राइट क्लिक के दोहराने का समय" + +#: src/settings_translation_file.cpp +msgid "River channel depth" msgstr "" #: src/settings_translation_file.cpp -msgid "2D noise that controls the shape/size of step mountains." +msgid "River channel width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River depth" msgstr "" #: src/settings_translation_file.cpp @@ -5659,102 +5354,115 @@ msgid "River noise" msgstr "" #: src/settings_translation_file.cpp -msgid "2D noise that locates the river valleys and channels." +msgid "River size" msgstr "" #: src/settings_translation_file.cpp -msgid "Mountain variation noise" +msgid "River valley width" msgstr "" #: src/settings_translation_file.cpp -msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." +msgid "Rollback recording" msgstr "" #: src/settings_translation_file.cpp -msgid "Mapgen Flat" +msgid "Rolling hill size noise" msgstr "" #: src/settings_translation_file.cpp -msgid "Mapgen Flat specific flags" +msgid "Rolling hills spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Round minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Safe digging and placing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sandy beaches occur when np_beach exceeds this value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save the map received by the client on disk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save window size automatically when modified." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Saving map received from server" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen Flat.\n" -"Occasional lakes and hills can be added to the flat world." +"Scale GUI by a user specified value.\n" +"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" +"This will smooth over some of the rough edges, and blend\n" +"pixels when scaling down, at the cost of blurring some\n" +"edge pixels when images are scaled by non-integer sizes." msgstr "" #: src/settings_translation_file.cpp -msgid "Ground level" +msgid "Screen height" msgstr "" #: src/settings_translation_file.cpp -msgid "Y of flat ground." +msgid "Screen width" msgstr "" #: src/settings_translation_file.cpp -msgid "Lake threshold" +msgid "Screenshot folder" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Terrain noise threshold for lakes.\n" -"Controls proportion of world area covered by lakes.\n" -"Adjust towards 0.0 for a larger proportion." +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." msgstr "" #: src/settings_translation_file.cpp -msgid "Lake steepness" +msgid "Seabed noise" msgstr "" #: src/settings_translation_file.cpp -msgid "Controls steepness/depth of lake depressions." +msgid "Second of 4 2D noises that together define hill/mountain range height." msgstr "" #: src/settings_translation_file.cpp -msgid "Hill threshold" +msgid "Second of two 3D noises that together define tunnels." msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Terrain noise threshold for hills.\n" -"Controls proportion of world area covered by hills.\n" -"Adjust towards 0.0 for a larger proportion." +msgid "Security" msgstr "" #: src/settings_translation_file.cpp -msgid "Hill steepness" +msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" msgstr "" #: src/settings_translation_file.cpp -msgid "Controls steepness/height of hills." +msgid "Selection box border color (R,G,B)." msgstr "" #: src/settings_translation_file.cpp -msgid "Terrain noise" +msgid "Selection box color" msgstr "" #: src/settings_translation_file.cpp -msgid "Defines location and terrain of optional hills and lakes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen Fractal" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen Fractal specific flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Map generation attributes specific to Mapgen Fractal.\n" -"'terrain' enables the generation of non-fractal terrain:\n" -"ocean, islands and underground." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fractal type" +msgid "Selection box width" msgstr "" #: src/settings_translation_file.cpp @@ -5781,221 +5489,107 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Iterations" +msgid "Server / Singleplayer" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server description" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server side occlusion culling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist file" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Iterations of the recursive function.\n" -"Increasing this increases the amount of fine detail, but also\n" -"increases processing load.\n" -"At iterations = 20 this mapgen has a similar load to mapgen V7." +"Set the language. Leave empty to use the system language.\n" +"A restart is required after changing this." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set the maximum character length of a chat message sent by clients." msgstr "" #: src/settings_translation_file.cpp msgid "" -"(X,Y,Z) scale of fractal in nodes.\n" -"Actual fractal size will be 2 to 3 times larger.\n" -"These numbers can be made very large, the fractal does\n" -"not have to fit inside the world.\n" -"Increase these to 'zoom' into the detail of the fractal.\n" -"Default is for a vertically-squashed shape suitable for\n" -"an island, set all 3 numbers equal for the raw shape." +"Set to true to enable waving leaves.\n" +"Requires shaders to be enabled." msgstr "" #: src/settings_translation_file.cpp msgid "" -"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" -"Can be used to move a desired point to (0, 0) to create a\n" -"suitable spawn point, or to allow 'zooming in' on a desired\n" -"point by increasing 'scale'.\n" -"The default is tuned for a suitable spawn point for Mandelbrot\n" -"sets with default parameters, it may need altering in other\n" -"situations.\n" -"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Slice w" +"Set to true to enable waving liquids (like water).\n" +"Requires shaders to be enabled." msgstr "" #: src/settings_translation_file.cpp msgid "" -"W coordinate of the generated 3D slice of a 4D fractal.\n" -"Determines which 3D slice of the 4D shape is generated.\n" -"Alters the shape of the fractal.\n" -"Has no effect on 3D fractals.\n" -"Range roughly -2 to 2." +"Set to true to enable waving plants.\n" +"Requires shaders to be enabled." msgstr "" #: src/settings_translation_file.cpp -msgid "Julia x" +msgid "Shader path" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Julia set only.\n" -"X component of hypercomplex constant.\n" -"Alters the shape of the fractal.\n" -"Range roughly -2 to 2." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Julia y" +"Shaders allow advanced visual effects and may increase performance on some " +"video\n" +"cards.\n" +"This only works with the OpenGL video backend." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Julia set only.\n" -"Y component of hypercomplex constant.\n" -"Alters the shape of the fractal.\n" -"Range roughly -2 to 2." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Julia z" +"Shadow offset (in pixels) of the default font. If 0, then shadow will not be " +"drawn." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Julia set only.\n" -"Z component of hypercomplex constant.\n" -"Alters the shape of the fractal.\n" -"Range roughly -2 to 2." +"Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " +"be drawn." msgstr "" #: src/settings_translation_file.cpp -msgid "Julia w" +msgid "Shape of the minimap. Enabled = round, disabled = square." msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Julia set only.\n" -"W component of hypercomplex constant.\n" -"Alters the shape of the fractal.\n" -"Has no effect on 3D fractals.\n" -"Range roughly -2 to 2." +msgid "Show debug info" msgstr "" #: src/settings_translation_file.cpp -msgid "Seabed noise" +msgid "Show entity selection boxes" msgstr "" #: src/settings_translation_file.cpp -msgid "Y-level of seabed." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen Valleys" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen Valleys specific flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Map generation attributes specific to Mapgen Valleys.\n" -"'altitude_chill': Reduces heat with altitude.\n" -"'humid_rivers': Increases humidity around rivers.\n" -"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n" -"to become shallower and occasionally dry.\n" -"'altitude_dry': Reduces humidity with altitude." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Altitude chill" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n" -"enabled. Also the vertical distance over which humidity drops by 10 if\n" -"'altitude_dry' is enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Depth below which you'll find large caves." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cavern upper limit" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Depth below which you'll find giant caverns." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "River depth" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "How deep to make rivers." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "River size" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "How wide to make rivers." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cave noise #1" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cave noise #2" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Filler depth" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "The depth of dirt or other biome filler node." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Terrain height" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Base terrain height." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Valley depth" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Raises terrain to make valleys around the rivers." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Valley fill" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Slope and fill work together to modify the heights." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Valley profile" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Amplifies the valleys." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Valley slope" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chunk size" +msgid "Shutdown message" msgstr "" #: src/settings_translation_file.cpp @@ -6009,68 +5603,213 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Mapgen debug" +msgid "" +"Size of the MapBlock cache of the mesh generator. Increasing this will\n" +"increase the cache hit %, reducing the data being copied from the main\n" +"thread, thus reducing jitter." msgstr "" #: src/settings_translation_file.cpp -msgid "Dump the mapgen debug information." +msgid "Slice w" msgstr "" #: src/settings_translation_file.cpp -msgid "Absolute limit of emerge queues" +msgid "Slope and fill work together to modify the heights." msgstr "" #: src/settings_translation_file.cpp -msgid "Maximum number of blocks that can be queued for loading." +msgid "Small cave maximum number" msgstr "" #: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" +msgid "Small cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale humidity variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale temperature variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooth lighting" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"Smooths camera when looking around. Also called look or mouse smoothing.\n" +"Useful for recording videos." +msgstr "" +"आपका माउस चिकने तरीके से हिलेगा | इसे माउस या दृष्टि चिकनाई भी कहा जाता है |\n" +"विडियो बनाते वख़्त काम आ सकता है |" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera in cinematic mode. 0 to disable." +msgstr "सिनेमा मोड में केमरा चिकने तरीके से मुडेगा | मना करने के लिये 0." + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera. 0 to disable." +msgstr "केमरा के मुडने की चिकनाई. मना करने के लिये 0." + +#: src/settings_translation_file.cpp +msgid "Sneak key" msgstr "" #: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" +msgid "Sneaking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key for climbing/descending" +msgstr "चलने उतरने के लिए स्पेशल की" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies URL from which client fetches media instead of using UDP.\n" +"$filename should be accessible from $remote_media$filename via cURL\n" +"(obviously, remote_media should end with a slash).\n" +"Files that are not present will be fetched the usual way." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Number of emerge threads" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" -"Value 0:\n" -"- Automatic selection. The number of emerge threads will be\n" -"- 'number of processors - 2', with a lower limit of 1.\n" -"Any other value:\n" -"- Specifies the number of emerge threads, with a lower limit of 1.\n" -"WARNING: Increasing the number of emerge threads increases engine mapgen\n" -"speed, but this may harm game performance by interfering with other\n" -"processes, especially in singleplayer and/or when running Lua code in\n" -"'on_generated'. For many users the optimum setting may be '1'." +"Spread of light curve boost range.\n" +"Controls the width of the range to be boosted.\n" +"Standard deviation of the light curve boost Gaussian." msgstr "" #: src/settings_translation_file.cpp -msgid "Online Content Repository" +msgid "Static spawnpoint" msgstr "" #: src/settings_translation_file.cpp -msgid "ContentDB URL" +msgid "Steepness noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of generated normalmaps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Strength of light curve boost.\n" +"The 3 'boost' parameters define a range of the light\n" +"curve that is boosted in brightness." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strict protocol checking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strip color codes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Synchronous SQLite" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Temperature variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain alternative noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain base noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain higher noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain persistence noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Textures on a node may be aligned either to the node or to the world.\n" +"The former mode suits better things like machines, furniture, etc., while\n" +"the latter makes stairs and microblocks fit surroundings better.\n" +"However, as this possibility is new, thus may not be used by older servers,\n" +"this option allows enforcing it for certain node types. Note though that\n" +"that is considered EXPERIMENTAL and may not work properly." msgstr "" #: src/settings_translation_file.cpp @@ -6078,16 +5817,575 @@ msgid "The URL for the content repository" msgstr "" #: src/settings_translation_file.cpp -msgid "ContentDB Flag Blacklist" +msgid "" +"The default format in which profiles are being saved,\n" +"when calling `/profiler save [format]` without format." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other biome filler node." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Comma-separated list of flags to hide in the content repository.\n" -"\"nonfree\" can be used to hide packages which do not qualify as 'free " -"software',\n" -"as defined by the Free Software Foundation.\n" -"You can also specify content ratings.\n" -"These flags are independent from Minetest versions,\n" -"so see a full list at https://content.minetest.net/help/content_flags/" +"The file path relative to your worldpath in which profiles will be saved to." msgstr "" + +#: src/settings_translation_file.cpp +msgid "The identifier of the joystick to use" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The length in pixels it takes for touch screen interaction to start." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The maximum height of the surface of waving liquids.\n" +"4.0 = Wave height is two nodes.\n" +"0.0 = Wave doesn't move at all.\n" +"Default is 1.0 (1/2 node).\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The network interface that the server listens on." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The privileges that new users automatically get.\n" +"See /privs in game for a full list on your server and mod configuration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The radius of the volume of blocks around every player that is subject to " +"the\n" +"active block stuff, stated in mapblocks (16 nodes).\n" +"In active blocks objects are loaded and ABMs run.\n" +"This is also the minimum range in which active objects (mobs) are " +"maintained.\n" +"This should be configured together with active_object_send_range_blocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The rendering back-end for Irrlicht.\n" +"A restart is required after changing this.\n" +"Note: On Android, stick with OGLES1 if unsure! App may fail to start " +"otherwise.\n" +"On other platforms, OpenGL is recommended, and it’s the only driver with\n" +"shader support currently." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The sensitivity of the joystick axes for moving the\n" +"ingame view frustum around." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The strength (darkness) of node ambient-occlusion shading.\n" +"Lower is darker, Higher is lighter. The valid range of values for this\n" +"setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" +"set to the nearest valid value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time (in seconds) that the liquids queue may grow beyond processing\n" +"capacity until an attempt is made to decrease its size by dumping old queue\n" +"items. A value of 0 disables the functionality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated events\n" +"when holding down a joystick button combination." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated right clicks when holding the " +"right\n" +"mouse button." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The type of joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n" +"enabled. Also the vertical distance over which humidity drops by 10 if\n" +"'altitude_dry' is enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Third of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Time in seconds for item entity (dropped items) to live.\n" +"Setting it to -1 disables the feature." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time of day when a new world is started, in millihours (0-23999)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time send interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Timeout for client to remove unused map data from memory." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"To reduce lag, block transfers are slowed down when a player is building " +"something.\n" +"This determines how long they are slowed down after placing or removing a " +"node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touch screen threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"True = 256\n" +"False = 128\n" +"Usable to make minimap smoother on slower machines." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trusted mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "URL to the server list displayed in the Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Undersampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Undersampling is similar to using a lower screen resolution, but it applies\n" +"to the game world only, keeping the GUI intact.\n" +"It should give a significant performance boost at the cost of less detailed " +"image.\n" +"Higher values result in a less detailed image." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unlimited player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unload unused server data" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use 3D cloud look instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use anisotropic filtering when viewing at textures from an angle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use mip mapping to scale textures. May slightly increase performance,\n" +"especially when using a high resolution texture pack.\n" +"Gamma correct downscaling is not supported." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use trilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VSync" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of biome filler depth." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of maximum mountain height (in nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of number of caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Variation of terrain vertical scale.\n" +"When noise is < -0.55 terrain is near-flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies depth of biome surface nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Varies roughness of terrain.\n" +"Defines the 'persistence' value for terrain_base and terrain_alt noises." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical climbing speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical screen synchronization." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Video driver" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View distance in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range decrease key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range increase key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View zoom key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Viewing range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Virtual joystick triggers aux button" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volume" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Volume of all sounds.\n" +"Requires the sound system to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"W coordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking and flying speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking, flying and climbing speed in fast mode, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water surface level of the world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving Nodes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving leaves" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wavelength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving plants" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter is true, all GUI images need to be\n" +"filtered in software, but some images are generated directly\n" +"to hardware (e.g. render-to-texture for nodes in inventory)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter_txr2img is true, copy those images\n" +"from hardware to software for scaling. When false, fall back\n" +"to the old scaling method, for video drivers that don't\n" +"properly support downloading textures back from hardware." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" +"can be blurred, so automatically upscale them with nearest-neighbor\n" +"interpolation to preserve crisp pixels. This sets the minimum texture size\n" +"for the upscaled textures; higher values look sharper, but require more\n" +"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n" +"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" +"enabled.\n" +"This is also used as the base node texture size for world-aligned\n" +"texture autoscaling." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether FreeType fonts are used, requires FreeType support to be compiled " +"in.\n" +"If disabled, bitmap and XML vectors fonts are used instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether node texture animations should be desynchronized per mapblock." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether players are shown to clients without any range limit.\n" +"Deprecated, use the setting player_transfer_distance instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to allow players to damage and kill each other." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to ask clients to reconnect after a (Lua) crash.\n" +"Set this to true if your server is set up to restart automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to fog out the end of the visible area." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to mute sounds. You can unmute sounds at any time, unless the\n" +"sound system is disabled (enable_sound=false).\n" +"In-game, you can toggle the mute state with the mute key or by using the\n" +"pause menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selection box lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Windows systems only: Start Minetest with the command line window in the " +"background.\n" +"Contains the same information as the file debug.txt (default name)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World directory (everything in the world is stored here).\n" +"Not needed if starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World start time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World-aligned textures may be scaled to span several nodes. However,\n" +"the server may not send the scale you want, especially if you use\n" +"a specially-designed texture pack; with this option, the client tries\n" +"to determine the scale automatically basing on the texture size.\n" +"See also texture_min_size.\n" +"Warning: This option is EXPERIMENTAL!" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World-aligned textures mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y of mountain density gradient zero level. Used to shift mountains " +"vertically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-distance over which caverns expand to full size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of average terrain surface." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of cavern upper limit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of higher terrain that creates cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of lower terrain and seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL parallel limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL timeout" +msgstr "" + +#~ msgid "Back" +#~ msgstr "पीछे" + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "$1 का डाऊनलोड व इन्स्टाल चल रहा है, कृपया ठहरें ..." + +#~ msgid "Ok" +#~ msgstr "ठीक है" diff --git a/po/hu/minetest.po b/po/hu/minetest.po index 57b7453bf..d4d58d435 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Hungarian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-07 22:41+0000\n" "Last-Translator: Ács Zoltán \n" "Language-Team: Hungarian 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS a szünet menüben" @@ -3035,6 +3267,41 @@ msgstr "lezárt r" msgid "Fixed virtual joystick" msgstr "Rögzített virtuális joystick" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Lebegő hegyek sűrűsége" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Tömlöc maximális Y magassága" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Tömlöc minimális Y magassága" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "A lebegő hegyek alapzaja" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "A lebegő hegyek alapzaja" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "A lebegő hegyek alapzaja" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Lebegő föld szintje" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Repülés gomb" @@ -3087,6 +3354,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "" @@ -3966,8 +4239,8 @@ msgid "" msgstr "" "Gomb a játékos hátrafelé mozgásához.\n" "Az automatikus előremozgást is kikapcsolja, ha aktív.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4058,8 +4331,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 11. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4068,8 +4341,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 12. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4078,8 +4351,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 13. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4088,8 +4361,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 14. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4098,8 +4371,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 15. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4108,8 +4381,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 16. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4118,8 +4391,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 17. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4128,8 +4401,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 18. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4138,8 +4411,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 19. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4148,8 +4421,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 20. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4158,8 +4431,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 21. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4168,8 +4441,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 22. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4178,8 +4451,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 23. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4188,8 +4461,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 24. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4198,8 +4471,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 25. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4208,8 +4481,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 26. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4218,8 +4491,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 27. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4228,8 +4501,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 28. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4238,8 +4511,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 29. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4248,8 +4521,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 30. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4258,8 +4531,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 31. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4268,8 +4541,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 32. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4278,8 +4551,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 8. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4288,8 +4561,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 5. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4298,8 +4571,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 1. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4308,8 +4581,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 4. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp #, fuzzy @@ -4329,8 +4602,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 9. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp #, fuzzy @@ -4350,8 +4623,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 2. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4360,8 +4633,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 7. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4370,8 +4643,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 6. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4380,8 +4653,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 10. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4390,8 +4663,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a 3. eszköztár kiválasztásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4434,8 +4707,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb az automatikus előrehaladás módra váltáshoz.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4444,8 +4717,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a film mód bekapcsolásához.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4464,8 +4737,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a gyors módra váltáshoz.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4474,8 +4747,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a repülés módra váltáshoz.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4484,8 +4757,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a szellem módra váltáshoz.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4494,8 +4767,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a szellem módra váltáshoz.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp #, fuzzy @@ -4526,8 +4799,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Gomb a hibakeresési információ megjelenítéséhez.\n" -"Lásd: http://irrlicht.sourceforge.net/docu/" -"namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3" +"Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp #, fuzzy @@ -4722,14 +4995,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4797,6 +5062,11 @@ msgstr "Blokk módosítók betöltése" msgid "Lower Y limit of dungeons." msgstr "A tömlöcök alsó Y határa." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "A tömlöcök alsó Y határa." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Főmenü script" @@ -4891,10 +5161,20 @@ msgstr "" "Flags starting with \"no\" are used to explicitly disable them." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" +"Térkép generálási jellemzők csak a Flat (lapos) térképgenerátor esetében.\n" +"Esetenkénti tavak és dombok generálása a lapos világba.\n" +"The default flags set in the engine are: none\n" +"The flags string modifies the engine defaults.\n" +"Flags that are not specified in the flag string are not modified from the " +"default.\n" +"Flags starting with \"no\" are used to explicitly disable them." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -4983,10 +5263,6 @@ msgstr "Lapos térképgenerátor különleges zászlói" msgid "Mapgen debug" msgstr "Térkép generátor hibakereső" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Térképgeneráló zászlók" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Térkép generátor neve" @@ -5055,17 +5331,19 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Maximum blokkok száma, amik sorban állhatnak betöltésre." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Maximum blokkok száma, amik sorban állhatnak generálásra.\n" "Hagyd üresen, hogy automatikusan legyen kiválasztva a megfelelő mennyiség." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Maximum blokkok száma, amik sorban állhatnak egy fájlból való betöltésre.\n" "Hagyd üresen, hogy automatikusan legyen kiválasztva a megfelelő mennyiség." @@ -5160,6 +5438,10 @@ msgstr "Napi üzenet a csatlakozó játékosoknak." msgid "Method used to highlight selected object." msgstr "Kijelölt objektum kiemelésére használt módszer." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Minitérkép" @@ -5326,9 +5608,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5404,10 +5683,6 @@ msgstr "Parallax Occlusion módja" msgid "Parallax occlusion scale" msgstr "Parallax Occlusion mértéke" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Parallax Occlusion hatás ereje" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5418,8 +5693,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Képernyőmentések mappája." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5451,6 +5728,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Fizika" @@ -5527,6 +5812,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -6023,6 +6320,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6047,6 +6351,11 @@ msgstr "Terep magasság" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Generált normálfelületek erőssége." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Generált normálfelületek erőssége." @@ -6058,10 +6367,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -6070,6 +6375,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -6188,7 +6507,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6358,6 +6677,11 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "A tömlöcök felső Y határa." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "A tömlöcök felső Y határa." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "3D felhők használata lapos helyett." @@ -6696,6 +7020,14 @@ msgstr "A világgeneráló szálak számának abszolút határa" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6728,14 +7060,73 @@ msgstr "cURL párhuzamossági korlát" msgid "cURL timeout" msgstr "cURL időkorlátja" +#~ msgid "Toggle Cinematic" +#~ msgstr "Váltás „mozi” módba" + +#~ msgid "Select Package File:" +#~ msgstr "csomag fájl kiválasztása:" + +#~ msgid "Waving Water" +#~ msgstr "Hullámzó víz" + +#~ msgid "Waving water" +#~ msgstr "Hullámzó víz" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Ezt a betűtípust bizonyos nyelvek használják." + +#, fuzzy +#~ msgid "Shadow limit" +#~ msgstr "Térképblokk korlát" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "A TrueType betűtípus (ttf) vagy bitmap útvonala." + +#, fuzzy +#~ msgid "Lightness sharpness" +#~ msgstr "Fényélesség" + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Nagy barlang mélység" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 támogatás." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Betűtípus árnyék alfa (átlátszatlanság, 0 és 255 között)." + +#, fuzzy +#~ msgid "Floatland mountain height" +#~ msgstr "Lebegő hegyek magassága" + +#, fuzzy +#~ msgid "Floatland base height noise" +#~ msgstr "A lebegő hegyek alapmagassága" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "filmes tónus effektek bekapcsolása" + +#~ msgid "Enable VBO" +#~ msgstr "VBO engedélyez" + #~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." #~ msgstr "" -#~ "Gamma kódolás beállítása a fényhez. Alacsonyabb számok - nagyobb " -#~ "fényerő.\n" -#~ "Ez a beállítás csak a kliensre érvényes, a szerver nem veszi figyelembe." +#~ "A lebegő szigetek sima területeit határozza meg.\n" +#~ "Lapos szigetek ott fordulnak elő, ahol a zaj értéke pozitív." + +#~ msgid "Darkness sharpness" +#~ msgstr "a sötétség élessége" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "A járatok szélességét határozza meg, alacsonyabb érték szélesebb " +#~ "járatokat hoz létre." #, fuzzy #~ msgid "" @@ -6745,81 +7136,23 @@ msgstr "cURL időkorlátja" #~ "A lebegő szigetek hegységeinek sűrűségét szabályozza.\n" #~ "Az \"np_mountain\" zaj értékéhez hozzáadott eltolás." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "A járatok szélességét határozza meg, alacsonyabb érték szélesebb " -#~ "járatokat hoz létre." - -#~ msgid "Darkness sharpness" -#~ msgstr "a sötétség élessége" - #~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "A lebegő szigetek sima területeit határozza meg.\n" -#~ "Lapos szigetek ott fordulnak elő, ahol a zaj értéke pozitív." +#~ "Gamma kódolás beállítása a fényhez. Alacsonyabb számok - nagyobb " +#~ "fényerő.\n" +#~ "Ez a beállítás csak a kliensre érvényes, a szerver nem veszi figyelembe." -#~ msgid "Enable VBO" -#~ msgstr "VBO engedélyez" +#~ msgid "Path to save screenshots at." +#~ msgstr "Képernyőmentések mappája." -#~ msgid "Enables filmic tone mapping" -#~ msgstr "filmes tónus effektek bekapcsolása" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "$1 letöltése és telepítése, kérlek várj…" -#, fuzzy -#~ msgid "Floatland base height noise" -#~ msgstr "A lebegő hegyek alapmagassága" +#~ msgid "Back" +#~ msgstr "Vissza" -#, fuzzy -#~ msgid "Floatland base noise" -#~ msgstr "A lebegő hegyek alapzaja" - -#~ msgid "Floatland level" -#~ msgstr "Lebegő föld szintje" - -#, fuzzy -#~ msgid "Floatland mountain density" -#~ msgstr "Lebegő hegyek sűrűsége" - -#, fuzzy -#~ msgid "Floatland mountain height" -#~ msgstr "Lebegő hegyek magassága" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Betűtípus árnyék alfa (átlátszatlanság, 0 és 255 között)." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 támogatás." - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Nagy barlang mélység" - -#, fuzzy -#~ msgid "Lightness sharpness" -#~ msgstr "Fényélesség" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "A TrueType betűtípus (ttf) vagy bitmap útvonala." - -#, fuzzy -#~ msgid "Shadow limit" -#~ msgstr "Térképblokk korlát" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Ezt a betűtípust bizonyos nyelvek használják." - -#~ msgid "Waving water" -#~ msgstr "Hullámzó víz" - -#~ msgid "Waving Water" -#~ msgstr "Hullámzó víz" - -#~ msgid "Select Package File:" -#~ msgstr "csomag fájl kiválasztása:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Váltás „mozi” módba" +#~ msgid "Ok" +#~ msgstr "Ok" diff --git a/po/id/minetest.po b/po/id/minetest.po index e1507be4d..3b967ff8f 100644 --- a/po/id/minetest.po +++ b/po/id/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Indonesian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-09 12:14+0000\n" "Last-Translator: Muhammad Rifqi Priyo Susanto " "\n" @@ -23,6 +23,10 @@ msgstr "Bangkit kembali" msgid "You died" msgstr "Anda mati" +#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp +msgid "OK" +msgstr "" + #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" msgstr "Suatu galat terjadi pada suatu skrip Lua:" @@ -35,10 +39,6 @@ msgstr "Sebuah galat terjadi:" msgid "Main menu" msgstr "Menu utama" -#: builtin/fstk/ui.lua -msgid "Ok" -msgstr "Oke" - #: builtin/fstk/ui.lua msgid "Reconnect" msgstr "Sambung ulang" @@ -114,6 +114,10 @@ msgstr "" "Gagal menyalakan mod \"$1\" karena terdapat karakter terlarang. Hanya " "karakter [a-z0-9_] yang dibolehkan." +#: builtin/mainmenu/dlg_config_world.lua +msgid "Find More Mods" +msgstr "" + #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Mod:" @@ -159,17 +163,18 @@ msgstr "dinyalakan" msgid "All packages" msgstr "Semua paket" -#: builtin/mainmenu/dlg_contentstore.lua -msgid "Back" -msgstr "Kembali" - #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Kembali ke menu utama" #: builtin/mainmenu/dlg_contentstore.lua -msgid "Downloading and installing $1, please wait..." -msgstr "Mengunduh dan memasang $1, mohon tunggu..." +msgid "ContentDB is not available when Minetest was compiled without cURL" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#, fuzzy +msgid "Downloading..." +msgstr "Memuat..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" @@ -214,14 +219,56 @@ msgstr "Copot" msgid "Update" msgstr "Perbarui" +#: builtin/mainmenu/dlg_contentstore.lua +msgid "View" +msgstr "" + #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" msgstr "Dunia yang bernama \"$1\" telah ada" +#: builtin/mainmenu/dlg_create_world.lua +msgid "Additional terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Altitude chill" +msgstr "Dingin di ketinggian" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Altitude dry" +msgstr "Dingin di ketinggian" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Biome blending" +msgstr "Noise bioma" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Biomes" +msgstr "Noise bioma" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Caverns" +msgstr "Noise #1 gua besar" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Caves" +msgstr "Oktaf" + #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "Buat" +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Decorations" +msgstr "Perulangan" + #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" msgstr "Unduh suatu permainan, misalnya Minetest Game, dari minetest.net" @@ -230,25 +277,153 @@ msgstr "Unduh suatu permainan, misalnya Minetest Game, dari minetest.net" msgid "Download one from minetest.net" msgstr "Unduh satu dari minetest.net" +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Dungeons" +msgstr "Noise dungeon" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Flat terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Floating landmasses in the sky" +msgstr "Kepadatan gunung floatland" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Floatlands (experimental)" +msgstr "Ketinggian floatland" + #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" msgstr "Permainan" +#: builtin/mainmenu/dlg_create_world.lua +msgid "Generate non-fractal terrain: Oceans and underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Hills" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Humid rivers" +msgstr "Pengandar video" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Increases humidity around rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Lakes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Low humidity and high heat causes shallow or dry rivers" +msgstr "" + #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" msgstr "Pembuat peta" +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "Flag pembuat peta" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Mapgen-specific flags" +msgstr "Flag khusus pembuat peta v5" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Mountains" +msgstr "Noise gunung" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mud flow" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Network of tunnels and caves" +msgstr "" + #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" msgstr "Tiada permainan yang dipilih" +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces heat with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces humidity with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Rivers" +msgstr "Ukuran sungai" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Sea level rivers" +msgstr "" + #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Seed" msgstr "Seed" #: builtin/mainmenu/dlg_create_world.lua -msgid "Warning: The minimal development test is meant for developers." +msgid "Smooth transition between biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "" +"Structures appearing on the terrain (no effect on trees and jungle grass " +"created by v6)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Structures appearing on the terrain, typically trees and plants" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle, Tundra, Taiga" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Terrain surface erosion" +msgstr "Noise dasar medan" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Trees and jungle grass" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Vary river depth" +msgstr "Kedalaman sungai" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Very large caverns deep in the underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Warning: The Development Test is meant for developers." msgstr "Peringatan: Minimal development test ditujukan untuk pengembang." #: builtin/mainmenu/dlg_create_world.lua @@ -562,6 +737,10 @@ msgstr "Host Permainan" msgid "Host Server" msgstr "Host Server" +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" + #: builtin/mainmenu/tab_local.lua msgid "Name/Password" msgstr "Nama/Kata Sandi" @@ -1217,6 +1396,14 @@ msgstr "Volume Suara" msgid "Sound muted" msgstr "Suara dibisukan" +#: src/client/game.cpp +msgid "Sound system is disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Sound system is not supported on this build" +msgstr "" + #: src/client/game.cpp msgid "Sound unmuted" msgstr "Suara dibunyikan" @@ -1249,7 +1436,7 @@ msgstr "Rangka kawat ditampilkan" msgid "Zoom currently disabled by game or mod" msgstr "Zum sedang dilarang oleh permainan atau mod" -#: src/client/game.cpp src/gui/modalMenu.cpp +#: src/client/game.cpp msgid "ok" msgstr "oke" @@ -1855,6 +2042,11 @@ msgstr "Awan 3D" msgid "3D mode" msgstr "Mode 3D" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "3D mode parallax strength" +msgstr "Kekuatan normalmap" + #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." msgstr "Noise 3D yang mengatur gua besar." @@ -1867,6 +2059,14 @@ msgstr "" "Noise 3D yang mengatur struktur dan ketinggian gunung.\n" "Juga mengatur struktur dari medan gunung floatland." +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining structure of floatlands.\n" +"If altered from the default, the noise 'scale' (0.7 by default) may need\n" +"to be adjusted, as floatland tapering functions best when this noise has\n" +"a value range of approximately -2.0 to 2.0." +msgstr "" + #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." msgstr "Noise 3D yang mengatur struktur dari dinding ngarai sungai." @@ -1930,7 +2130,8 @@ msgid "ABM interval" msgstr "Selang waktu ABM" #: src/settings_translation_file.cpp -msgid "Absolute limit of emerge queues" +#, fuzzy +msgid "Absolute limit of queued blocks to emerge" msgstr "Batas mutlak antrean kemunculan (emerge queues)" #: src/settings_translation_file.cpp @@ -1979,6 +2180,16 @@ msgstr "" "Atur konfigurasi dpi ke layar Anda (selain X11/Android saja) misalnya untuk " "layar 4K." +#: src/settings_translation_file.cpp +#, c-format +msgid "" +"Adjusts the density of the floatland layer.\n" +"Increase value to increase density. Can be positive or negative.\n" +"Value = 0.0: 50% of volume is floatland.\n" +"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" +"to be sure) creates a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "Advanced" msgstr "Lanjutan" @@ -1997,10 +2208,6 @@ msgstr "" "asalnya. Ini hanya berpengaruh kepada cahaya siang dan cahaya\n" "buatan. Ini punya pengaruh kecil kepada cahaya malam alami." -#: src/settings_translation_file.cpp -msgid "Altitude chill" -msgstr "Dingin di ketinggian" - #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "Selalu terbang dan bergerak cepat" @@ -2270,10 +2477,20 @@ msgstr "" "- Simple: Satu dunia pemain tunggal, tanpa pilihan permainan atau paket\n" "tekstur. Cocok untuk layar kecil." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Chat font size" +msgstr "Ukuran fon" + #: src/settings_translation_file.cpp msgid "Chat key" msgstr "Tombol obrolan" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Chat log level" +msgstr "Tingkat log awakutu" + #: src/settings_translation_file.cpp msgid "Chat message count limit" msgstr "Batas jumlah pesan obrolan" @@ -2564,6 +2781,11 @@ msgstr "Hak-hak bawaan" msgid "Default report format" msgstr "Format laporan bawaan" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Default stack size" +msgstr "Permainan bawaan" + #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" @@ -2924,6 +3146,16 @@ msgstr "" "Masih tahap percobaan, dapat menyebabkan terlihatnya spasi antarblok\n" "saat diatur dengan angka yang lebih besar dari 0." +#: src/settings_translation_file.cpp +msgid "" +"Exponent of the floatland tapering. Alters the tapering behaviour.\n" +"Value = 1.0 creates a uniform, linear tapering.\n" +"Values > 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS (bingkai per detik) pada menu jeda" @@ -3041,6 +3273,41 @@ msgstr "Seed peta tetap" msgid "Fixed virtual joystick" msgstr "Joystick virtual tetap" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Kepadatan gunung floatland" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Y maksimum dungeon" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Y minimum dungeon" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Noise dasar floatland" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Pangkat gunung floatland" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Noise dasar floatland" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Ketinggian floatland" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Tombol terbang" @@ -3093,6 +3360,12 @@ msgstr "Ukuran fon cadangan bawaan dalam poin (pt)." msgid "Font size of the monospace font in point (pt)." msgstr "Ukuran fon monospace bawaan dalam poin (pt)." +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -3671,8 +3944,8 @@ msgid "" "deleting an older debug.txt.1 if it exists.\n" "debug.txt is only moved if this setting is positive." msgstr "" -"Jika ukuran berkas debug.txt melebihi nilai yang diberikan (dalam megabita)," -"\n" +"Jika ukuran berkas debug.txt melebihi nilai yang diberikan (dalam " +"megabita),\n" "berkas tersebut akan dipindah ke debug.txt.1 dan berkas debug.txt.1 lama\n" "akan dihapus jika ada.\n" "Berkas debug.txt hanya dipindah jika pengaturan ini dinyalakan." @@ -4724,14 +4997,6 @@ msgstr "Titik tinggi gradasi kurva cahaya" msgid "Light curve low gradient" msgstr "Titik rendah gradasi kurva cahaya" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Batas antrean kemunculan (emerge queue) pada diska" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Batas antrean kemunculan (emerge queue) untuk dibuat" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4807,6 +5072,11 @@ msgstr "Pengubah Blok Termuat" msgid "Lower Y limit of dungeons." msgstr "Batas bawah Y dungeon." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Batas bawah Y dungeon." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Skrip menu utama" @@ -4889,9 +5159,12 @@ msgstr "" "flag \"jungle\" diabaikan." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "Atribut pembuatan peta khusus untuk pembuat peta v7.\n" "\"ridges\" menyalakan sungai." @@ -4980,10 +5253,6 @@ msgstr "Flag khusus pembuat peta Valleys" msgid "Mapgen debug" msgstr "Awakutu pembuat peta" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Flag pembuat peta" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Nama pembuat peta" @@ -5055,17 +5324,19 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Jumlah maksimum blok yang dapat diantrekan untuk dimuat." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Jumlah maksimum blok yang akan diantrekan yang akan dihasilkan.\n" "Atur ke kosong untuk diatur secara otomatis." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Jumlah maksimum blok yang akan diantrekan yang akan dimuat dari berkas.\n" "Atur ke kosong untuk diatur secara otomatis." @@ -5162,6 +5433,10 @@ msgstr "Pesan hari ini yang ditampilkan ke pemain yang tersambung." msgid "Method used to highlight selected object." msgstr "Metode yang digunakan untuk menyorot objek yang dipilih." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Peta mini" @@ -5269,8 +5544,8 @@ msgid "" "When starting from the main menu, this is overridden." msgstr "" "Nama pemain.\n" -"Saat menjalankan server, klien yang tersambung dengan nama ini adalah admin." -"\n" +"Saat menjalankan server, klien yang tersambung dengan nama ini adalah " +"admin.\n" "Saat menjalankan dari menu utama, nilai ini ditimpa." #: src/settings_translation_file.cpp @@ -5331,11 +5606,9 @@ msgid "Number of emerge threads" msgstr "Jumlah utas kemunculan" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5358,8 +5631,8 @@ msgstr "" "PERINGATAN: Penambahan jumlah utas kemunculan mempercepat mesin pembuat\n" "peta, tetapi dapat merusak kinerja permainan dengan mengganggu proses lain,\n" "terutama dalam pemain tunggal dan/atau saat menjalankan kode Lua dalam\n" -"\"on_generated\". Untuk kebanyakan pengguna, pengaturan yang cocok adalah \"1" -"\"." +"\"on_generated\". Untuk kebanyakan pengguna, pengaturan yang cocok adalah " +"\"1\"." #: src/settings_translation_file.cpp msgid "" @@ -5431,10 +5704,6 @@ msgstr "Mode parallax occlusion" msgid "Parallax occlusion scale" msgstr "Skala parallax occlusion" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Kekuatan parallax occlusion" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5449,8 +5718,10 @@ msgstr "" "Fon ini akan dipakai dalam bahasa tertentu jika tidak didukung fon bawaan." #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Jalur untuk menyimpan tangkapan layar." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5491,6 +5762,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Jeda saat jendela hilang fokus" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Batas antrean kemunculan (emerge queue) untuk dibuat" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Fisika" @@ -5569,6 +5849,18 @@ msgstr "Tombol profiler" msgid "Profiling" msgstr "Profiling" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "Perbandingan gua besar yang punya cairan." @@ -6083,6 +6375,13 @@ msgstr "" "(tentunya, remote_media harus diakhiri dengan sebuah garis miring).\n" "File yang tidak ada akan diambil cara yang biasa." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6109,6 +6408,11 @@ msgstr "Noise ukuran teras gunung" msgid "Step mountain spread noise" msgstr "Noise persebaran teras gunung" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Kekuatan dari parallax." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Kekuatan normalmap yang dibuat." @@ -6123,10 +6427,6 @@ msgstr "" "Tiga parameter \"boost\" menentukan rentang kurva\n" "cahaya yang dikuatkan menurut kecerahannya." -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Kekuatan dari parallax." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Perketat pemeriksaan protokol" @@ -6135,6 +6435,20 @@ msgstr "Perketat pemeriksaan protokol" msgid "Strip color codes" msgstr "Buang kode warna" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "SQLite sinkron" @@ -6267,6 +6581,7 @@ msgstr "" "server Anda." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6274,7 +6589,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" "Jari-jari ruang di sekitar pemain yang menjadi blok aktif, dalam blok peta\n" "(16 nodus).\n" @@ -6467,6 +6782,11 @@ msgstr "Membongkar data server yang tak terpakai" msgid "Upper Y limit of dungeons." msgstr "Batas atas Y dungeon." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Batas atas Y dungeon." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Gunakan tampilan awan 3D daripada datar." @@ -6846,6 +7166,14 @@ msgstr "Batas atas Y untuk gua besar." msgid "Y-distance over which caverns expand to full size." msgstr "Jarak Y dari gua besar untuk meluas ke ukuran penuh." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Ketinggian Y dari permukaan medan rata-rata." @@ -6878,6 +7206,111 @@ msgstr "Batas cURL paralel" msgid "cURL timeout" msgstr "Waktu habis untuk cURL" +#~ msgid "Toggle Cinematic" +#~ msgstr "Mode sinema" + +#~ msgid "Select Package File:" +#~ msgstr "Pilih berkas paket:" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Batas atas Y untuk lava dalam gua besar." + +#~ msgid "Waving Water" +#~ msgstr "Air Berombak" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Apakah dungeon terkadang muncul dari medan." + +#~ msgid "Projecting dungeons" +#~ msgstr "Dungeon yang menonjol" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Ketinggian Y tempat bayangan floatland diperpanjang." + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Ketinggian Y dari titik tengah floatland dan permukaan danau." + +#~ msgid "Waving water" +#~ msgstr "Air berombak" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Variasi dari ketinggian bukit dan kedalaman danau pada medan halus " +#~ "floatland." + +#~ msgid "" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "" +#~ "Ketinggian maksimum secara umum, di atas dan di bawah titik tengah, dari " +#~ "gunung floatland." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Fon ini akan digunakan pada bahasa tertentu." + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Kekuatan penguatan tengah kurva cahaya." + +#~ msgid "Shadow limit" +#~ msgstr "Batas bayangan" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Jalur ke TrueTypeFont atau bitmap." + +#~ msgid "Lightness sharpness" +#~ msgstr "Kecuraman keterangan" + +#~ msgid "Lava depth" +#~ msgstr "Kedalaman lava" + +#~ msgid "IPv6 support." +#~ msgstr "Dukungan IPv6." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Keburaman bayangan fon (keopakan, dari 0 sampai 255)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Ketinggian gunung floatland" + +#~ msgid "Floatland base height noise" +#~ msgstr "Noise ketinggian dasar floatland" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Gunakan pemetaan suasana (tone mapping) filmis" + +#~ msgid "Enable VBO" +#~ msgstr "Gunakan VBO" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Mengatur daerah dari medan halus floatland.\n" +#~ "Floatland halus muncul saat noise > 0." + +#~ msgid "Darkness sharpness" +#~ msgstr "Kecuraman kegelapan" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Mengatur lebar terowongan, nilai lebih kecil terowongan semakin lebar." + +#~ msgid "" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "Atur kepadatan floatland berbentuk gunung.\n" +#~ "Merupakan pergeseran yang ditambahkan ke nilai noise \"mgv7_np_mountain\"." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Titik tengah penguatan tengah kurva cahaya." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "" +#~ "Ubah cara gunung floatland meramping di atas dan di bawah titik tengah." + #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " #~ "brighter.\n" @@ -6887,119 +7320,20 @@ msgstr "Waktu habis untuk cURL" #~ "Angka yang lebih tinggi lebih terang.\n" #~ "Pengaturan ini untuk klien saja dan diabaikan oleh peladen." -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Ubah cara gunung floatland meramping di atas dan di bawah titik tengah." +#~ msgid "Path to save screenshots at." +#~ msgstr "Jalur untuk menyimpan tangkapan layar." -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Titik tengah penguatan tengah kurva cahaya." +#~ msgid "Parallax occlusion strength" +#~ msgstr "Kekuatan parallax occlusion" -#~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "Atur kepadatan floatland berbentuk gunung.\n" -#~ "Merupakan pergeseran yang ditambahkan ke nilai noise \"mgv7_np_mountain\"." +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Batas antrean kemunculan (emerge queue) pada diska" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Mengatur lebar terowongan, nilai lebih kecil terowongan semakin lebar." +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Mengunduh dan memasang $1, mohon tunggu..." -#~ msgid "Darkness sharpness" -#~ msgstr "Kecuraman kegelapan" +#~ msgid "Back" +#~ msgstr "Kembali" -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Mengatur daerah dari medan halus floatland.\n" -#~ "Floatland halus muncul saat noise > 0." - -#~ msgid "Enable VBO" -#~ msgstr "Gunakan VBO" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Gunakan pemetaan suasana (tone mapping) filmis" - -#~ msgid "Floatland base height noise" -#~ msgstr "Noise ketinggian dasar floatland" - -#~ msgid "Floatland base noise" -#~ msgstr "Noise dasar floatland" - -#~ msgid "Floatland level" -#~ msgstr "Ketinggian floatland" - -#~ msgid "Floatland mountain density" -#~ msgstr "Kepadatan gunung floatland" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Pangkat gunung floatland" - -#~ msgid "Floatland mountain height" -#~ msgstr "Ketinggian gunung floatland" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Keburaman bayangan fon (keopakan, dari 0 sampai 255)." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "IPv6 support." -#~ msgstr "Dukungan IPv6." - -#~ msgid "Lava depth" -#~ msgstr "Kedalaman lava" - -#~ msgid "Lightness sharpness" -#~ msgstr "Kecuraman keterangan" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Jalur ke TrueTypeFont atau bitmap." - -#~ msgid "Shadow limit" -#~ msgstr "Batas bayangan" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Kekuatan penguatan tengah kurva cahaya." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Fon ini akan digunakan pada bahasa tertentu." - -#~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "" -#~ "Ketinggian maksimum secara umum, di atas dan di bawah titik tengah, dari " -#~ "gunung floatland." - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "" -#~ "Variasi dari ketinggian bukit dan kedalaman danau pada medan halus " -#~ "floatland." - -#~ msgid "Waving water" -#~ msgstr "Air berombak" - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Ketinggian Y dari titik tengah floatland dan permukaan danau." - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Ketinggian Y tempat bayangan floatland diperpanjang." - -#~ msgid "Projecting dungeons" -#~ msgstr "Dungeon yang menonjol" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Apakah dungeon terkadang muncul dari medan." - -#~ msgid "Waving Water" -#~ msgstr "Air Berombak" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Batas atas Y untuk lava dalam gua besar." - -#~ msgid "Select Package File:" -#~ msgstr "Pilih berkas paket:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Mode sinema" +#~ msgid "Ok" +#~ msgstr "Oke" diff --git a/po/it/minetest.po b/po/it/minetest.po index 8198840bc..26cca010b 100644 --- a/po/it/minetest.po +++ b/po/it/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Italian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-04-29 12:38+0000\n" "Last-Translator: Matteo Gheza \n" "Language-Team: Italian 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS nel menu di pausa" @@ -3079,6 +3311,41 @@ msgstr "Seme fisso della mappa" msgid "Fixed virtual joystick" msgstr "Joystick virtuale fisso" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Densità montuosa delle terre fluttuanti" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Y massimo dei sotterranei" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Y minimo dei sotterranei" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Rumore base delle terre fluttuanti" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Densità montuosa delle terre fluttuanti" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Rumore base delle terre fluttuanti" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Livello delle terre fluttuanti" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Tasto volo" @@ -3131,6 +3398,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4779,14 +5052,6 @@ msgstr "Aumento mediano della curva di luce" msgid "Light curve low gradient" msgstr "Centro dell'aumento mediano della curva di luce" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Limite di code emerge su disco" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Limite di code emerge da generare" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4866,6 +5131,11 @@ msgstr "Modificatori del blocco in caricamento" msgid "Lower Y limit of dungeons." msgstr "Limite inferiore Y dei sotterranei." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Limite inferiore Y dei sotterranei." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Script del menu principale" @@ -4956,9 +5226,12 @@ msgstr "" "e il valore \"jungles\" viene ignorato." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "Attributi di generazione della mappa specifici del generatore di mappe v7.\n" "\"ridges\" abilita i fiumi." @@ -5047,10 +5320,6 @@ msgstr "Valori specifici del generatore di mappe Valleys" msgid "Mapgen debug" msgstr "Debug del generatore mappa" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Valori del generatore mappa" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Nome del generatore mappa" @@ -5124,18 +5393,20 @@ msgstr "" "Numero massimo di blocchi che possono essere accodati per il caricamento." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Numero massimo di blocchi da accodarsi che devono essere generati.\n" "Lascia vuoto per fare in modo che venga scelto automaticamente un\n" "ammontare adeguato." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Numero massimo di blocchi da accodarsi che devono essere caricati da file.\n" "Lascia vuoto per fare in modo che venga scelto automaticamente un\n" @@ -5238,6 +5509,10 @@ msgstr "Messaggio del giorno mostrato ai giocatori che si connettono." msgid "Method used to highlight selected object." msgstr "Metodo usato per evidenziare l'oggetto scelto." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Minimappa" @@ -5411,11 +5686,9 @@ msgid "Number of emerge threads" msgstr "Numero di thread emerge" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5516,10 +5789,6 @@ msgstr "Modalità dell'occlusione di parallasse" msgid "Parallax occlusion scale" msgstr "Scala dell'occlusione di parallasse" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Intensità dell'occlusione di parallasse" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5530,8 +5799,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Percorso dove salvare le schermate." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5567,6 +5838,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Pausa alla perdita di fuoco della finestra" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Limite di code emerge da generare" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Fisica" @@ -5649,6 +5929,18 @@ msgstr "Tasto di scelta del generatore di profili" msgid "Profiling" msgstr "Generazione di profili" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -6181,6 +6473,13 @@ msgstr "" "cURL (ovviamente, remote_media dovrebbe finire con una barra).\n" "I file che non sono presenti saranno recuperati nel solito modo." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "" @@ -6207,6 +6506,11 @@ msgstr "Rumore della dimensione del passo montano" msgid "Step mountain spread noise" msgstr "Rumore della diffusione del passo montano" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Intensità della parallasse." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Intensità delle normalmap generate." @@ -6218,10 +6522,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Intensità della parallasse." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Controllo severo del protocollo" @@ -6230,6 +6530,20 @@ msgstr "Controllo severo del protocollo" msgid "Strip color codes" msgstr "Elimina i codici di colore" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "SQLite sincronizzato" @@ -6358,6 +6672,7 @@ msgstr "" "configurazione dei mod." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6365,7 +6680,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" "Il raggio del volume di blocchi attorno ciascun giocatore che è soggetto\n" "alle cose del blocco attivo, fissata in blocchi mappa (16 nodi).\n" @@ -6575,6 +6890,11 @@ msgstr "Scaricare i dati server inutilizzati" msgid "Upper Y limit of dungeons." msgstr "Livello Y superiore dei sotterranei." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Livello Y superiore dei sotterranei." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Usare l'aspetto 3D per le nuvole invece di quello piatto." @@ -6967,6 +7287,14 @@ msgstr "Y del limite superiore delle caverne grandi." msgid "Y-distance over which caverns expand to full size." msgstr "Distanza Y sopra cui le caverne si espandono a piena grandezza." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Livello Y della superficie media del terreno." @@ -6999,45 +7327,84 @@ msgstr "Limite parallelo cURL" msgid "cURL timeout" msgstr "Scadenza cURL" -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "Regola la codifica della gamma per le tabelle della luce. Numeri maggiori " -#~ "sono più chiari.\n" -#~ "Questa impostazione è solo per il client ed è ignorata dal server." +#~ msgid "Toggle Cinematic" +#~ msgstr "Scegli cinematica" -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Modifica il restringimento superiore e inferiore rispetto al punto " -#~ "mediano delle terre fluttuanti di tipo montagnoso." +#~ msgid "Select Package File:" +#~ msgstr "Seleziona pacchetto file:" -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Centro dell'aumento mediano della curva della luce." +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y del limite superiore della lava nelle caverne grandi." + +#~ msgid "Waving Water" +#~ msgstr "Acqua ondeggiante" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Se i sotterranei saltuariamente si protendono dal terreno." + +#~ msgid "Projecting dungeons" +#~ msgstr "Sotterranei protundenti" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Livello Y a cui si estendono le ombre delle terre fluttuanti." + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "" +#~ "Livello Y del punto medio delle terre fluttuanti e della superficie dei " +#~ "laghi." + +#~ msgid "Waving water" +#~ msgstr "Acqua ondeggiante" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Variazione dell'altezza delle colline, e della profondità dei laghi sul\n" +#~ "terreno uniforme delle terre fluttuanti." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Controlla la densità delle terre fluttuanti di tipo montuoso.\n" -#~ "È uno spostamento di rumore aggiunto al valore del rumore " -#~ "'mgv7_np_mountain'." +#~ "Altezza massima tipica, sopra e sotto il punto medio, delle montagne dei " +#~ "terreni fluttuanti." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Controlla la larghezza delle gallerie, un valore più piccolo crea " -#~ "gallerie più larghe." +#~ msgid "This font will be used for certain languages." +#~ msgstr "Questo carattere sarà usato per certe Lingue." -#~ msgid "Darkness sharpness" -#~ msgstr "Nitidezza dell'oscurità" +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Intensità dell'aumento mediano della curva di luce." -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Definisce aree di terreno uniforme nelle terre fluttuanti.\n" -#~ "Le terre fluttuanti uniformi avvengono quando il rumore è > 0." +#~ msgid "Shadow limit" +#~ msgstr "Limite dell'ombra" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Percorso del carattere TrueType o bitmap." + +#~ msgid "Lightness sharpness" +#~ msgstr "Nitidezza della luminosità" + +#~ msgid "Lava depth" +#~ msgstr "Profondità della lava" + +#~ msgid "IPv6 support." +#~ msgstr "Supporto IPv6." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Trasparenza ombreggiatura carattere (opacità, tra 0 e 255)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Altezza delle montagne delle terre fluttuanti" + +#~ msgid "Floatland base height noise" +#~ msgstr "Rumore base dell'altezza delle terre fluttuanti" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Attiva il filmic tone mapping" + +#~ msgid "Enable VBO" +#~ msgstr "Abilitare i VBO" #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -7048,93 +7415,60 @@ msgstr "Scadenza cURL" #~ "posizionare le caverne di liquido.\n" #~ "Limite verticale della lava nelle caverne grandi." -#~ msgid "Enable VBO" -#~ msgstr "Abilitare i VBO" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Definisce aree di terreno uniforme nelle terre fluttuanti.\n" +#~ "Le terre fluttuanti uniformi avvengono quando il rumore è > 0." -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Attiva il filmic tone mapping" +#~ msgid "Darkness sharpness" +#~ msgstr "Nitidezza dell'oscurità" -#~ msgid "Floatland base height noise" -#~ msgstr "Rumore base dell'altezza delle terre fluttuanti" - -#~ msgid "Floatland base noise" -#~ msgstr "Rumore base delle terre fluttuanti" - -#~ msgid "Floatland level" -#~ msgstr "Livello delle terre fluttuanti" - -#~ msgid "Floatland mountain density" -#~ msgstr "Densità montuosa delle terre fluttuanti" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Densità montuosa delle terre fluttuanti" - -#~ msgid "Floatland mountain height" -#~ msgstr "Altezza delle montagne delle terre fluttuanti" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Trasparenza ombreggiatura carattere (opacità, tra 0 e 255)." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "IPv6 support." -#~ msgstr "Supporto IPv6." - -#~ msgid "Lava depth" -#~ msgstr "Profondità della lava" - -#~ msgid "Lightness sharpness" -#~ msgstr "Nitidezza della luminosità" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Percorso del carattere TrueType o bitmap." - -#~ msgid "Shadow limit" -#~ msgstr "Limite dell'ombra" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Intensità dell'aumento mediano della curva di luce." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Questo carattere sarà usato per certe Lingue." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Controlla la larghezza delle gallerie, un valore più piccolo crea " +#~ "gallerie più larghe." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Altezza massima tipica, sopra e sotto il punto medio, delle montagne dei " -#~ "terreni fluttuanti." +#~ "Controlla la densità delle terre fluttuanti di tipo montuoso.\n" +#~ "È uno spostamento di rumore aggiunto al valore del rumore " +#~ "'mgv7_np_mountain'." -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Centro dell'aumento mediano della curva della luce." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." #~ msgstr "" -#~ "Variazione dell'altezza delle colline, e della profondità dei laghi sul\n" -#~ "terreno uniforme delle terre fluttuanti." +#~ "Modifica il restringimento superiore e inferiore rispetto al punto " +#~ "mediano delle terre fluttuanti di tipo montagnoso." -#~ msgid "Waving water" -#~ msgstr "Acqua ondeggiante" - -#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Livello Y del punto medio delle terre fluttuanti e della superficie dei " -#~ "laghi." +#~ "Regola la codifica della gamma per le tabelle della luce. Numeri maggiori " +#~ "sono più chiari.\n" +#~ "Questa impostazione è solo per il client ed è ignorata dal server." -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Livello Y a cui si estendono le ombre delle terre fluttuanti." +#~ msgid "Path to save screenshots at." +#~ msgstr "Percorso dove salvare le schermate." -#~ msgid "Projecting dungeons" -#~ msgstr "Sotterranei protundenti" +#~ msgid "Parallax occlusion strength" +#~ msgstr "Intensità dell'occlusione di parallasse" -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Se i sotterranei saltuariamente si protendono dal terreno." +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Limite di code emerge su disco" -#~ msgid "Waving Water" -#~ msgstr "Acqua ondeggiante" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Scaricamento e installazione di $1, attendere prego..." -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y del limite superiore della lava nelle caverne grandi." +#~ msgid "Back" +#~ msgstr "Indietro" -#~ msgid "Select Package File:" -#~ msgstr "Seleziona pacchetto file:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Scegli cinematica" +#~ msgid "Ok" +#~ msgstr "OK" diff --git a/po/ja/minetest.po b/po/ja/minetest.po index b335da6d5..65960c8e2 100644 --- a/po/ja/minetest.po +++ b/po/ja/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Japanese (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-04-05 05:27+0000\n" "Last-Translator: BreadW \n" "Language-Team: Japanese 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "ポーズメニューでのFPS" @@ -3029,6 +3261,41 @@ msgstr "固定マップシード値" msgid "Fixed virtual joystick" msgstr "バーチャルパッドを固定" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "浮遊大陸の山の密度" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "ダンジョンの最大Y" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "ダンジョンの最小Y" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "浮遊大陸の基準ノイズ" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "浮遊大陸の山指数" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "浮遊大陸の基準ノイズ" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "浮遊大陸の水位" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "飛行キー" @@ -3081,6 +3348,12 @@ msgstr "フォールバックフォントのフォント サイズ (pt)。" msgid "Font size of the monospace font in point (pt)." msgstr "固定幅フォントのフォントサイズ (pt)。" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4702,14 +4975,6 @@ msgstr "光度曲線の高勾配" msgid "Light curve low gradient" msgstr "光度曲線の低勾配" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "ディスク上に出現するキューの制限" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "生成されて出現するキューの制限" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4784,6 +5049,11 @@ msgstr "ローディングブロックモディファイヤー(LBM)" msgid "Lower Y limit of dungeons." msgstr "ダンジョンのY値の下限。" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "ダンジョンのY値の下限。" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "メインメニュースクリプト" @@ -4864,9 +5134,12 @@ msgstr "" "'jungles' フラグは無視されます。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "マップジェネレータ v7 に固有のマップ生成属性。\n" "'ridges' は川ができるようにします。" @@ -4955,10 +5228,6 @@ msgstr "マップジェネレータ Valleys 固有のフラグ" msgid "Mapgen debug" msgstr "マップジェネレータのデバッグ" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "マップジェネレータフラグ" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "マップジェネレータ名" @@ -5028,17 +5297,19 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "読み込みのためにキューに入れることができる最大ブロック数。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "生成されるキューに入れる最大ブロック数。\n" "適切な量を自動的に選択するには、空白を設定します。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "ファイルから読み込まれるキューに入れる最大ブロック数。\n" "適切な量を自動的に選択するには、空白を設定します。" @@ -5133,6 +5404,10 @@ msgstr "接続中のプレイヤーに表示されるその日のメッセージ msgid "Method used to highlight selected object." msgstr "選択したオブジェクトを強調表示するために使用される方法。" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "ミニマップ" @@ -5302,11 +5577,9 @@ msgid "Number of emerge threads" msgstr "出現するスレッド数" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5401,10 +5674,6 @@ msgstr "視差遮蔽モード" msgid "Parallax occlusion scale" msgstr "視差遮蔽スケール" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "視差遮蔽強度" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5422,8 +5691,10 @@ msgstr "" "ときに使用されます。" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "スクリーンショットを保存するパス。" +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5471,6 +5742,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "ウィンドウフォーカス喪失時に一時停止" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "生成されて出現するキューの制限" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "物理" @@ -5547,6 +5827,18 @@ msgstr "観測記録表示切替キー" msgid "Profiling" msgstr "プロファイリング" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "大きな洞窟の液体を含む割合です。" @@ -6057,6 +6349,13 @@ msgstr "" "あるべきです (明らかに、remote_media はスラッシュで終わるべきです)。\n" "存在しないファイルは通常の方法で取得されます。" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6083,6 +6382,11 @@ msgstr "ステップマウンテンの大きさノイズ" msgid "Step mountain spread noise" msgstr "ステップマウンテンの広がりノイズ" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "視差の強さです。" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "生成された法線マップの強さです。" @@ -6097,10 +6401,6 @@ msgstr "" "3つの「ブースト」パラメーターは、明るさをブーストする\n" "光度曲線の範囲を定義します。" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "視差の強さです。" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "厳密なプロトコルチェック" @@ -6109,6 +6409,20 @@ msgstr "厳密なプロトコルチェック" msgid "Strip color codes" msgstr "色コードを取り除く" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "SQLite同期" @@ -6239,6 +6553,7 @@ msgstr "" "してください。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6246,7 +6561,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" "アクティブブロックの対象となる各プレイヤーの周囲のブロックの量の半径、\n" "マップブロック(16ノード)で定めます。\n" @@ -6432,6 +6747,11 @@ msgstr "未使用のサーバデータをアンロード" msgid "Upper Y limit of dungeons." msgstr "ダンジョンのY値の上限。" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "ダンジョンのY値の上限。" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "平らではなく立体な雲を使用します。" @@ -6816,6 +7136,14 @@ msgstr "大きな洞窟のY高さ上限。" msgid "Y-distance over which caverns expand to full size." msgstr "大きな洞窟が最大サイズに拡大するYの距離。" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "平均地形面のYレベル。" @@ -6848,39 +7176,78 @@ msgstr "cURL並行処理制限" msgid "cURL timeout" msgstr "cURLタイムアウト" -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "ライトテーブルのガンマ補正を調整します。数値が大きいほど明るくなります。\n" -#~ "この設定はクライアント専用であり、サーバでは無視されます。" +#~ msgid "Toggle Cinematic" +#~ msgstr "映画風モード切替" -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "山型浮遊大陸が中間点の上下でどのように先細くなるかを変更します。" +#~ msgid "Select Package File:" +#~ msgstr "パッケージファイルを選択:" -#~ msgid "Center of light curve mid-boost." -#~ msgstr "光度曲線ミッドブーストの中心。" +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "大きな洞窟内の溶岩のY高さ上限。" + +#~ msgid "Waving Water" +#~ msgstr "揺れる水" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "ダンジョンが時折地形から突出するかどうか。" + +#~ msgid "Projecting dungeons" +#~ msgstr "突出するダンジョン" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "浮遊大陸の影が広がるYレベル。" + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "浮遊大陸の中間点と湖面のYレベル。" + +#~ msgid "Waving water" +#~ msgstr "揺れる水" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "浮遊大陸の滑らかな地形における丘の高さと湖の深さの変動。" #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "山型浮遊大陸の密度を制御します。\n" -#~ "ノイズのオフセットは、'mgv7_np_mountain' ノイズ値に追加されます。" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "浮遊大陸の山の中間点の上と下の典型的な最大高さ。" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "トンネルの幅を制御、小さい方の値ほど広いトンネルを生成します。" +#~ msgid "This font will be used for certain languages." +#~ msgstr "このフォントは特定の言語で使用されます。" -#~ msgid "Darkness sharpness" -#~ msgstr "暗さの鋭さ" +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "光度曲線ミッドブーストの強さ。" -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "浮遊大陸の滑らかな地形の地域を定義します。\n" -#~ "ノイズが 0 より大きいとき、滑らかな浮遊大陸になります。" +#~ msgid "Shadow limit" +#~ msgstr "影の制限" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "TrueTypeフォントまたはビットマップへのパス。" + +#~ msgid "Lightness sharpness" +#~ msgstr "明るさの鋭さ" + +#~ msgid "Lava depth" +#~ msgstr "溶岩の深さ" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 サポート。" + +#~ msgid "Gamma" +#~ msgstr "ガンマ" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "フォントの影の透過 (不透明、0~255の間)。" + +#~ msgid "Floatland mountain height" +#~ msgstr "浮遊大陸の山の高さ" + +#~ msgid "Floatland base height noise" +#~ msgstr "浮遊大陸の基準高さノイズ" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "フィルム調トーンマッピング有効にする" + +#~ msgid "Enable VBO" +#~ msgstr "VBOを有効化" #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -6891,87 +7258,54 @@ msgstr "cURLタイムアウト" #~ "す。\n" #~ "大きな洞窟内の溶岩のY高さ上限。" -#~ msgid "Enable VBO" -#~ msgstr "VBOを有効化" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "浮遊大陸の滑らかな地形の地域を定義します。\n" +#~ "ノイズが 0 より大きいとき、滑らかな浮遊大陸になります。" -#~ msgid "Enables filmic tone mapping" -#~ msgstr "フィルム調トーンマッピング有効にする" +#~ msgid "Darkness sharpness" +#~ msgstr "暗さの鋭さ" -#~ msgid "Floatland base height noise" -#~ msgstr "浮遊大陸の基準高さノイズ" - -#~ msgid "Floatland base noise" -#~ msgstr "浮遊大陸の基準ノイズ" - -#~ msgid "Floatland level" -#~ msgstr "浮遊大陸の水位" - -#~ msgid "Floatland mountain density" -#~ msgstr "浮遊大陸の山の密度" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "浮遊大陸の山指数" - -#~ msgid "Floatland mountain height" -#~ msgstr "浮遊大陸の山の高さ" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "フォントの影の透過 (不透明、0~255の間)。" - -#~ msgid "Gamma" -#~ msgstr "ガンマ" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 サポート。" - -#~ msgid "Lava depth" -#~ msgstr "溶岩の深さ" - -#~ msgid "Lightness sharpness" -#~ msgstr "明るさの鋭さ" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "TrueTypeフォントまたはビットマップへのパス。" - -#~ msgid "Shadow limit" -#~ msgstr "影の制限" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "光度曲線ミッドブーストの強さ。" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "このフォントは特定の言語で使用されます。" +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "トンネルの幅を制御、小さい方の値ほど広いトンネルを生成します。" #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "浮遊大陸の山の中間点の上と下の典型的な最大高さ。" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "山型浮遊大陸の密度を制御します。\n" +#~ "ノイズのオフセットは、'mgv7_np_mountain' ノイズ値に追加されます。" -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "浮遊大陸の滑らかな地形における丘の高さと湖の深さの変動。" +#~ msgid "Center of light curve mid-boost." +#~ msgstr "光度曲線ミッドブーストの中心。" -#~ msgid "Waving water" -#~ msgstr "揺れる水" +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "山型浮遊大陸が中間点の上下でどのように先細くなるかを変更します。" -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "浮遊大陸の中間点と湖面のYレベル。" +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." +#~ msgstr "" +#~ "ライトテーブルのガンマ補正を調整します。数値が大きいほど明るくなります。\n" +#~ "この設定はクライアント専用であり、サーバでは無視されます。" -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "浮遊大陸の影が広がるYレベル。" +#~ msgid "Path to save screenshots at." +#~ msgstr "スクリーンショットを保存するパス。" -#~ msgid "Projecting dungeons" -#~ msgstr "突出するダンジョン" +#~ msgid "Parallax occlusion strength" +#~ msgstr "視差遮蔽強度" -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "ダンジョンが時折地形から突出するかどうか。" +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "ディスク上に出現するキューの制限" -#~ msgid "Waving Water" -#~ msgstr "揺れる水" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "$1をインストールしています、お待ちください..." -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "大きな洞窟内の溶岩のY高さ上限。" +#~ msgid "Back" +#~ msgstr "戻る" -#~ msgid "Select Package File:" -#~ msgstr "パッケージファイルを選択:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "映画風モード切替" +#~ msgid "Ok" +#~ msgstr "決定" diff --git a/po/ja_KS/minetest.po b/po/ja_KS/minetest.po index e77b335a7..2bb9891ae 100644 --- a/po/ja_KS/minetest.po +++ b/po/ja_KS/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Japanese (Kansai) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Japanese (Kansai) 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2845,6 +3055,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2897,6 +3135,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4193,14 +4437,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4264,6 +4500,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4331,7 +4571,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4418,10 +4660,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4490,13 +4728,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4580,6 +4818,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4739,9 +4981,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4817,10 +5056,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4831,7 +5066,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4864,6 +5101,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -4932,6 +5177,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5369,6 +5626,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5392,6 +5656,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5403,10 +5671,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5415,6 +5679,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5529,7 +5807,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5681,6 +5959,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6000,6 +6282,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" diff --git a/po/jbo/minetest.po b/po/jbo/minetest.po index eea36c7fb..016dd43ed 100644 --- a/po/jbo/minetest.po +++ b/po/jbo/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Lojban (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-03-15 18:36+0000\n" "Last-Translator: Robin Townsend \n" "Language-Team: Lojban 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2953,6 +3165,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -3005,6 +3245,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4305,14 +4551,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4376,6 +4614,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Main menu script" @@ -4445,7 +4687,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4532,10 +4776,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4604,13 +4844,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4694,6 +4934,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4855,9 +5099,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4933,10 +5174,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4947,7 +5184,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4980,6 +5219,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -5049,6 +5296,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5494,6 +5753,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5517,6 +5783,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5528,10 +5798,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5540,6 +5806,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5654,7 +5934,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5807,6 +6087,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6134,6 +6418,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6169,3 +6461,12 @@ msgstr "" #, fuzzy #~ msgid "Enable VBO" #~ msgstr "selpli" + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr ".i ca'o kibycpa la'o zoi. $1 .zoi je cu samtcise'a ri .i ko denpa" + +#~ msgid "Back" +#~ msgstr "xruti" + +#~ msgid "Ok" +#~ msgstr "je'e" diff --git a/po/kk/minetest.po b/po/kk/minetest.po index baaade68c..12c598d1c 100644 --- a/po/kk/minetest.po +++ b/po/kk/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Kazakh (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-13 21:08+0000\n" "Last-Translator: Fontan 030 \n" "Language-Team: Kazakh 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2845,6 +3055,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2897,6 +3135,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4193,14 +4437,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4264,6 +4500,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4331,7 +4571,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4418,10 +4660,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4490,13 +4728,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4580,6 +4818,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4739,9 +4981,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4817,10 +5056,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4831,7 +5066,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4864,6 +5101,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Физика" @@ -4932,6 +5177,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5369,6 +5626,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5392,6 +5656,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5403,10 +5671,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5415,6 +5679,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5529,7 +5807,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5681,6 +5959,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6000,6 +6282,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" diff --git a/po/kn/minetest.po b/po/kn/minetest.po index cf3d15ad7..91fc52c2a 100644 --- a/po/kn/minetest.po +++ b/po/kn/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Kannada (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2019-11-10 15:04+0000\n" "Last-Translator: Krock \n" "Language-Team: Kannada 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2858,6 +3069,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2910,6 +3149,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4206,14 +4451,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4277,6 +4514,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4344,7 +4585,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4431,10 +4674,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4503,13 +4742,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4593,6 +4832,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4752,9 +4995,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4830,10 +5070,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4844,7 +5080,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4877,6 +5115,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -4945,6 +5191,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5382,6 +5640,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5405,6 +5670,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5416,10 +5685,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5428,6 +5693,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5542,7 +5821,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5694,6 +5973,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6013,6 +6296,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6044,3 +6335,12 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL timeout" msgstr "" + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "$1 ಡೌನ್ಲೋಡ್ ಮತ್ತು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲಾಗುತ್ತಿದೆ, ದಯವಿಟ್ಟು ನಿರೀಕ್ಷಿಸಿ..." + +#~ msgid "Back" +#~ msgstr "ಹಿಂದೆ" + +#~ msgid "Ok" +#~ msgstr "ಸರಿ" diff --git a/po/ko/minetest.po b/po/ko/minetest.po index 1887912cb..c28e410a4 100644 --- a/po/ko/minetest.po +++ b/po/ko/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Korean (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: Korean 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "일시정지 메뉴에서 FPS" @@ -3059,6 +3287,41 @@ msgstr "수정된 맵 시드" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Floatland의 산 밀집도" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Floatland의 산 높이" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Floatland의 산 높이" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Floatland의 높이" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Floatland의 산 밀집도" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Floatland의 산 밀집도" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Floatland의 높이" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "비행 키" @@ -3111,6 +3374,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4689,14 +4958,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp #, fuzzy msgid "" @@ -4762,6 +5023,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "주 메뉴 스크립트" @@ -4830,7 +5095,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4925,10 +5192,6 @@ msgstr "" msgid "Mapgen debug" msgstr "맵젠 디버그" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Mapgen 이름" @@ -4997,13 +5260,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -5094,6 +5357,10 @@ msgstr "연결하는 플레이어에게 보여지는 메시지." msgid "Method used to highlight selected object." msgstr "선택한 개체를 강조 표시 하는 데 사용 하는 방법입니다." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "미니맵" @@ -5261,9 +5528,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5342,11 +5606,6 @@ msgstr "시차 교합 모드" msgid "Parallax occlusion scale" msgstr "시차 교합 규모" -#: src/settings_translation_file.cpp -#, fuzzy -msgid "Parallax occlusion strength" -msgstr "시차 교합 강도" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5357,8 +5616,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "스크린샷 저장 경로입니다." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5391,6 +5652,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "물리학" @@ -5471,6 +5740,18 @@ msgstr "프로파일러 토글 키" msgid "Profiling" msgstr "프로 파일링" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5977,6 +6258,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6001,6 +6289,11 @@ msgstr "지형 높이" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "자동으로 생성되는 노멀맵의 강도." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "자동으로 생성되는 노멀맵의 강도." @@ -6012,10 +6305,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "엄격한 프로토콜 검사" @@ -6024,6 +6313,20 @@ msgstr "엄격한 프로토콜 검사" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -6147,7 +6450,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6315,6 +6618,10 @@ msgstr "사용하지 않은 서버 데이터 삭제" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "평평하게 보는 대신에 3D 구름 효과를 사용합니다." @@ -6673,6 +6980,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6705,53 +7020,57 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "터널 너비를 조절, 작은 수치는 넓은 터널을 만듭니다." - -#~ msgid "Enable VBO" -#~ msgstr "VBO 적용" - -#~ msgid "Floatland level" -#~ msgstr "Floatland의 높이" - -#~ msgid "Floatland mountain density" -#~ msgstr "Floatland의 산 밀집도" - -#, fuzzy -#~ msgid "Floatland mountain exponent" -#~ msgstr "Floatland의 산 밀집도" - -#~ msgid "Floatland mountain height" -#~ msgstr "Floatland의 산 높이" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "글꼴 그림자 투명도 (불투명 함, 0과 255 사이)." - -#~ msgid "Gamma" -#~ msgstr "감마" - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "큰 동굴 깊이" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "TrueTypeFont 또는 비트맵의 경로입니다." - -#~ msgid "Shadow limit" -#~ msgstr "그림자 제한" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "이 글꼴은 특정 언어에 사용 됩니다." - -#~ msgid "Waving water" -#~ msgstr "물결 효과" - -#~ msgid "Waving Water" -#~ msgstr "물결 효과" +#~ msgid "Toggle Cinematic" +#~ msgstr "시네마틱 스위치" #, fuzzy #~ msgid "Select Package File:" #~ msgstr "선택한 모드 파일:" -#~ msgid "Toggle Cinematic" -#~ msgstr "시네마틱 스위치" +#~ msgid "Waving Water" +#~ msgstr "물결 효과" + +#~ msgid "Waving water" +#~ msgstr "물결 효과" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "이 글꼴은 특정 언어에 사용 됩니다." + +#~ msgid "Shadow limit" +#~ msgstr "그림자 제한" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "TrueTypeFont 또는 비트맵의 경로입니다." + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "큰 동굴 깊이" + +#~ msgid "Gamma" +#~ msgstr "감마" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "글꼴 그림자 투명도 (불투명 함, 0과 255 사이)." + +#~ msgid "Enable VBO" +#~ msgstr "VBO 적용" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "터널 너비를 조절, 작은 수치는 넓은 터널을 만듭니다." + +#~ msgid "Path to save screenshots at." +#~ msgstr "스크린샷 저장 경로입니다." + +#, fuzzy +#~ msgid "Parallax occlusion strength" +#~ msgstr "시차 교합 강도" + +#, fuzzy +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "$1 를(을) 다운로드중입니다. 기다려주세요..." + +#~ msgid "Back" +#~ msgstr "뒤로" + +#~ msgid "Ok" +#~ msgstr "확인" diff --git a/po/ky/minetest.po b/po/ky/minetest.po index 98ec32412..1d4de9d90 100644 --- a/po/ky/minetest.po +++ b/po/ky/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Kyrgyz (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2019-11-10 15:04+0000\n" "Last-Translator: Krock \n" "Language-Team: Kyrgyz 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2998,6 +3211,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -3050,6 +3291,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4354,14 +4601,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4425,6 +4664,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Main menu script" @@ -4494,7 +4737,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4581,10 +4826,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4653,13 +4894,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4744,6 +4985,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4905,9 +5150,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4983,10 +5225,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4997,7 +5235,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -5030,6 +5270,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -5099,6 +5347,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5550,6 +5810,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5573,6 +5840,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5584,10 +5855,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5596,6 +5863,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5710,7 +5991,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5863,6 +6144,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6189,6 +6474,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6222,17 +6515,20 @@ msgid "cURL timeout" msgstr "" #, fuzzy -#~ msgid "Enable VBO" -#~ msgstr "Баарын күйгүзүү" - -#, fuzzy -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Убалды күйгүзүү" +#~ msgid "Toggle Cinematic" +#~ msgstr "Тез басууга которуу" #, fuzzy #~ msgid "Select Package File:" #~ msgstr "Дүйнөнү тандаңыз:" #, fuzzy -#~ msgid "Toggle Cinematic" -#~ msgstr "Тез басууга которуу" +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Убалды күйгүзүү" + +#, fuzzy +#~ msgid "Enable VBO" +#~ msgstr "Баарын күйгүзүү" + +#~ msgid "Back" +#~ msgstr "Артка" diff --git a/po/lo/minetest.po b/po/lo/minetest.po index 8eb422943..731a7957d 100644 --- a/po/lo/minetest.po +++ b/po/lo/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Lao (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Lao 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2845,6 +3055,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2897,6 +3135,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4193,14 +4437,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4264,6 +4500,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4331,7 +4571,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4418,10 +4660,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4490,13 +4728,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4580,6 +4818,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4739,9 +4981,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4817,10 +5056,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4831,7 +5066,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4864,6 +5101,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -4932,6 +5177,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5369,6 +5626,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5392,6 +5656,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5403,10 +5671,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5415,6 +5679,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5529,7 +5807,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5681,6 +5959,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6000,6 +6282,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" diff --git a/po/lt/minetest.po b/po/lt/minetest.po index 60d842e28..c4c658629 100644 --- a/po/lt/minetest.po +++ b/po/lt/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Lithuanian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-05-10 12:32+0000\n" "Last-Translator: restcoser \n" "Language-Team: Lithuanian 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -3018,6 +3234,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -3070,6 +3314,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4375,14 +4625,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4446,6 +4688,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Main menu script" @@ -4515,7 +4761,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4611,10 +4859,6 @@ msgstr "Žemėlapių generavimas" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4683,13 +4927,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4774,6 +5018,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4934,9 +5182,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5013,10 +5258,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "Paralaksinė okliuzija" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5027,7 +5268,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -5060,6 +5303,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -5129,6 +5380,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5581,6 +5844,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5604,6 +5874,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5615,10 +5889,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5627,6 +5897,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5741,7 +6025,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5893,6 +6177,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6217,6 +6505,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6249,17 +6545,27 @@ msgstr "" msgid "cURL timeout" msgstr "" +#~ msgid "Toggle Cinematic" +#~ msgstr "Įjungti kinematografinį" + #, fuzzy -#~ msgid "Enable VBO" -#~ msgstr "Įjungti papildinį" +#~ msgid "Select Package File:" +#~ msgstr "Pasirinkite papildinio failą:" #, fuzzy #~ msgid "Enables filmic tone mapping" #~ msgstr "Leisti sužeidimus" #, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Pasirinkite papildinio failą:" +#~ msgid "Enable VBO" +#~ msgstr "Įjungti papildinį" -#~ msgid "Toggle Cinematic" -#~ msgstr "Įjungti kinematografinį" +#, fuzzy +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Atsiunčiama $1, prašome palaukti..." + +#~ msgid "Back" +#~ msgstr "Atgal" + +#~ msgid "Ok" +#~ msgstr "Gerai" diff --git a/po/lv/minetest.po b/po/lv/minetest.po index 5fdacd659..5e63284a3 100644 --- a/po/lv/minetest.po +++ b/po/lv/minetest.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-04 16:41+0000\n" "Last-Translator: Uko Koknevics \n" "Language-Team: Latvian "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "absvalue" +msgstr "absolūtā vērtība" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options @@ -367,89 +593,21 @@ msgstr "noklusējuma" msgid "eased" msgstr "atvieglots" -#. ~ "absvalue" is a noise parameter flag. -#. It is short for "absolute value". -#. It can be enabled in noise settings in -#. main menu -> "All Settings". -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "absvalue" -msgstr "absolūtā vērtība" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "X" -msgstr "X" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Y" -msgstr "Y" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Z" -msgstr "Z" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "(No description of setting given)" -msgstr "(Nav iestatījuma apraksta)" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Please enter a valid integer." -msgstr "Lūdzu ievadiet derīgu veselu skaitli." - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "The value must be at least $1." -msgstr "Vērtībai jābūt vismaz $1." - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "The value must not be larger than $1." -msgstr "Vērtībai jābūt ne lielākai par $1." - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Please enter a valid number." -msgstr "Lūdzu ievadiet derīgu skaitli." - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Select directory" -msgstr "Izvēlēties mapi" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Select file" -msgstr "Izvēlēties failu" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "< Back to Settings page" -msgstr "< Atpakaļ uz Iestatījumu lapu" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Edit" -msgstr "Izmainīt" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Restore Default" -msgstr "Atiestatīt uz noklusējumu" - -#: builtin/mainmenu/dlg_settings_advanced.lua -msgid "Show technical names" -msgstr "Rādīt tehniskos nosaukumus" - #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" msgstr "$1 (Iespējots)" #: builtin/mainmenu/pkgmgr.lua -msgid "Unable to install a $1 as a texture pack" -msgstr "Neizdevās ieinstalēt $1 kā tekstūru paku" +msgid "$1 mods" +msgstr "$1 modi" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" msgstr "Neizdevās instalēt $1 uz $2" #: builtin/mainmenu/pkgmgr.lua -msgid "Unable to find a valid mod or modpack" -msgstr "Neizdevās atrast derīgu modu vai modu komplektu" - -#: builtin/mainmenu/pkgmgr.lua -msgid "Unable to install a modpack as a $1" -msgstr "Neizdevās instalēt modu komplektu kā $1" +msgid "Install Mod: Unable to find real mod name for: $1" +msgstr "Moda instalācija: Neizdevās atrast īsto moda nosaukumu priekš “$1”" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" @@ -458,36 +616,56 @@ msgstr "" "komplekta “$1”" #: builtin/mainmenu/pkgmgr.lua -msgid "Unable to install a mod as a $1" -msgstr "Neizdevās instalēt modu kā $1" - -#: builtin/mainmenu/pkgmgr.lua -msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "Moda instalācija: Neizdevās atrast īsto moda nosaukumu priekš “$1”" - -#: builtin/mainmenu/pkgmgr.lua -msgid "Unable to install a game as a $1" -msgstr "Neizdevās instalēt spēli kā $1" +msgid "Install: Unsupported file type \"$1\" or broken archive" +msgstr "Instalācija: Neatbalstīts faila tips “$1” vai arī sabojāts arhīvs" #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" msgstr "Instalācija: fails: “$1”" #: builtin/mainmenu/pkgmgr.lua -msgid "Install: Unsupported file type \"$1\" or broken archive" -msgstr "Instalācija: Neatbalstīts faila tips “$1” vai arī sabojāts arhīvs" +msgid "Unable to find a valid mod or modpack" +msgstr "Neizdevās atrast derīgu modu vai modu komplektu" #: builtin/mainmenu/pkgmgr.lua -msgid "$1 mods" -msgstr "$1 modi" +msgid "Unable to install a $1 as a texture pack" +msgstr "Neizdevās ieinstalēt $1 kā tekstūru paku" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a game as a $1" +msgstr "Neizdevās instalēt spēli kā $1" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a mod as a $1" +msgstr "Neizdevās instalēt modu kā $1" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a modpack as a $1" +msgstr "Neizdevās instalēt modu komplektu kā $1" + +#: builtin/mainmenu/tab_content.lua +msgid "Browse online content" +msgstr "Pārlūkot tiešsaistes saturu" + +#: builtin/mainmenu/tab_content.lua +msgid "Content" +msgstr "Saturs" + +#: builtin/mainmenu/tab_content.lua +msgid "Disable Texture Pack" +msgstr "Atspējot tekstūru komplektu" + +#: builtin/mainmenu/tab_content.lua +msgid "Information:" +msgstr "Informācija:" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" msgstr "Instalētie papildinājumi:" #: builtin/mainmenu/tab_content.lua -msgid "Browse online content" -msgstr "Pārlūkot tiešsaistes saturu" +msgid "No dependencies." +msgstr "Nav atkarību." #: builtin/mainmenu/tab_content.lua msgid "No package description available" @@ -497,62 +675,46 @@ msgstr "Nav atrasts papildinājuma apraksts" msgid "Rename" msgstr "Pārsaukt" -#: builtin/mainmenu/tab_content.lua -msgid "No dependencies." -msgstr "Nav atkarību." - -#: builtin/mainmenu/tab_content.lua -msgid "Disable Texture Pack" -msgstr "Atspējot tekstūru komplektu" - -#: builtin/mainmenu/tab_content.lua -msgid "Use Texture Pack" -msgstr "Iespējot tekstūru komplektu" - -#: builtin/mainmenu/tab_content.lua -msgid "Information:" -msgstr "Informācija:" - #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" msgstr "Atinstalēt papildinājumu" #: builtin/mainmenu/tab_content.lua -msgid "Content" -msgstr "Saturs" - -#: builtin/mainmenu/tab_credits.lua -msgid "Credits" -msgstr "Pateicības" - -#: builtin/mainmenu/tab_credits.lua -msgid "Core Developers" -msgstr "Pamata izstrādātāji" +msgid "Use Texture Pack" +msgstr "Iespējot tekstūru komplektu" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" msgstr "Aktīvie dalībnieki" #: builtin/mainmenu/tab_credits.lua -msgid "Previous Core Developers" -msgstr "Bijušie pamata izstrādātāji" +msgid "Core Developers" +msgstr "Pamata izstrādātāji" + +#: builtin/mainmenu/tab_credits.lua +msgid "Credits" +msgstr "Pateicības" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" msgstr "Bijušie dalībnieki" +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Core Developers" +msgstr "Bijušie pamata izstrādātāji" + +#: builtin/mainmenu/tab_local.lua +msgid "Announce Server" +msgstr "Paziņot par serveri" + +#: builtin/mainmenu/tab_local.lua +msgid "Bind Address" +msgstr "Piesaistes adrese" + #: builtin/mainmenu/tab_local.lua msgid "Configure" msgstr "Iestatīt" -#: builtin/mainmenu/tab_local.lua -msgid "New" -msgstr "Jauns" - -#: builtin/mainmenu/tab_local.lua -msgid "Select World:" -msgstr "Izvēlieties pasauli:" - #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative Mode" msgstr "Radošais režīms" @@ -561,41 +723,45 @@ msgstr "Radošais režīms" msgid "Enable Damage" msgstr "Iespējot bojājumus" -#: builtin/mainmenu/tab_local.lua -msgid "Host Server" -msgstr "Palaist serveri" - #: builtin/mainmenu/tab_local.lua msgid "Host Game" msgstr "Spēlēt (kā serveris)" #: builtin/mainmenu/tab_local.lua -msgid "Announce Server" -msgstr "Paziņot par serveri" +msgid "Host Server" +msgstr "Palaist serveri" + +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" msgstr "Vārds/Parole" #: builtin/mainmenu/tab_local.lua -msgid "Bind Address" -msgstr "Piesaistes adrese" +msgid "New" +msgstr "Jauns" #: builtin/mainmenu/tab_local.lua -msgid "Port" -msgstr "Ports" - -#: builtin/mainmenu/tab_local.lua -msgid "Server Port" -msgstr "Servera ports" +msgid "No world created or selected!" +msgstr "Pasaule nav ne izveidota, ne izvēlēta!" #: builtin/mainmenu/tab_local.lua msgid "Play Game" msgstr "Spēlēt" #: builtin/mainmenu/tab_local.lua -msgid "No world created or selected!" -msgstr "Pasaule nav ne izveidota, ne izvēlēta!" +msgid "Port" +msgstr "Ports" + +#: builtin/mainmenu/tab_local.lua +msgid "Select World:" +msgstr "Izvēlieties pasauli:" + +#: builtin/mainmenu/tab_local.lua +msgid "Server Port" +msgstr "Servera ports" #: builtin/mainmenu/tab_local.lua msgid "Start Game" @@ -605,26 +771,10 @@ msgstr "Sākt spēli" msgid "Address / Port" msgstr "Adrese / Ports" -#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua -msgid "Name / Password" -msgstr "Vārds / Parole" - #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" msgstr "Pieslēgties" -#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua -msgid "Del. Favorite" -msgstr "Izdzēst no izlases" - -#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua -msgid "Favorite" -msgstr "Pievienot izlasei" - -#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua -msgid "Ping" -msgstr "Pings" - #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative mode" msgstr "Radošais režīms" @@ -633,67 +783,39 @@ msgstr "Radošais režīms" msgid "Damage enabled" msgstr "Bojājumi iespējoti" -#. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua -msgid "PvP enabled" -msgstr "PvP iespējots" +msgid "Del. Favorite" +msgstr "Izdzēst no izlases" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "Pievienot izlasei" #: builtin/mainmenu/tab_online.lua msgid "Join Game" msgstr "Pievienoties spēlei" -#: builtin/mainmenu/tab_settings.lua -msgid "Opaque Leaves" -msgstr "Necaurredzamas lapas" +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "Vārds / Parole" -#: builtin/mainmenu/tab_settings.lua -msgid "Simple Leaves" -msgstr "Vienkāršas lapas" +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Ping" +msgstr "Pings" -#: builtin/mainmenu/tab_settings.lua -msgid "Fancy Leaves" -msgstr "Skaistas lapas" - -#: builtin/mainmenu/tab_settings.lua -msgid "Node Outlining" -msgstr "Bloku konturēšana" - -#: builtin/mainmenu/tab_settings.lua -msgid "Node Highlighting" -msgstr "Bloku izcelšana" - -#: builtin/mainmenu/tab_settings.lua -msgid "None" -msgstr "Nekas" - -#: builtin/mainmenu/tab_settings.lua -msgid "No Filter" -msgstr "Bez filtra" - -#: builtin/mainmenu/tab_settings.lua -msgid "Bilinear Filter" -msgstr "Bilineārais filtrs" - -#: builtin/mainmenu/tab_settings.lua -msgid "Trilinear Filter" -msgstr "Trilineārais filtrs" - -#: builtin/mainmenu/tab_settings.lua -msgid "No Mipmap" -msgstr "Bez “mipmap”" - -#: builtin/mainmenu/tab_settings.lua -msgid "Mipmap" -msgstr "“Mipmap”" - -#: builtin/mainmenu/tab_settings.lua -msgid "Mipmap + Aniso. Filter" -msgstr "“Mipmap” + anizotr. filtrs" +#. ~ PvP = Player versus Player +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "PvP enabled" +msgstr "PvP iespējots" #: builtin/mainmenu/tab_settings.lua msgid "2x" msgstr "2x" +#: builtin/mainmenu/tab_settings.lua +msgid "3D Clouds" +msgstr "3D mākoņi" + #: builtin/mainmenu/tab_settings.lua msgid "4x" msgstr "4x" @@ -703,54 +825,106 @@ msgid "8x" msgstr "8x" #: builtin/mainmenu/tab_settings.lua -msgid "Are you sure to reset your singleplayer world?" -msgstr "" -"Vai esat pārliecināts, ka vēlaties atiestatīt savu viena spēlētāja pasauli?" - -#: builtin/mainmenu/tab_settings.lua -msgid "Yes" -msgstr "Jā" - -#: builtin/mainmenu/tab_settings.lua -msgid "No" -msgstr "Nē" - -#: builtin/mainmenu/tab_settings.lua -msgid "Smooth Lighting" -msgstr "Gluds apgaismojums" - -#: builtin/mainmenu/tab_settings.lua -msgid "Particles" -msgstr "Daļiņas" - -#: builtin/mainmenu/tab_settings.lua -msgid "3D Clouds" -msgstr "3D mākoņi" - -#: builtin/mainmenu/tab_settings.lua -msgid "Opaque Water" -msgstr "Necaurredzams ūdens" - -#: builtin/mainmenu/tab_settings.lua -msgid "Connected Glass" -msgstr "Savienots stikls" - -#: builtin/mainmenu/tab_settings.lua -msgid "Texturing:" -msgstr "Teksturēšana:" +msgid "All Settings" +msgstr "Visi iestatījumi" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" msgstr "Gludināšana:" #: builtin/mainmenu/tab_settings.lua -msgid "Screen:" -msgstr "Ekrāns:" +msgid "Are you sure to reset your singleplayer world?" +msgstr "" +"Vai esat pārliecināts, ka vēlaties atiestatīt savu viena spēlētāja pasauli?" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" msgstr "Atcerēties ekrāna izmēru" +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "Bilineārais filtrs" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "“Bump Mapping”" + +#: builtin/mainmenu/tab_settings.lua src/client/game.cpp +msgid "Change Keys" +msgstr "Nomainīt kontroles" + +#: builtin/mainmenu/tab_settings.lua +msgid "Connected Glass" +msgstr "Savienots stikls" + +#: builtin/mainmenu/tab_settings.lua +msgid "Fancy Leaves" +msgstr "Skaistas lapas" + +#: builtin/mainmenu/tab_settings.lua +msgid "Generate Normal Maps" +msgstr "Izveidot normāl-kartes" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "“Mipmap”" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "“Mipmap” + anizotr. filtrs" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "Nē" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "Bez filtra" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "Bez “mipmap”" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "Bloku izcelšana" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Outlining" +msgstr "Bloku konturēšana" + +#: builtin/mainmenu/tab_settings.lua +msgid "None" +msgstr "Nekas" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "Necaurredzamas lapas" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "Necaurredzams ūdens" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "Tekstūru dziļums" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "Daļiņas" + +#: builtin/mainmenu/tab_settings.lua +msgid "Reset singleplayer world" +msgstr "Atiestatīt viena spēlētāja pasauli" + +#: builtin/mainmenu/tab_settings.lua +msgid "Screen:" +msgstr "Ekrāns:" + +#: builtin/mainmenu/tab_settings.lua +msgid "Settings" +msgstr "Iestatījumi" + #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Shaders" msgstr "Šeideri" @@ -760,60 +934,48 @@ msgid "Shaders (unavailable)" msgstr "Šeideri (nepieejami)" #: builtin/mainmenu/tab_settings.lua -msgid "Reset singleplayer world" -msgstr "Atiestatīt viena spēlētāja pasauli" - -#: builtin/mainmenu/tab_settings.lua src/client/game.cpp -msgid "Change Keys" -msgstr "Nomainīt kontroles" +msgid "Simple Leaves" +msgstr "Vienkāršas lapas" #: builtin/mainmenu/tab_settings.lua -msgid "All Settings" -msgstr "Visi iestatījumi" +msgid "Smooth Lighting" +msgstr "Gluds apgaismojums" #: builtin/mainmenu/tab_settings.lua -msgid "Touchthreshold: (px)" -msgstr "Pieskārienslieksnis: (px)" +msgid "Texturing:" +msgstr "Teksturēšana:" #: builtin/mainmenu/tab_settings.lua -msgid "Bump Mapping" -msgstr "“Bump Mapping”" +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "Lai iespējotu šeiderus, jāizmanto OpenGL draiveris." #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" msgstr "Toņu atbilstība" #: builtin/mainmenu/tab_settings.lua -msgid "Generate Normal Maps" -msgstr "Izveidot normāl-kartes" - -#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp -msgid "Parallax Occlusion" -msgstr "Tekstūru dziļums" +msgid "Touchthreshold: (px)" +msgstr "Pieskārienslieksnis: (px)" #: builtin/mainmenu/tab_settings.lua -msgid "Waving Liquids" -msgstr "Viļņojoši šķidrumi" +msgid "Trilinear Filter" +msgstr "Trilineārais filtrs" #: builtin/mainmenu/tab_settings.lua msgid "Waving Leaves" msgstr "Viļņojošas lapas" +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Liquids" +msgstr "Viļņojoši šķidrumi" + #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" msgstr "Viļņojoši augi" #: builtin/mainmenu/tab_settings.lua -msgid "To enable shaders the OpenGL driver needs to be used." -msgstr "Lai iespējotu šeiderus, jāizmanto OpenGL draiveris." - -#: builtin/mainmenu/tab_settings.lua -msgid "Settings" -msgstr "Iestatījumi" - -#: builtin/mainmenu/tab_simple_main.lua -msgid "Start Singleplayer" -msgstr "Sākt viena spēlētāja spēli" +msgid "Yes" +msgstr "Jā" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -823,10 +985,26 @@ msgstr "Iestatīt modus" msgid "Main" msgstr "Galvenā izvēlne" +#: builtin/mainmenu/tab_simple_main.lua +msgid "Start Singleplayer" +msgstr "Sākt viena spēlētāja spēli" + #: src/client/client.cpp msgid "Connection timed out." msgstr "Savienojuma noildze." +#: src/client/client.cpp +msgid "Done!" +msgstr "Gatavs!" + +#: src/client/client.cpp +msgid "Initializing nodes" +msgstr "Inicializē blokus" + +#: src/client/client.cpp +msgid "Initializing nodes..." +msgstr "Inicializē blokus..." + #: src/client/client.cpp msgid "Loading textures..." msgstr "Ielādē tekstūras..." @@ -835,46 +1013,10 @@ msgstr "Ielādē tekstūras..." msgid "Rebuilding shaders..." msgstr "Pārbūvē šeiderus..." -#: src/client/client.cpp -msgid "Initializing nodes..." -msgstr "Inicializē blokus..." - -#: src/client/client.cpp -msgid "Initializing nodes" -msgstr "Inicializē blokus" - -#: src/client/client.cpp -msgid "Done!" -msgstr "Gatavs!" - -#: src/client/clientlauncher.cpp -msgid "Main Menu" -msgstr "Galvenā izvēlne" - -#: src/client/clientlauncher.cpp -msgid "Player name too long." -msgstr "Spēlētāja vārds ir pārāk garš." - #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" msgstr "Savienojuma kļūme (noildze?)" -#: src/client/clientlauncher.cpp -msgid "Provided password file failed to open: " -msgstr "Neizdevās atvērt iestatīto paroļu failu: " - -#: src/client/clientlauncher.cpp -msgid "Please choose a name!" -msgstr "Lūdzu, izvēlieties vārdu!" - -#: src/client/clientlauncher.cpp -msgid "No world selected and no address provided. Nothing to do." -msgstr "Nav izvēlēta ne pasaule, ne adrese. Nav, ko darīt." - -#: src/client/clientlauncher.cpp -msgid "Provided world path doesn't exist: " -msgstr "Sniegtā pasaules atrašanās vieta neeksistē: " - #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" msgstr "Nevarēja atrast vai ielādēt spēli \"" @@ -883,6 +1025,30 @@ msgstr "Nevarēja atrast vai ielādēt spēli \"" msgid "Invalid gamespec." msgstr "Nederīga spēles specifikācija." +#: src/client/clientlauncher.cpp +msgid "Main Menu" +msgstr "Galvenā izvēlne" + +#: src/client/clientlauncher.cpp +msgid "No world selected and no address provided. Nothing to do." +msgstr "Nav izvēlēta ne pasaule, ne adrese. Nav, ko darīt." + +#: src/client/clientlauncher.cpp +msgid "Player name too long." +msgstr "Spēlētāja vārds ir pārāk garš." + +#: src/client/clientlauncher.cpp +msgid "Please choose a name!" +msgstr "Lūdzu, izvēlieties vārdu!" + +#: src/client/clientlauncher.cpp +msgid "Provided password file failed to open: " +msgstr "Neizdevās atvērt iestatīto paroļu failu: " + +#: src/client/clientlauncher.cpp +msgid "Provided world path doesn't exist: " +msgstr "Sniegtā pasaules atrašanās vieta neeksistē: " + #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string. Put either "no" or "yes" #. into the translation field (literally). @@ -896,186 +1062,53 @@ msgid "needs_fallback_font" msgstr "no" #: src/client/game.cpp -msgid "Shutting down..." -msgstr "Beidz darbu..." +msgid "" +"\n" +"Check debug.txt for details." +msgstr "" +"\n" +"Vairāk informācijas failā debug.txt." #: src/client/game.cpp -msgid "Creating server..." -msgstr "Izveido serveri..." +msgid "- Address: " +msgstr "- Adrese: " #: src/client/game.cpp -msgid "Creating client..." -msgstr "Izveido klientu..." +msgid "- Creative Mode: " +msgstr "- Radošais režīms: " #: src/client/game.cpp -msgid "Resolving address..." -msgstr "Atrisina adresi..." +msgid "- Damage: " +msgstr "- Bojājumi: " #: src/client/game.cpp -msgid "Connecting to server..." -msgstr "Savienojas ar serveri..." +msgid "- Mode: " +msgstr "- Režīms: " #: src/client/game.cpp -msgid "Item definitions..." -msgstr "Priekšmetu apraksti..." +msgid "- Port: " +msgstr "- Ports: " #: src/client/game.cpp -msgid "Node definitions..." -msgstr "Bloku apraksti..." +msgid "- Public: " +msgstr "- Publisks: " + +#. ~ PvP = Player versus Player +#: src/client/game.cpp +msgid "- PvP: " +msgstr "- PvP: " #: src/client/game.cpp -msgid "Media..." -msgstr "Mēdiji..." - -#: src/client/game.cpp -msgid "KiB/s" -msgstr "KiB/s" - -#: src/client/game.cpp -msgid "MiB/s" -msgstr "MiB/s" - -#: src/client/game.cpp -msgid "Client side scripting is disabled" -msgstr "Klienta puses skriptēšana ir atspējota" - -#: src/client/game.cpp -msgid "Sound muted" -msgstr "Skaņa izslēgta" - -#: src/client/game.cpp -msgid "Sound unmuted" -msgstr "Skaņa ieslēgta" - -#: src/client/game.cpp -#, c-format -msgid "Volume changed to %d%%" -msgstr "Skaļums nomainīts uz %d%%" - -#: src/client/game.cpp src/gui/modalMenu.cpp -msgid "ok" -msgstr "ok" - -#: src/client/game.cpp -msgid "Fly mode enabled" -msgstr "Lidošanas režīms ieslēgts" - -#: src/client/game.cpp -msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "Lidošanas režīms ieslēgts (bet: nav “fly” privilēģijas)" - -#: src/client/game.cpp -msgid "Fly mode disabled" -msgstr "Lidošanas režīms izslēgts" - -#: src/client/game.cpp -msgid "Pitch move mode enabled" -msgstr "Kustība uz augšu/leju pēc skatīšanās virziena ieslēgta" - -#: src/client/game.cpp -msgid "Pitch move mode disabled" -msgstr "Kustība uz augšu/leju pēc skatīšanās virziena izslēgta" - -#: src/client/game.cpp -msgid "Fast mode enabled" -msgstr "Ātrais režīms ieslēgts" - -#: src/client/game.cpp -msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "Ātrais režīms ieslēgts (bet: nav “fast” privilēģijas)" - -#: src/client/game.cpp -msgid "Fast mode disabled" -msgstr "Ātrais režīms izslēgts" - -#: src/client/game.cpp -msgid "Noclip mode enabled" -msgstr "“Noclip” režīms ieslēgts" - -#: src/client/game.cpp -msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "“Noclip” režīms ieslēgts (bet: nav “noclip” privilēģijas)" - -#: src/client/game.cpp -msgid "Noclip mode disabled" -msgstr "“Noclip” režīms izslēgts" - -#: src/client/game.cpp -msgid "Cinematic mode enabled" -msgstr "Kino režīms ieslēgts" - -#: src/client/game.cpp -msgid "Cinematic mode disabled" -msgstr "Kino režīms izslēgts" - -#: src/client/game.cpp -msgid "Automatic forward enabled" -msgstr "Automātiskā pārvietošanās ieslēgta" +msgid "- Server Name: " +msgstr "- Severa nosaukums: " #: src/client/game.cpp msgid "Automatic forward disabled" msgstr "Automātiskā pārvietošanās izslēgta" #: src/client/game.cpp -msgid "Minimap in surface mode, Zoom x1" -msgstr "Minikarte virsmas režīmā, palielinājums x1" - -#: src/client/game.cpp -msgid "Minimap in surface mode, Zoom x2" -msgstr "Minikarte virsmas režīmā, palielinājums x2" - -#: src/client/game.cpp -msgid "Minimap in surface mode, Zoom x4" -msgstr "Minikarte virsmas režīmā, palielinājums x4" - -#: src/client/game.cpp -msgid "Minimap in radar mode, Zoom x1" -msgstr "Minikarte radara režīmā, palielinājums x1" - -#: src/client/game.cpp -msgid "Minimap in radar mode, Zoom x2" -msgstr "Minikarte radara režīmā, palielinājums x2" - -#: src/client/game.cpp -msgid "Minimap in radar mode, Zoom x4" -msgstr "Minikarte radara režīmā, palielinājums x4" - -#: src/client/game.cpp -msgid "Minimap hidden" -msgstr "Minikarte paslēpta" - -#: src/client/game.cpp -msgid "Minimap currently disabled by game or mod" -msgstr "Minikarte šobrīd atspējota vai nu spēlei, vai modam" - -#: src/client/game.cpp -msgid "Fog disabled" -msgstr "Migla atspējota" - -#: src/client/game.cpp -msgid "Fog enabled" -msgstr "Migla iespējota" - -#: src/client/game.cpp -msgid "Debug info shown" -msgstr "Atkļūdošanas informācija parādīta" - -#: src/client/game.cpp -msgid "Profiler graph shown" -msgstr "Profilēšanas grafiks parādīts" - -#: src/client/game.cpp -msgid "Wireframe shown" -msgstr "Karkasattēlojums iespējots" - -#: src/client/game.cpp -msgid "Debug info, profiler graph, and wireframe hidden" -msgstr "" -"Atkļūdošanas informācija, profilēšanas grafiks un karkasattēlojums atspējoti" - -#: src/client/game.cpp -msgid "Debug info and profiler graph hidden" -msgstr "Atkļūdošanas informācija un profilēšanas grafiks paslēpti" +msgid "Automatic forward enabled" +msgstr "Automātiskā pārvietošanās ieslēgta" #: src/client/game.cpp msgid "Camera update disabled" @@ -1086,59 +1119,28 @@ msgid "Camera update enabled" msgstr "Kameras atjaunošana iespējota" #: src/client/game.cpp -#, c-format -msgid "Viewing range is at maximum: %d" -msgstr "Redzamības diapazons ir maksimāls: %d" +msgid "Change Password" +msgstr "Nomainīt paroli" #: src/client/game.cpp -#, c-format -msgid "Viewing range changed to %d" -msgstr "Redzamības diapazons nomainīts uz %d" +msgid "Cinematic mode disabled" +msgstr "Kino režīms izslēgts" #: src/client/game.cpp -#, c-format -msgid "Viewing range is at minimum: %d" -msgstr "Redzamības diapazons ir minimāls: %d" +msgid "Cinematic mode enabled" +msgstr "Kino režīms ieslēgts" #: src/client/game.cpp -msgid "Enabled unlimited viewing range" -msgstr "Iespējots neierobežots redzamības diapazons" +msgid "Client side scripting is disabled" +msgstr "Klienta puses skriptēšana ir atspējota" #: src/client/game.cpp -msgid "Disabled unlimited viewing range" -msgstr "Atspējots neierobežots redzamības diapazons" +msgid "Connecting to server..." +msgstr "Savienojas ar serveri..." #: src/client/game.cpp -msgid "Zoom currently disabled by game or mod" -msgstr "Tuvināšana šobrīd atspējota vai nu spēlei, vai modam" - -#: src/client/game.cpp -msgid "" -"Default Controls:\n" -"No menu visible:\n" -"- single tap: button activate\n" -"- double tap: place/use\n" -"- slide finger: look around\n" -"Menu/Inventory visible:\n" -"- double tap (outside):\n" -" -->close\n" -"- touch stack, touch slot:\n" -" --> move stack\n" -"- touch&drag, tap 2nd finger\n" -" --> place single item to slot\n" -msgstr "" -"Noklusējuma kontroles:\n" -"Ne izvēlnē:\n" -"- pieskāriens: aktivizē pogu\n" -"- dubultpieskāriens: nolikt/izmantot\n" -"- vilkt ar pirksto: skatīties apkārt\n" -"Izvēlnē/inventārā:\n" -"- dubultpieskāriens (ārpus izvēlnes)\n" -" --> aizvērt izvēlni\n" -"- pieskāriens priekšmetiem, pieskāriens kastītei:\n" -" --> pārvietot priekšmetus\n" -"- pieskāriens&vilkšana, ar otru pirkstu pieskāriens:\n" -" --> novietot vienu priekšmetu kastītē\n" +msgid "Continue" +msgstr "Turpināt" #: src/client/game.cpp #, c-format @@ -1174,20 +1176,61 @@ msgstr "" "- %s: čats\n" #: src/client/game.cpp -msgid "Continue" -msgstr "Turpināt" +msgid "Creating client..." +msgstr "Izveido klientu..." #: src/client/game.cpp -msgid "Change Password" -msgstr "Nomainīt paroli" +msgid "Creating server..." +msgstr "Izveido serveri..." #: src/client/game.cpp -msgid "Game paused" -msgstr "Spēle nopauzēta" +msgid "Debug info and profiler graph hidden" +msgstr "Atkļūdošanas informācija un profilēšanas grafiks paslēpti" #: src/client/game.cpp -msgid "Sound Volume" -msgstr "Skaņas skaļums" +msgid "Debug info shown" +msgstr "Atkļūdošanas informācija parādīta" + +#: src/client/game.cpp +msgid "Debug info, profiler graph, and wireframe hidden" +msgstr "" +"Atkļūdošanas informācija, profilēšanas grafiks un karkasattēlojums atspējoti" + +#: src/client/game.cpp +msgid "" +"Default Controls:\n" +"No menu visible:\n" +"- single tap: button activate\n" +"- double tap: place/use\n" +"- slide finger: look around\n" +"Menu/Inventory visible:\n" +"- double tap (outside):\n" +" -->close\n" +"- touch stack, touch slot:\n" +" --> move stack\n" +"- touch&drag, tap 2nd finger\n" +" --> place single item to slot\n" +msgstr "" +"Noklusējuma kontroles:\n" +"Ne izvēlnē:\n" +"- pieskāriens: aktivizē pogu\n" +"- dubultpieskāriens: nolikt/izmantot\n" +"- vilkt ar pirksto: skatīties apkārt\n" +"Izvēlnē/inventārā:\n" +"- dubultpieskāriens (ārpus izvēlnes)\n" +" --> aizvērt izvēlni\n" +"- pieskāriens priekšmetiem, pieskāriens kastītei:\n" +" --> pārvietot priekšmetus\n" +"- pieskāriens&vilkšana, ar otru pirkstu pieskāriens:\n" +" --> novietot vienu priekšmetu kastītē\n" + +#: src/client/game.cpp +msgid "Disabled unlimited viewing range" +msgstr "Atspējots neierobežots redzamības diapazons" + +#: src/client/game.cpp +msgid "Enabled unlimited viewing range" +msgstr "Iespējots neierobežots redzamības diapazons" #: src/client/game.cpp msgid "Exit to Menu" @@ -1197,222 +1240,351 @@ msgstr "Iziet uz izvēlni" msgid "Exit to OS" msgstr "Iziet uz OS" +#: src/client/game.cpp +msgid "Fast mode disabled" +msgstr "Ātrais režīms izslēgts" + +#: src/client/game.cpp +msgid "Fast mode enabled" +msgstr "Ātrais režīms ieslēgts" + +#: src/client/game.cpp +msgid "Fast mode enabled (note: no 'fast' privilege)" +msgstr "Ātrais režīms ieslēgts (bet: nav “fast” privilēģijas)" + +#: src/client/game.cpp +msgid "Fly mode disabled" +msgstr "Lidošanas režīms izslēgts" + +#: src/client/game.cpp +msgid "Fly mode enabled" +msgstr "Lidošanas režīms ieslēgts" + +#: src/client/game.cpp +msgid "Fly mode enabled (note: no 'fly' privilege)" +msgstr "Lidošanas režīms ieslēgts (bet: nav “fly” privilēģijas)" + +#: src/client/game.cpp +msgid "Fog disabled" +msgstr "Migla atspējota" + +#: src/client/game.cpp +msgid "Fog enabled" +msgstr "Migla iespējota" + #: src/client/game.cpp msgid "Game info:" msgstr "Spēles informācija:" #: src/client/game.cpp -msgid "- Mode: " -msgstr "- Režīms: " - -#: src/client/game.cpp -msgid "Remote server" -msgstr "Attālināts serveris" - -#: src/client/game.cpp -msgid "- Address: " -msgstr "- Adrese: " +msgid "Game paused" +msgstr "Spēle nopauzēta" #: src/client/game.cpp msgid "Hosting server" msgstr "Lokāls serveris" #: src/client/game.cpp -msgid "- Port: " -msgstr "- Ports: " +msgid "Item definitions..." +msgstr "Priekšmetu apraksti..." #: src/client/game.cpp -msgid "Singleplayer" -msgstr "Viena spēlētāja režīms" +msgid "KiB/s" +msgstr "KiB/s" #: src/client/game.cpp -msgid "On" -msgstr "Ieslēgts" +msgid "Media..." +msgstr "Mēdiji..." + +#: src/client/game.cpp +msgid "MiB/s" +msgstr "MiB/s" + +#: src/client/game.cpp +msgid "Minimap currently disabled by game or mod" +msgstr "Minikarte šobrīd atspējota vai nu spēlei, vai modam" + +#: src/client/game.cpp +msgid "Minimap hidden" +msgstr "Minikarte paslēpta" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x1" +msgstr "Minikarte radara režīmā, palielinājums x1" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x2" +msgstr "Minikarte radara režīmā, palielinājums x2" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x4" +msgstr "Minikarte radara režīmā, palielinājums x4" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x1" +msgstr "Minikarte virsmas režīmā, palielinājums x1" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x2" +msgstr "Minikarte virsmas režīmā, palielinājums x2" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x4" +msgstr "Minikarte virsmas režīmā, palielinājums x4" + +#: src/client/game.cpp +msgid "Noclip mode disabled" +msgstr "“Noclip” režīms izslēgts" + +#: src/client/game.cpp +msgid "Noclip mode enabled" +msgstr "“Noclip” režīms ieslēgts" + +#: src/client/game.cpp +msgid "Noclip mode enabled (note: no 'noclip' privilege)" +msgstr "“Noclip” režīms ieslēgts (bet: nav “noclip” privilēģijas)" + +#: src/client/game.cpp +msgid "Node definitions..." +msgstr "Bloku apraksti..." #: src/client/game.cpp msgid "Off" msgstr "Izslēgts" #: src/client/game.cpp -msgid "- Damage: " -msgstr "- Bojājumi: " +msgid "On" +msgstr "Ieslēgts" #: src/client/game.cpp -msgid "- Creative Mode: " -msgstr "- Radošais režīms: " - -#. ~ PvP = Player versus Player -#: src/client/game.cpp -msgid "- PvP: " -msgstr "- PvP: " +msgid "Pitch move mode disabled" +msgstr "Kustība uz augšu/leju pēc skatīšanās virziena izslēgta" #: src/client/game.cpp -msgid "- Public: " -msgstr "- Publisks: " +msgid "Pitch move mode enabled" +msgstr "Kustība uz augšu/leju pēc skatīšanās virziena ieslēgta" #: src/client/game.cpp -msgid "- Server Name: " -msgstr "- Severa nosaukums: " +msgid "Profiler graph shown" +msgstr "Profilēšanas grafiks parādīts" #: src/client/game.cpp -msgid "" -"\n" -"Check debug.txt for details." +msgid "Remote server" +msgstr "Attālināts serveris" + +#: src/client/game.cpp +msgid "Resolving address..." +msgstr "Atrisina adresi..." + +#: src/client/game.cpp +msgid "Shutting down..." +msgstr "Beidz darbu..." + +#: src/client/game.cpp +msgid "Singleplayer" +msgstr "Viena spēlētāja režīms" + +#: src/client/game.cpp +msgid "Sound Volume" +msgstr "Skaņas skaļums" + +#: src/client/game.cpp +msgid "Sound muted" +msgstr "Skaņa izslēgta" + +#: src/client/game.cpp +msgid "Sound system is disabled" msgstr "" -"\n" -"Vairāk informācijas failā debug.txt." -#: src/client/gameui.cpp -msgid "Chat shown" -msgstr "Čats parādīts" +#: src/client/game.cpp +msgid "Sound system is not supported on this build" +msgstr "" + +#: src/client/game.cpp +msgid "Sound unmuted" +msgstr "Skaņa ieslēgta" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d" +msgstr "Redzamības diapazons nomainīts uz %d" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at maximum: %d" +msgstr "Redzamības diapazons ir maksimāls: %d" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at minimum: %d" +msgstr "Redzamības diapazons ir minimāls: %d" + +#: src/client/game.cpp +#, c-format +msgid "Volume changed to %d%%" +msgstr "Skaļums nomainīts uz %d%%" + +#: src/client/game.cpp +msgid "Wireframe shown" +msgstr "Karkasattēlojums iespējots" + +#: src/client/game.cpp +msgid "Zoom currently disabled by game or mod" +msgstr "Tuvināšana šobrīd atspējota vai nu spēlei, vai modam" + +#: src/client/game.cpp +msgid "ok" +msgstr "ok" #: src/client/gameui.cpp msgid "Chat hidden" msgstr "Čats paslēpts" #: src/client/gameui.cpp -msgid "HUD shown" -msgstr "Spēles saskarne parādīta" +msgid "Chat shown" +msgstr "Čats parādīts" #: src/client/gameui.cpp msgid "HUD hidden" msgstr "Spēles saskarne paslēpta" #: src/client/gameui.cpp -#, c-format -msgid "Profiler shown (page %d of %d)" -msgstr "Profilētājs parādīts (lapa %d no %d)" +msgid "HUD shown" +msgstr "Spēles saskarne parādīta" #: src/client/gameui.cpp msgid "Profiler hidden" msgstr "Profilētājs paslēpts" -#: src/client/keycode.cpp -msgid "Left Button" -msgstr "Kreisā poga" +#: src/client/gameui.cpp +#, c-format +msgid "Profiler shown (page %d of %d)" +msgstr "Profilētājs parādīts (lapa %d no %d)" #: src/client/keycode.cpp -msgid "Right Button" -msgstr "Labā poga" - -#: src/client/keycode.cpp -msgid "Middle Button" -msgstr "Vidējā poga" - -#: src/client/keycode.cpp -msgid "X Button 1" -msgstr "X Poga 1" - -#: src/client/keycode.cpp -msgid "X Button 2" -msgstr "X Poga 2" +msgid "Apps" +msgstr "Menu" #: src/client/keycode.cpp msgid "Backspace" msgstr "Backspace" #: src/client/keycode.cpp -msgid "Tab" -msgstr "Tab" +msgid "Caps Lock" +msgstr "Caps Lock" #: src/client/keycode.cpp msgid "Clear" msgstr "Notīrīt" -#: src/client/keycode.cpp -msgid "Return" -msgstr "Return" - -#: src/client/keycode.cpp -msgid "Shift" -msgstr "Shift" - #: src/client/keycode.cpp msgid "Control" msgstr "Ctrl" +#: src/client/keycode.cpp +msgid "Down" +msgstr "Uz leju" + +#: src/client/keycode.cpp +msgid "End" +msgstr "End" + +#: src/client/keycode.cpp +msgid "Erase EOF" +msgstr "Erase EOF" + +#: src/client/keycode.cpp +msgid "Execute" +msgstr "Execute" + +#: src/client/keycode.cpp +msgid "Help" +msgstr "Help" + +#: src/client/keycode.cpp +msgid "Home" +msgstr "Home" + +#: src/client/keycode.cpp +msgid "IME Accept" +msgstr "IME Accept" + +#: src/client/keycode.cpp +msgid "IME Convert" +msgstr "IME Convert" + +#: src/client/keycode.cpp +msgid "IME Escape" +msgstr "IME Escape" + +#: src/client/keycode.cpp +msgid "IME Mode Change" +msgstr "IME Mode Change" + +#: src/client/keycode.cpp +msgid "IME Nonconvert" +msgstr "IME Nonconvert" + +#: src/client/keycode.cpp +msgid "Insert" +msgstr "Insert" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Left" +msgstr "Pa kreisi" + +#: src/client/keycode.cpp +msgid "Left Button" +msgstr "Kreisā poga" + +#: src/client/keycode.cpp +msgid "Left Control" +msgstr "Kreisais Ctrl" + +#: src/client/keycode.cpp +msgid "Left Menu" +msgstr "Kreisais Alt" + +#: src/client/keycode.cpp +msgid "Left Shift" +msgstr "Kreisais Shift" + +#: src/client/keycode.cpp +msgid "Left Windows" +msgstr "Kreisā Windows poga" + #. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" msgstr "Alt" #: src/client/keycode.cpp -msgid "Pause" -msgstr "Pause" +msgid "Middle Button" +msgstr "Vidējā poga" #: src/client/keycode.cpp -msgid "Caps Lock" -msgstr "Caps Lock" +msgid "Num Lock" +msgstr "Num Lock" #: src/client/keycode.cpp -msgid "Space" -msgstr "Atstarpe" +msgid "Numpad *" +msgstr "Ciparbloka *" #: src/client/keycode.cpp -msgid "Page up" -msgstr "Page up" +msgid "Numpad +" +msgstr "Ciparbloka +" #: src/client/keycode.cpp -msgid "Page down" -msgstr "Page down" +msgid "Numpad -" +msgstr "Ciparbloka -" #: src/client/keycode.cpp -msgid "End" -msgstr "End" +msgid "Numpad ." +msgstr "Ciparbloka ." #: src/client/keycode.cpp -msgid "Home" -msgstr "Home" - -#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp -msgid "Left" -msgstr "Pa kreisi" - -#: src/client/keycode.cpp -msgid "Up" -msgstr "Uz augšu" - -#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp -msgid "Right" -msgstr "Pa labi" - -#: src/client/keycode.cpp -msgid "Down" -msgstr "Uz leju" - -#. ~ Key name -#: src/client/keycode.cpp -msgid "Select" -msgstr "Select" - -#. ~ "Print screen" key -#: src/client/keycode.cpp -msgid "Print" -msgstr "Print Screen" - -#: src/client/keycode.cpp -msgid "Execute" -msgstr "Execute" - -#: src/client/keycode.cpp -msgid "Snapshot" -msgstr "Snapshot" - -#: src/client/keycode.cpp -msgid "Insert" -msgstr "Insert" - -#: src/client/keycode.cpp -msgid "Help" -msgstr "Help" - -#: src/client/keycode.cpp -msgid "Left Windows" -msgstr "Kreisā Windows poga" - -#: src/client/keycode.cpp -msgid "Right Windows" -msgstr "Labā Windows poga" +msgid "Numpad /" +msgstr "Ciparbloka /" #: src/client/keycode.cpp msgid "Numpad 0" @@ -1455,100 +1627,110 @@ msgid "Numpad 9" msgstr "Ciparbloka 9" #: src/client/keycode.cpp -msgid "Numpad *" -msgstr "Ciparbloka *" +msgid "OEM Clear" +msgstr "OEM Clear" #: src/client/keycode.cpp -msgid "Numpad +" -msgstr "Ciparbloka +" +msgid "Page down" +msgstr "Page down" #: src/client/keycode.cpp -msgid "Numpad ." -msgstr "Ciparbloka ." +msgid "Page up" +msgstr "Page up" #: src/client/keycode.cpp -msgid "Numpad -" -msgstr "Ciparbloka -" +msgid "Pause" +msgstr "Pause" #: src/client/keycode.cpp -msgid "Numpad /" -msgstr "Ciparbloka /" +msgid "Play" +msgstr "Play" + +#. ~ "Print screen" key +#: src/client/keycode.cpp +msgid "Print" +msgstr "Print Screen" #: src/client/keycode.cpp -msgid "Num Lock" -msgstr "Num Lock" +msgid "Return" +msgstr "Return" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Right" +msgstr "Pa labi" #: src/client/keycode.cpp -msgid "Scroll Lock" -msgstr "Scroll Lock" - -#: src/client/keycode.cpp -msgid "Left Shift" -msgstr "Kreisais Shift" - -#: src/client/keycode.cpp -msgid "Right Shift" -msgstr "Labais Shift" - -#: src/client/keycode.cpp -msgid "Left Control" -msgstr "Kreisais Ctrl" +msgid "Right Button" +msgstr "Labā poga" #: src/client/keycode.cpp msgid "Right Control" msgstr "Labais Ctrl" -#: src/client/keycode.cpp -msgid "Left Menu" -msgstr "Kreisais Alt" - #: src/client/keycode.cpp msgid "Right Menu" msgstr "Labais Alt" #: src/client/keycode.cpp -msgid "IME Escape" -msgstr "IME Escape" +msgid "Right Shift" +msgstr "Labais Shift" #: src/client/keycode.cpp -msgid "IME Convert" -msgstr "IME Convert" +msgid "Right Windows" +msgstr "Labā Windows poga" #: src/client/keycode.cpp -msgid "IME Nonconvert" -msgstr "IME Nonconvert" +msgid "Scroll Lock" +msgstr "Scroll Lock" + +#. ~ Key name +#: src/client/keycode.cpp +msgid "Select" +msgstr "Select" #: src/client/keycode.cpp -msgid "IME Accept" -msgstr "IME Accept" - -#: src/client/keycode.cpp -msgid "IME Mode Change" -msgstr "IME Mode Change" - -#: src/client/keycode.cpp -msgid "Apps" -msgstr "Menu" +msgid "Shift" +msgstr "Shift" #: src/client/keycode.cpp msgid "Sleep" msgstr "Sleep" #: src/client/keycode.cpp -msgid "Erase EOF" -msgstr "Erase EOF" +msgid "Snapshot" +msgstr "Snapshot" #: src/client/keycode.cpp -msgid "Play" -msgstr "Play" +msgid "Space" +msgstr "Atstarpe" + +#: src/client/keycode.cpp +msgid "Tab" +msgstr "Tab" + +#: src/client/keycode.cpp +msgid "Up" +msgstr "Uz augšu" + +#: src/client/keycode.cpp +msgid "X Button 1" +msgstr "X Poga 1" + +#: src/client/keycode.cpp +msgid "X Button 2" +msgstr "X Poga 2" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Zoom" msgstr "Zoom" -#: src/client/keycode.cpp -msgid "OEM Clear" -msgstr "OEM Clear" +#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp +msgid "Passwords do not match!" +msgstr "Paroles nesakrīt!" + +#: src/gui/guiConfirmRegistration.cpp +msgid "Register and Join" +msgstr "Reģistrēties un pievienoties" #: src/gui/guiConfirmRegistration.cpp #, c-format @@ -1566,18 +1748,82 @@ msgstr "" "pievienoties”, lai apstiprinātu lietotāja izveidi, vai arī nospiediet " "“Atcelt”, lai pārtrauktu šo darbību." -#: src/gui/guiConfirmRegistration.cpp -msgid "Register and Join" -msgstr "Reģistrēties un pievienoties" - -#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp -msgid "Passwords do not match!" -msgstr "Paroles nesakrīt!" - #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" msgstr "Turpināt" +#: src/gui/guiKeyChangeMenu.cpp +msgid "\"Special\" = climb down" +msgstr "“Speciālais” = kāpt lejā" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Autoforward" +msgstr "Auto-iešana" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Automatic jumping" +msgstr "Automātiskā lekšana" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Backward" +msgstr "Atmuguriski" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Change camera" +msgstr "Mainīt kameru" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Chat" +msgstr "Čats" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Command" +msgstr "Komanda" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Console" +msgstr "Konsole" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. range" +msgstr "Sam. diapazonu" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. volume" +msgstr "Sam. skaļumu" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Double tap \"jump\" to toggle fly" +msgstr "Nospied “lekt” divreiz, lai lidotu" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Drop" +msgstr "Mest" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Forward" +msgstr "Uz priekšu" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. range" +msgstr "Pal. diapazonu" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. volume" +msgstr "Pal. skaļumu" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inventory" +msgstr "Inventārs" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Jump" +msgstr "Lekt" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Key already in use" +msgstr "Šis taustiņš jau tiek izmantots" + #: src/gui/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "" @@ -1585,132 +1831,36 @@ msgstr "" "minetest.conf)" #: src/gui/guiKeyChangeMenu.cpp -msgid "\"Special\" = climb down" -msgstr "“Speciālais” = kāpt lejā" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Double tap \"jump\" to toggle fly" -msgstr "Nospied “lekt” divreiz, lai lidotu" - -#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp -msgid "Automatic jumping" -msgstr "Automātiskā lekšana" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Key already in use" -msgstr "Šis taustiņš jau tiek izmantots" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "press key" -msgstr "nospiediet pogu" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Forward" -msgstr "Uz priekšu" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Backward" -msgstr "Atmuguriski" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Special" -msgstr "Speciālais" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Jump" -msgstr "Lekt" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Sneak" -msgstr "Lavīties" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Drop" -msgstr "Mest" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Inventory" -msgstr "Inventārs" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Prev. item" -msgstr "Iepr. priekšmets" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Next item" -msgstr "Nāk. priekšmets" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Change camera" -msgstr "Mainīt kameru" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Toggle minimap" -msgstr "Minikarte" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Toggle fly" -msgstr "Lidot" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Toggle pitchmove" -msgstr "Pārvietoties pēc skatīšanās leņķa" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Toggle fast" -msgstr "Ātrā pārvietošanās" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Toggle noclip" -msgstr "“Noclip”" +msgid "Local command" +msgstr "Lokālā komanda" #: src/gui/guiKeyChangeMenu.cpp msgid "Mute" msgstr "Skaņa" #: src/gui/guiKeyChangeMenu.cpp -msgid "Dec. volume" -msgstr "Sam. skaļumu" +msgid "Next item" +msgstr "Nāk. priekšmets" #: src/gui/guiKeyChangeMenu.cpp -msgid "Inc. volume" -msgstr "Pal. skaļumu" +msgid "Prev. item" +msgstr "Iepr. priekšmets" #: src/gui/guiKeyChangeMenu.cpp -msgid "Autoforward" -msgstr "Auto-iešana" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Chat" -msgstr "Čats" +msgid "Range select" +msgstr "Redzamības diapazons" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Screenshot" msgstr "Ekrānšāviņš" #: src/gui/guiKeyChangeMenu.cpp -msgid "Range select" -msgstr "Redzamības diapazons" +msgid "Sneak" +msgstr "Lavīties" #: src/gui/guiKeyChangeMenu.cpp -msgid "Dec. range" -msgstr "Sam. diapazonu" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Inc. range" -msgstr "Pal. diapazonu" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Console" -msgstr "Konsole" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Command" -msgstr "Komanda" - -#: src/gui/guiKeyChangeMenu.cpp -msgid "Local command" -msgstr "Lokālā komanda" +msgid "Special" +msgstr "Speciālais" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" @@ -1720,29 +1870,49 @@ msgstr "Spēles saskarne" msgid "Toggle chat log" msgstr "Čata logs" +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fast" +msgstr "Ātrā pārvietošanās" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fly" +msgstr "Lidot" + #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fog" msgstr "Migla" -#: src/gui/guiPasswordChange.cpp -msgid "Old Password" -msgstr "Vecā parole" +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle minimap" +msgstr "Minikarte" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle noclip" +msgstr "“Noclip”" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle pitchmove" +msgstr "Pārvietoties pēc skatīšanās leņķa" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "press key" +msgstr "nospiediet pogu" #: src/gui/guiPasswordChange.cpp -msgid "New Password" -msgstr "Jaunā parole" +msgid "Change" +msgstr "Nomainīt" #: src/gui/guiPasswordChange.cpp msgid "Confirm Password" msgstr "Apstiprināt paroli" #: src/gui/guiPasswordChange.cpp -msgid "Change" -msgstr "Nomainīt" +msgid "New Password" +msgstr "Jaunā parole" -#: src/gui/guiVolumeChange.cpp -msgid "Sound Volume: " -msgstr "Skaņas skaļums: " +#: src/gui/guiPasswordChange.cpp +msgid "Old Password" +msgstr "Vecā parole" #: src/gui/guiVolumeChange.cpp msgid "Exit" @@ -1752,6 +1922,10 @@ msgstr "Iziet" msgid "Muted" msgstr "Apklusināts" +#: src/gui/guiVolumeChange.cpp +msgid "Sound Volume: " +msgstr "Skaņas skaļums: " + #. ~ Imperative, as in "Enter/type in text". #. Don't forget the space. #: src/gui/modalMenu.cpp @@ -1765,205 +1939,12 @@ msgstr "Ievadiet " msgid "LANG_CODE" msgstr "lv" -#: src/settings_translation_file.cpp -msgid "Controls" -msgstr "Vadība" - -#: src/settings_translation_file.cpp -msgid "Build inside player" -msgstr "Būvēt iekšā spēlētājā" - -#: src/settings_translation_file.cpp -msgid "" -"If enabled, you can place blocks at the position (feet + eye level) where " -"you stand.\n" -"This is helpful when working with nodeboxes in small areas." -msgstr "" -"Ja iespējots, varat novietot blokus, kur Jūs stāvat.\n" -"Šis ir noderīgi, kad jābūvē šaurās vietās." - -#: src/settings_translation_file.cpp -msgid "Flying" -msgstr "Lidošana" - -#: src/settings_translation_file.cpp -msgid "" -"Player is able to fly without being affected by gravity.\n" -"This requires the \"fly\" privilege on the server." -msgstr "" -"Spēlētājs var lidot ignorējot gravitāciju.\n" -"Šim ir vajadzīga “fly” privilēģija servera pusē." - -#: src/settings_translation_file.cpp -msgid "Pitch move mode" -msgstr "Kustība uz augšu/leju pēc skatīšanās virziena" - -#: src/settings_translation_file.cpp -msgid "" -"If enabled, makes move directions relative to the player's pitch when flying " -"or swimming." -msgstr "" -"Ja iespējota, liek visām kustībām peldot un lidojot būt relatīvām pret " -"spēlētāja skatīšanās virziena." - -#: src/settings_translation_file.cpp -msgid "Fast movement" -msgstr "Ātrā pārvietošanās" - -#: src/settings_translation_file.cpp -msgid "" -"Fast movement (via the \"special\" key).\n" -"This requires the \"fast\" privilege on the server." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Noclip" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If enabled together with fly mode, player is able to fly through solid " -"nodes.\n" -"This requires the \"noclip\" privilege on the server." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cinematic mode" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Smooths camera when looking around. Also called look or mouse smoothing.\n" -"Useful for recording videos." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Camera smoothing" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Smooths rotation of camera. 0 to disable." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Camera smoothing in cinematic mode" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Smooths rotation of camera in cinematic mode. 0 to disable." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Invert mouse" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Invert vertical mouse movement." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mouse sensitivity" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mouse sensitivity multiplier." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Special key for climbing/descending" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If enabled, \"special\" key instead of \"sneak\" key is used for climbing " -"down and\n" -"descending." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Double tap jump for fly" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Double-tapping the jump key toggles fly mode." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Always fly and fast" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If disabled, \"special\" key is used to fly fast if both fly and fast mode " -"are\n" -"enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Rightclick repetition interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The time in seconds it takes between repeated right clicks when holding the " -"right\n" -"mouse button." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Automatically jump up single-node obstacles." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Safe digging and placing" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Prevent digging and placing from repeating when holding the mouse buttons.\n" -"Enable this when you dig or place too often by accident." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Random input" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable random user input (only used for testing)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Continuous forward" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Continuous forward movement, toggled by autoforward key.\n" -"Press the autoforward key again or the backwards movement to disable." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Touch screen threshold" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "The length in pixels it takes for touch screen interaction to start." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fixed virtual joystick" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "(Android) Fixes the position of virtual joystick.\n" "If disabled, virtual joystick will center to first-touch's position." msgstr "" -#: src/settings_translation_file.cpp -msgid "Virtual joystick triggers aux button" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "(Android) Use virtual joystick to trigger \"aux\" button.\n" @@ -1971,1065 +1952,27 @@ msgid "" "circle." msgstr "" -#: src/settings_translation_file.cpp -msgid "Enable joysticks" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Joystick ID" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "The identifier of the joystick to use" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Joystick type" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "The type of joystick" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Joystick button repetition interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The time in seconds it takes between repeated events\n" -"when holding down a joystick button combination." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Joystick frustum sensitivity" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The sensitivity of the joystick axes for moving the\n" -"ingame view frustum around." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Forward key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for moving the player forward.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Backward key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for moving the player backward.\n" -"Will also disable autoforward, when active.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Left key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for moving the player left.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Right key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for moving the player right.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Jump key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for jumping.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Sneak key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for sneaking.\n" -"Also used for climbing down and descending in water if aux1_descends is " -"disabled.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Inventory key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for opening the inventory.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Special key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for moving fast in fast mode.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chat key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for opening the chat window.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Command key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for opening the chat window to type commands.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for opening the chat window to type local commands.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Range select key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling unlimited view range.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fly key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling flying.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Pitch move key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling pitch move mode.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fast key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling fast mode.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Noclip key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling noclip mode.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar next key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the next item in the hotbar.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar previous key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the previous item in the hotbar.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mute key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for muting the game.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Inc. volume key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for increasing the volume.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Dec. volume key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for decreasing the volume.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Automatic forward key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling autoforward.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cinematic mode key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling cinematic mode.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Minimap key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling display of minimap.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for taking screenshots.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Drop item key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for dropping the currently selected item.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "View zoom key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key to use view zoom when possible.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 1 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the first hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 2 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the second hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 3 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the third hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 4 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the fourth hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 5 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the fifth hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 6 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the sixth hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 7 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the seventh hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 8 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the eighth hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 9 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the ninth hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 10 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the tenth hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 11 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 11th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 12 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 12th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 13 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 13th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 14 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 14th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 15 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 15th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 16 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 16th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 17 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 17th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 18 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 18th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 19 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 19th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 20 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 20th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 21 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 21st hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 22 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 22nd hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 23 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 23rd hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 24 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 24th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 25 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 25th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 26 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 26th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 27 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 27th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 28 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 28th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 29 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 29th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 30 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 30th hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 31 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 31st hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hotbar slot 32 key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for selecting the 32nd hotbar slot.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "HUD toggle key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the display of the HUD.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chat toggle key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the display of chat.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Large chat console key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the display of the large chat console.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fog toggle key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the display of fog.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Camera update toggle key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the camera update. Only used for development\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Debug info toggle key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the display of debug info.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Profiler toggle key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for toggling the display of the profiler. Used for development.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Toggle camera mode key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for switching between first- and third-person camera.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "View range increase key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for increasing the viewing range.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "View range decrease key" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Key for decreasing the viewing range.\n" -"See http://irrlicht.sourceforge.net/docu/namespaceirr." -"html#a54da2a0e231901735e3da1b0edf72eb3" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Graphics" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "In-Game" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Basic" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "VBO" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable vertex buffer objects.\n" -"This should greatly improve graphics performance." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fog" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Whether to fog out the end of the visible area." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Leaves style" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Leaves style:\n" -"- Fancy: all faces visible\n" -"- Simple: only outer faces, if defined special_tiles are used\n" -"- Opaque: disable transparency" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Connect glass" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Connects glass if supported by node." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Smooth lighting" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable smooth lighting with simple ambient occlusion.\n" -"Disable for speed or for different looks." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Clouds" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Clouds are a client side effect." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "3D clouds" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Use 3D cloud look instead of flat." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Node highlighting" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Method used to highlight selected object." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Digging particles" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Adds particles when digging a node." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Filtering" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mipmapping" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Use mip mapping to scale textures. May slightly increase performance,\n" -"especially when using a high resolution texture pack.\n" -"Gamma correct downscaling is not supported." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Anisotropic filtering" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Use anisotropic filtering when viewing at textures from an angle." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bilinear filtering" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Use bilinear filtering when scaling textures." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Trilinear filtering" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Use trilinear filtering when scaling textures." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Clean transparent textures" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Filtered textures can blend RGB values with fully-transparent neighbors,\n" -"which PNG optimizers usually discard, sometimes resulting in a dark or\n" -"light edge to transparent textures. Apply this filter to clean that up\n" -"at texture load time." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Minimum texture size" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" -"can be blurred, so automatically upscale them with nearest-neighbor\n" -"interpolation to preserve crisp pixels. This sets the minimum texture size\n" -"for the upscaled textures; higher values look sharper, but require more\n" -"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n" -"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" -"enabled.\n" -"This is also used as the base node texture size for world-aligned\n" -"texture autoscaling." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "FSAA" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Experimental option, might cause visible spaces between blocks\n" -"when set to higher number than 0." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Undersampling" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Undersampling is similar to using a lower screen resolution, but it applies\n" -"to the game world only, keeping the GUI intact.\n" -"It should give a significant performance boost at the cost of less detailed " -"image.\n" -"Higher values result in a less detailed image." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Shaders allow advanced visual effects and may increase performance on some " -"video\n" -"cards.\n" -"This only works with the OpenGL video backend." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Shader path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Path to shader directory. If no path is defined, default location will be " -"used." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Filmic tone mapping" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enables Hable's 'Uncharted 2' filmic tone mapping.\n" -"Simulates the tone curve of photographic film and how this approximates the\n" -"appearance of high dynamic range images. Mid-range contrast is slightly\n" -"enhanced, highlights and shadows are gradually compressed." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bumpmapping" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enables bumpmapping for textures. Normalmaps need to be supplied by the " -"texture pack\n" -"or need to be auto-generated.\n" -"Requires shaders to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Generate normalmaps" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enables on the fly normalmap generation (Emboss effect).\n" -"Requires bumpmapping to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Normalmaps strength" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Strength of generated normalmaps." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Normalmaps sampling" -msgstr "" - #: src/settings_translation_file.cpp msgid "" -"Defines sampling step of texture.\n" -"A higher value results in smoother normal maps." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Parallax occlusion" +"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" +"Can be used to move a desired point to (0, 0) to create a\n" +"suitable spawn point, or to allow 'zooming in' on a desired\n" +"point by increasing 'scale'.\n" +"The default is tuned for a suitable spawn point for Mandelbrot\n" +"sets with default parameters, it may need altering in other\n" +"situations.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Enables parallax occlusion mapping.\n" -"Requires shaders to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Parallax occlusion mode" +"(X,Y,Z) scale of fractal in nodes.\n" +"Actual fractal size will be 2 to 3 times larger.\n" +"These numbers can be made very large, the fractal does\n" +"not have to fit inside the world.\n" +"Increase these to 'zoom' into the detail of the fractal.\n" +"Default is for a vertically-squashed shape suitable for\n" +"an island, set all 3 numbers equal for the raw shape." msgstr "" #: src/settings_translation_file.cpp @@ -3039,346 +1982,79 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" +msgid "2D noise that controls the shape/size of ridged mountains." msgstr "" #: src/settings_translation_file.cpp -msgid "Strength of parallax." +msgid "2D noise that controls the shape/size of rolling hills." msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax occlusion iterations" +msgid "2D noise that controls the shape/size of step mountains." msgstr "" #: src/settings_translation_file.cpp -msgid "Number of parallax occlusion iterations." +msgid "2D noise that controls the size/occurrence of ridged mountain ranges." msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax occlusion scale" +msgid "2D noise that controls the size/occurrence of rolling hills." msgstr "" #: src/settings_translation_file.cpp -msgid "Overall scale of parallax occlusion effect." +msgid "2D noise that controls the size/occurrence of step mountain ranges." msgstr "" #: src/settings_translation_file.cpp -msgid "Parallax occlusion bias" +msgid "2D noise that locates the river valleys and channels." msgstr "" #: src/settings_translation_file.cpp -msgid "Overall bias of parallax occlusion effect, usually scale/2." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving Nodes" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving liquids" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Set to true to enable waving liquids (like water).\n" -"Requires shaders to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving liquids wave height" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The maximum height of the surface of waving liquids.\n" -"4.0 = Wave height is two nodes.\n" -"0.0 = Wave doesn't move at all.\n" -"Default is 1.0 (1/2 node).\n" -"Requires waving liquids to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving liquids wavelength" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Length of liquid waves.\n" -"Requires waving liquids to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving liquids wave speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"How fast liquid waves will move. Higher = faster.\n" -"If negative, liquid waves will move backwards.\n" -"Requires waving liquids to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving leaves" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Set to true to enable waving leaves.\n" -"Requires shaders to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Waving plants" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Set to true to enable waving plants.\n" -"Requires shaders to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Advanced" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Arm inertia" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Arm inertia, gives a more realistic movement of\n" -"the arm when the camera moves." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum FPS" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If FPS would go higher than this, limit it by sleeping\n" -"to not waste CPU power for no benefit." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "FPS in pause menu" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum FPS when game is paused." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Pause on lost window focus" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Open the pause menu when the window's focus is lost. Does not pause if a " -"formspec is\n" -"open." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Viewing range" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "View distance in nodes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Near plane" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" -"Only works on GLES platforms. Most users will not need to change this.\n" -"Increasing can reduce artifacting on weaker GPUs.\n" -"0.1 = Default, 0.25 = Good value for weaker tablets." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Screen width" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Width component of the initial window size." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Screen height" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Height component of the initial window size." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Autosave screen size" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Save window size automatically when modified." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Full screen" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fullscreen mode." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Full screen BPP" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bits per pixel (aka color depth) in fullscreen mode." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "VSync" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Vertical screen synchronization." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Field of view" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Field of view in degrees." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Light curve gamma" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Alters the light curve by applying 'gamma correction' to it.\n" -"Higher values make middle and lower light levels brighter.\n" -"Value '1.0' leaves the light curve unaltered.\n" -"This only has significant effect on daylight and artificial\n" -"light, it has very little effect on natural night light." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Light curve low gradient" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Gradient of light curve at minimum light level.\n" -"Controls the contrast of the lowest light levels." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Light curve high gradient" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Gradient of light curve at maximum light level.\n" -"Controls the contrast of the highest light levels." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Light curve boost" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Strength of light curve boost.\n" -"The 3 'boost' parameters define a range of the light\n" -"curve that is boosted in brightness." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Light curve boost center" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Center of light curve boost range.\n" -"Where 0.0 is minimum light level, 1.0 is maximum light level." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Light curve boost spread" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Spread of light curve boost range.\n" -"Controls the width of the range to be boosted.\n" -"Standard deviation of the light curve boost Gaussian." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Texture path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Path to texture directory. All textures are first searched from here." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Video driver" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The rendering back-end for Irrlicht.\n" -"A restart is required after changing this.\n" -"Note: On Android, stick with OGLES1 if unsure! App may fail to start " -"otherwise.\n" -"On other platforms, OpenGL is recommended, and it’s the only driver with\n" -"shader support currently." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cloud radius" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Radius of cloud area stated in number of 64 node cloud squares.\n" -"Values larger than 26 will start to produce sharp cutoffs at cloud area " -"corners." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "View bobbing factor" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable view bobbing and amount of view bobbing.\n" -"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fall bobbing factor" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Multiplier for fall bobbing.\n" -"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgid "3D clouds" msgstr "" #: src/settings_translation_file.cpp msgid "3D mode" msgstr "" +#: src/settings_translation_file.cpp +msgid "3D mode parallax strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining mountain structure and height.\n" +"Also defines structure of floatland mountain terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining structure of floatlands.\n" +"If altered from the default, the noise 'scale' (0.7 by default) may need\n" +"to be adjusted, as floatland tapering functions best when this noise has\n" +"a value range of approximately -2.0 to 2.0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining structure of river canyon walls." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise that determines number of dungeons per mapchunk." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "3D support.\n" @@ -3394,190 +2070,93 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Console height" +msgid "" +"A chosen map seed for a new map, leave empty for random.\n" +"Will be overridden when creating a new world in the main menu." msgstr "" #: src/settings_translation_file.cpp -msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgid "A message to be displayed to all clients when the server crashes." msgstr "" #: src/settings_translation_file.cpp -msgid "Console color" +msgid "A message to be displayed to all clients when the server shuts down." msgstr "" #: src/settings_translation_file.cpp -msgid "In-game chat console background color (R,G,B)." +msgid "ABM interval" msgstr "" #: src/settings_translation_file.cpp -msgid "Console alpha" +msgid "Absolute limit of queued blocks to emerge" msgstr "" #: src/settings_translation_file.cpp -msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." +msgid "Acceleration in air" msgstr "" #: src/settings_translation_file.cpp -msgid "Formspec Full-Screen Background Opacity" +msgid "Acceleration of gravity, in nodes per second per second." msgstr "" #: src/settings_translation_file.cpp -msgid "Formspec full-screen background opacity (between 0 and 255)." +msgid "Active Block Modifiers" msgstr "" #: src/settings_translation_file.cpp -msgid "Formspec Full-Screen Background Color" +msgid "Active block management interval" msgstr "" #: src/settings_translation_file.cpp -msgid "Formspec full-screen background color (R,G,B)." +msgid "Active block range" msgstr "" #: src/settings_translation_file.cpp -msgid "Formspec Default Background Opacity" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Formspec default background opacity (between 0 and 255)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Formspec Default Background Color" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Formspec default background color (R,G,B)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Selection box color" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Selection box border color (R,G,B)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Selection box width" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Width of the selection box lines around nodes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crosshair color" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crosshair color (R,G,B)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crosshair alpha" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crosshair alpha (opaqueness, between 0 and 255)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Recent Chat Messages" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum number of recent chat messages to show" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Desynchronize block animation" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Whether node texture animations should be desynchronized per mapblock." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum hotbar width" +msgid "Active object send range" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Maximum proportion of current window to be used for hotbar.\n" -"Useful if there's something to be displayed right or left of hotbar." +"Address to connect to.\n" +"Leave this blank to start a local server.\n" +"Note that the address field in the main menu overrides this setting." msgstr "" #: src/settings_translation_file.cpp -msgid "HUD scale factor" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Modifies the size of the hudbar elements." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mesh cache" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enables caching of facedir rotated meshes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapblock mesh generation delay" +msgid "Adds particles when digging a node." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Delay between mesh updates on the client in ms. Increasing this will slow\n" -"down the rate of mesh updates, thus reducing jitter on slower clients." +"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " +"screens." msgstr "" #: src/settings_translation_file.cpp -msgid "Mapblock mesh generator's MapBlock cache size in MB" +#, c-format +msgid "" +"Adjusts the density of the floatland layer.\n" +"Increase value to increase density. Can be positive or negative.\n" +"Value = 0.0: 50% of volume is floatland.\n" +"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" +"to be sure) creates a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Advanced" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Size of the MapBlock cache of the mesh generator. Increasing this will\n" -"increase the cache hit %, reducing the data being copied from the main\n" -"thread, thus reducing jitter." +"Alters the light curve by applying 'gamma correction' to it.\n" +"Higher values make middle and lower light levels brighter.\n" +"Value '1.0' leaves the light curve unaltered.\n" +"This only has significant effect on daylight and artificial\n" +"light, it has very little effect on natural night light." msgstr "" #: src/settings_translation_file.cpp -msgid "Minimap" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enables minimap." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Round minimap" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Shape of the minimap. Enabled = round, disabled = square." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Minimap scan height" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"True = 256\n" -"False = 128\n" -"Usable to make minimap smoother on slower machines." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Colored fog" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." +msgid "Always fly and fast" msgstr "" #: src/settings_translation_file.cpp @@ -3585,123 +2164,23 @@ msgid "Ambient occlusion gamma" msgstr "" #: src/settings_translation_file.cpp -msgid "" -"The strength (darkness) of node ambient-occlusion shading.\n" -"Lower is darker, Higher is lighter. The valid range of values for this\n" -"setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" -"set to the nearest valid value." +msgid "Amount of messages a player may send per 10 seconds." msgstr "" #: src/settings_translation_file.cpp -msgid "Inventory items animations" +msgid "Amplifies the valleys." msgstr "" #: src/settings_translation_file.cpp -msgid "Enables animation of inventory items." +msgid "Anisotropic filtering" msgstr "" #: src/settings_translation_file.cpp -msgid "Fog start" +msgid "Announce server" msgstr "" #: src/settings_translation_file.cpp -msgid "Fraction of the visible distance at which fog starts to be rendered" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Opaque liquids" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Makes all liquids opaque" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "World-aligned textures mode" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Textures on a node may be aligned either to the node or to the world.\n" -"The former mode suits better things like machines, furniture, etc., while\n" -"the latter makes stairs and microblocks fit surroundings better.\n" -"However, as this possibility is new, thus may not be used by older servers,\n" -"this option allows enforcing it for certain node types. Note though that\n" -"that is considered EXPERIMENTAL and may not work properly." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Autoscaling mode" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"World-aligned textures may be scaled to span several nodes. However,\n" -"the server may not send the scale you want, especially if you use\n" -"a specially-designed texture pack; with this option, the client tries\n" -"to determine the scale automatically basing on the texture size.\n" -"See also texture_min_size.\n" -"Warning: This option is EXPERIMENTAL!" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Show entity selection boxes" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Menus" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Clouds in menu" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Use a cloud animation for the main menu background." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "GUI scaling" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Scale GUI by a user specified value.\n" -"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" -"This will smooth over some of the rough edges, and blend\n" -"pixels when scaling down, at the cost of blurring some\n" -"edge pixels when images are scaled by non-integer sizes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "GUI scaling filter" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"When gui_scaling_filter is true, all GUI images need to be\n" -"filtered in software, but some images are generated directly\n" -"to hardware (e.g. render-to-texture for nodes in inventory)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "GUI scaling filter txr2img" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"When gui_scaling_filter_txr2img is true, copy those images\n" -"from hardware to software for scaling. When false, fall back\n" -"to the old scaling method, for video drivers that don't\n" -"properly support downloading textures back from hardware." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Tooltip delay" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Delay showing tooltips, stated in milliseconds." +msgid "Announce to this serverlist." msgstr "" #: src/settings_translation_file.cpp @@ -3713,1039 +2192,23 @@ msgid "Append item name to tooltip." msgstr "" #: src/settings_translation_file.cpp -msgid "FreeType fonts" +msgid "Apple trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Arm inertia" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Whether FreeType fonts are used, requires FreeType support to be compiled " -"in.\n" -"If disabled, bitmap and XML vectors fonts are used instead." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font bold by default" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font italic by default" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font shadow" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Shadow offset (in pixels) of the default font. If 0, then shadow will not be " -"drawn." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font shadow alpha" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font size" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font size of the default font in point (pt)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Regular font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Path to the default font.\n" -"If “freetype” setting is enabled: Must be a TrueType font.\n" -"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" -"The fallback font will be used if the font cannot be loaded." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bold font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Italic font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bold and italic font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Monospace font size" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font size of the monospace font in point (pt)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Monospace font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Path to the monospace font.\n" -"If “freetype” setting is enabled: Must be a TrueType font.\n" -"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" -"This font is used for e.g. the console and profiler screen." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bold monospace font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Italic monospace font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bold and italic monospace font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fallback font size" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Font size of the fallback font in point (pt)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fallback font shadow" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " -"be drawn." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fallback font shadow alpha" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fallback font path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Path of the fallback font.\n" -"If “freetype” setting is enabled: Must be a TrueType font.\n" -"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" -"This font will be used for certain languages or if the default font is " -"unavailable." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Screenshot folder" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Screenshot format" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Format of screenshots." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Screenshot quality" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Screenshot quality. Only used for JPEG format.\n" -"1 means worst quality; 100 means best quality.\n" -"Use 0 for default quality." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "DPI" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " -"screens." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable console window" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Windows systems only: Start Minetest with the command line window in the " -"background.\n" -"Contains the same information as the file debug.txt (default name)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Sound" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enables the sound system.\n" -"If disabled, this completely disables all sounds everywhere and the in-game\n" -"sound controls will be non-functional.\n" -"Changing this setting requires a restart." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Volume" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Volume of all sounds.\n" -"Requires the sound system to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mute sound" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Whether to mute sounds. You can unmute sounds at any time, unless the\n" -"sound system is disabled (enable_sound=false).\n" -"In-game, you can toggle the mute state with the mute key or by using the\n" -"pause menu." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Client" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Network" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Server address" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Address to connect to.\n" -"Leave this blank to start a local server.\n" -"Note that the address field in the main menu overrides this setting." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Remote port" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Port to connect to (UDP).\n" -"Note that the port field in the main menu overrides this setting." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Saving map received from server" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Save the map received by the client on disk." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Connect to external media server" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable usage of remote media server (if provided by server).\n" -"Remote servers offer a significantly faster way to download media (e.g. " -"textures)\n" -"when connecting to the server." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Client modding" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable Lua modding support on client.\n" -"This support is experimental and API can change." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Serverlist URL" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "URL to the server list displayed in the Multiplayer Tab." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Serverlist file" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"File in client/serverlist/ that contains your favorite servers displayed in " -"the\n" -"Multiplayer Tab." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum size of the out chat queue" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Maximum size of the out chat queue.\n" -"0 to disable queueing and -1 to make the queue size unlimited." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable register confirmation" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable register confirmation when connecting to server.\n" -"If disabled, new account will be registered automatically." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapblock unload timeout" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Timeout for client to remove unused map data from memory." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapblock limit" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Maximum number of mapblocks for client to be kept in memory.\n" -"Set to -1 for unlimited amount." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Show debug info" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Whether to show the client debug info (has the same effect as hitting F5)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Server / Singleplayer" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Server name" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Name of the server, to be displayed when players join and in the serverlist." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Server description" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Description of server, to be displayed when players join and in the " -"serverlist." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Domain name of server, to be displayed in the serverlist." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Server URL" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Homepage of server, to be displayed in the serverlist." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Announce server" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Automatically report to the serverlist." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Announce to this serverlist." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Strip color codes" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Remove color codes from incoming chat messages\n" -"Use this to stop players from being able to use color in their messages" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Server port" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Network port to listen (UDP).\n" -"This value will be overridden when starting from the main menu." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Bind address" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "The network interface that the server listens on." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Strict protocol checking" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable to disallow old clients from connecting.\n" -"Older clients are compatible in the sense that they will not crash when " -"connecting\n" -"to new servers, but they may not support all new features that you are " -"expecting." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Remote media" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Specifies URL from which client fetches media instead of using UDP.\n" -"$filename should be accessible from $remote_media$filename via cURL\n" -"(obviously, remote_media should end with a slash).\n" -"Files that are not present will be fetched the usual way." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "IPv6 server" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable/disable running an IPv6 server.\n" -"Ignored if bind_address is set.\n" -"Needs enable_ipv6 to be enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum simultaneous block sends per client" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Maximum number of blocks that are simultaneously sent per client.\n" -"The maximum total count is calculated dynamically:\n" -"max_total = ceil((#clients + max_users) * per_client / 4)" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Delay in sending blocks after building" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"To reduce lag, block transfers are slowed down when a player is building " -"something.\n" -"This determines how long they are slowed down after placing or removing a " -"node." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Max. packets per iteration" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Maximum number of packets sent per send step, if you have a slow connection\n" -"try reducing it, but don't reduce it to a number below double of targeted\n" -"client number." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Default game" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Default game when creating a new world.\n" -"This will be overridden when creating a world from the main menu." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Message of the day" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Message of the day displayed to players connecting." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum users" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum number of players that can be connected simultaneously." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Map directory" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"World directory (everything in the world is stored here).\n" -"Not needed if starting from the main menu." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Item entity TTL" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Time in seconds for item entity (dropped items) to live.\n" -"Setting it to -1 disables the feature." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Damage" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable players getting damage and dying." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Creative" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable creative mode for new created maps." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fixed map seed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"A chosen map seed for a new map, leave empty for random.\n" -"Will be overridden when creating a new world in the main menu." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Default password" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "New users need to input this password." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Default privileges" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The privileges that new users automatically get.\n" -"See /privs in game for a full list on your server and mod configuration." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Basic privileges" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Privileges that players with basic_privs can grant" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Unlimited player transfer distance" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Whether players are shown to clients without any range limit.\n" -"Deprecated, use the setting player_transfer_distance instead." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Player transfer distance" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Player versus player" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Whether to allow players to damage and kill each other." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mod channels" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable mod channels support." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Static spawnpoint" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "If this is set, players will always (re)spawn at the given position." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Disallow empty passwords" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "If enabled, new players cannot join with an empty password." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Disable anticheat" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "If enabled, disable cheat prevention in multiplayer." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Rollback recording" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If enabled, actions are recorded for rollback.\n" -"This option is only read when server starts." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chat message format" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Format of player chat messages. The following strings are valid " -"placeholders:\n" -"@name, @message, @timestamp (optional)" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Shutdown message" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "A message to be displayed to all clients when the server shuts down." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Crash message" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "A message to be displayed to all clients when the server crashes." +"Arm inertia, gives a more realistic movement of\n" +"the arm when the camera moves." msgstr "" #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" msgstr "" -#: src/settings_translation_file.cpp -msgid "" -"Whether to ask clients to reconnect after a (Lua) crash.\n" -"Set this to true if your server is set up to restart automatically." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Active object send range" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"From how far clients know about objects, stated in mapblocks (16 nodes).\n" -"\n" -"Setting this larger than active_block_range will also cause the server\n" -"to maintain active objects up to this distance in the direction the\n" -"player is looking. (This can avoid mobs suddenly disappearing from view)" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Active block range" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The radius of the volume of blocks around every player that is subject to " -"the\n" -"active block stuff, stated in mapblocks (16 nodes).\n" -"In active blocks objects are loaded and ABMs run.\n" -"This is also the minimum range in which active objects (mobs) are " -"maintained.\n" -"This should be configured together with active_object_range." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Max block send distance" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"From how far blocks are sent to clients, stated in mapblocks (16 nodes)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum forceloaded blocks" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum number of forceloaded mapblocks." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Time send interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Interval of sending time of day to clients." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Time speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Controls length of day/night cycle.\n" -"Examples:\n" -"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "World start time" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Time of day when a new world is started, in millihours (0-23999)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Map save interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Interval of saving important changes in the world, stated in seconds." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chat message max length" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Set the maximum character length of a chat message sent by clients." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chat message count limit" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Amount of messages a player may send per 10 seconds." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chat message kick threshold" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Kick players who sent more than X messages per 10 seconds." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Physics" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Default acceleration" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Horizontal and vertical acceleration on ground or when climbing,\n" -"in nodes per second per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Acceleration in air" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Horizontal acceleration in air when jumping or falling,\n" -"in nodes per second per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fast mode acceleration" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Horizontal and vertical acceleration in fast mode,\n" -"in nodes per second per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Walking speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Walking and flying speed, in nodes per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Sneaking speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Sneaking speed, in nodes per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fast mode speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Walking, flying and climbing speed in fast mode, in nodes per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Climbing speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Vertical climbing speed, in nodes per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Jumping speed" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Initial vertical speed when jumping, in nodes per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid fluidity" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Decrease this to increase liquid resistance to movement." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid fluidity smoothing" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Maximum liquid resistance. Controls deceleration when entering liquid at\n" -"high speed." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid sinking" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Controls sinking speed in liquid." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Gravity" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Acceleration of gravity, in nodes per second per second." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Deprecated Lua API handling" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Handling for deprecated Lua API calls:\n" -"- legacy: (try to) mimic old behaviour (default for release).\n" -"- log: mimic and log backtrace of deprecated call (default for debug).\n" -"- error: abort on usage of deprecated call (suggested for mod developers)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Max. clearobjects extra blocks" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Number of extra blocks that can be loaded by /clearobjects at once.\n" -"This is a trade-off between sqlite transaction overhead and\n" -"memory consumption (4096=100MB, as a rule of thumb)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Unload unused server data" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"How much the server will wait before unloading unused mapblocks.\n" -"Higher value is smoother, but will use more RAM." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum objects per block" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum number of statically stored objects in a block." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Synchronous SQLite" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Dedicated server step" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Length of a server tick and the interval at which objects are generally " -"updated over\n" -"network." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Active block management interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Length of time between active block management cycles" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "ABM interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Length of time between Active Block Modifier (ABM) execution cycles" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "NodeTimer interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Length of time between NodeTimer execution cycles" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Ignore world errors" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If enabled, invalid world data won't cause the server to shut down.\n" -"Only enable this if you know what you are doing." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid loop max" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Max liquids processed per step." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid queue purge time" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The time (in seconds) that the liquids queue may grow beyond processing\n" -"capacity until an attempt is made to decrease its size by dumping old queue\n" -"items. A value of 0 disables the functionality." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid update tick" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Liquid update interval in seconds." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Block send optimize distance" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "At this distance the server will aggressively optimize which blocks are sent " @@ -4762,7 +2225,1416 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Server side occlusion culling" +msgid "Automatic forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically jump up single-node obstacles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically report to the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autosave screen size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autoscaling mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Backward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base terrain height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bind address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome API temperature and humidity noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bits per pixel (aka color depth) in fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block send optimize distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Build inside player" +msgstr "Būvēt iekšā spēlētājā" + +#: src/settings_translation_file.cpp +msgid "Builtin" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bumpmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" +"Increasing can reduce artifacting on weaker GPUs.\n" +"0.1 = Default, 0.25 = Good value for weaker tablets." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera update toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern taper" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern upper limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Center of light curve boost range.\n" +"Where 0.0 is minimum light level, 1.0 is maximum light level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Changes the main menu UI:\n" +"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, " +"etc.\n" +"- Simple: One singleplayer world, no game or texture pack choosers. May " +"be\n" +"necessary for smaller screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message count limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message kick threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message max length" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chatcommands" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clean transparent textures" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client and Server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client modding" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side modding restrictions" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side node lookup range restriction" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Climbing speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cloud radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds are a client side effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Colored fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of flags to hide in the content repository.\n" +"\"nonfree\" can be used to hide packages which do not qualify as 'free " +"software',\n" +"as defined by the Free Software Foundation.\n" +"You can also specify content ratings.\n" +"These flags are independent from Minetest versions,\n" +"so see a full list at https://content.minetest.net/help/content_flags/" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of trusted mods that are allowed to access insecure\n" +"functions even when mod security is on (via request_insecure_environment())." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Command key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect glass" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect to external media server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connects glass if supported by node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB Flag Blacklist" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Continuous forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Continuous forward movement, toggled by autoforward key.\n" +"Press the autoforward key again or the backwards movement to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls" +msgstr "Vadība" + +#: src/settings_translation_file.cpp +msgid "" +"Controls length of day/night cycle.\n" +"Examples:\n" +"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls sinking speed in liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls width of tunnels, a smaller value creates wider tunnels.\n" +"Value >= 10.0 completely disables generation of tunnels and avoids the\n" +"intensive noise calculations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crash message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Creative" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "DPI" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Damage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug info toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log file size threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dec. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease this to increase liquid resistance to movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dedicated server step" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default game when creating a new world.\n" +"This will be overridden when creating a world from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default password" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default report format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default stack size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default timeout for cURL, stated in milliseconds.\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas where trees have apples." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas with sandy beaches." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain and steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines full size of caverns, smaller values create larger caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines large-scale river channel structure." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines location and terrain of optional hills and lakes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Defines sampling step of texture.\n" +"A higher value results in smoother normal maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the base ground level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the depth of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river valley." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines tree areas and tree density." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Delay between mesh updates on the client in ms. Increasing this will slow\n" +"down the rate of mesh updates, thus reducing jitter on slower clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay in sending blocks after building" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay showing tooltips, stated in milliseconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Deprecated Lua API handling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Description of server, to be displayed when players join and in the " +"serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desert noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Deserts occur when np_biome exceeds this value.\n" +"When the 'snowbiomes' flag is enabled, this is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desynchronize block animation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Digging particles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable anticheat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disallow empty passwords" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Domain name of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double tap jump for fly" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double-tapping the jump key toggles fly mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Drop item key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dump the mapgen debug information." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable IPv6 support (for both client and server).\n" +"Required for IPv6 connections to work at all." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable Lua modding support on client.\n" +"This support is experimental and API can change." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable console window" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable creative mode for new created maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable joysticks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod channels support." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable players getting damage and dying." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random user input (only used for testing)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable register confirmation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable register confirmation when connecting to server.\n" +"If disabled, new account will be registered automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable smooth lighting with simple ambient occlusion.\n" +"Disable for speed or for different looks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable to disallow old clients from connecting.\n" +"Older clients are compatible in the sense that they will not crash when " +"connecting\n" +"to new servers, but they may not support all new features that you are " +"expecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable usage of remote media server (if provided by server).\n" +"Remote servers offer a significantly faster way to download media (e.g. " +"textures)\n" +"when connecting to the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable vertex buffer objects.\n" +"This should greatly improve graphics performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable view bobbing and amount of view bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable/disable running an IPv6 server.\n" +"Ignored if bind_address is set.\n" +"Needs enable_ipv6 to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables Hable's 'Uncharted 2' filmic tone mapping.\n" +"Simulates the tone curve of photographic film and how this approximates the\n" +"appearance of high dynamic range images. Mid-range contrast is slightly\n" +"enhanced, highlights and shadows are gradually compressed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables bumpmapping for textures. Normalmaps need to be supplied by the " +"texture pack\n" +"or need to be auto-generated.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables caching of facedir rotated meshes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables minimap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables on the fly normalmap generation (Emboss effect).\n" +"Requires bumpmapping to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables parallax occlusion mapping.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables the sound system.\n" +"If disabled, this completely disables all sounds everywhere and the in-game\n" +"sound controls will be non-functional.\n" +"Changing this setting requires a restart." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Engine profiling data print interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Entity methods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Experimental option, might cause visible spaces between blocks\n" +"when set to higher number than 0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Exponent of the floatland tapering. Alters the tapering behaviour.\n" +"Value = 1.0 creates a uniform, linear tapering.\n" +"Values > 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS in pause menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FSAA" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Factor noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fall bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast movement" +msgstr "Ātrā pārvietošanās" + +#: src/settings_translation_file.cpp +msgid "" +"Fast movement (via the \"special\" key).\n" +"This requires the \"fast\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view in degrees." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"File in client/serverlist/ that contains your favorite servers displayed in " +"the\n" +"Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Filtered textures can blend RGB values with fully-transparent neighbors,\n" +"which PNG optimizers usually discard, sometimes resulting in a dark or\n" +"light edge to transparent textures. Apply this filter to clean that up\n" +"at texture load time." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed map seed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed virtual joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fly key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Flying" +msgstr "Lidošana" + +#: src/settings_translation_file.cpp +msgid "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog start" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font bold by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font italic by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the default font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the fallback font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the monospace font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Format of player chat messages. The following strings are valid " +"placeholders:\n" +"@name, @message, @timestamp (optional)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fourth of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fractal type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fraction of the visible distance at which fog starts to be rendered" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FreeType fonts" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are generated for clients, stated in mapblocks (16 " +"nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are sent to clients, stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far clients know about objects, stated in mapblocks (16 nodes).\n" +"\n" +"Setting this larger than active_block_range will also cause the server\n" +"to maintain active objects up to this distance in the direction the\n" +"player is looking. (This can avoid mobs suddenly disappearing from view)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen BPP" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter txr2img" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Generate normalmaps" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Global callbacks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at maximum light level.\n" +"Controls the contrast of the highest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at minimum light level.\n" +"Controls the contrast of the lowest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Graphics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gravity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HTTP mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD scale factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Handling for deprecated Lua API calls:\n" +"- legacy: (try to) mimic old behaviour (default for release).\n" +"- log: mimic and log backtrace of deprecated call (default for debug).\n" +"- error: abort on usage of deprecated call (suggested for mod developers)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Have the profiler instrument itself:\n" +"* Instrument an empty function.\n" +"This estimates the overhead, that instrumentation is adding (+1 function " +"call).\n" +"* Instrument the sampler being used to update the statistics." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height select noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "High-precision FPU" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness3 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness4 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Homepage of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal acceleration in air when jumping or falling,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration in fast mode,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration on ground or when climbing,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar next key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar previous key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 1 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 10 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 11 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 12 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 13 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 14 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 15 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 16 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 17 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 18 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 19 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 2 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 20 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 21 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 22 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 23 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 24 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 25 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 26 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 27 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 28 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 29 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 3 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 30 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 31 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 32 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 4 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 5 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 6 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 7 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 8 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 9 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How deep to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How fast liquid waves will move. Higher = faster.\n" +"If negative, liquid waves will move backwards.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How much the server will wait before unloading unused mapblocks.\n" +"Higher value is smoother, but will use more RAM." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6 server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If FPS would go higher than this, limit it by sleeping\n" +"to not waste CPU power for no benefit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If disabled, \"special\" key is used to fly fast if both fly and fast mode " +"are\n" +"enabled." msgstr "" #: src/settings_translation_file.cpp @@ -4775,7 +3647,1662 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Client side modding restrictions" +msgid "" +"If enabled together with fly mode, player is able to fly through solid " +"nodes.\n" +"This requires the \"noclip\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, \"special\" key instead of \"sneak\" key is used for climbing " +"down and\n" +"descending." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, actions are recorded for rollback.\n" +"This option is only read when server starts." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, disable cheat prevention in multiplayer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, invalid world data won't cause the server to shut down.\n" +"Only enable this if you know what you are doing." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, makes move directions relative to the player's pitch when flying " +"or swimming." +msgstr "" +"Ja iespējota, liek visām kustībām peldot un lidojot būt relatīvām pret " +"spēlētāja skatīšanās virziena." + +#: src/settings_translation_file.cpp +msgid "If enabled, new players cannot join with an empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place blocks at the position (feet + eye level) where " +"you stand.\n" +"This is helpful when working with nodeboxes in small areas." +msgstr "" +"Ja iespējots, varat novietot blokus, kur Jūs stāvat.\n" +"Šis ir noderīgi, kad jābūvē šaurās vietās." + +#: src/settings_translation_file.cpp +msgid "" +"If the CSM restriction for node range is enabled, get_node calls are " +"limited\n" +"to this distance from the player to the node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the file size of debug.txt exceeds the number of megabytes specified in\n" +"this setting when it is opened, the file is moved to debug.txt.1,\n" +"deleting an older debug.txt.1 if it exists.\n" +"debug.txt is only moved if this setting is positive." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If this is set, players will always (re)spawn at the given position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ignore world errors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-Game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inc. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Initial vertical speed when jumping, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument builtin.\n" +"This is usually only needed by core/builtin contributors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument chatcommands on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument global callback functions on registration.\n" +"(anything you pass to a minetest.register_*() function)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Active Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Loading Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument the methods of entities on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrumentation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of saving important changes in the world, stated in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of sending time of day to clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert vertical mouse movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Item entity TTL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Increasing this increases the amount of fine detail, but also\n" +"increases processing load.\n" +"At iterations = 20 this mapgen has a similar load to mapgen V7." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick ID" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick button repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick frustum sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"W component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"X component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Y component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Z component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for dropping the currently selected item.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for jumping.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving fast in fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player backward.\n" +"Will also disable autoforward, when active.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player forward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player left.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player right.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for muting the game.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type local commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the inventory.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 11th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 12th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 13th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 14th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 15th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 16th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 17th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 18th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 19th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 20th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 21st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 22nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 23rd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 24th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 25th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 26th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 27th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 28th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 29th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 30th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 31st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 32nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the eighth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fifth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the first hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fourth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the next item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the ninth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the previous item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the second hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the seventh hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the sixth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the tenth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the third hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for sneaking.\n" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for switching between first- and third-person camera.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for taking screenshots.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling autoforward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling cinematic mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling display of minimap.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling flying.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling noclip mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling pitch move mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the camera update. Only used for development\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of chat.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of debug info.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of fog.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the HUD.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the large chat console.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the profiler. Used for development.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling unlimited view range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key to use view zoom when possible.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Kick players who sent more than X messages per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Language" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave proportion flooded" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large chat console key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces, if defined special_tiles are used\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Left key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick and the interval at which objects are generally " +"updated over\n" +"network." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of liquid waves.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between Active Block Modifier (ABM) execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between active block management cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Level of logging to be written to debug.txt:\n" +"- (no logging)\n" +"- none (messages with no level)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost center" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost spread" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve high gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve low gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" +"Only mapchunks completely within the mapgen limit are generated.\n" +"Value is stored per-world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limits number of parallel HTTP requests. Affects:\n" +"- Media fetch if server uses remote_media setting.\n" +"- Serverlist download and server announcement.\n" +"- Downloads performed by main menu (e.g. mod manager).\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid loop max" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid queue purge time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid sinking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update interval in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update tick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Load the game profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Load the game profiler to collect game profiling data.\n" +"Provides a /profiler command to access the compiled profile.\n" +"Useful for mod developers and server operators." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Loading Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu script" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes all liquids opaque" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map directory" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen Carpathian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Flat.\n" +"Occasional lakes and hills can be added to the flat world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Fractal.\n" +"'terrain' enables the generation of non-fractal terrain:\n" +"ocean, islands and underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill': Reduces heat with altitude.\n" +"'humid_rivers': Increases humidity around rivers.\n" +"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n" +"to become shallower and occasionally dry.\n" +"'altitude_dry': Reduces humidity with altitude." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen v5." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"The 'snowbiomes' flag enables the new 5 biome system.\n" +"When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" +"the 'jungles' flag is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map save interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generation delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generator's MapBlock cache size in MB" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock unload timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block generate distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block send distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max liquids processed per step." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. clearobjects extra blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. packets per iteration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS when game is paused." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum forceloaded blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum hotbar width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum liquid resistance. Controls deceleration when entering liquid at\n" +"high speed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks that are simultaneously sent per client.\n" +"The maximum total count is calculated dynamically:\n" +"max_total = ceil((#clients + max_users) * per_client / 4)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of blocks that can be queued for loading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be generated.\n" +"This limit is enforced per player." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be loaded from file.\n" +"This limit is enforced per player." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of forceloaded mapblocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of mapblocks for client to be kept in memory.\n" +"Set to -1 for unlimited amount." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step, if you have a slow connection\n" +"try reducing it, but don't reduce it to a number below double of targeted\n" +"client number." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of players that can be connected simultaneously." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of recent chat messages to show" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of statically stored objects in a block." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum objects per block" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum proportion of current window to be used for hotbar.\n" +"Useful if there's something to be displayed right or left of hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum simultaneous block sends per client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum size of the out chat queue" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum size of the out chat queue.\n" +"0 to disable queueing and -1 to make the queue size unlimited." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum time in ms a file download (e.g. a mod download) may take." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum users" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Menus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mesh cache" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day displayed to players connecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum texture size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mod channels" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modifies the size of the hudbar elements." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain variation noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain zero level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity multiplier." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mud noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Multiplier for fall bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of map generator to be used when creating a new world.\n" +"Creating a world in the main menu will override this.\n" +"Current mapgens in a highly unstable state:\n" +"- The optional floatlands of v7 (disabled by default)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the player.\n" +"When running a server, clients connecting with this name are admins.\n" +"When starting from the main menu, this is overridden." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the server, to be displayed when players join and in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Near plane" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Network" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Network port to listen (UDP).\n" +"This value will be overridden when starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "New users need to input this password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps sampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of emerge threads" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of emerge threads to use.\n" +"Value 0:\n" +"- Automatic selection. The number of emerge threads will be\n" +"- 'number of processors - 2', with a lower limit of 1.\n" +"Any other value:\n" +"- Specifies the number of emerge threads, with a lower limit of 1.\n" +"WARNING: Increasing the number of emerge threads increases engine mapgen\n" +"speed, but this may harm game performance by interfering with other\n" +"processes, especially in singleplayer and/or when running Lua code in\n" +"'on_generated'. For many users the optimum setting may be '1'." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of extra blocks that can be loaded by /clearobjects at once.\n" +"This is a trade-off between sqlite transaction overhead and\n" +"memory consumption (4096=100MB, as a rule of thumb)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of parallax occlusion iterations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Online Content Repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Opaque liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Open the pause menu when the window's focus is lost. Does not pause if a " +"formspec is\n" +"open." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall bias of parallax occlusion effect, usually scale/2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall scale of parallax occlusion effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion bias" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path of the fallback font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font will be used for certain languages or if the default font is " +"unavailable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to shader directory. If no path is defined, default location will be " +"used." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to texture directory. All textures are first searched from here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the default font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"The fallback font will be used if the font cannot be loaded." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the monospace font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font is used for e.g. the console and profiler screen." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pause on lost window focus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Physics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move mode" +msgstr "Kustība uz augšu/leju pēc skatīšanās virziena" + +#: src/settings_translation_file.cpp +msgid "" +"Player is able to fly without being affected by gravity.\n" +"This requires the \"fly\" privilege on the server." +msgstr "" +"Spēlētājs var lidot ignorējot gravitāciju.\n" +"Šim ir vajadzīga “fly” privilēģija servera pusē." + +#: src/settings_translation_file.cpp +msgid "Player name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player versus player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Port to connect to (UDP).\n" +"Note that the port field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prevent digging and placing from repeating when holding the mouse buttons.\n" +"Enable this when you dig or place too often by accident." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prevent mods from doing insecure things like running shell commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Print the engine's profiling data in regular intervals (in seconds).\n" +"0 = disable. Useful for developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Proportion of large caves that contain liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Radius of cloud area stated in number of 64 node cloud squares.\n" +"Values larger than 26 will start to produce sharp cutoffs at cloud area " +"corners." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Random input" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Range select key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Recent Chat Messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Regular font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Remove color codes from incoming chat messages\n" +"Use this to stop players from being able to use color in their messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Replaces the default main menu with a custom one." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Report path" msgstr "" #: src/settings_translation_file.cpp @@ -4793,732 +5320,7 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Client side node lookup range restriction" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If the CSM restriction for node range is enabled, get_node calls are " -"limited\n" -"to this distance from the player to the node." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Security" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Enable mod security" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Prevent mods from doing insecure things like running shell commands." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Trusted mods" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Comma-separated list of trusted mods that are allowed to access insecure\n" -"functions even when mod security is on (via request_insecure_environment())." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "HTTP mods" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Comma-separated list of mods that are allowed to access HTTP APIs, which\n" -"allow them to upload and download data to/from the internet." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Profiling" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Load the game profiler" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Load the game profiler to collect game profiling data.\n" -"Provides a /profiler command to access the compiled profile.\n" -"Useful for mod developers and server operators." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Default report format" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The default format in which profiles are being saved,\n" -"when calling `/profiler save [format]` without format." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Report path" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The file path relative to your worldpath in which profiles will be saved to." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Instrumentation" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Entity methods" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Instrument the methods of entities on registration." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Active Block Modifiers" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Instrument the action function of Active Block Modifiers on registration." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Loading Block Modifiers" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Instrument the action function of Loading Block Modifiers on registration." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chatcommands" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Instrument chatcommands on registration." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Global callbacks" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Instrument global callback functions on registration.\n" -"(anything you pass to a minetest.register_*() function)" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Builtin" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Instrument builtin.\n" -"This is usually only needed by core/builtin contributors" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Profiler" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Have the profiler instrument itself:\n" -"* Instrument an empty function.\n" -"This estimates the overhead, that instrumentation is adding (+1 function " -"call).\n" -"* Instrument the sampler being used to update the statistics." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Client and Server" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Player name" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Name of the player.\n" -"When running a server, clients connecting with this name are admins.\n" -"When starting from the main menu, this is overridden." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Language" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Set the language. Leave empty to use the system language.\n" -"A restart is required after changing this." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Debug log level" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Level of logging to be written to debug.txt:\n" -"- (no logging)\n" -"- none (messages with no level)\n" -"- error\n" -"- warning\n" -"- action\n" -"- info\n" -"- verbose" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Debug log file size threshold" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"If the file size of debug.txt exceeds the number of megabytes specified in\n" -"this setting when it is opened, the file is moved to debug.txt.1,\n" -"deleting an older debug.txt.1 if it exists.\n" -"debug.txt is only moved if this setting is positive." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "IPv6" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Enable IPv6 support (for both client and server).\n" -"Required for IPv6 connections to work at all." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "cURL timeout" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Default timeout for cURL, stated in milliseconds.\n" -"Only has an effect if compiled with cURL." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "cURL parallel limit" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Limits number of parallel HTTP requests. Affects:\n" -"- Media fetch if server uses remote_media setting.\n" -"- Serverlist download and server announcement.\n" -"- Downloads performed by main menu (e.g. mod manager).\n" -"Only has an effect if compiled with cURL." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "cURL file download timeout" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum time in ms a file download (e.g. a mod download) may take." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "High-precision FPU" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Main menu style" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Changes the main menu UI:\n" -"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, " -"etc.\n" -"- Simple: One singleplayer world, no game or texture pack choosers. May " -"be\n" -"necessary for smaller screens." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Main menu script" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Replaces the default main menu with a custom one." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Engine profiling data print interval" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Print the engine's profiling data in regular intervals (in seconds).\n" -"0 = disable. Useful for developers." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen name" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Name of map generator to be used when creating a new world.\n" -"Creating a world in the main menu will override this.\n" -"Current mapgens in a highly unstable state:\n" -"- The optional floatlands of v7 (disabled by default)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Water level" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Water surface level of the world." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Max block generate distance" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"From how far blocks are generated for clients, stated in mapblocks (16 " -"nodes)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Map generation limit" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" -"Only mapchunks completely within the mapgen limit are generated.\n" -"Value is stored per-world." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Global map generation attributes.\n" -"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" -"and junglegrass, in all other mapgens this flag controls all decorations." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Biome API temperature and humidity noise parameters" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Heat noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Temperature variation for biomes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Heat blend noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Small-scale temperature variation for blending biomes on borders." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Humidity noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Humidity variation for biomes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Humidity blend noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Small-scale humidity variation for blending biomes on borders." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen V5" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen V5 specific flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Map generation attributes specific to Mapgen v5." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cave width" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Controls width of tunnels, a smaller value creates wider tunnels.\n" -"Value >= 10.0 completely disables generation of tunnels and avoids the\n" -"intensive noise calculations." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Large cave depth" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Y of upper limit of large caves." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Small cave minimum number" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Small cave maximum number" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Large cave minimum number" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Large cave maximum number" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Maximum limit of random number of large caves per mapchunk." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Large cave proportion flooded" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Proportion of large caves that contain liquid." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cavern limit" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Y-level of cavern upper limit." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cavern taper" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Y-distance over which caverns expand to full size." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cavern threshold" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines full size of caverns, smaller values create larger caverns." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Dungeon minimum Y" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Lower Y limit of dungeons." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Dungeon maximum Y" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Upper Y limit of dungeons." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Noises" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Filler depth noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Variation of biome filler depth." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Factor noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Variation of terrain vertical scale.\n" -"When noise is < -0.55 terrain is near-flat." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Height noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Y-level of average terrain surface." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cave1 noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "First of two 3D noises that together define tunnels." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cave2 noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Second of two 3D noises that together define tunnels." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cavern noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "3D noise defining giant caverns." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Ground noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "3D noise defining terrain." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Dungeon noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "3D noise that determines number of dungeons per mapchunk." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen V6" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen V6 specific flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Map generation attributes specific to Mapgen v6.\n" -"The 'snowbiomes' flag enables the new 5 biome system.\n" -"When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" -"the 'jungles' flag is ignored." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Desert noise threshold" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Deserts occur when np_biome exceeds this value.\n" -"When the 'snowbiomes' flag is enabled, this is ignored." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Beach noise threshold" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Sandy beaches occur when np_beach exceeds this value." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Terrain base noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Y-level of lower terrain and seabed." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Terrain higher noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Y-level of higher terrain that creates cliffs." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Steepness noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Varies steepness of cliffs." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Height select noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines distribution of higher terrain." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mud noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Varies depth of biome surface nodes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Beach noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines areas with sandy beaches." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Biome noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cave noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Variation of number of caves." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Trees noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines tree areas and tree density." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Apple trees noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines areas where trees have apples." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen V7" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen V7 specific flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mountain zero level" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Y of mountain density gradient zero level. Used to shift mountains " -"vertically." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Terrain alternative noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Terrain persistence noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Varies roughness of terrain.\n" -"Defines the 'persistence' value for terrain_base and terrain_alt noises." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines distribution of higher terrain and steepness of cliffs." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mountain height noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Variation of maximum mountain height (in nodes)." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Ridge underwater noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines large-scale river channel structure." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mountain noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"3D noise defining mountain structure and height.\n" -"Also defines structure of floatland mountain terrain." +msgid "Ridge mountain spread noise" msgstr "" #: src/settings_translation_file.cpp @@ -5526,115 +5328,7 @@ msgid "Ridge noise" msgstr "" #: src/settings_translation_file.cpp -msgid "3D noise defining structure of river canyon walls." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen Carpathian" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen Carpathian specific flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Map generation attributes specific to Mapgen Carpathian." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Base ground level" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines the base ground level." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "River channel width" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines the width of the river channel." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "River channel depth" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines the depth of the river channel." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "River valley width" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Defines the width of the river valley." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hilliness1 noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "First of 4 2D noises that together define hill/mountain range height." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hilliness2 noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Second of 4 2D noises that together define hill/mountain range height." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hilliness3 noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Third of 4 2D noises that together define hill/mountain range height." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Hilliness4 noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fourth of 4 2D noises that together define hill/mountain range height." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Rolling hills spread noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "2D noise that controls the size/occurrence of rolling hills." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Ridge mountain spread noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "2D noise that controls the size/occurrence of ridged mountain ranges." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Step mountain spread noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "2D noise that controls the size/occurrence of step mountain ranges." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Rolling hill size noise" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "2D noise that controls the shape/size of rolling hills." +msgid "Ridge underwater noise" msgstr "" #: src/settings_translation_file.cpp @@ -5642,15 +5336,23 @@ msgid "Ridged mountain size noise" msgstr "" #: src/settings_translation_file.cpp -msgid "2D noise that controls the shape/size of ridged mountains." +msgid "Right key" msgstr "" #: src/settings_translation_file.cpp -msgid "Step mountain size noise" +msgid "Rightclick repetition interval" msgstr "" #: src/settings_translation_file.cpp -msgid "2D noise that controls the shape/size of step mountains." +msgid "River channel depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River depth" msgstr "" #: src/settings_translation_file.cpp @@ -5658,102 +5360,115 @@ msgid "River noise" msgstr "" #: src/settings_translation_file.cpp -msgid "2D noise that locates the river valleys and channels." +msgid "River size" msgstr "" #: src/settings_translation_file.cpp -msgid "Mountain variation noise" +msgid "River valley width" msgstr "" #: src/settings_translation_file.cpp -msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." +msgid "Rollback recording" msgstr "" #: src/settings_translation_file.cpp -msgid "Mapgen Flat" +msgid "Rolling hill size noise" msgstr "" #: src/settings_translation_file.cpp -msgid "Mapgen Flat specific flags" +msgid "Rolling hills spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Round minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Safe digging and placing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sandy beaches occur when np_beach exceeds this value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save the map received by the client on disk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save window size automatically when modified." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Saving map received from server" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Map generation attributes specific to Mapgen Flat.\n" -"Occasional lakes and hills can be added to the flat world." +"Scale GUI by a user specified value.\n" +"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" +"This will smooth over some of the rough edges, and blend\n" +"pixels when scaling down, at the cost of blurring some\n" +"edge pixels when images are scaled by non-integer sizes." msgstr "" #: src/settings_translation_file.cpp -msgid "Ground level" +msgid "Screen height" msgstr "" #: src/settings_translation_file.cpp -msgid "Y of flat ground." +msgid "Screen width" msgstr "" #: src/settings_translation_file.cpp -msgid "Lake threshold" +msgid "Screenshot folder" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Terrain noise threshold for lakes.\n" -"Controls proportion of world area covered by lakes.\n" -"Adjust towards 0.0 for a larger proportion." +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." msgstr "" #: src/settings_translation_file.cpp -msgid "Lake steepness" +msgid "Seabed noise" msgstr "" #: src/settings_translation_file.cpp -msgid "Controls steepness/depth of lake depressions." +msgid "Second of 4 2D noises that together define hill/mountain range height." msgstr "" #: src/settings_translation_file.cpp -msgid "Hill threshold" +msgid "Second of two 3D noises that together define tunnels." msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Terrain noise threshold for hills.\n" -"Controls proportion of world area covered by hills.\n" -"Adjust towards 0.0 for a larger proportion." +msgid "Security" msgstr "" #: src/settings_translation_file.cpp -msgid "Hill steepness" +msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" msgstr "" #: src/settings_translation_file.cpp -msgid "Controls steepness/height of hills." +msgid "Selection box border color (R,G,B)." msgstr "" #: src/settings_translation_file.cpp -msgid "Terrain noise" +msgid "Selection box color" msgstr "" #: src/settings_translation_file.cpp -msgid "Defines location and terrain of optional hills and lakes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen Fractal" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen Fractal specific flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Map generation attributes specific to Mapgen Fractal.\n" -"'terrain' enables the generation of non-fractal terrain:\n" -"ocean, islands and underground." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Fractal type" +msgid "Selection box width" msgstr "" #: src/settings_translation_file.cpp @@ -5780,221 +5495,107 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Iterations" +msgid "Server / Singleplayer" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server description" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server side occlusion culling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist file" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Iterations of the recursive function.\n" -"Increasing this increases the amount of fine detail, but also\n" -"increases processing load.\n" -"At iterations = 20 this mapgen has a similar load to mapgen V7." +"Set the language. Leave empty to use the system language.\n" +"A restart is required after changing this." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set the maximum character length of a chat message sent by clients." msgstr "" #: src/settings_translation_file.cpp msgid "" -"(X,Y,Z) scale of fractal in nodes.\n" -"Actual fractal size will be 2 to 3 times larger.\n" -"These numbers can be made very large, the fractal does\n" -"not have to fit inside the world.\n" -"Increase these to 'zoom' into the detail of the fractal.\n" -"Default is for a vertically-squashed shape suitable for\n" -"an island, set all 3 numbers equal for the raw shape." +"Set to true to enable waving leaves.\n" +"Requires shaders to be enabled." msgstr "" #: src/settings_translation_file.cpp msgid "" -"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" -"Can be used to move a desired point to (0, 0) to create a\n" -"suitable spawn point, or to allow 'zooming in' on a desired\n" -"point by increasing 'scale'.\n" -"The default is tuned for a suitable spawn point for Mandelbrot\n" -"sets with default parameters, it may need altering in other\n" -"situations.\n" -"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Slice w" +"Set to true to enable waving liquids (like water).\n" +"Requires shaders to be enabled." msgstr "" #: src/settings_translation_file.cpp msgid "" -"W coordinate of the generated 3D slice of a 4D fractal.\n" -"Determines which 3D slice of the 4D shape is generated.\n" -"Alters the shape of the fractal.\n" -"Has no effect on 3D fractals.\n" -"Range roughly -2 to 2." +"Set to true to enable waving plants.\n" +"Requires shaders to be enabled." msgstr "" #: src/settings_translation_file.cpp -msgid "Julia x" +msgid "Shader path" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Julia set only.\n" -"X component of hypercomplex constant.\n" -"Alters the shape of the fractal.\n" -"Range roughly -2 to 2." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Julia y" +"Shaders allow advanced visual effects and may increase performance on some " +"video\n" +"cards.\n" +"This only works with the OpenGL video backend." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Julia set only.\n" -"Y component of hypercomplex constant.\n" -"Alters the shape of the fractal.\n" -"Range roughly -2 to 2." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Julia z" +"Shadow offset (in pixels) of the default font. If 0, then shadow will not be " +"drawn." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Julia set only.\n" -"Z component of hypercomplex constant.\n" -"Alters the shape of the fractal.\n" -"Range roughly -2 to 2." +"Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " +"be drawn." msgstr "" #: src/settings_translation_file.cpp -msgid "Julia w" +msgid "Shape of the minimap. Enabled = round, disabled = square." msgstr "" #: src/settings_translation_file.cpp -msgid "" -"Julia set only.\n" -"W component of hypercomplex constant.\n" -"Alters the shape of the fractal.\n" -"Has no effect on 3D fractals.\n" -"Range roughly -2 to 2." +msgid "Show debug info" msgstr "" #: src/settings_translation_file.cpp -msgid "Seabed noise" +msgid "Show entity selection boxes" msgstr "" #: src/settings_translation_file.cpp -msgid "Y-level of seabed." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen Valleys" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Mapgen Valleys specific flags" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"Map generation attributes specific to Mapgen Valleys.\n" -"'altitude_chill': Reduces heat with altitude.\n" -"'humid_rivers': Increases humidity around rivers.\n" -"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n" -"to become shallower and occasionally dry.\n" -"'altitude_dry': Reduces humidity with altitude." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Altitude chill" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "" -"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n" -"enabled. Also the vertical distance over which humidity drops by 10 if\n" -"'altitude_dry' is enabled." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Depth below which you'll find large caves." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cavern upper limit" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Depth below which you'll find giant caverns." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "River depth" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "How deep to make rivers." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "River size" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "How wide to make rivers." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cave noise #1" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Cave noise #2" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Filler depth" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "The depth of dirt or other biome filler node." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Terrain height" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Base terrain height." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Valley depth" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Raises terrain to make valleys around the rivers." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Valley fill" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Slope and fill work together to modify the heights." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Valley profile" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Amplifies the valleys." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Valley slope" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Chunk size" +msgid "Shutdown message" msgstr "" #: src/settings_translation_file.cpp @@ -6008,68 +5609,211 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Mapgen debug" +msgid "" +"Size of the MapBlock cache of the mesh generator. Increasing this will\n" +"increase the cache hit %, reducing the data being copied from the main\n" +"thread, thus reducing jitter." msgstr "" #: src/settings_translation_file.cpp -msgid "Dump the mapgen debug information." +msgid "Slice w" msgstr "" #: src/settings_translation_file.cpp -msgid "Absolute limit of emerge queues" +msgid "Slope and fill work together to modify the heights." msgstr "" #: src/settings_translation_file.cpp -msgid "Maximum number of blocks that can be queued for loading." +msgid "Small cave maximum number" msgstr "" #: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" +msgid "Small cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale humidity variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale temperature variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooth lighting" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"Smooths camera when looking around. Also called look or mouse smoothing.\n" +"Useful for recording videos." msgstr "" #: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" +msgid "Smooths rotation of camera in cinematic mode. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneak key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key for climbing/descending" msgstr "" #: src/settings_translation_file.cpp msgid "" -"Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Number of emerge threads" +"Specifies URL from which client fetches media instead of using UDP.\n" +"$filename should be accessible from $remote_media$filename via cURL\n" +"(obviously, remote_media should end with a slash).\n" +"Files that are not present will be fetched the usual way." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" -"Value 0:\n" -"- Automatic selection. The number of emerge threads will be\n" -"- 'number of processors - 2', with a lower limit of 1.\n" -"Any other value:\n" -"- Specifies the number of emerge threads, with a lower limit of 1.\n" -"WARNING: Increasing the number of emerge threads increases engine mapgen\n" -"speed, but this may harm game performance by interfering with other\n" -"processes, especially in singleplayer and/or when running Lua code in\n" -"'on_generated'. For many users the optimum setting may be '1'." +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." msgstr "" #: src/settings_translation_file.cpp -msgid "Online Content Repository" +msgid "" +"Spread of light curve boost range.\n" +"Controls the width of the range to be boosted.\n" +"Standard deviation of the light curve boost Gaussian." msgstr "" #: src/settings_translation_file.cpp -msgid "ContentDB URL" +msgid "Static spawnpoint" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Steepness noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of generated normalmaps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Strength of light curve boost.\n" +"The 3 'boost' parameters define a range of the light\n" +"curve that is boosted in brightness." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strict protocol checking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strip color codes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Synchronous SQLite" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Temperature variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain alternative noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain base noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain higher noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain persistence noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Textures on a node may be aligned either to the node or to the world.\n" +"The former mode suits better things like machines, furniture, etc., while\n" +"the latter makes stairs and microblocks fit surroundings better.\n" +"However, as this possibility is new, thus may not be used by older servers,\n" +"this option allows enforcing it for certain node types. Note though that\n" +"that is considered EXPERIMENTAL and may not work properly." msgstr "" #: src/settings_translation_file.cpp @@ -6077,16 +5821,575 @@ msgid "The URL for the content repository" msgstr "" #: src/settings_translation_file.cpp -msgid "ContentDB Flag Blacklist" +msgid "" +"The default format in which profiles are being saved,\n" +"when calling `/profiler save [format]` without format." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other biome filler node." msgstr "" #: src/settings_translation_file.cpp msgid "" -"Comma-separated list of flags to hide in the content repository.\n" -"\"nonfree\" can be used to hide packages which do not qualify as 'free " -"software',\n" -"as defined by the Free Software Foundation.\n" -"You can also specify content ratings.\n" -"These flags are independent from Minetest versions,\n" -"so see a full list at https://content.minetest.net/help/content_flags/" +"The file path relative to your worldpath in which profiles will be saved to." msgstr "" + +#: src/settings_translation_file.cpp +msgid "The identifier of the joystick to use" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The length in pixels it takes for touch screen interaction to start." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The maximum height of the surface of waving liquids.\n" +"4.0 = Wave height is two nodes.\n" +"0.0 = Wave doesn't move at all.\n" +"Default is 1.0 (1/2 node).\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The network interface that the server listens on." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The privileges that new users automatically get.\n" +"See /privs in game for a full list on your server and mod configuration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The radius of the volume of blocks around every player that is subject to " +"the\n" +"active block stuff, stated in mapblocks (16 nodes).\n" +"In active blocks objects are loaded and ABMs run.\n" +"This is also the minimum range in which active objects (mobs) are " +"maintained.\n" +"This should be configured together with active_object_send_range_blocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The rendering back-end for Irrlicht.\n" +"A restart is required after changing this.\n" +"Note: On Android, stick with OGLES1 if unsure! App may fail to start " +"otherwise.\n" +"On other platforms, OpenGL is recommended, and it’s the only driver with\n" +"shader support currently." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The sensitivity of the joystick axes for moving the\n" +"ingame view frustum around." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The strength (darkness) of node ambient-occlusion shading.\n" +"Lower is darker, Higher is lighter. The valid range of values for this\n" +"setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" +"set to the nearest valid value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time (in seconds) that the liquids queue may grow beyond processing\n" +"capacity until an attempt is made to decrease its size by dumping old queue\n" +"items. A value of 0 disables the functionality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated events\n" +"when holding down a joystick button combination." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated right clicks when holding the " +"right\n" +"mouse button." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The type of joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n" +"enabled. Also the vertical distance over which humidity drops by 10 if\n" +"'altitude_dry' is enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Third of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Time in seconds for item entity (dropped items) to live.\n" +"Setting it to -1 disables the feature." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time of day when a new world is started, in millihours (0-23999)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time send interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Timeout for client to remove unused map data from memory." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"To reduce lag, block transfers are slowed down when a player is building " +"something.\n" +"This determines how long they are slowed down after placing or removing a " +"node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touch screen threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"True = 256\n" +"False = 128\n" +"Usable to make minimap smoother on slower machines." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trusted mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "URL to the server list displayed in the Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Undersampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Undersampling is similar to using a lower screen resolution, but it applies\n" +"to the game world only, keeping the GUI intact.\n" +"It should give a significant performance boost at the cost of less detailed " +"image.\n" +"Higher values result in a less detailed image." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unlimited player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unload unused server data" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use 3D cloud look instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use anisotropic filtering when viewing at textures from an angle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use mip mapping to scale textures. May slightly increase performance,\n" +"especially when using a high resolution texture pack.\n" +"Gamma correct downscaling is not supported." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use trilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VSync" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of biome filler depth." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of maximum mountain height (in nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of number of caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Variation of terrain vertical scale.\n" +"When noise is < -0.55 terrain is near-flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies depth of biome surface nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Varies roughness of terrain.\n" +"Defines the 'persistence' value for terrain_base and terrain_alt noises." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical climbing speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical screen synchronization." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Video driver" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View distance in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range decrease key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range increase key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View zoom key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Viewing range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Virtual joystick triggers aux button" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volume" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Volume of all sounds.\n" +"Requires the sound system to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"W coordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking and flying speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking, flying and climbing speed in fast mode, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water surface level of the world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving Nodes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving leaves" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wavelength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving plants" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter is true, all GUI images need to be\n" +"filtered in software, but some images are generated directly\n" +"to hardware (e.g. render-to-texture for nodes in inventory)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter_txr2img is true, copy those images\n" +"from hardware to software for scaling. When false, fall back\n" +"to the old scaling method, for video drivers that don't\n" +"properly support downloading textures back from hardware." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" +"can be blurred, so automatically upscale them with nearest-neighbor\n" +"interpolation to preserve crisp pixels. This sets the minimum texture size\n" +"for the upscaled textures; higher values look sharper, but require more\n" +"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n" +"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" +"enabled.\n" +"This is also used as the base node texture size for world-aligned\n" +"texture autoscaling." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether FreeType fonts are used, requires FreeType support to be compiled " +"in.\n" +"If disabled, bitmap and XML vectors fonts are used instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether node texture animations should be desynchronized per mapblock." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether players are shown to clients without any range limit.\n" +"Deprecated, use the setting player_transfer_distance instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to allow players to damage and kill each other." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to ask clients to reconnect after a (Lua) crash.\n" +"Set this to true if your server is set up to restart automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to fog out the end of the visible area." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to mute sounds. You can unmute sounds at any time, unless the\n" +"sound system is disabled (enable_sound=false).\n" +"In-game, you can toggle the mute state with the mute key or by using the\n" +"pause menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selection box lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Windows systems only: Start Minetest with the command line window in the " +"background.\n" +"Contains the same information as the file debug.txt (default name)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World directory (everything in the world is stored here).\n" +"Not needed if starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World start time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World-aligned textures may be scaled to span several nodes. However,\n" +"the server may not send the scale you want, especially if you use\n" +"a specially-designed texture pack; with this option, the client tries\n" +"to determine the scale automatically basing on the texture size.\n" +"See also texture_min_size.\n" +"Warning: This option is EXPERIMENTAL!" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World-aligned textures mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y of mountain density gradient zero level. Used to shift mountains " +"vertically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-distance over which caverns expand to full size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of average terrain surface." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of cavern upper limit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of higher terrain that creates cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of lower terrain and seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL parallel limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL timeout" +msgstr "" + +#~ msgid "Back" +#~ msgstr "Atpakaļ" + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Lejuplādējas un instalējas $1, lūdzu uzgaidiet..." + +#~ msgid "Ok" +#~ msgstr "Ok" diff --git a/po/minetest.pot b/po/minetest.pot index 7157641b0..3f343389a 100644 --- a/po/minetest.pot +++ b/po/minetest.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,6 +25,10 @@ msgstr "" msgid "Respawn" msgstr "" +#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp +msgid "OK" +msgstr "" + #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" msgstr "" @@ -45,10 +49,6 @@ msgstr "" msgid "An error occurred:" msgstr "" -#: builtin/fstk/ui.lua -msgid "Ok" -msgstr "" - #: builtin/mainmenu/common.lua src/client/game.cpp msgid "Loading..." msgstr "" @@ -128,6 +128,10 @@ msgstr "" msgid "Cancel" msgstr "" +#: builtin/mainmenu/dlg_config_world.lua +msgid "Find More Mods" +msgstr "" + #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" msgstr "" @@ -154,6 +158,10 @@ msgid "" "characters [a-z0-9_] are allowed." msgstr "" +#: builtin/mainmenu/dlg_contentstore.lua +msgid "ContentDB is not available when Minetest was compiled without cURL" +msgstr "" + #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" msgstr "" @@ -177,11 +185,24 @@ msgid "Failed to download $1" msgstr "" #: builtin/mainmenu/dlg_contentstore.lua -msgid "Downloading and installing $1, please wait..." +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua +msgid "Search" msgstr "" #: builtin/mainmenu/dlg_contentstore.lua -msgid "Back" +msgid "Back to Main Menu" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No results" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No packages could be retrieved" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Downloading..." msgstr "" #: builtin/mainmenu/dlg_contentstore.lua @@ -197,20 +218,173 @@ msgid "Uninstall" msgstr "" #: builtin/mainmenu/dlg_contentstore.lua -#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua -msgid "Search" +msgid "View" msgstr "" -#: builtin/mainmenu/dlg_contentstore.lua -msgid "Back to Main Menu" +#: builtin/mainmenu/dlg_create_world.lua +msgid "Caverns" msgstr "" -#: builtin/mainmenu/dlg_contentstore.lua -msgid "No results" +#: builtin/mainmenu/dlg_create_world.lua +msgid "Very large caverns deep in the underground" msgstr "" -#: builtin/mainmenu/dlg_contentstore.lua -msgid "No packages could be retrieved" +#: builtin/mainmenu/dlg_create_world.lua +msgid "Sea level rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mountains" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Floatlands (experimental)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Floating landmasses in the sky" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Altitude chill" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces heat with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Altitude dry" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces humidity with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Humid rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Increases humidity around rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Vary river depth" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Low humidity and high heat causes shallow or dry rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Hills" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Lakes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Additional terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Generate non-fractal terrain: Oceans and underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Trees and jungle grass" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Flat terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mud flow" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Terrain surface erosion" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle, Tundra, Taiga" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "You have no games installed." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download one from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Caves" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Dungeons" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Decorations" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "" +"Structures appearing on the terrain (no effect on trees and jungle grass " +"created by v6)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Structures appearing on the terrain, typically trees and plants" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Network of tunnels and caves" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Biome blending" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Smooth transition between biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mapgen-specific flags" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Warning: The Development Test is meant for developers." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download a game, such as Minetest Game, from minetest.net" msgstr "" #: builtin/mainmenu/dlg_create_world.lua @@ -234,22 +408,6 @@ msgstr "" msgid "Create" msgstr "" -#: builtin/mainmenu/dlg_create_world.lua -msgid "You have no games installed." -msgstr "" - -#: builtin/mainmenu/dlg_create_world.lua -msgid "Download one from minetest.net" -msgstr "" - -#: builtin/mainmenu/dlg_create_world.lua -msgid "Warning: The minimal development test is meant for developers." -msgstr "" - -#: builtin/mainmenu/dlg_create_world.lua -msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "" - #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" msgstr "" @@ -529,6 +687,10 @@ msgstr "" msgid "Previous Contributors" msgstr "" +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" + #: builtin/mainmenu/tab_local.lua msgid "Configure" msgstr "" @@ -934,12 +1096,20 @@ msgstr "" msgid "Sound unmuted" msgstr "" +#: src/client/game.cpp +msgid "Sound system is disabled" +msgstr "" + #: src/client/game.cpp #, c-format msgid "Volume changed to %d%%" msgstr "" -#: src/client/game.cpp src/gui/modalMenu.cpp +#: src/client/game.cpp +msgid "Sound system is not supported on this build" +msgstr "" + +#: src/client/game.cpp msgid "ok" msgstr "" @@ -2982,14 +3152,6 @@ msgid "" "1 = relief mapping (slower, more accurate)." msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Parallax occlusion iterations" msgstr "" @@ -3337,6 +3499,14 @@ msgid "" "Note that the interlaced mode requires shaders to be enabled." msgstr "" +#: src/settings_translation_file.cpp +msgid "3D mode parallax strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Console height" msgstr "" @@ -3798,12 +3968,24 @@ msgid "" "unavailable." msgstr "" +#: src/settings_translation_file.cpp +msgid "Chat font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "Screenshot folder" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -3909,6 +4091,18 @@ msgid "" "Note that the port field in the main menu overrides this setting." msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Saving map received from server" msgstr "" @@ -4196,6 +4390,17 @@ msgid "" "Setting it to -1 disables the feature." msgstr "" +#: src/settings_translation_file.cpp +msgid "Default stack size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "Damage" msgstr "" @@ -4378,7 +4583,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -4937,6 +5142,14 @@ msgid "" "debug.txt is only moved if this setting is positive." msgstr "" +#: src/settings_translation_file.cpp +msgid "Chat log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "IPv6" msgstr "" @@ -5059,10 +5272,6 @@ msgid "" "Value is stored per-world." msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Global map generation attributes.\n" @@ -5408,7 +5617,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -5421,6 +5632,80 @@ msgid "" "vertically." msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Exponent of the floatland tapering. Alters the tapering behaviour.\n" +"Value = 1.0 creates a uniform, linear tapering.\n" +"Values > 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +#, c-format +msgid "" +"Adjusts the density of the floatland layer.\n" +"Increase value to increase density. Can be positive or negative.\n" +"Value = 0.0: 50% of volume is floatland.\n" +"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" +"to be sure) creates a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Terrain alternative noise" msgstr "" @@ -5473,6 +5758,18 @@ msgstr "" msgid "3D noise defining structure of river canyon walls." msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining structure of floatlands.\n" +"If altered from the default, the noise 'scale' (0.7 by default) may need\n" +"to be adjusted, as floatland tapering functions best when this noise has\n" +"a value range of approximately -2.0 to 2.0." +msgstr "" + #: src/settings_translation_file.cpp msgid "Mapgen Carpathian" msgstr "" @@ -5846,10 +6143,6 @@ msgid "" "'altitude_dry': Reduces humidity with altitude." msgstr "" -#: src/settings_translation_file.cpp -msgid "Altitude chill" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "The vertical distance over which heat drops by 20 if 'altitude_chill' is\n" @@ -5960,7 +6253,7 @@ msgid "Dump the mapgen debug information." msgstr "" #: src/settings_translation_file.cpp -msgid "Absolute limit of emerge queues" +msgid "Absolute limit of queued blocks to emerge" msgstr "" #: src/settings_translation_file.cpp @@ -5968,23 +6261,23 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "" #: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" +msgid "Per-player limit of queued blocks load from disk" msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" +msgid "Per-player limit of queued blocks to generate" msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -5994,9 +6287,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" diff --git a/po/ms/minetest.po b/po/ms/minetest.po index 4e17b505f..9eba67cfd 100644 --- a/po/ms/minetest.po +++ b/po/ms/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Malay (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-04-22 04:11+0000\n" "Last-Translator: Muhammad Nur Hidayat Yasuyoshi \n" "Language-Team: Malay 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS di menu jeda" @@ -3060,6 +3292,41 @@ msgstr "Benih peta tetap" msgid "Fixed virtual joystick" msgstr "Kayu bedik maya tetap" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Ketumpatan gunung tanah terapung" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Y maksimum kurungan bawah tanah" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Y minimum kurungan bawah tanah" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Hingar asas tanah terapung" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Eksponen gunung tanah terapung" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Hingar asas tanah terapung" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Aras tanah terapung" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Kekunci terbang" @@ -3112,6 +3379,12 @@ msgstr "Saiz fon bagi fon berbalik dalam unit poin (pt)." msgid "Font size of the monospace font in point (pt)." msgstr "Saiz fon bagi fon monospace dalam unit poin (pt)." +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4755,14 +5028,6 @@ msgstr "Kecerunan tinggi lengkung cahaya" msgid "Light curve low gradient" msgstr "Kecerunan rendah lengkung cahaya" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Had baris hilir keluar pada cakera" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Had baris gilir keluar untuk dijana" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4838,6 +5103,11 @@ msgstr "Memuatkan Pengubah Blok" msgid "Lower Y limit of dungeons." msgstr "Had Y bawah kurungan bawah tanah." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Had Y bawah kurungan bawah tanah." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Skrip menu utama" @@ -4921,9 +5191,12 @@ msgstr "" "automatik dan bendera 'jungles' diabaikan." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "Atribut penjanaan peta khusus untuk Janapeta v7.\n" "'ridges' membolehkan sungai." @@ -5012,10 +5285,6 @@ msgstr "Bendera khusus Janapeta Valleys" msgid "Mapgen debug" msgstr "Nyahpepijat janapeta" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Bendera janapeta" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Nama janapeta" @@ -5087,17 +5356,19 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Jumlah maksimum blok yang boleh dibaris gilirkan untuk dimuatkan." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Jumlah maksimum blok baris gilir untuk dijana.\n" "Tetapkan kepada kosong untuk memilih jumlah sesuai secara automatik." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Jumlah maksimum blok baris gilir untuk dimuatkan daripada fail.\n" "Tetapkan kepada kosong untuk memilih jumlah sesuai secara automatik." @@ -5195,6 +5466,10 @@ msgstr "Mesej hari ini yang akan dipaparkan kepada pemain yang menyambung." msgid "Method used to highlight selected object." msgstr "Kaedah yang digunakan untuk menonjolkan objek dipilih." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Peta mini" @@ -5367,11 +5642,9 @@ msgid "Number of emerge threads" msgstr "Jumlah jalur keluar" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5468,10 +5741,6 @@ msgstr "Mod oklusi paralaks" msgid "Parallax occlusion scale" msgstr "Skala oklusi paralaks" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Kekuatan oklusi paralaks" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5488,8 +5757,10 @@ msgstr "" "tersedia." #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Laluan untuk simpan tangkap layar." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5533,6 +5804,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Jeda ketika hilang fokus tetingkap" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Had baris gilir keluar untuk dijana" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Ikut fizik" @@ -5615,6 +5895,18 @@ msgstr "Kekunci togol pembukah" msgid "Profiling" msgstr "Pemprofilan" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "Perkadaran gua besar yang mempunyai cecair." @@ -6136,6 +6428,13 @@ msgstr "" "condong).\n" "Fail yang tidak wujud akan diambil dengan cara biasa." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6162,6 +6461,11 @@ msgstr "Hingar saiz gunung curam" msgid "Step mountain spread noise" msgstr "Hingar sebar gunung curam" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Kekuatan paralaks." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Kekuatan peta normal yang dijana." @@ -6176,10 +6480,6 @@ msgstr "" "Tiga parameter 'tolakan' mentakrifkan julat lengkung\n" "cahaya yang ditolak dalam pencahayaan." -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Kekuatan paralaks." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Pemeriksaan protokal ketat" @@ -6188,6 +6488,20 @@ msgstr "Pemeriksaan protokal ketat" msgid "Strip color codes" msgstr "Buang kod warna" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "SQLite segerak" @@ -6321,6 +6635,7 @@ msgstr "" "konfigurasi mods." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6328,7 +6643,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" "Radius jilid blok di sekitar setiap pemain yang tertakluk kepada benda blok " "aktif,\n" @@ -6530,6 +6845,11 @@ msgstr "Nyahmuat data pelayan yang tidak digunakan" msgid "Upper Y limit of dungeons." msgstr "Had Y atas kurungan bawah tanah." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Had Y atas kurungan bawah tanah." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Guna paparan awan 3D menggantikan awan rata." @@ -6922,6 +7242,14 @@ msgstr "Had Y pengatas gua besar." msgid "Y-distance over which caverns expand to full size." msgstr "Jarak Y di mana gua berkembang kepada saiz penuh." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Aras Y untuk permukaan rupa bumi purata." @@ -6954,43 +7282,83 @@ msgstr "Had cURL selari" msgid "cURL timeout" msgstr "Had masa cURL" -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "Laraskan pengekodan gama untuk jadual cahaya. Nombor lebih tinggi lebih " -#~ "cerah.\n" -#~ "Tetapan ini hanya untuk klien dan diabaikan oleh pelayan permainan." +#~ msgid "Toggle Cinematic" +#~ msgstr "Togol Sinematik" -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Ubah cara tanah terapung jenis gunung menirus di atas dan bawah titik " -#~ "tengah." +#~ msgid "Select Package File:" +#~ msgstr "Pilih Fail Pakej:" -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Titik tengah tolakan-tengah lengkung cahaya." +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Had Y pengatas lava dalam gua besar." + +#~ msgid "Waving Water" +#~ msgstr "Air Bergelora" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "" +#~ "Sama ada kurungan bawah tanah kadang-kala terlunjur daripada rupa bumi." + +#~ msgid "Projecting dungeons" +#~ msgstr "Kurungan bawah tanah melunjur" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Aras Y di mana bayang tanah terapung diperluaskan." + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Aras Y untuk titik tengah tanah terapung dan permukaan tasik." + +#~ msgid "Waving water" +#~ msgstr "Air bergelora" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Variasi ketinggian bukit dan kedalaman tasik rupa bumi lembut tanah " +#~ "terapung." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Mengawal ketumpatan rupa bumi tanah terapung bergunung.\n" -#~ "Nilainya ialah ofset yang menambah kepada nilai hingar 'mgv7_np_mountain'." +#~ "Ketinggian maksimum biasa, di atas dan bawah titik tengah, untuk gunung " +#~ "tanah terapung." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Mengawal lebar terowong, nilai lebih kecil mencipta terowong lebih lebar." +#~ msgid "This font will be used for certain languages." +#~ msgstr "Fon ini akan digunakan untuk sesetengah bahasa." -#~ msgid "Darkness sharpness" -#~ msgstr "Ketajaman kegelapan" +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Kekuatan tolakan tengah lengkung cahaya." -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Mentakrifkan kawasan rupa bumi lembut tanah terapung.\n" -#~ "Tanag terapung lembut berlaku apabila hingar > 0." +#~ msgid "Shadow limit" +#~ msgstr "Had bayang" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Laluan ke fon TrueType atau peta bit." + +#~ msgid "Lightness sharpness" +#~ msgstr "Ketajaman pencahayaan" + +#~ msgid "Lava depth" +#~ msgstr "Kedalaman lava" + +#~ msgid "IPv6 support." +#~ msgstr "Sokongan IPv6." + +#~ msgid "Gamma" +#~ msgstr "Gama" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Nilai alfa bayang fon (kelegapan, antara 0 dan 255)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Ketinggian gunung tanah terapung" + +#~ msgid "Floatland base height noise" +#~ msgstr "Hingar ketinggian asas tanah terapung" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Membolehkan pemetaan tona sinematik" + +#~ msgid "Enable VBO" +#~ msgstr "Membolehkan VBO" #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -7001,92 +7369,58 @@ msgstr "Had masa cURL" #~ "pentakrifan biom menggantikan cara asal.\n" #~ "Had Y atasan lava di gua-gua besar." -#~ msgid "Enable VBO" -#~ msgstr "Membolehkan VBO" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Mentakrifkan kawasan rupa bumi lembut tanah terapung.\n" +#~ "Tanag terapung lembut berlaku apabila hingar > 0." -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Membolehkan pemetaan tona sinematik" +#~ msgid "Darkness sharpness" +#~ msgstr "Ketajaman kegelapan" -#~ msgid "Floatland base height noise" -#~ msgstr "Hingar ketinggian asas tanah terapung" - -#~ msgid "Floatland base noise" -#~ msgstr "Hingar asas tanah terapung" - -#~ msgid "Floatland level" -#~ msgstr "Aras tanah terapung" - -#~ msgid "Floatland mountain density" -#~ msgstr "Ketumpatan gunung tanah terapung" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Eksponen gunung tanah terapung" - -#~ msgid "Floatland mountain height" -#~ msgstr "Ketinggian gunung tanah terapung" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Nilai alfa bayang fon (kelegapan, antara 0 dan 255)." - -#~ msgid "Gamma" -#~ msgstr "Gama" - -#~ msgid "IPv6 support." -#~ msgstr "Sokongan IPv6." - -#~ msgid "Lava depth" -#~ msgstr "Kedalaman lava" - -#~ msgid "Lightness sharpness" -#~ msgstr "Ketajaman pencahayaan" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Laluan ke fon TrueType atau peta bit." - -#~ msgid "Shadow limit" -#~ msgstr "Had bayang" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Kekuatan tolakan tengah lengkung cahaya." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Fon ini akan digunakan untuk sesetengah bahasa." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Mengawal lebar terowong, nilai lebih kecil mencipta terowong lebih lebar." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Ketinggian maksimum biasa, di atas dan bawah titik tengah, untuk gunung " -#~ "tanah terapung." +#~ "Mengawal ketumpatan rupa bumi tanah terapung bergunung.\n" +#~ "Nilainya ialah ofset yang menambah kepada nilai hingar 'mgv7_np_mountain'." -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Titik tengah tolakan-tengah lengkung cahaya." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." #~ msgstr "" -#~ "Variasi ketinggian bukit dan kedalaman tasik rupa bumi lembut tanah " -#~ "terapung." +#~ "Ubah cara tanah terapung jenis gunung menirus di atas dan bawah titik " +#~ "tengah." -#~ msgid "Waving water" -#~ msgstr "Air bergelora" - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Aras Y untuk titik tengah tanah terapung dan permukaan tasik." - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Aras Y di mana bayang tanah terapung diperluaskan." - -#~ msgid "Projecting dungeons" -#~ msgstr "Kurungan bawah tanah melunjur" - -#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Sama ada kurungan bawah tanah kadang-kala terlunjur daripada rupa bumi." +#~ "Laraskan pengekodan gama untuk jadual cahaya. Nombor lebih tinggi lebih " +#~ "cerah.\n" +#~ "Tetapan ini hanya untuk klien dan diabaikan oleh pelayan permainan." -#~ msgid "Waving Water" -#~ msgstr "Air Bergelora" +#~ msgid "Path to save screenshots at." +#~ msgstr "Laluan untuk simpan tangkap layar." -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Had Y pengatas lava dalam gua besar." +#~ msgid "Parallax occlusion strength" +#~ msgstr "Kekuatan oklusi paralaks" -#~ msgid "Select Package File:" -#~ msgstr "Pilih Fail Pakej:" +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Had baris hilir keluar pada cakera" -#~ msgid "Toggle Cinematic" -#~ msgstr "Togol Sinematik" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Sedang muat turun dan memasang $1, sila tunggu..." + +#~ msgid "Back" +#~ msgstr "Backspace" + +#~ msgid "Ok" +#~ msgstr "Ok" diff --git a/po/my/minetest.po b/po/my/minetest.po index ae8d1a720..549653ac5 100644 --- a/po/my/minetest.po +++ b/po/my/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Burmese (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Burmese 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2845,6 +3055,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2897,6 +3135,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4193,14 +4437,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4264,6 +4500,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4331,7 +4571,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4418,10 +4660,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4490,13 +4728,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4580,6 +4818,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4739,9 +4981,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4817,10 +5056,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4831,7 +5066,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4864,6 +5101,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -4932,6 +5177,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5369,6 +5626,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5392,6 +5656,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5403,10 +5671,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5415,6 +5679,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5529,7 +5807,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5681,6 +5959,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6000,6 +6282,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" diff --git a/po/nb/minetest.po b/po/nb/minetest.po index 638afc5ff..5decd9c22 100644 --- a/po/nb/minetest.po +++ b/po/nb/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Norwegian Bokmål (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: Liet Kynes \n" "Language-Team: Norwegian Bokmål 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2987,6 +3213,38 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Maksimum y-verdi for grotter" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Minimum y-verdi for grotter" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Bakkestøy" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Vannivå" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Flygingstast" @@ -3039,6 +3297,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4501,14 +4765,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4573,6 +4829,11 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Y-verdi for store grotters øvre grense." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Skript for hovedmeny" @@ -4641,7 +4902,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4734,10 +4997,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4806,13 +5065,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4898,6 +5157,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Minikart" @@ -5057,9 +5320,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5135,10 +5395,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5149,8 +5405,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Filsti til lagring av skjermdumper." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5182,6 +5440,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Fysikk" @@ -5251,6 +5517,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5704,6 +5982,13 @@ msgstr "" "(remote_media bør selvfølgelig ende med skråstrek).\n" "Filer som ikke er til stede hentes på den vanlige måten." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "" @@ -5731,6 +6016,10 @@ msgstr "Bratt fjellside-støy" msgid "Step mountain spread noise" msgstr "Spredningsstøy for bratt fjell" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5742,10 +6031,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5754,6 +6039,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "Synkron SQLite" @@ -5874,7 +6173,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6030,6 +6329,11 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Y-verdi for store grotters øvre grense." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Bruk 3D-skyer i stedet for flate." @@ -6360,6 +6664,14 @@ msgstr "Y-verdi for store grotters øvre grense." msgid "Y-distance over which caverns expand to full size." msgstr "Y-avstand som en grotte kan øke i størrelse til full størrelse." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Y-nivå for gjennomsnittlig terrengoverflate." @@ -6392,20 +6704,32 @@ msgstr "Maksimal parallellisering i cURL" msgid "cURL timeout" msgstr "cURL-tidsgrense" -#~ msgid "Enable VBO" -#~ msgstr "Aktiver VBO" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Aktiver filmatisk toneoversettelse" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6-støtte." - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Hvilket Y-nivå som skyggen til luftøyer når." +#~ msgid "Select Package File:" +#~ msgstr "Velg pakkefil:" #~ msgid "Y of upper limit of lava in large caves." #~ msgstr "Y-verdi for øvre grense for lava i store grotter." -#~ msgid "Select Package File:" -#~ msgstr "Velg pakkefil:" +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Hvilket Y-nivå som skyggen til luftøyer når." + +#~ msgid "IPv6 support." +#~ msgstr "IPv6-støtte." + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Aktiver filmatisk toneoversettelse" + +#~ msgid "Enable VBO" +#~ msgstr "Aktiver VBO" + +#~ msgid "Path to save screenshots at." +#~ msgstr "Filsti til lagring av skjermdumper." + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Laster ned og installerer $1, vent…" + +#~ msgid "Back" +#~ msgstr "Tilbake" + +#~ msgid "Ok" +#~ msgstr "Okei" diff --git a/po/nl/minetest.po b/po/nl/minetest.po index 5f5597125..3bbef6e58 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Dutch (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-05-29 11:41+0000\n" "Last-Translator: Miniontoby \n" "Language-Team: Dutch = 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" -"Bepaalt de breedte van tunnels, een kleinere waarde creëert bredere tunnels. " -"\n" +"Bepaalt de breedte van tunnels, een kleinere waarde creëert bredere " +"tunnels. \n" "Waarde> = 10,0 schakelt het genereren van tunnels volledig uit en vermijdt " "de \n" "intensieve geluidsberekeningen." @@ -2595,6 +2812,11 @@ msgstr "Standaard rechten" msgid "Default report format" msgstr "Standaardformaat voor rapport-bestanden" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Default stack size" +msgstr "Standaardspel" + #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" @@ -2965,6 +3187,16 @@ msgstr "" "Experimentele optie. Kan bij een waarde groter dan 0 zichtbare\n" "ruimtes tussen blokken tot gevolg hebben." +#: src/settings_translation_file.cpp +msgid "" +"Exponent of the floatland tapering. Alters the tapering behaviour.\n" +"Value = 1.0 creates a uniform, linear tapering.\n" +"Values > 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS in het pauze-menu" @@ -3087,6 +3319,41 @@ msgstr "Vast kiemgetal" msgid "Fixed virtual joystick" msgstr "Vaste virtuele joystick" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Drijvend gebergte dichtheid" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Dungeon maximaal Y" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Dungeon minimaal Y" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Drijvend land basis ruis" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Drijvend gebergte dichtheid" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Drijvend land basis ruis" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Waterniveau" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Vliegen toets" @@ -3140,6 +3407,12 @@ msgstr "Lettergrootte van het fallback-lettertype in punt (pt)." msgid "Font size of the monospace font in point (pt)." msgstr "Lettergrootte van het monospace-lettertype in punt (pt)." +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4901,14 +5174,6 @@ msgstr "Lichtcurve hoog verloop" msgid "Light curve low gradient" msgstr "Lichtcurve laag verloop" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Emerge-wachtrij voor lezen" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Emerge-wachtrij voor genereren" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4986,6 +5251,11 @@ msgstr "Geladen blokken aanpassers (LBMs)" msgid "Lower Y limit of dungeons." msgstr "Onderste Y-limiet van kerkers." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Onderste Y-limiet van kerkers." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Hoofdmenu script" @@ -5080,12 +5350,15 @@ msgstr "" "Zet \"no\" voor een vlag om hem expliciet uit te zetten." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" -"Kenmerken voor het genereren van kaarten die specifiek zijn voor Mapgen v7. " -"\n" +"Kenmerken voor het genereren van kaarten die specifiek zijn voor Mapgen " +"v7. \n" "'richels' maakt de rivieren mogelijk." #: src/settings_translation_file.cpp @@ -5187,10 +5460,6 @@ msgstr "Vlaggen" msgid "Mapgen debug" msgstr "Wereldgenerator debug" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Wereldgenerator vlaggen" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Wereldgenerator" @@ -5265,17 +5534,19 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Maximaal aantal blokken in de wachtrij voor laden/genereren." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Maximaal aantal blokken in de wachtrij om gegenereerd te worden.\n" "Laat leeg om een geschikt aantal automatisch te laten berekenen." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Maximaal aantal blokken in de wachtrij om van disk geladen te worden.\n" "Laat leeg om een geschikt aantal automatisch te laten berekenen." @@ -5379,6 +5650,10 @@ msgstr "" "* box: node wordt omlijnd.\n" "* halo: node licht op." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Mini-kaart" @@ -5557,11 +5832,9 @@ msgid "Number of emerge threads" msgstr "Aantal 'emerge' threads" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5668,10 +5941,6 @@ msgstr "Parallax occlusie modus" msgid "Parallax occlusion scale" msgstr "Parallax occlusie schaal" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Parallax occlusie sterkte" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5689,8 +5958,10 @@ msgstr "" "standaardlettertype niet beschikbaar is." #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Pad waar screenshots bewaard worden." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5738,6 +6009,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Pauzeer als venster focus verliest" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Emerge-wachtrij voor genereren" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Fysica" @@ -5819,6 +6099,18 @@ msgstr "Profiler aan/uit toets" msgid "Profiling" msgstr "Profileren" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "Aandeel grote grotten die vloeistof bevatten." @@ -6355,6 +6647,13 @@ msgstr "" "(remote_media moet dus eindigen in een slash ('/')).\n" "Bestanden die niet gevonden worden, worden op de normale manier opgehaald." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6383,6 +6682,11 @@ msgstr "Bergen ruis" msgid "Step mountain spread noise" msgstr "Bergen ruis" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Sterkte van de parallax." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Sterkte van de normal-maps." @@ -6397,10 +6701,6 @@ msgstr "" "De 3 'boost'-parameters bepalen een bereik van het licht \n" "curve die wordt versterkt in helderheid." -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Sterkte van de parallax." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Stricte protocolcontrole" @@ -6409,6 +6709,20 @@ msgstr "Stricte protocolcontrole" msgid "Strip color codes" msgstr "Kleurcodes weghalen" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "Sqlite synchrone modus" @@ -6479,8 +6793,8 @@ msgid "" "this option allows enforcing it for certain node types. Note though that\n" "that is considered EXPERIMENTAL and may not work properly." msgstr "" -"Texturen op een blok kunnen worden uitgelijnd met het blok of met de wereld. " -"\n" +"Texturen op een blok kunnen worden uitgelijnd met het blok of met de " +"wereld. \n" "De eerste modus past bij betere dingen zoals machines, meubels, enz \n" "dit laatste zorgt ervoor dat trappen en microblokken beter in de omgeving " "passen. \n" @@ -6552,6 +6866,7 @@ msgstr "" "van beschikbare voorrechten op de server." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6559,7 +6874,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" "De straal van het volume van blokken rond elke speler die onderworpen is aan " "de \n" @@ -6644,8 +6959,8 @@ msgid "" "enabled. Also the vertical distance over which humidity drops by 10 if\n" "'altitude_dry' is enabled." msgstr "" -"De verticale afstand waarover de warmte met 20 daalt als 'altitude_chill' is " -"\n" +"De verticale afstand waarover de warmte met 20 daalt als 'altitude_chill' " +"is \n" "ingeschakeld. Ook de verticale afstand waarover de vochtigheid met 10 daalt " "als \n" "'altitude_dry' is ingeschakeld." @@ -6765,6 +7080,11 @@ msgstr "Vergeet ongebruikte server gegevens" msgid "Upper Y limit of dungeons." msgstr "Bovenste Y-limiet van kerkers." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Bovenste Y-limiet van kerkers." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Toon 3D wolken in plaats van platte wolken." @@ -7166,6 +7486,14 @@ msgstr "Minimale diepte van grote semi-willekeurige grotten." msgid "Y-distance over which caverns expand to full size." msgstr "Y-afstand waar over grotten uitbreiden tot volle grootte." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Y-niveau van gemiddeld terrein oppervlak." @@ -7200,6 +7528,98 @@ msgstr "Maximaal parallellisme in cURL" msgid "cURL timeout" msgstr "cURL time-out" +#~ msgid "Toggle Cinematic" +#~ msgstr "Cinematic modus aan/uit" + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Selecteer Modbestand:" + +#, fuzzy +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Minimale diepte van grote semi-willekeurige grotten." + +#~ msgid "Waving Water" +#~ msgstr "Golvend water" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Y-niveau tot waar de schaduw van drijvend land reikt." + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Y-niveau van drijvend land middelpunt en vijver oppervlak." + +#~ msgid "Waving water" +#~ msgstr "Golvend water" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Variatie van de heuvel hoogte en vijver diepte op drijvend egaal terrein." + +#, fuzzy +#~ msgid "" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "" +#~ "Typisch maximum hoogte, boven en onder het middelpunt van drijvend berg " +#~ "terrein." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Dit font wordt gebruikt voor bepaalde talen." + +#~ msgid "Shadow limit" +#~ msgstr "Schaduw limiet" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Pad van TrueType font of bitmap." + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Diepte van grote grotten" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 ondersteuning." + +#, fuzzy +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Fontschaduw alphawaarde (ondoorzichtigheid, tussen 0 en 255)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Drijvend gebergte hoogte" + +#~ msgid "Floatland base height noise" +#~ msgstr "Drijvend land basis hoogte ruis" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Schakelt filmisch tone-mapping in" + +#~ msgid "Enable VBO" +#~ msgstr "VBO aanzetten" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Bepaalt gebieden van drijvend glijdend terrein.\n" +#~ "Drijvend glijdend terrein ontstaat wanneer ruis > 0." + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "Steilheid Van de meren" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Bepaalt breedte van tunnels, een kleinere waarde maakt bredere tunnels." + +#, fuzzy +#~ msgid "" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "Bepaalt de dichtheid van drijvende bergen.\n" +#~ "Dit wordt bijgevoegd bij de 'np_mountain' ruis waarde." + #, fuzzy #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " @@ -7210,108 +7630,20 @@ msgstr "cURL time-out" #~ "Deze instelling wordt enkel gebruikt door de cliënt, en wordt genegeerd " #~ "door de server." -#, fuzzy -#~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "Bepaalt de dichtheid van drijvende bergen.\n" -#~ "Dit wordt bijgevoegd bij de 'np_mountain' ruis waarde." +#~ msgid "Path to save screenshots at." +#~ msgstr "Pad waar screenshots bewaard worden." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Bepaalt breedte van tunnels, een kleinere waarde maakt bredere tunnels." +#~ msgid "Parallax occlusion strength" +#~ msgstr "Parallax occlusie sterkte" -#, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "Steilheid Van de meren" +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Emerge-wachtrij voor lezen" -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Bepaalt gebieden van drijvend glijdend terrein.\n" -#~ "Drijvend glijdend terrein ontstaat wanneer ruis > 0." +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "$1 wordt gedownload, een ogenblik geduld alstublieft..." -#~ msgid "Enable VBO" -#~ msgstr "VBO aanzetten" +#~ msgid "Back" +#~ msgstr "Terug" -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Schakelt filmisch tone-mapping in" - -#~ msgid "Floatland base height noise" -#~ msgstr "Drijvend land basis hoogte ruis" - -#~ msgid "Floatland base noise" -#~ msgstr "Drijvend land basis ruis" - -#, fuzzy -#~ msgid "Floatland level" -#~ msgstr "Waterniveau" - -#~ msgid "Floatland mountain density" -#~ msgstr "Drijvend gebergte dichtheid" - -#, fuzzy -#~ msgid "Floatland mountain exponent" -#~ msgstr "Drijvend gebergte dichtheid" - -#~ msgid "Floatland mountain height" -#~ msgstr "Drijvend gebergte hoogte" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Fontschaduw alphawaarde (ondoorzichtigheid, tussen 0 en 255)." - -#, fuzzy -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 ondersteuning." - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Diepte van grote grotten" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Pad van TrueType font of bitmap." - -#~ msgid "Shadow limit" -#~ msgstr "Schaduw limiet" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Dit font wordt gebruikt voor bepaalde talen." - -#, fuzzy -#~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "" -#~ "Typisch maximum hoogte, boven en onder het middelpunt van drijvend berg " -#~ "terrein." - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "" -#~ "Variatie van de heuvel hoogte en vijver diepte op drijvend egaal terrein." - -#~ msgid "Waving water" -#~ msgstr "Golvend water" - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Y-niveau van drijvend land middelpunt en vijver oppervlak." - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Y-niveau tot waar de schaduw van drijvend land reikt." - -#~ msgid "Waving Water" -#~ msgstr "Golvend water" - -#, fuzzy -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Minimale diepte van grote semi-willekeurige grotten." - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Selecteer Modbestand:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Cinematic modus aan/uit" +#~ msgid "Ok" +#~ msgstr "Oké" diff --git a/po/nn/minetest.po b/po/nn/minetest.po index f2894f74d..9a0b036d3 100644 --- a/po/nn/minetest.po +++ b/po/nn/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Norwegian Nynorsk (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: sfan5 \n" "Language-Team: Norwegian Nynorsk 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2897,6 +3111,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2949,6 +3191,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4245,14 +4493,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4316,6 +4556,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4383,7 +4627,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4470,10 +4716,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4542,13 +4784,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4632,6 +4874,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4791,9 +5037,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4869,10 +5112,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4883,7 +5122,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4916,6 +5157,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -4984,6 +5233,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5421,6 +5682,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5444,6 +5712,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5455,10 +5727,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5467,6 +5735,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5581,7 +5863,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5733,6 +6015,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6056,6 +6342,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6088,8 +6382,17 @@ msgstr "" msgid "cURL timeout" msgstr "" +#~ msgid "Toggle Cinematic" +#~ msgstr "Slå på/av kameramodus" + #~ msgid "Select Package File:" #~ msgstr "Velje eit pakke dokument:" -#~ msgid "Toggle Cinematic" -#~ msgstr "Slå på/av kameramodus" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Henter og installerer $1, ver vennleg og vent..." + +#~ msgid "Back" +#~ msgstr "Attende" + +#~ msgid "Ok" +#~ msgstr "OK" diff --git a/po/pl/minetest.po b/po/pl/minetest.po index 3df132132..015692182 100644 --- a/po/pl/minetest.po +++ b/po/pl/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Polish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-09 12:14+0000\n" "Last-Translator: Mikołaj Zaremba \n" "Language-Team: Polish 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS podczas pauzy w menu" @@ -3065,6 +3297,41 @@ msgstr "Stałe ziarno mapy" msgid "Fixed virtual joystick" msgstr "Ustaw wirtualny joystick" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Gęstość gór na latających wyspach" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Maksymalna wartość Y lochu" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Minimalna wartość Y lochu" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Podstawowy szum wznoszącego się terenu" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Gęstość gór na latających wyspach" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Podstawowy szum wznoszącego się terenu" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Poziom wznoszonego terenu" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Klawisz latania" @@ -3118,6 +3385,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "" @@ -4833,14 +5106,6 @@ msgstr "Przyśpieszenie środkowe krzywej światła" msgid "Light curve low gradient" msgstr "Centrum środkowego przyśpieszenia krzywej światła" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Limit oczekiwań na dysku" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Limit kolejek oczekujących do wytworzenia" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4917,6 +5182,11 @@ msgstr "Interwał modyfikatora aktywnego bloku" msgid "Lower Y limit of dungeons." msgstr "Zmniejsz limit Y dla lochów." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Zmniejsz limit Y dla lochów." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Skrypt głównego menu" @@ -5007,7 +5277,9 @@ msgstr "" #, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "Właściwości generowania mapy określające Mapgen v7.\n" "\"grzbiety\" aktywują rzeki." @@ -5110,10 +5382,6 @@ msgstr "Specyficzne flagi dla generatora Mapgen flat" msgid "Mapgen debug" msgstr "Generator mapy debugowanie" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Flagi generatora mapy" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Nazwa generatora mapy" @@ -5185,17 +5453,19 @@ msgstr "" "Maksymalna liczba bloków, które mogą być skolejkowane podczas wczytywania." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Maksymalna liczba bloków do skolejkowania, które mają być wygenerowane.\n" "Pozostaw puste a odpowiednia liczba zostanie dobrana automatycznie." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Maksymalna liczba bloków do skolejkowania które mają być wczytane z pliku.\n" "Pozostaw puste a odpowiednia liczba zostanie dobrana automatycznie." @@ -5293,6 +5563,10 @@ msgstr "Wiadomość dnia wyświetlona dla graczy łączących się z serwerem." msgid "Method used to highlight selected object." msgstr "Metoda użyta do podświetlenia wybranego obiektu." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Minimapa" @@ -5465,9 +5739,6 @@ msgstr "Liczba powstających wątków" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5551,10 +5822,6 @@ msgstr "Tryb zamknięcia paralaksy" msgid "Parallax occlusion scale" msgstr "Skala parallax occlusion" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Siła zamknięcia paralaksy" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5565,8 +5832,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Ścieżka, pod którą zapisywane są zrzuty ekranu." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5602,6 +5871,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Pauza, gdy okno jest nieaktywne" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Limit kolejek oczekujących do wytworzenia" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Fizyka" @@ -5687,6 +5965,18 @@ msgstr "Klawisza przełączania profilera" msgid "Profiling" msgstr "Profilowanie modyfikacji" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -6202,6 +6492,13 @@ msgstr "" "(oczywiście, komenda remote_media powinna kończyć się slashem ).\n" "Pliki nieaktualne będą pobierane standardową metodą." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "" @@ -6230,6 +6527,11 @@ msgstr "Szum góry" msgid "Step mountain spread noise" msgstr "Szum góry" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Siła paralaksy." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Siła generowanych zwykłych map." @@ -6241,10 +6543,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Siła paralaksy." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Sztywne sprawdzanie protokołu" @@ -6254,6 +6552,20 @@ msgstr "Sztywne sprawdzanie protokołu" msgid "Strip color codes" msgstr "Usuń kody kolorów" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "Synchroniczny SQLite" @@ -6383,7 +6695,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6564,6 +6876,11 @@ msgstr "Usuń nieużywane dane serwera" msgid "Upper Y limit of dungeons." msgstr "Górna granica Y lochów." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Górna granica Y lochów." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Włącz chmury 3D zamiast płaskich." @@ -6947,6 +7264,14 @@ msgstr "" "Dystans zmiennej Y powyżej którego jaskinie rozciągają się do pełnych " "rozmiarów." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Wartość Y przeciętnego terenu." @@ -6979,6 +7304,114 @@ msgstr "Limit równoległy cURL" msgid "cURL timeout" msgstr "Limit czasu cURL" +#~ msgid "Toggle Cinematic" +#~ msgstr "Przełącz na tryb Cinematic" + +#~ msgid "Select Package File:" +#~ msgstr "Wybierz plik paczki:" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y górnej granicy lawy dużych jaskiń." + +#~ msgid "Waving Water" +#~ msgstr "Falująca woda" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Określa czy lochy mają być czasem przez generowane teren." + +#~ msgid "Projecting dungeons" +#~ msgstr "Projekcja lochów" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Wysokość do której rozciągają się cienie wznoszącego terenu." + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "" +#~ "Wysokość średniego punktu wznoszącego się terenu oraz powierzchni jezior." + +#~ msgid "Waving water" +#~ msgstr "Falująca woda" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Zmienność wysokości wzgórz oraz głębokości jezior na gładkim terenie " +#~ "wznoszącym się." + +#~ msgid "" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "" +#~ "Maksymalna, standardowa wysokość, powyżej lub poniżej średniego punktu " +#~ "górzystego terenu." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Ta czcionka zostanie użyta w niektórych językach." + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Siłą przyśpieszenia środkowego krzywej światła." + +#~ msgid "Shadow limit" +#~ msgstr "Limit cieni" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Ścieżka do pliku .ttf lub bitmapy." + +#~ msgid "Lightness sharpness" +#~ msgstr "Ostrość naświetlenia" + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Głębia dużej jaskini" + +#~ msgid "IPv6 support." +#~ msgstr "Wsparcie IPv6." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Kanał alfa cienia czcionki (nieprzeźroczystość, od 0 do 255)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Wysokość gór latających wysp" + +#~ msgid "Floatland base height noise" +#~ msgstr "Podstawowy szum wysokości wznoszącego się terenu" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Włącz filmic tone mapping" + +#~ msgid "Enable VBO" +#~ msgstr "Włącz VBO" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Określa obszary wznoszącego się gładkiego terenu.\n" +#~ "Wygładzone powierzchnie pojawiają się gdy szum > 0." + +#~ msgid "Darkness sharpness" +#~ msgstr "Ostrość ciemności" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Kontroluje szerokość tuneli, mniejsze wartości tworzą szersze tunele." + +#~ msgid "" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "Kontroluje gęstość wznoszącego się terenu górzystego.\n" +#~ "Jest to wartość dodana do wartość szumu 'np_mountain'." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Centrum przyśpieszenia środkowego krzywej światła." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "" +#~ "Zmienia sposób w jaki podobne do gór latające wyspy zwężają się ku " +#~ "środkowi nad i pod punktem środkowym." + #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " #~ "brighter.\n" @@ -6988,123 +7421,20 @@ msgstr "Limit czasu cURL" #~ "jasność.\n" #~ "To ustawienie jest tylko dla klientów, ignorowane przez serwer." -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Zmienia sposób w jaki podobne do gór latające wyspy zwężają się ku " -#~ "środkowi nad i pod punktem środkowym." +#~ msgid "Path to save screenshots at." +#~ msgstr "Ścieżka, pod którą zapisywane są zrzuty ekranu." -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Centrum przyśpieszenia środkowego krzywej światła." +#~ msgid "Parallax occlusion strength" +#~ msgstr "Siła zamknięcia paralaksy" -#~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "Kontroluje gęstość wznoszącego się terenu górzystego.\n" -#~ "Jest to wartość dodana do wartość szumu 'np_mountain'." +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Limit oczekiwań na dysku" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Kontroluje szerokość tuneli, mniejsze wartości tworzą szersze tunele." +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Pobieranie i instalowanie $1, proszę czekaj..." -#~ msgid "Darkness sharpness" -#~ msgstr "Ostrość ciemności" +#~ msgid "Back" +#~ msgstr "Backspace" -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Określa obszary wznoszącego się gładkiego terenu.\n" -#~ "Wygładzone powierzchnie pojawiają się gdy szum > 0." - -#~ msgid "Enable VBO" -#~ msgstr "Włącz VBO" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Włącz filmic tone mapping" - -#~ msgid "Floatland base height noise" -#~ msgstr "Podstawowy szum wysokości wznoszącego się terenu" - -#~ msgid "Floatland base noise" -#~ msgstr "Podstawowy szum wznoszącego się terenu" - -#~ msgid "Floatland level" -#~ msgstr "Poziom wznoszonego terenu" - -#~ msgid "Floatland mountain density" -#~ msgstr "Gęstość gór na latających wyspach" - -#, fuzzy -#~ msgid "Floatland mountain exponent" -#~ msgstr "Gęstość gór na latających wyspach" - -#~ msgid "Floatland mountain height" -#~ msgstr "Wysokość gór latających wysp" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Kanał alfa cienia czcionki (nieprzeźroczystość, od 0 do 255)." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "IPv6 support." -#~ msgstr "Wsparcie IPv6." - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Głębia dużej jaskini" - -#~ msgid "Lightness sharpness" -#~ msgstr "Ostrość naświetlenia" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Ścieżka do pliku .ttf lub bitmapy." - -#~ msgid "Shadow limit" -#~ msgstr "Limit cieni" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Siłą przyśpieszenia środkowego krzywej światła." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Ta czcionka zostanie użyta w niektórych językach." - -#~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "" -#~ "Maksymalna, standardowa wysokość, powyżej lub poniżej średniego punktu " -#~ "górzystego terenu." - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "" -#~ "Zmienność wysokości wzgórz oraz głębokości jezior na gładkim terenie " -#~ "wznoszącym się." - -#~ msgid "Waving water" -#~ msgstr "Falująca woda" - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "" -#~ "Wysokość średniego punktu wznoszącego się terenu oraz powierzchni jezior." - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Wysokość do której rozciągają się cienie wznoszącego terenu." - -#~ msgid "Projecting dungeons" -#~ msgstr "Projekcja lochów" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Określa czy lochy mają być czasem przez generowane teren." - -#~ msgid "Waving Water" -#~ msgstr "Falująca woda" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y górnej granicy lawy dużych jaskiń." - -#~ msgid "Select Package File:" -#~ msgstr "Wybierz plik paczki:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Przełącz na tryb Cinematic" +#~ msgid "Ok" +#~ msgstr "OK" diff --git a/po/pt/minetest.po b/po/pt/minetest.po index 69f0e9912..466428c35 100644 --- a/po/pt/minetest.po +++ b/po/pt/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Portuguese (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: ssantos \n" "Language-Team: Portuguese 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS em menu de pausa" @@ -3074,6 +3306,41 @@ msgstr "Semente aleatória do mapa fixa" msgid "Fixed virtual joystick" msgstr "Joystick virtual fixo" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Densidade da terra flutuante montanhosa" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Y máximo da dungeon" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Y mínimo da dungeon" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Ruído base de terra flutuante" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Expoente de terras flutuantes montanhosas" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Ruído base de terra flutuante" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Nível de água" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Tecla de voar" @@ -3126,6 +3393,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4761,14 +5034,6 @@ msgstr "Aumento leve da curva de luz" msgid "Light curve low gradient" msgstr "Centro do aumento leve da curva de luz" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Limite de filas emerge no disco" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Limite de filas emerge para gerar" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4844,6 +5109,11 @@ msgstr "A carregar modificadores de blocos" msgid "Lower Y limit of dungeons." msgstr "Menor limite Y de dungeons." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Menor limite Y de dungeons." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Menu principal de scripts" @@ -4929,9 +5199,12 @@ msgstr "" "a marcação 'selvas' é ignorada." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "Atributos de geração de mapa específicos ao gerador V7.\n" "'ridges' habilitam os rios." @@ -5022,10 +5295,6 @@ msgstr "Flags específicas do gerador de mundo Valleys" msgid "Mapgen debug" msgstr "Depuração do gerador de mapa" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Flags do mapgen" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Nome do gerador de mapa" @@ -5100,18 +5369,20 @@ msgstr "" "Número máximo de blocos que podem ser enfileirados para o carregamento." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Número máximo de blocos para serem enfileirados que estão a ser gerados.\n" "Definido em branco para uma quantidade apropriada ser escolhida " "automaticamente." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Número máximo de blocos para ser enfileirado que serão carregados do " "ficheiro.\n" @@ -5211,6 +5482,10 @@ msgstr "Mensagem do dia exibida aos jogadores ao conectar." msgid "Method used to highlight selected object." msgstr "Método usado para destacar o objeto selecionado." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Mini-mapa" @@ -5384,11 +5659,9 @@ msgid "Number of emerge threads" msgstr "Número de seguimentos de emersão" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5486,10 +5759,6 @@ msgstr "Modo de oclusão paralaxe" msgid "Parallax occlusion scale" msgstr "Escala de Oclusão de paralaxe" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Força da oclusão paralaxe" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5500,8 +5769,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Caminho para onde salvar screenshots." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5537,6 +5808,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Pausa quando o foco da janela é perdido" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Limite de filas emerge para gerar" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Física" @@ -5615,6 +5895,18 @@ msgstr "Tecla de alternância do Analizador" msgid "Profiling" msgstr "Analizando" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -6134,6 +6426,13 @@ msgstr "" "(obviamente, remote_media deve terminar com uma barra \"/\").\n" "Arquivos que não estão presentes serão obtidos da maneira usual por UDP." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "" @@ -6160,6 +6459,11 @@ msgstr "Tamanho do ruído da montanha de passo" msgid "Step mountain spread noise" msgstr "Extensão do ruído da montanha de passo" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Intensidade de paralaxe." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Intensidade de normalmaps gerados." @@ -6171,10 +6475,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Intensidade de paralaxe." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Verificação rígida de protocolo" @@ -6183,6 +6483,20 @@ msgstr "Verificação rígida de protocolo" msgid "Strip color codes" msgstr "Códigos de faixa de cor" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "SQLite síncrono" @@ -6311,6 +6625,7 @@ msgstr "" "servidor e dos modificadores." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6318,7 +6633,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" "O raio do volume de blocos em volta de cada jogador que é sujeito a coisas " "de bloco ativo, em mapblocks (16 nós).\n" @@ -6518,6 +6833,11 @@ msgstr "Descarregar os dados do servidor não utilizados" msgid "Upper Y limit of dungeons." msgstr "Limite topo Y de dungeons." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Limite topo Y de dungeons." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Usar nuvens 3D em vez de planas." @@ -6905,6 +7225,14 @@ msgid "Y-distance over which caverns expand to full size." msgstr "" "Distância em Y sobre a qual as cavernas se expandem até o tamanho total." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Nível em Y da superfície média do terreno." @@ -6937,42 +7265,83 @@ msgstr "limite paralelo de cURL" msgid "cURL timeout" msgstr "Tempo limite de cURL" -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "Ajustar a gama de codificação para a tabela de claridade. Os números mais " -#~ "elevados são mais brilhantes.\n" -#~ "Esta configuração é somente para o cliente e é ignorada pelo servidor." +#~ msgid "Toggle Cinematic" +#~ msgstr "Ativar/Desativar câmera cinemática" -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Altera como terras flutuantes montanhosas afunilam acima e abaixo do " -#~ "ponto médio." +#~ msgid "Select Package File:" +#~ msgstr "Selecionar o ficheiro do pacote:" -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Centro do aumento da curva de luz." +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Limite Y máximo de lava em grandes cavernas." + +#~ msgid "Waving Water" +#~ msgstr "Água ondulante" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Se dungeons ocasionalmente se projetam do terreno." + +#~ msgid "Projecting dungeons" +#~ msgstr "Projetando dungeons" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Nível Y para o qual as sombras de ilhas flutuantes se estendem." + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "" +#~ "Nível em Y do ponto médio da montanha flutuante e da superfície do lago." + +#~ msgid "Waving water" +#~ msgstr "Balançar das Ondas" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Variação da altura da colina e profundidade do lago no terreno liso da " +#~ "Terra Flutuante." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Controla a densidade do terreno montanhoso nas ilhas flutuantes.\n" -#~ "É um parâmetro adicionado ao valor de ruído 'mgv7_np_mountain'." +#~ "Altura máxima típica, acima e abaixo do ponto médio, do terreno da " +#~ "montanha flutuante." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "Controla a largura dos túneis, um valor menor cria túneis maiores." +#~ msgid "This font will be used for certain languages." +#~ msgstr "Esta fonte será usada para determinados idiomas." -#~ msgid "Darkness sharpness" -#~ msgstr "Nitidez da escuridão" +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Força do aumento médio da curva de luz." -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Define áreas de terra flutuante em terreno suavizado.\n" -#~ "Terrenos suavizados ocorrem quando o ruído é menor que zero." +#~ msgid "Shadow limit" +#~ msgstr "Limite de mapblock" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Caminho para TrueTypeFont ou bitmap." + +#~ msgid "Lightness sharpness" +#~ msgstr "Nitidez da iluminação" + +#~ msgid "Lava depth" +#~ msgstr "Profundidade da lava" + +#~ msgid "IPv6 support." +#~ msgstr "Suporte IPv6." + +#~ msgid "Gamma" +#~ msgstr "Gama" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Opacidade da sombra da fonte (entre 0 e 255)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Altura da terra flutuante montanhosa" + +#~ msgid "Floatland base height noise" +#~ msgstr "Altura base de ruído de terra flutuante" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Ativa mapeamento de tons fílmico" + +#~ msgid "Enable VBO" +#~ msgstr "Ativar VBO" #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -6983,92 +7352,57 @@ msgstr "Tempo limite de cURL" #~ "biomas.\n" #~ "Y do limite superior de lava em grandes cavernas." -#~ msgid "Enable VBO" -#~ msgstr "Ativar VBO" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Define áreas de terra flutuante em terreno suavizado.\n" +#~ "Terrenos suavizados ocorrem quando o ruído é menor que zero." -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Ativa mapeamento de tons fílmico" +#~ msgid "Darkness sharpness" +#~ msgstr "Nitidez da escuridão" -#~ msgid "Floatland base height noise" -#~ msgstr "Altura base de ruído de terra flutuante" - -#~ msgid "Floatland base noise" -#~ msgstr "Ruído base de terra flutuante" - -#~ msgid "Floatland level" -#~ msgstr "Nível de água" - -#~ msgid "Floatland mountain density" -#~ msgstr "Densidade da terra flutuante montanhosa" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Expoente de terras flutuantes montanhosas" - -#~ msgid "Floatland mountain height" -#~ msgstr "Altura da terra flutuante montanhosa" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Opacidade da sombra da fonte (entre 0 e 255)." - -#~ msgid "Gamma" -#~ msgstr "Gama" - -#~ msgid "IPv6 support." -#~ msgstr "Suporte IPv6." - -#~ msgid "Lava depth" -#~ msgstr "Profundidade da lava" - -#~ msgid "Lightness sharpness" -#~ msgstr "Nitidez da iluminação" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Caminho para TrueTypeFont ou bitmap." - -#~ msgid "Shadow limit" -#~ msgstr "Limite de mapblock" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Força do aumento médio da curva de luz." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Esta fonte será usada para determinados idiomas." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "Controla a largura dos túneis, um valor menor cria túneis maiores." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Altura máxima típica, acima e abaixo do ponto médio, do terreno da " -#~ "montanha flutuante." +#~ "Controla a densidade do terreno montanhoso nas ilhas flutuantes.\n" +#~ "É um parâmetro adicionado ao valor de ruído 'mgv7_np_mountain'." -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Centro do aumento da curva de luz." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." #~ msgstr "" -#~ "Variação da altura da colina e profundidade do lago no terreno liso da " -#~ "Terra Flutuante." +#~ "Altera como terras flutuantes montanhosas afunilam acima e abaixo do " +#~ "ponto médio." -#~ msgid "Waving water" -#~ msgstr "Balançar das Ondas" - -#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Nível em Y do ponto médio da montanha flutuante e da superfície do lago." +#~ "Ajustar a gama de codificação para a tabela de claridade. Os números mais " +#~ "elevados são mais brilhantes.\n" +#~ "Esta configuração é somente para o cliente e é ignorada pelo servidor." -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Nível Y para o qual as sombras de ilhas flutuantes se estendem." +#~ msgid "Path to save screenshots at." +#~ msgstr "Caminho para onde salvar screenshots." -#~ msgid "Projecting dungeons" -#~ msgstr "Projetando dungeons" +#~ msgid "Parallax occlusion strength" +#~ msgstr "Força da oclusão paralaxe" -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Se dungeons ocasionalmente se projetam do terreno." +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Limite de filas emerge no disco" -#~ msgid "Waving Water" -#~ msgstr "Água ondulante" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Descarregando e instalando $1, por favor aguarde..." -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Limite Y máximo de lava em grandes cavernas." +#~ msgid "Back" +#~ msgstr "Voltar" -#~ msgid "Select Package File:" -#~ msgstr "Selecionar o ficheiro do pacote:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Ativar/Desativar câmera cinemática" +#~ msgid "Ok" +#~ msgstr "Ok" diff --git a/po/pt_BR/minetest.po b/po/pt_BR/minetest.po index 460c51886..fc31640c4 100644 --- a/po/pt_BR/minetest.po +++ b/po/pt_BR/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Portuguese (Brazil) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2019-12-11 13:36+0000\n" "Last-Translator: ramon.venson \n" "Language-Team: Portuguese (Brazil) 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS no menu de pausa" @@ -3066,6 +3298,41 @@ msgstr "Semente do mapa fixa" msgid "Fixed virtual joystick" msgstr "Joystick virtual fixo" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Densidade da Ilha Flutuante montanhosa" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Y máximo da dungeon" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Y mínimo da dungeon" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Ruído base de Ilha Flutuante" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Expoente de terras flutuantes montanhosas" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Ruído base de Ilha Flutuante" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Nível de água" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Tecla de voar" @@ -3118,6 +3385,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4741,14 +5014,6 @@ msgstr "Aumento leve da curva de luz" msgid "Light curve low gradient" msgstr "Centro do aumento leve da curva de luz" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Limite de filas emerge no disco" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Limite de filas emerge para gerar" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4825,6 +5090,11 @@ msgstr "Carregado Block Modifiers" msgid "Lower Y limit of dungeons." msgstr "Menor limite Y de dungeons." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Menor limite Y de dungeons." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Menu principal do script" @@ -4909,9 +5179,12 @@ msgstr "" "automaticamente habilitadas e a flag 'jungles' é ignorada." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "Atributos de geração de mapa específicos ao gerador V7.\n" "'ridges' habilitam os rios." @@ -5003,10 +5276,6 @@ msgstr "Flags específicas do gerador de mundo Valleys" msgid "Mapgen debug" msgstr "Debug do mapgen" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Flags do gerador de mundo" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Nome do gerador de mundo" @@ -5077,18 +5346,20 @@ msgstr "" "Número máximo de blocos que podem ser enfileirados para o carregamento." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Número máximo de blocos para serem enfileirados que estão a ser gerados.\n" "Definido em branco para uma quantidade apropriada ser escolhida " "automaticamente." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Número máximo de blocos para ser enfileirado que serão carregados do " "arquivo.\n" @@ -5188,6 +5459,10 @@ msgstr "Mensagem do dia exibida aos jogadores ao conectar." msgid "Method used to highlight selected object." msgstr "Método usado para destacar o objeto selecionado." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Minimapa" @@ -5367,9 +5642,6 @@ msgstr "Número de seguimentos de emersão" #, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5462,10 +5734,6 @@ msgstr "Modo de oclusão de paralaxe" msgid "Parallax occlusion scale" msgstr "Escala de Oclusão de paralaxe" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Insinsidade de oclusão de paralaxe" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5476,8 +5744,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Caminho para onde salvar screenshots." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5513,6 +5783,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Pausa quando o foco da janela é perdido" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Limite de filas emerge para gerar" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Física" @@ -5591,6 +5870,18 @@ msgstr "Tecla de alternância do Analizador" msgid "Profiling" msgstr "Analizando" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -6114,6 +6405,13 @@ msgstr "" "(obviamente, remote_media deve terminar com uma barra \"/\").\n" "Arquivos que não estão presentes serão obtidos da maneira usual por UDP." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "" @@ -6140,6 +6438,11 @@ msgstr "Tamanho do ruído da montanha de passo" msgid "Step mountain spread noise" msgstr "Extensão do ruído da montanha de passo" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Intensidade de paralaxe." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Intensidade de normalmaps gerados." @@ -6151,10 +6454,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Intensidade de paralaxe." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Verificação rígida de protocolo" @@ -6163,6 +6462,20 @@ msgstr "Verificação rígida de protocolo" msgid "Strip color codes" msgstr "Códigos de faixa de cor" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "SQLite síncrono" @@ -6291,6 +6604,7 @@ msgstr "" "servidor e dos modificadores." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6298,7 +6612,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" "O raio do volume de blocos em volta de cada jogador que é sujeito a coisas " "de bloco ativo, em mapblocks (16 nós).\n" @@ -6498,6 +6812,11 @@ msgstr "Descarregar os dados do servidor não utilizados" msgid "Upper Y limit of dungeons." msgstr "Limite topo Y de dungeons." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Limite topo Y de dungeons." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Usar nuvens 3D em vez de planas." @@ -6885,6 +7204,14 @@ msgid "Y-distance over which caverns expand to full size." msgstr "" "Distância em Y sobre a qual as cavernas se expandem até o tamanho total." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Nível em Y da superfície média do terreno." @@ -6917,6 +7244,113 @@ msgstr "limite paralelo de cURL" msgid "cURL timeout" msgstr "Tempo limite de cURL" +#~ msgid "Toggle Cinematic" +#~ msgstr "Alternar modo de câmera cinemática" + +#~ msgid "Select Package File:" +#~ msgstr "Selecionar o arquivo do pacote:" + +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Limite Y máximo de lava em grandes cavernas." + +#~ msgid "Waving Water" +#~ msgstr "Ondas na água" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Se dungeons ocasionalmente se projetam do terreno." + +#~ msgid "Projecting dungeons" +#~ msgstr "Projetando dungeons" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Nível Y para o qual as sombras de ilhas flutuantes se estendem." + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "" +#~ "Nível em Y do ponto médio da montanha flutuante e da superfície do lago." + +#~ msgid "Waving water" +#~ msgstr "Balanço da água" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Variação da altura da colina e profundidade do lago no terreno liso da " +#~ "Terra Flutuante." + +#~ msgid "" +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "" +#~ "Altura máxima típica, acima e abaixo do ponto médio, do terreno da " +#~ "montanha flutuante." + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Esta fonte será usada para determinados idiomas." + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Força do aumento médio da curva de luz." + +#~ msgid "Shadow limit" +#~ msgstr "Limite de mapblock" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Caminho para TrueTypeFont ou bitmap." + +#~ msgid "Lightness sharpness" +#~ msgstr "Nitidez da iluminação" + +#~ msgid "Lava depth" +#~ msgstr "Profundidade da lava" + +#~ msgid "IPv6 support." +#~ msgstr "Suporte a IPv6." + +#~ msgid "Gamma" +#~ msgstr "Gama" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Fonte alpha de sombra (opacidade, entre 0 e 255)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Altura da Ilha Flutuante montanhosa" + +#~ msgid "Floatland base height noise" +#~ msgstr "Altura base de ruído de Ilha Flutuante" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Habilitar efeito \"filmic tone mapping\"" + +#~ msgid "Enable VBO" +#~ msgstr "Habilitar VBO" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Define áreas de Ilha Flutuante em terreno suavizado.\n" +#~ "Terrenos suavizados ocorrem quando o ruído é menor que zero." + +#~ msgid "Darkness sharpness" +#~ msgstr "Nitidez da escuridão" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Controla a largura dos túneis, um valor menor cria túneis mais largos." + +#~ msgid "" +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ msgstr "" +#~ "Controla a densidade do terreno montanhoso nas ilhas flutuantes.\n" +#~ "É um parâmetro adicionado ao valor de ruído 'mgv7_np_mountain'." + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Centro do aumento da curva de luz." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "" +#~ "Altera como terras flutuantes montanhosas afunilam acima e abaixo do " +#~ "ponto médio." + #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " #~ "brighter.\n" @@ -6926,121 +7360,20 @@ msgstr "Tempo limite de cURL" #~ "elevados são mais brilhantes.\n" #~ "Esta configuração é somente para o cliente e é ignorada pelo servidor." -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Altera como terras flutuantes montanhosas afunilam acima e abaixo do " -#~ "ponto médio." +#~ msgid "Path to save screenshots at." +#~ msgstr "Caminho para onde salvar screenshots." -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Centro do aumento da curva de luz." +#~ msgid "Parallax occlusion strength" +#~ msgstr "Insinsidade de oclusão de paralaxe" -#~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." -#~ msgstr "" -#~ "Controla a densidade do terreno montanhoso nas ilhas flutuantes.\n" -#~ "É um parâmetro adicionado ao valor de ruído 'mgv7_np_mountain'." +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Limite de filas emerge no disco" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Controla a largura dos túneis, um valor menor cria túneis mais largos." +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Baixando e instalando $1, por favor aguarde..." -#~ msgid "Darkness sharpness" -#~ msgstr "Nitidez da escuridão" +#~ msgid "Back" +#~ msgstr "Backspace" -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Define áreas de Ilha Flutuante em terreno suavizado.\n" -#~ "Terrenos suavizados ocorrem quando o ruído é menor que zero." - -#~ msgid "Enable VBO" -#~ msgstr "Habilitar VBO" - -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Habilitar efeito \"filmic tone mapping\"" - -#~ msgid "Floatland base height noise" -#~ msgstr "Altura base de ruído de Ilha Flutuante" - -#~ msgid "Floatland base noise" -#~ msgstr "Ruído base de Ilha Flutuante" - -#~ msgid "Floatland level" -#~ msgstr "Nível de água" - -#~ msgid "Floatland mountain density" -#~ msgstr "Densidade da Ilha Flutuante montanhosa" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Expoente de terras flutuantes montanhosas" - -#~ msgid "Floatland mountain height" -#~ msgstr "Altura da Ilha Flutuante montanhosa" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Fonte alpha de sombra (opacidade, entre 0 e 255)." - -#~ msgid "Gamma" -#~ msgstr "Gama" - -#~ msgid "IPv6 support." -#~ msgstr "Suporte a IPv6." - -#~ msgid "Lava depth" -#~ msgstr "Profundidade da lava" - -#~ msgid "Lightness sharpness" -#~ msgstr "Nitidez da iluminação" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Caminho para TrueTypeFont ou bitmap." - -#~ msgid "Shadow limit" -#~ msgstr "Limite de mapblock" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Força do aumento médio da curva de luz." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Esta fonte será usada para determinados idiomas." - -#~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "" -#~ "Altura máxima típica, acima e abaixo do ponto médio, do terreno da " -#~ "montanha flutuante." - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "" -#~ "Variação da altura da colina e profundidade do lago no terreno liso da " -#~ "Terra Flutuante." - -#~ msgid "Waving water" -#~ msgstr "Balanço da água" - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "" -#~ "Nível em Y do ponto médio da montanha flutuante e da superfície do lago." - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Nível Y para o qual as sombras de ilhas flutuantes se estendem." - -#~ msgid "Projecting dungeons" -#~ msgstr "Projetando dungeons" - -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Se dungeons ocasionalmente se projetam do terreno." - -#~ msgid "Waving Water" -#~ msgstr "Ondas na água" - -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Limite Y máximo de lava em grandes cavernas." - -#~ msgid "Select Package File:" -#~ msgstr "Selecionar o arquivo do pacote:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Alternar modo de câmera cinemática" +#~ msgid "Ok" +#~ msgstr "Ok" diff --git a/po/ro/minetest.po b/po/ro/minetest.po index b03466735..f7c6b6fef 100644 --- a/po/ro/minetest.po +++ b/po/ro/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Romanian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-04 16:41+0000\n" "Last-Translator: f0roots \n" "Language-Team: Romanian 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2964,6 +3189,35 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Zgomotul solului" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -3016,6 +3270,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4312,14 +4572,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4383,6 +4635,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Scriptul meniului principal" @@ -4450,7 +4706,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4537,10 +4795,6 @@ msgstr "Mapgen Văi specifice steaguri" msgid "Mapgen debug" msgstr "Debug Mapgen" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Steagurile Mapgen" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Numele Mapgen" @@ -4609,13 +4863,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4699,6 +4953,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4858,9 +5116,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4936,10 +5191,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4950,7 +5201,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4983,6 +5236,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -5051,6 +5312,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5488,6 +5761,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5511,6 +5791,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5522,10 +5806,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5534,6 +5814,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5648,7 +5942,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5800,6 +6094,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6119,6 +6417,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6152,21 +6458,30 @@ msgid "cURL timeout" msgstr "" #, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "Mapgen" - -#, fuzzy -#~ msgid "Enable VBO" -#~ msgstr "Activează MP" - -#, fuzzy -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Activează Daune" +#~ msgid "Toggle Cinematic" +#~ msgstr "Intră pe rapid" #, fuzzy #~ msgid "Select Package File:" #~ msgstr "Selectează Fișierul Modului:" #, fuzzy -#~ msgid "Toggle Cinematic" -#~ msgstr "Intră pe rapid" +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Activează Daune" + +#, fuzzy +#~ msgid "Enable VBO" +#~ msgstr "Activează MP" + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "Mapgen" + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Se descarca si se instaleaza $ 1, vă rugăm să așteptați ..." + +#~ msgid "Back" +#~ msgstr "Înapoi" + +#~ msgid "Ok" +#~ msgstr "Ok" diff --git a/po/ru/minetest.po b/po/ru/minetest.po index fad5b66ac..a0a379639 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Russian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-05-12 14:46+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Russian =2 && n%10<=" -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\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 4.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp @@ -23,6 +23,10 @@ msgstr "Возродиться" msgid "You died" msgstr "Вы умерли" +#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp +msgid "OK" +msgstr "" + #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" msgstr "Произошла ошибка в скрипте Lua:" @@ -35,10 +39,6 @@ msgstr "Произошла ошибка:" msgid "Main menu" msgstr "Главное меню" -#: builtin/fstk/ui.lua -msgid "Ok" -msgstr "Oк" - #: builtin/fstk/ui.lua msgid "Reconnect" msgstr "Переподключиться" @@ -114,6 +114,10 @@ msgstr "" "Не удалось включить мод «$1», так как он содержит недопустимые символы. " "Разрешены только следующие символы: [a-z0-9_]." +#: builtin/mainmenu/dlg_config_world.lua +msgid "Find More Mods" +msgstr "" + #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" msgstr "Мод:" @@ -159,19 +163,18 @@ msgstr "включен" msgid "All packages" msgstr "Все дополнения" -#: builtin/mainmenu/dlg_contentstore.lua -msgid "Back" -msgstr "Назад" - #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" msgstr "Назад в главное меню" #: builtin/mainmenu/dlg_contentstore.lua -msgid "Downloading and installing $1, please wait..." +msgid "ContentDB is not available when Minetest was compiled without cURL" msgstr "" -"Загружается и устанавливается $1.\n" -"Пожалуйста, подождите..." + +#: builtin/mainmenu/dlg_contentstore.lua +#, fuzzy +msgid "Downloading..." +msgstr "Загрузка..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" @@ -216,14 +219,56 @@ msgstr "Удалить" msgid "Update" msgstr "Обновить" +#: builtin/mainmenu/dlg_contentstore.lua +msgid "View" +msgstr "" + #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" msgstr "Мир с названием «$1» уже существует" +#: builtin/mainmenu/dlg_create_world.lua +msgid "Additional terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Altitude chill" +msgstr "Высота нивального пояса" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Altitude dry" +msgstr "Высота нивального пояса" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Biome blending" +msgstr "Шум биомов" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Biomes" +msgstr "Шум биомов" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Caverns" +msgstr "Шум пещеры" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Caves" +msgstr "Октавы" + #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "Создать" +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Decorations" +msgstr "Итерации" + #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" msgstr "Скачивайте игры, такие как Minetest Game, на minetest.net" @@ -232,25 +277,153 @@ msgstr "Скачивайте игры, такие как Minetest Game, на min msgid "Download one from minetest.net" msgstr "Вы можете скачать их на minetest.net" +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Dungeons" +msgstr "Шум подземелья" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Flat terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Floating landmasses in the sky" +msgstr "Плотность гор на парящих островах" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Floatlands (experimental)" +msgstr "Уровень парящих островов" + #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" msgstr "Игра" +#: builtin/mainmenu/dlg_create_world.lua +msgid "Generate non-fractal terrain: Oceans and underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Hills" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Humid rivers" +msgstr "Видеодрайвер" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Increases humidity around rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Lakes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Low humidity and high heat causes shallow or dry rivers" +msgstr "" + #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" msgstr "Картогенератор" +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "Флаги картогенератора" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Mapgen-specific flags" +msgstr "Специальные флаги картогенератора V5" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Mountains" +msgstr "Шум гор" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mud flow" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Network of tunnels and caves" +msgstr "" + #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" msgstr "Игра не выбрана" +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces heat with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces humidity with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Rivers" +msgstr "Размер рек" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Sea level rivers" +msgstr "" + #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Seed" msgstr "Зерно" #: builtin/mainmenu/dlg_create_world.lua -msgid "Warning: The minimal development test is meant for developers." +msgid "Smooth transition between biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "" +"Structures appearing on the terrain (no effect on trees and jungle grass " +"created by v6)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Structures appearing on the terrain, typically trees and plants" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle, Tundra, Taiga" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Terrain surface erosion" +msgstr "Базовый шум поверхности" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Trees and jungle grass" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Vary river depth" +msgstr "Глубина рек" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Very large caverns deep in the underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#, fuzzy +msgid "Warning: The Development Test is meant for developers." msgstr "" "Внимание: «Minimal development test» предназначен только для разработчиков." @@ -567,6 +740,10 @@ msgstr "Играть (хост)" msgid "Host Server" msgstr "Запустить сервер" +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" + #: builtin/mainmenu/tab_local.lua msgid "Name/Password" msgstr "Имя/Пароль" @@ -1225,6 +1402,14 @@ msgstr "Громкость звука" msgid "Sound muted" msgstr "Звук отключён" +#: src/client/game.cpp +msgid "Sound system is disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Sound system is not supported on this build" +msgstr "" + #: src/client/game.cpp msgid "Sound unmuted" msgstr "Звук включён" @@ -1257,7 +1442,7 @@ msgstr "Отображение каркаса включено" msgid "Zoom currently disabled by game or mod" msgstr "Приближение в настоящее время отключено игрой или модом" -#: src/client/game.cpp src/gui/modalMenu.cpp +#: src/client/game.cpp msgid "ok" msgstr "OK" @@ -1867,6 +2052,11 @@ msgstr "Объёмные облака" msgid "3D mode" msgstr "3D-режим" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "3D mode parallax strength" +msgstr "Сила карт нормалей" + #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." msgstr "3D-шум, определяющий огромные пещеры." @@ -1879,6 +2069,14 @@ msgstr "" "3D-шум, определяющий структуру гор и их высоту.\n" "Также определяет структуру гор на парящих островах." +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining structure of floatlands.\n" +"If altered from the default, the noise 'scale' (0.7 by default) may need\n" +"to be adjusted, as floatland tapering functions best when this noise has\n" +"a value range of approximately -2.0 to 2.0." +msgstr "" + #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." msgstr "3D-шум, определяющий структуру стен речного каньона." @@ -1941,7 +2139,8 @@ msgid "ABM interval" msgstr "Интервал сохранения карты" #: src/settings_translation_file.cpp -msgid "Absolute limit of emerge queues" +#, fuzzy +msgid "Absolute limit of queued blocks to emerge" msgstr "Абсолютный лимит появляющихся запросов" #: src/settings_translation_file.cpp @@ -1990,6 +2189,16 @@ msgstr "" "Настройка dpi (плотности точек на дюйм) для вашего экрана (не для X11, " "только для Android). Например для мониторов с разрешением в 4k." +#: src/settings_translation_file.cpp +#, c-format +msgid "" +"Adjusts the density of the floatland layer.\n" +"Increase value to increase density. Can be positive or negative.\n" +"Value = 0.0: 50% of volume is floatland.\n" +"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" +"to be sure) creates a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "Advanced" msgstr "Дополнительно" @@ -2010,10 +2219,6 @@ msgstr "" "искусственный свет, он очень мало влияет на \n" "естественный ночной свет." -#: src/settings_translation_file.cpp -msgid "Altitude chill" -msgstr "Высота нивального пояса" - #: src/settings_translation_file.cpp msgid "Always fly and fast" msgstr "Всегда включены полёт и ускорение" @@ -2286,10 +2491,20 @@ msgstr "" "- Simple: один однопользовательский мир без выбора игр или текстур. Может " "быть полезно для небольших экранов." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Chat font size" +msgstr "Размер шрифта" + #: src/settings_translation_file.cpp msgid "Chat key" msgstr "Кнопка чата" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Chat log level" +msgstr "Отладочный уровень" + #: src/settings_translation_file.cpp msgid "Chat message count limit" msgstr "Максимальное количество сообщений в чате" @@ -2489,8 +2704,8 @@ msgid "" "Value >= 10.0 completely disables generation of tunnels and avoids the\n" "intensive noise calculations." msgstr "" -"Контролирует ширину туннелей, меньшее значение создаёт более широкие туннели." -"\n" +"Контролирует ширину туннелей, меньшее значение создаёт более широкие " +"туннели.\n" "Значение >= 10.0 полностью отключает генерацию туннелей и позволяют " "избежать\n" "интенсивного расчёта шумов." @@ -2579,6 +2794,11 @@ msgstr "Начальные привилегии" msgid "Default report format" msgstr "Формат отчёта по умолчанию" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Default stack size" +msgstr "Стандартная игра" + #: src/settings_translation_file.cpp msgid "" "Default timeout for cURL, stated in milliseconds.\n" @@ -2942,6 +3162,16 @@ msgstr "" "Экспериментальная опция, может привести к видимым зазорам\n" "между блоками, когда значение больше, чем 0." +#: src/settings_translation_file.cpp +msgid "" +"Exponent of the floatland tapering. Alters the tapering behaviour.\n" +"Value = 1.0 creates a uniform, linear tapering.\n" +"Values > 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "Кадровая частота во время паузы" @@ -3059,6 +3289,41 @@ msgstr "Фиксированное зерно мира" msgid "Fixed virtual joystick" msgstr "Фиксация виртуального джойстика" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Плотность гор на парящих островах" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Максимальная Y подземелья" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Минимальная Y подземелья" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Базовый шум парящих островов" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Экспонента гор на парящих островах" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Базовый шум парящих островов" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Уровень парящих островов" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Клавиша полёта" @@ -3111,6 +3376,12 @@ msgstr "Размер резервного шрифта в пунктах (pt)." msgid "Font size of the monospace font in point (pt)." msgstr "Размер моноширинного шрифта в пунктах (pt)." +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4735,14 +5006,6 @@ msgstr "Средний подъём кривой света" msgid "Light curve low gradient" msgstr "Центр среднего подъёма кривой света" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Ограничение очередей emerge на диске" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Ограничение очередей emerge для генерации" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4819,6 +5082,11 @@ msgstr "Модификаторы загружающихся блоков" msgid "Lower Y limit of dungeons." msgstr "Нижний лимит Y для подземелий." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Нижний лимит Y для подземелий." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Скрипт главного меню" @@ -4903,9 +5171,12 @@ msgstr "" "активируются джунгли, а флаг «jungles» игнорируется." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "Атрибуты генерации карт для Mapgen v7.\n" "«хребты» включают реки." @@ -4994,10 +5265,6 @@ msgstr "Специальные флаги картогенератора дол msgid "Mapgen debug" msgstr "Отладка картогенератора" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Флаги картогенератора" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Название картогенератора" @@ -5072,17 +5339,19 @@ msgstr "" "загрузки." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Максимальное количество блоков в очереди на генерацию. Оставьте пустым для " "автоматического выбора подходящего значения." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Максимальное количество блоков в очереди на загрузку из файла. Оставьте " "пустым для автоматического выбора подходящего значения." @@ -5180,6 +5449,10 @@ msgstr "Сообщение, отображаемое подключившимс msgid "Method used to highlight selected object." msgstr "Метод подсветки выделенного объекта." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Миникарта" @@ -5351,11 +5624,9 @@ msgid "Number of emerge threads" msgstr "Количество emerge-потоков" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5452,10 +5723,6 @@ msgstr "Режим параллакса" msgid "Parallax occlusion scale" msgstr "Масштаб параллаксной окклюзии" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Сила параллакса" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5466,8 +5733,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Путь для сохранения скриншотов." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5502,6 +5771,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Пауза при потере фокуса" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Ограничение очередей emerge для генерации" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Физика" @@ -5582,6 +5860,18 @@ msgstr "Клавиша переключения профилировщика" msgid "Profiling" msgstr "Профилирование" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -6104,6 +6394,13 @@ msgstr "" "(remote_media должен заканчиваться слешем).\n" "Файлы, которых не будет, будут скачены обычным путём." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "" @@ -6130,6 +6427,11 @@ msgstr "Шаг шума размера гор" msgid "Step mountain spread noise" msgstr "Шаг шума распространения гор" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Сила параллакса." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Сила сгенерированных карт нормалей." @@ -6141,10 +6443,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Сила параллакса." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Строгая проверка протокола" @@ -6153,6 +6451,20 @@ msgstr "Строгая проверка протокола" msgid "Strip color codes" msgstr "Прятать коды цветов" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "Синхронный SQLite" @@ -6283,6 +6595,7 @@ msgstr "" "настройке мода." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6290,7 +6603,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" "Радиус объёма блоков вокруг каждого игрока, в котором действуют\n" "активные блоки, определённые в блоках карты (16 нод).\n" @@ -6489,6 +6802,11 @@ msgstr "Выгружать неиспользуемые сервером дан msgid "Upper Y limit of dungeons." msgstr "Верхний лимит Y для подземелий." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Верхний лимит Y для подземелий." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Объёмные облака вместо плоских." @@ -6873,6 +7191,14 @@ msgstr "Y верхнего предела больших пещер." msgid "Y-distance over which caverns expand to full size." msgstr "Y-расстояние, над которым пещеры расширяются до полного размера." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Y-уровень средней поверхности рельефа." @@ -6905,42 +7231,80 @@ msgstr "Лимит одновременных соединений cURL" msgid "cURL timeout" msgstr "cURL тайм-аут" -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ msgid "Toggle Cinematic" +#~ msgstr "Кино" + +#~ msgid "Select Package File:" +#~ msgstr "Выберите файл дополнения:" + +#, fuzzy +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Верхний предел по Y для больших псевдослучайных пещер." + +#~ msgid "Waving Water" +#~ msgstr "Волны на воде" + +#~ msgid "Projecting dungeons" +#~ msgstr "Проступающие подземелья" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Y-уровень, на который распространяются тени с плавающей точкой." + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Y-уровень середины поплавка и поверхности озера." + +#~ msgid "Waving water" +#~ msgstr "Волны на воде" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." #~ msgstr "" -#~ "Регулирует гамма-кодировку таблиц освещения. Более высокие значения " -#~ "ярче.\n" -#~ "Этот параметр предназначен только для клиента и игнорируется сервером." - -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "Управляет сужением островов горного типа ниже средней точки." - -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Центр среднего подъёма кривой света." +#~ "Вариация высоты холмов и глубин озёр на гладкой местности парящих " +#~ "островов." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Контролирует плотность горной местности парящих островов.\n" -#~ "Является смещением, добавляемым к значению шума 'mgv7_np_mountain'." +#~ "Типичная максимальная высота, выше и ниже средней точки гор парящих " +#~ "островов." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Контролирует ширину тоннелей. Меньшие значения создают более широкие " -#~ "тоннели." +#~ msgid "This font will be used for certain languages." +#~ msgstr "Этот шрифт будет использован для некоторых языков." -#~ msgid "Darkness sharpness" -#~ msgstr "Резкость темноты" +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Сила среднего подъёма кривой света." -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Определяет области гладкой поверхности на парящих островах.\n" -#~ "Гладкие парящие острова появляются, когда шум больше ноля." +#~ msgid "Shadow limit" +#~ msgstr "Лимит теней" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Путь к шрифту TrueType или картинке со шрифтом." + +#~ msgid "Lightness sharpness" +#~ msgstr "Резкость освещённости" + +#~ msgid "Lava depth" +#~ msgstr "Глубина лавы" + +#~ msgid "IPv6 support." +#~ msgstr "Поддержка IPv6." + +#~ msgid "Gamma" +#~ msgstr "Гамма" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Прозрачность тени шрифта (непрозрачность от 0 до 255)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Высота гор на парящих островах" + +#~ msgid "Floatland base height noise" +#~ msgstr "Шум базовой высоты парящих островов" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Включить кинематографическое тональное отображение" + +#~ msgid "Enable VBO" +#~ msgstr "Включить объекты буфера вершин (VBO)" #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -6951,89 +7315,59 @@ msgstr "cURL тайм-аут" #~ "определений биома.\n" #~ "Y верхней границы лавы в больших пещерах." -#~ msgid "Enable VBO" -#~ msgstr "Включить объекты буфера вершин (VBO)" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Определяет области гладкой поверхности на парящих островах.\n" +#~ "Гладкие парящие острова появляются, когда шум больше ноля." -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Включить кинематографическое тональное отображение" +#~ msgid "Darkness sharpness" +#~ msgstr "Резкость темноты" -#~ msgid "Floatland base height noise" -#~ msgstr "Шум базовой высоты парящих островов" - -#~ msgid "Floatland base noise" -#~ msgstr "Базовый шум парящих островов" - -#~ msgid "Floatland level" -#~ msgstr "Уровень парящих островов" - -#~ msgid "Floatland mountain density" -#~ msgstr "Плотность гор на парящих островах" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Экспонента гор на парящих островах" - -#~ msgid "Floatland mountain height" -#~ msgstr "Высота гор на парящих островах" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Прозрачность тени шрифта (непрозрачность от 0 до 255)." - -#~ msgid "Gamma" -#~ msgstr "Гамма" - -#~ msgid "IPv6 support." -#~ msgstr "Поддержка IPv6." - -#~ msgid "Lava depth" -#~ msgstr "Глубина лавы" - -#~ msgid "Lightness sharpness" -#~ msgstr "Резкость освещённости" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Путь к шрифту TrueType или картинке со шрифтом." - -#~ msgid "Shadow limit" -#~ msgstr "Лимит теней" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Сила среднего подъёма кривой света." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Этот шрифт будет использован для некоторых языков." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Контролирует ширину тоннелей. Меньшие значения создают более широкие " +#~ "тоннели." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Типичная максимальная высота, выше и ниже средней точки гор парящих " -#~ "островов." +#~ "Контролирует плотность горной местности парящих островов.\n" +#~ "Является смещением, добавляемым к значению шума 'mgv7_np_mountain'." -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Центр среднего подъёма кривой света." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." +#~ msgstr "Управляет сужением островов горного типа ниже средней точки." + +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Вариация высоты холмов и глубин озёр на гладкой местности парящих " -#~ "островов." +#~ "Регулирует гамма-кодировку таблиц освещения. Более высокие значения " +#~ "ярче.\n" +#~ "Этот параметр предназначен только для клиента и игнорируется сервером." -#~ msgid "Waving water" -#~ msgstr "Волны на воде" +#~ msgid "Path to save screenshots at." +#~ msgstr "Путь для сохранения скриншотов." -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Y-уровень середины поплавка и поверхности озера." +#~ msgid "Parallax occlusion strength" +#~ msgstr "Сила параллакса" -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Y-уровень, на который распространяются тени с плавающей точкой." +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Ограничение очередей emerge на диске" -#~ msgid "Projecting dungeons" -#~ msgstr "Проступающие подземелья" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "" +#~ "Загружается и устанавливается $1.\n" +#~ "Пожалуйста, подождите..." -#~ msgid "Waving Water" -#~ msgstr "Волны на воде" +#~ msgid "Back" +#~ msgstr "Назад" -#, fuzzy -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Верхний предел по Y для больших псевдослучайных пещер." - -#~ msgid "Select Package File:" -#~ msgstr "Выберите файл дополнения:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Кино" +#~ msgid "Ok" +#~ msgstr "Oк" diff --git a/po/sl/minetest.po b/po/sl/minetest.po index b429ee0bd..16d224c40 100644 --- a/po/sl/minetest.po +++ b/po/sl/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Slovenian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2019-11-29 23:04+0000\n" "Last-Translator: Matej Mlinar \n" "Language-Team: Slovenian 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2925,6 +3146,34 @@ msgstr "Fiksno seme karte" msgid "Fixed virtual joystick" msgstr "Fiksen virtualni joystick" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Tipka za letenje" @@ -2979,6 +3228,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4297,14 +4552,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4368,6 +4615,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4435,7 +4686,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4523,10 +4776,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4595,13 +4844,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4685,6 +4934,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4844,9 +5097,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4923,10 +5173,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "Lestvica okluzije paralakse" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4937,7 +5183,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4970,6 +5218,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -5040,6 +5296,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5484,6 +5752,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5507,6 +5782,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5518,10 +5797,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5530,6 +5805,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5644,7 +5933,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5796,6 +6085,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6119,6 +6412,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6151,18 +6452,27 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Darkness sharpness" -#~ msgstr "Ostrina teme" +#~ msgid "Toggle Cinematic" +#~ msgstr "Preklopi gladek pogled" + +#~ msgid "Select Package File:" +#~ msgstr "Izberi datoteko paketa:" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 podpora." #, fuzzy #~ msgid "Enable VBO" #~ msgstr "Omogoči VBO" -#~ msgid "IPv6 support." -#~ msgstr "IPv6 podpora." +#~ msgid "Darkness sharpness" +#~ msgstr "Ostrina teme" -#~ msgid "Select Package File:" -#~ msgstr "Izberi datoteko paketa:" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Prenašanje in nameščanje $1, prosimo počakajte..." -#~ msgid "Toggle Cinematic" -#~ msgstr "Preklopi gladek pogled" +#~ msgid "Back" +#~ msgstr "Nazaj" + +#~ msgid "Ok" +#~ msgstr "V redu" diff --git a/po/sr_Cyrl/minetest.po b/po/sr_Cyrl/minetest.po index 4fc40b2c6..4ba5e13b5 100644 --- a/po/sr_Cyrl/minetest.po +++ b/po/sr_Cyrl/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Serbian (cyrillic) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: Serbian (cyrillic) 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -3029,6 +3252,35 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Семе пећина" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -3081,6 +3333,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4381,14 +4639,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4452,6 +4702,11 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Абсолутни лимит emerge токова." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4520,7 +4775,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4613,10 +4870,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4685,13 +4938,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4775,6 +5028,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4934,9 +5191,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5013,10 +5267,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "Parallax Occlusion Мапирање" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5027,7 +5277,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -5060,6 +5312,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -5131,6 +5391,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5593,6 +5865,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5616,6 +5895,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5627,10 +5910,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5639,6 +5918,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5753,7 +6046,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5906,6 +6199,11 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Абсолутни лимит emerge токова." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6231,6 +6529,14 @@ msgstr "Абсолутни лимит emerge токова." msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6263,13 +6569,15 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "Подеси осветљење унутар игре. Веће вредности су светлије.\n" -#~ "Ово подешавање је само за клијента, сервер га игнорише." +#~ msgid "Toggle Cinematic" +#~ msgstr "Укључи/Искључи Cinematic мод" + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Изаберите фајл мода:" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "Контролише ширину тунела, мања вредност ствара шире тунеле." #, fuzzy #~ msgid "" @@ -6279,12 +6587,20 @@ msgstr "" #~ "Контролише густину планинског терена на лебдећим острвима.\n" #~ "Као одступање се додаје на вредност 'np_mountain' семена." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "Контролише ширину тунела, мања вредност ствара шире тунеле." +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." +#~ msgstr "" +#~ "Подеси осветљење унутар игре. Веће вредности су светлије.\n" +#~ "Ово подешавање је само за клијента, сервер га игнорише." #, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Изаберите фајл мода:" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Преузима се $1, молим вас сачекајте..." -#~ msgid "Toggle Cinematic" -#~ msgstr "Укључи/Искључи Cinematic мод" +#~ msgid "Back" +#~ msgstr "Назад" + +#~ msgid "Ok" +#~ msgstr "Уреду" diff --git a/po/sv/minetest.po b/po/sv/minetest.po index d0a04e119..296e0b5bb 100644 --- a/po/sv/minetest.po +++ b/po/sv/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Swedish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-03-31 10:14+0000\n" "Last-Translator: sfan5 \n" "Language-Team: Swedish 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -3031,6 +3256,35 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Grottoljud" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -3083,6 +3337,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4380,14 +4640,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4452,6 +4704,11 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Absolut gräns av emerge kö" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4520,7 +4777,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4613,10 +4872,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4685,13 +4940,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4775,6 +5030,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4934,9 +5193,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5013,10 +5269,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "Parrallax Ocklusion" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5027,7 +5279,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -5060,6 +5314,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -5129,6 +5391,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5590,6 +5864,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5613,6 +5894,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5624,10 +5909,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5636,6 +5917,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5751,7 +6046,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5904,6 +6199,11 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Absolut gräns av emerge kö" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6229,6 +6529,14 @@ msgstr "Absolut gräns av emerge kö" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6263,13 +6571,26 @@ msgstr "cURL parallellgräns" msgid "cURL timeout" msgstr "cURL-timeout" +#~ msgid "Toggle Cinematic" +#~ msgstr "Slå av/på Filmisk Kamera" + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Välj modfil:" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Y-nivå till vilket luftöars skuggor når." + #~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." #~ msgstr "" -#~ "Justera gammakodningen för ljustabeller. Högre tal är ljusare.\n" -#~ "Denna inställning påverkar endast klienten och ignoreras av servern." +#~ "Definierar områden för luftöars jämna terräng.\n" +#~ "Jämna luftöar förekommer när oljud > 0." + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Kontrollerar bredd av tunnlar, mindre värden skapar bredare tunnlar." #, fuzzy #~ msgid "" @@ -6279,23 +6600,19 @@ msgstr "cURL-timeout" #~ "Kontrollerar densiteten av luftöars bergsterräng.\n" #~ "Är en förskjutning adderad till oljudsvärdet för 'np_mountain'." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Kontrollerar bredd av tunnlar, mindre värden skapar bredare tunnlar." - #~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "Definierar områden för luftöars jämna terräng.\n" -#~ "Jämna luftöar förekommer när oljud > 0." +#~ "Justera gammakodningen för ljustabeller. Högre tal är ljusare.\n" +#~ "Denna inställning påverkar endast klienten och ignoreras av servern." -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Y-nivå till vilket luftöars skuggor når." +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Laddar ner och installerar $1, vänligen vänta..." -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Välj modfil:" +#~ msgid "Back" +#~ msgstr "Tillbaka" -#~ msgid "Toggle Cinematic" -#~ msgstr "Slå av/på Filmisk Kamera" +#~ msgid "Ok" +#~ msgstr "Ok" diff --git a/po/sw/minetest.po b/po/sw/minetest.po index db8fcd3d9..a34b6c98b 100644 --- a/po/sw/minetest.po +++ b/po/sw/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Swahili (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: Swahili 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "Ramprogrammen katika Menyu ya mapumziko" @@ -3104,6 +3334,39 @@ msgstr "Mbegu ya ramani fasta" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Kiwango cha maji" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Kiwango cha maji" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Kiwango cha maji" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Umbali wa uhamisho wa mchezaji" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Kiwango cha maji" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Kuruka ufunguo" @@ -3156,6 +3419,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4817,14 +5086,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Kikomo ya foleni emerge kwenye diski" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Kikomo ya foleni emerge kuzalisha" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4897,6 +5158,11 @@ msgstr "Inapakiza umbo Modifiers" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Y ya upper kikomo ya kubwa pseudorandom cellars." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Hati ya Menyu kuu" @@ -4984,10 +5250,18 @@ msgstr "" "Bendera kuanzia na 'hapana' hutumiwa kidhahiri Lemaza yao." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" +"Ramani kizazi sifa maalum kwa Mwandishi ramani gorofa.\n" +"Maziwa mara kwa mara na vilima vinaweza kuongezwa kwa ulimwengu gorofa.\n" +"Bendera ambayo haijabainishwa katika Tungo ya bendera ni hayakubadilishwa " +"kutoka chaguo-msingi.\n" +"Bendera kuanzia na 'hapana' hutumiwa kidhahiri Lemaza yao." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5088,10 +5362,6 @@ msgstr "Mwandishi ramani gorofa bendera" msgid "Mapgen debug" msgstr "Utatuaji wa Mwandishi ramani" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Bendera ya Mwandishi ramani" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Mwandishi ramani jina" @@ -5159,17 +5429,19 @@ msgstr "" "Namba ya juu ya vitalu kwamba unaweza kwenye foleni kwa ajili ya kupakia." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Namba ya juu ya vitalu kwa kuwa kwenye foleni kwamba ni kutengenezwa.\n" "Seti kwa wazi kwa kiasi sahihi ili uweze kuchaguliwa moja kwa moja." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Namba ya juu ya vitalu kwa kuwa kwenye foleni kwamba ni kupakiwa kutoka " "faili.\n" @@ -5267,6 +5539,10 @@ msgstr "Ujumbe wa siku ya kuonyeshwa kwa wachezaji kuunganisha." msgid "Method used to highlight selected object." msgstr "Mbinu inayotumiwa kuonyesha kipengee kilichoteuliwa." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Ramani" @@ -5440,9 +5716,6 @@ msgstr "Idadi ya nyuzi emerge" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5522,10 +5795,6 @@ msgstr "Parallax occlusion hali" msgid "Parallax occlusion scale" msgstr "Parallax occlusion wadogo" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Parallax occlusion nguvu" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5536,8 +5805,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Njia ya kuokoa viwambo katika." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5569,6 +5840,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Kikomo ya foleni emerge kuzalisha" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Fizikia" @@ -5646,6 +5926,18 @@ msgstr "Profiler kibonye" msgid "Profiling" msgstr "Ubainishaji wa" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -6158,6 +6450,13 @@ msgstr "" "wazi, remote_media lazima kumaliza na kufyeka na).\n" "Faili ambayo sasa itakuwa kuwa fetched njia ya kawaida." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6183,6 +6482,11 @@ msgstr "Mwandishi ramani v7 mlima urefu kelele vigezo" msgid "Step mountain spread noise" msgstr "Mwandishi ramani v7 mlima urefu kelele vigezo" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Nguvu ya parallax." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Nguvu ya normalmaps inayozalishwa." @@ -6194,10 +6498,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Nguvu ya parallax." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Itifaki ya kali kukagua" @@ -6206,6 +6506,20 @@ msgstr "Itifaki ya kali kukagua" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "SQLite Uvingirizi" @@ -6339,7 +6653,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6515,6 +6829,11 @@ msgstr "Wakipakua zisizotumika seva ya data" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Y ya upper kikomo ya kubwa pseudorandom cellars." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Matumizi wingu 3D kuangalia badala ya gorofa." @@ -6884,6 +7203,14 @@ msgstr "Y ya upper kikomo ya kubwa pseudorandom cellars." msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6916,6 +7243,60 @@ msgstr "cURL kikomo sambamba" msgid "cURL timeout" msgstr "muda wa kuisha wa cURL" +#~ msgid "Toggle Cinematic" +#~ msgstr "Togoa Cinematic" + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "Teua faili ya Moduli:" + +#, fuzzy +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Y ya upper kikomo ya kubwa pseudorandom cellars." + +#~ msgid "Waving Water" +#~ msgstr "Waving maji" + +#~ msgid "Waving water" +#~ msgstr "Waving maji" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "Fonti hii itatumika kwa lugha fulani." + +#, fuzzy +#~ msgid "Shadow limit" +#~ msgstr "Kikomo cha Mapblock" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "Njia ya TrueTypeFont au vitone michoro." + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "Kina ya pango kubwa" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 msaada." + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Fonti kivuli Alfa (opaqueness kati ya 0 na 255)." + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Huwezesha toni filmic ramani" + +#~ msgid "Enable VBO" +#~ msgstr "Wezesha VBO" + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "Mwandishi ramani ziwa gorofa mwinuko" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Vidhibiti vya upana wa vichuguu, thamani ndogo huunda vichuguu pana." + #, fuzzy #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " @@ -6925,60 +7306,21 @@ msgstr "muda wa kuisha wa cURL" #~ "Rekebisha simbiko gamma kwa majedwali mwanga. Idadi ya chini ni mkali.\n" #~ "Kipimo hiki ni kwa ajili ya mteja tu na ni kupuuzwa na seva." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Vidhibiti vya upana wa vichuguu, thamani ndogo huunda vichuguu pana." +#~ msgid "Path to save screenshots at." +#~ msgstr "Njia ya kuokoa viwambo katika." + +#~ msgid "Parallax occlusion strength" +#~ msgstr "Parallax occlusion nguvu" + +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Kikomo ya foleni emerge kwenye diski" #, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "Mwandishi ramani ziwa gorofa mwinuko" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Inapakua $1, Tafadhali subiri..." -#~ msgid "Enable VBO" -#~ msgstr "Wezesha VBO" +#~ msgid "Back" +#~ msgstr "Nyuma" -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Huwezesha toni filmic ramani" - -#, fuzzy -#~ msgid "Floatland level" -#~ msgstr "Kiwango cha maji" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Fonti kivuli Alfa (opaqueness kati ya 0 na 255)." - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 msaada." - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "Kina ya pango kubwa" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "Njia ya TrueTypeFont au vitone michoro." - -#, fuzzy -#~ msgid "Shadow limit" -#~ msgstr "Kikomo cha Mapblock" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Fonti hii itatumika kwa lugha fulani." - -#~ msgid "Waving water" -#~ msgstr "Waving maji" - -#~ msgid "Waving Water" -#~ msgstr "Waving maji" - -#, fuzzy -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Y ya upper kikomo ya kubwa pseudorandom cellars." - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "Teua faili ya Moduli:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Togoa Cinematic" +#~ msgid "Ok" +#~ msgstr "Sawa kabisa" diff --git a/po/th/minetest.po b/po/th/minetest.po index 737bf865f..21166877b 100644 --- a/po/th/minetest.po +++ b/po/th/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Thai (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-01-11 18:26+0000\n" "Last-Translator: rubenwardy \n" "Language-Team: Thai 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "FPS ในเมนูหยุดชั่วคราว" @@ -3003,6 +3222,35 @@ msgstr "แก้ไขแผนที่เมล็ด" msgid "Fixed virtual joystick" msgstr "แก้ไขจอยสติ๊กเสมือนจริง" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "ระยะถ่ายโอนผู้เล่น" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "Fly key" @@ -3056,6 +3304,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4588,14 +4842,6 @@ msgstr "การเพิ่มความโค้งกลางของแ msgid "Light curve low gradient" msgstr "ส่วนโค้งของแสงตรงกลางเพิ่ม" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4659,6 +4905,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4727,7 +4977,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4814,10 +5066,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4889,13 +5137,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4988,6 +5236,10 @@ msgstr "ข้อความของวันที่แสดงต่อผ msgid "Method used to highlight selected object." msgstr "วิธีการใช้เพื่อเน้นวัตถุที่เลือก" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "แผนที่ขนาดเล็ก" @@ -5154,9 +5406,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5232,10 +5481,6 @@ msgstr "โหมดการบดเคี้ยวของ Parallax" msgid "Parallax occlusion scale" msgstr "ขนาดการบดเคี้ยวของ Parallax" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "กำลังบดเคี้ยวของ Parallax" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5246,8 +5491,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "พา ธ เพื่อบันทึกภาพหน้าจอที่ ..." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5279,6 +5526,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "หยุดการโฟกัสของหน้าต่างที่หายไปชั่วคราว" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -5353,6 +5608,18 @@ msgstr "ปุ่มสลับ Profiler" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5826,6 +6093,13 @@ msgstr "" "(ชัด ๆ remote_media ควรลงท้ายด้วยเครื่องหมายทับ).\n" "ไฟล์ที่ไม่ปรากฏจะถูกดึงข้อมูลตามปกติ." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp #, fuzzy msgid "" @@ -5852,6 +6126,11 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "ความแข็งแกร่งของพารัลแลกซ์" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "ความแข็งแกร่งของแผนที่ปกติที่สร้างขึ้น" @@ -5863,10 +6142,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "ความแข็งแกร่งของพารัลแลกซ์" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "การตรวจสอบโปรโตคอลที่เข้มงวด" @@ -5875,6 +6150,20 @@ msgstr "การตรวจสอบโปรโตคอลที่เข้ msgid "Strip color codes" msgstr "แถบรหัสสี" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5997,7 +6286,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6175,6 +6464,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "ใช้รูปลักษณ์คลาวด์ 3D แทนที่จะเป็นแนวราบ" @@ -6537,6 +6830,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6569,6 +6870,48 @@ msgstr "" msgid "cURL timeout" msgstr "" +#~ msgid "Toggle Cinematic" +#~ msgstr "สลับโรงภาพยนตร์" + +#~ msgid "Select Package File:" +#~ msgstr "เลือกแฟ้มแพคเกจ:" + +#~ msgid "Waving Water" +#~ msgstr "น้ำโบก" + +#~ msgid "Waving water" +#~ msgstr "โบกน้ำ" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "แบบอักษรนี้จะใช้สำหรับบางภาษา" + +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "ความแข็งแรงของแสงโค้งกลาง - เพิ่ม" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "เส้นทางแบบอักษร." + +#~ msgid "Lightness sharpness" +#~ msgstr "ความคมชัดของแสง" + +#~ msgid "Gamma" +#~ msgstr "แกมมา" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "ตัวอักษรเงาอัลฟา (ความทึบระหว่าง 0 และ 255)." + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "เปิดใช้งานการจับคู่โทนภาพยนตร์" + +#~ msgid "Enable VBO" +#~ msgstr "ทำให้สามารถ VBO" + +#~ msgid "Darkness sharpness" +#~ msgstr "ความมืดมิด" + +#~ msgid "Center of light curve mid-boost." +#~ msgstr "กึ่งกลางของเส้นโค้งแสง - กลางเพิ่ม" + #~ msgid "" #~ "Adjust the gamma encoding for the light tables. Higher numbers are " #~ "brighter.\n" @@ -6577,44 +6920,17 @@ msgstr "" #~ "ปรับการเข้ารหัสแกมม่าสำหรับตารางแสง ตัวเลขที่สูงกว่านั้นจะสว่างกว่า\n" #~ "การตั้งค่านี้มีไว้สำหรับไคลเอ็นต์เท่านั้นและเซิร์ฟเวอร์จะเพิกเฉย" -#~ msgid "Center of light curve mid-boost." -#~ msgstr "กึ่งกลางของเส้นโค้งแสง - กลางเพิ่ม" +#~ msgid "Path to save screenshots at." +#~ msgstr "พา ธ เพื่อบันทึกภาพหน้าจอที่ ..." -#~ msgid "Darkness sharpness" -#~ msgstr "ความมืดมิด" +#~ msgid "Parallax occlusion strength" +#~ msgstr "กำลังบดเคี้ยวของ Parallax" -#~ msgid "Enable VBO" -#~ msgstr "ทำให้สามารถ VBO" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "ดาวน์โหลด และติดตั้ง $1 กรุณารอสักครู่..." -#~ msgid "Enables filmic tone mapping" -#~ msgstr "เปิดใช้งานการจับคู่โทนภาพยนตร์" +#~ msgid "Back" +#~ msgstr "หลัง" -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "ตัวอักษรเงาอัลฟา (ความทึบระหว่าง 0 และ 255)." - -#~ msgid "Gamma" -#~ msgstr "แกมมา" - -#~ msgid "Lightness sharpness" -#~ msgstr "ความคมชัดของแสง" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "เส้นทางแบบอักษร." - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "ความแข็งแรงของแสงโค้งกลาง - เพิ่ม" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "แบบอักษรนี้จะใช้สำหรับบางภาษา" - -#~ msgid "Waving water" -#~ msgstr "โบกน้ำ" - -#~ msgid "Waving Water" -#~ msgstr "น้ำโบก" - -#~ msgid "Select Package File:" -#~ msgstr "เลือกแฟ้มแพคเกจ:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "สลับโรงภาพยนตร์" +#~ msgid "Ok" +#~ msgstr "ตกลง" diff --git a/po/tr/minetest.po b/po/tr/minetest.po index ce77dba53..8c88d7e81 100644 --- a/po/tr/minetest.po +++ b/po/tr/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Turkish (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-13 21:08+0000\n" "Last-Translator: Oğuz Ersen \n" "Language-Team: Turkish 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "Duraklat menüsünde FPS" @@ -3047,6 +3279,41 @@ msgstr "Sabit harita tohumu" msgid "Fixed virtual joystick" msgstr "Sabit sanal joystick" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "Yüzenkara dağ yoğunluğu" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "Zindan maksimum Y" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "Zindan minimum Y" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "Yüzenkara taban gürültüsü" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "Yüzenkara dağ eksponenti" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "Yüzenkara taban gürültüsü" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "Yüzenkara seviyesi" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Uçma tuşu" @@ -3099,6 +3366,12 @@ msgstr "Yedek yazı tipinin nokta (pt) olarak boyutu." msgid "Font size of the monospace font in point (pt)." msgstr "Eş aralıklı yazı tipinin nokta (pt) olarak boyutu." +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4723,14 +4996,6 @@ msgstr "Işık eğrisi yüksek gradyan" msgid "Light curve low gradient" msgstr "Işık eğrisi düşük gradyan" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "Diskte emerge sıralarının sınırı" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "Üretilecek emerge sıralarının sınırı" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4805,6 +5070,11 @@ msgstr "Blok Değiştiriciler Yükleniyor" msgid "Lower Y limit of dungeons." msgstr "Zindanların alt Y sınırı." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "Zindanların alt Y sınırı." + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "Ana menü betiği" @@ -4890,9 +5160,12 @@ msgstr "" "'jungles' bayrağı yok sayılır." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "Mapgen v7'ye özgü harita üretim özellikleri.\n" "'ridges' nehirleri etkinleştirir." @@ -4981,10 +5254,6 @@ msgstr "Mapgen Vadiler'e özgü bayraklar" msgid "Mapgen debug" msgstr "Mapgen hata ayıklama" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Mapgen bayrakları" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Mapgen adı" @@ -5056,17 +5325,19 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Yükleme için sıraya alınabilecek maksimum blok sayısı." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Üretilmesi için sıralanacak maksimum blok sayısı.\n" "Uygun miktarın kendiliğinden seçilmesi için boş olarak ayarlayın." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "Bir dosyadan yüklenmesi için sıraya koyulacak maksimum blok sayısı.\n" "Uygun miktarın kendiliğinden seçilmesi için boş olarak ayarlayın." @@ -5164,6 +5435,10 @@ msgstr "Bağlanan oyunculara görüntülenecek günün iletisi." msgid "Method used to highlight selected object." msgstr "Seçili nesneyi vurgulamak için kullanılan yöntem." +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Mini harita" @@ -5333,11 +5608,9 @@ msgid "Number of emerge threads" msgstr "Emerge iş sayısı" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5436,10 +5709,6 @@ msgstr "Paralaks oklüzyon kipi" msgid "Parallax occlusion scale" msgstr "Paralaks oklüzyon boyutu" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "Paralaks oklüzyon gücü" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5455,8 +5724,10 @@ msgstr "" "kullanılır." #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "Ekran yakalamaların kaydedileceği konum." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5498,6 +5769,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "Pencere odağı kaybolunca duraklat" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "Üretilecek emerge sıralarının sınırı" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Fizik" @@ -5576,6 +5856,18 @@ msgstr "Profilciyi açma/kapama tuşu" msgid "Profiling" msgstr "Profilleme" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "Sıvı içeren büyük mağaraların oranı." @@ -6088,6 +6380,13 @@ msgstr "" "(tabi ki, remote_media eğik çizgi ile bitmelidir).\n" "Var olmayan dosyalar her zamanki yoldan alınır." +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6114,6 +6413,11 @@ msgstr "Step dağ boyut gürültüsü" msgid "Step mountain spread noise" msgstr "Step dağ yayılma gürültüsü" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "Paralaks gücü." + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Üretilen normal eşlemelerin gücü." @@ -6128,10 +6432,6 @@ msgstr "" "3 'boost' parametresi parlaklık artırılan\n" "bir ışık eğrisi aralığı tanımlar." -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "Paralaks gücü." - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "Katı protokol denetleme" @@ -6140,6 +6440,20 @@ msgstr "Katı protokol denetleme" msgid "Strip color codes" msgstr "Renk kodlarını kaldır" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "Eşzamanlı SQLite" @@ -6271,6 +6585,7 @@ msgstr "" "komutuna bakın." #: src/settings_translation_file.cpp +#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6278,7 +6593,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" "Her oyuncu çevresinde, etkin blok işlemleri uygulanacak, bloklarının " "hacminin\n" @@ -6477,6 +6792,11 @@ msgstr "Kullanılmayan sunucu verilerini boşalt" msgid "Upper Y limit of dungeons." msgstr "Zindanların üst Y sınırı." +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "Zindanların üst Y sınırı." + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "Düz yerine 3D bulut görünümünü kullanın." @@ -6864,6 +7184,14 @@ msgstr "Büyük mağaraların üst sınırının Y'si." msgid "Y-distance over which caverns expand to full size." msgstr "Oyukların üstünden tam boyuta uzanacağı Y-uzaklığı." +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "Ortalama arazi yüzeyinin Y-seviyesi." @@ -6896,44 +7224,81 @@ msgstr "cURL paralel sınırı" msgid "cURL timeout" msgstr "cURL zaman aşımı" -#~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." -#~ msgstr "" -#~ "Işık tabloları için gama kodlamayı ayarlayın. Daha yüksek sayılar daha " -#~ "aydınlıktır.\n" -#~ "Bu ayar yalnızca istemci içindir ve sunucu tarafından yok sayılır." +#~ msgid "Toggle Cinematic" +#~ msgstr "Sinematik Aç/Kapa" -#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." -#~ msgstr "" -#~ "Dağ-türü yüzerkaraların orta noktanın üstünde ve altında nasıl " -#~ "konikleştiğini değiştirir." +#~ msgid "Select Package File:" +#~ msgstr "Paket Dosyası Seç:" -#~ msgid "Center of light curve mid-boost." -#~ msgstr "Işık eğrisi orta-artırmanın merkezi." +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "Büyük mağaralardaki lavın üst sınırının Y'si." + +#~ msgid "Waving Water" +#~ msgstr "Dalgalanan Su" + +#~ msgid "Whether dungeons occasionally project from the terrain." +#~ msgstr "Zindanların bazen araziden yansıyıp yansımayacağı." + +#~ msgid "Projecting dungeons" +#~ msgstr "İzdüşüm zindanlar" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "Yüzenkara gölgelerinin uzanacağı Y-seviyesi." + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "Yüzenkara orta noktasının ve göl yüzeyinin Y-seviyesi." + +#~ msgid "Waving water" +#~ msgstr "Dalgalanan su" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "" +#~ "Tepe yüksekliğinin ve göl derinliğinin yüzenkara düz arazide değişimi." #~ msgid "" -#~ "Controls the density of mountain-type floatlands.\n" -#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." #~ msgstr "" -#~ "Dağ-türü yüzenkaraların yoğunluğunu denetler.\n" -#~ "'mgv7_np_mountain' gürültü değerine eklenen bir gürültü kaydırmadır." +#~ "Yüzenkara dağların, orta noktanın altındaki ve üstündeki, tipik maksimum " +#~ "yüksekliği." -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "" -#~ "Tünellerin genişliğini denetler, daha küçük bir değer daha geniş tüneller " -#~ "yaratır." +#~ msgid "This font will be used for certain languages." +#~ msgstr "Belirli diller için bu yazı tipi kullanılacak." -#~ msgid "Darkness sharpness" -#~ msgstr "Karanlık keskinliği" +#~ msgid "Strength of light curve mid-boost." +#~ msgstr "Işık eğrisi orta-artırmanın kuvveti." -#~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." -#~ msgstr "" -#~ "Yüzenkara düz arazilerin alanlarını belirler.\n" -#~ "Gürültü > 0 iken düz yüzenkaralar oluşur." +#~ msgid "Shadow limit" +#~ msgstr "Gölge sınırı" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "TrueTypeFont veya bitmap konumu." + +#~ msgid "Lightness sharpness" +#~ msgstr "Aydınlık keskinliği" + +#~ msgid "Lava depth" +#~ msgstr "Lav derinliği" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 desteği." + +#~ msgid "Gamma" +#~ msgstr "Gama" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "Yazı tipi gölge saydamlığı (solukluk, 0 ve 255 arası)." + +#~ msgid "Floatland mountain height" +#~ msgstr "Yüzenkara dağ yüksekliği" + +#~ msgid "Floatland base height noise" +#~ msgstr "Yüzenkara taban yükseklik gürültüsü" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "Filmsel ton eşlemeyi etkinleştirir" + +#~ msgid "Enable VBO" +#~ msgstr "VBO'yu etkinleştir" #~ msgid "" #~ "Deprecated, define and locate cave liquids using biome definitions " @@ -6944,90 +7309,59 @@ msgstr "cURL zaman aşımı" #~ "sıvılarını tanımlayın ve bulun.\n" #~ "Büyük mağaralarda lav üst sınırının Y'si." -#~ msgid "Enable VBO" -#~ msgstr "VBO'yu etkinleştir" +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." +#~ msgstr "" +#~ "Yüzenkara düz arazilerin alanlarını belirler.\n" +#~ "Gürültü > 0 iken düz yüzenkaralar oluşur." -#~ msgid "Enables filmic tone mapping" -#~ msgstr "Filmsel ton eşlemeyi etkinleştirir" +#~ msgid "Darkness sharpness" +#~ msgstr "Karanlık keskinliği" -#~ msgid "Floatland base height noise" -#~ msgstr "Yüzenkara taban yükseklik gürültüsü" - -#~ msgid "Floatland base noise" -#~ msgstr "Yüzenkara taban gürültüsü" - -#~ msgid "Floatland level" -#~ msgstr "Yüzenkara seviyesi" - -#~ msgid "Floatland mountain density" -#~ msgstr "Yüzenkara dağ yoğunluğu" - -#~ msgid "Floatland mountain exponent" -#~ msgstr "Yüzenkara dağ eksponenti" - -#~ msgid "Floatland mountain height" -#~ msgstr "Yüzenkara dağ yüksekliği" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "Yazı tipi gölge saydamlığı (solukluk, 0 ve 255 arası)." - -#~ msgid "Gamma" -#~ msgstr "Gama" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 desteği." - -#~ msgid "Lava depth" -#~ msgstr "Lav derinliği" - -#~ msgid "Lightness sharpness" -#~ msgstr "Aydınlık keskinliği" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "TrueTypeFont veya bitmap konumu." - -#~ msgid "Shadow limit" -#~ msgstr "Gölge sınırı" - -#~ msgid "Strength of light curve mid-boost." -#~ msgstr "Işık eğrisi orta-artırmanın kuvveti." - -#~ msgid "This font will be used for certain languages." -#~ msgstr "Belirli diller için bu yazı tipi kullanılacak." +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "" +#~ "Tünellerin genişliğini denetler, daha küçük bir değer daha geniş tüneller " +#~ "yaratır." #~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ "Controls the density of mountain-type floatlands.\n" +#~ "Is a noise offset added to the 'mgv7_np_mountain' noise value." #~ msgstr "" -#~ "Yüzenkara dağların, orta noktanın altındaki ve üstündeki, tipik maksimum " -#~ "yüksekliği." +#~ "Dağ-türü yüzenkaraların yoğunluğunu denetler.\n" +#~ "'mgv7_np_mountain' gürültü değerine eklenen bir gürültü kaydırmadır." -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgid "Center of light curve mid-boost." +#~ msgstr "Işık eğrisi orta-artırmanın merkezi." + +#~ msgid "Alters how mountain-type floatlands taper above and below midpoint." #~ msgstr "" -#~ "Tepe yüksekliğinin ve göl derinliğinin yüzenkara düz arazide değişimi." +#~ "Dağ-türü yüzerkaraların orta noktanın üstünde ve altında nasıl " +#~ "konikleştiğini değiştirir." -#~ msgid "Waving water" -#~ msgstr "Dalgalanan su" +#~ msgid "" +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." +#~ msgstr "" +#~ "Işık tabloları için gama kodlamayı ayarlayın. Daha yüksek sayılar daha " +#~ "aydınlıktır.\n" +#~ "Bu ayar yalnızca istemci içindir ve sunucu tarafından yok sayılır." -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "Yüzenkara orta noktasının ve göl yüzeyinin Y-seviyesi." +#~ msgid "Path to save screenshots at." +#~ msgstr "Ekran yakalamaların kaydedileceği konum." -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "Yüzenkara gölgelerinin uzanacağı Y-seviyesi." +#~ msgid "Parallax occlusion strength" +#~ msgstr "Paralaks oklüzyon gücü" -#~ msgid "Projecting dungeons" -#~ msgstr "İzdüşüm zindanlar" +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "Diskte emerge sıralarının sınırı" -#~ msgid "Whether dungeons occasionally project from the terrain." -#~ msgstr "Zindanların bazen araziden yansıyıp yansımayacağı." +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "$1 indiriliyor ve kuruluyor, lütfen bekleyin..." -#~ msgid "Waving Water" -#~ msgstr "Dalgalanan Su" +#~ msgid "Back" +#~ msgstr "Geri" -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "Büyük mağaralardaki lavın üst sınırının Y'si." - -#~ msgid "Select Package File:" -#~ msgstr "Paket Dosyası Seç:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "Sinematik Aç/Kapa" +#~ msgid "Ok" +#~ msgstr "Tamam" diff --git a/po/uk/minetest.po b/po/uk/minetest.po index 14c334490..a0194dd49 100644 --- a/po/uk/minetest.po +++ b/po/uk/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Ukrainian (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-02 00:46+0000\n" "Last-Translator: Rostyslav \n" "Language-Team: Ukrainian 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2904,6 +3124,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "Кнопка для польоту" @@ -2956,6 +3204,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4253,14 +4507,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4324,6 +4570,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4391,7 +4641,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4479,10 +4731,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4551,13 +4799,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4641,6 +4889,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "Мінімапа" @@ -4800,9 +5052,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4878,10 +5127,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "Ступінь паралаксової оклюзії" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4892,7 +5137,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4925,6 +5172,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "Фізика" @@ -4994,6 +5249,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5435,6 +5702,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5458,6 +5732,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5469,10 +5747,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5481,6 +5755,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5595,7 +5883,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5747,6 +6035,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6070,6 +6362,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6102,20 +6402,29 @@ msgstr "" msgid "cURL timeout" msgstr "" -#~ msgid "Enable VBO" -#~ msgstr "Увімкнути VBO" - -#~ msgid "IPv6 support." -#~ msgstr "Підтримка IPv6." - -#~ msgid "Lava depth" -#~ msgstr "Глибина лави" - -#~ msgid "Select Package File:" -#~ msgstr "Виберіть файл пакунку:" +#~ msgid "Toggle Cinematic" +#~ msgstr "Кінематографічний режим" #~ msgid "Content Store" #~ msgstr "Додатки" -#~ msgid "Toggle Cinematic" -#~ msgstr "Кінематографічний режим" +#~ msgid "Select Package File:" +#~ msgstr "Виберіть файл пакунку:" + +#~ msgid "Lava depth" +#~ msgstr "Глибина лави" + +#~ msgid "IPv6 support." +#~ msgstr "Підтримка IPv6." + +#~ msgid "Enable VBO" +#~ msgstr "Увімкнути VBO" + +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "Завантаження і встановлення $1, зачекайте..." + +#~ msgid "Back" +#~ msgstr "Назад" + +#~ msgid "Ok" +#~ msgstr "Добре" diff --git a/po/vi/minetest.po b/po/vi/minetest.po index 03b42e1b8..f2574e132 100644 --- a/po/vi/minetest.po +++ b/po/vi/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Vietnamese (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-13 21:08+0000\n" "Last-Translator: darkcloudcat \n" "Language-Team: Vietnamese 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "" @@ -2852,6 +3063,34 @@ msgstr "" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "" @@ -2904,6 +3143,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4200,14 +4445,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4271,6 +4508,10 @@ msgstr "" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "" @@ -4338,7 +4579,9 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" #: src/settings_translation_file.cpp @@ -4425,10 +4668,6 @@ msgstr "" msgid "Mapgen debug" msgstr "" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "" @@ -4497,13 +4736,13 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" #: src/settings_translation_file.cpp @@ -4587,6 +4826,10 @@ msgstr "" msgid "Method used to highlight selected object." msgstr "" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "" @@ -4746,9 +4989,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -4824,10 +5064,6 @@ msgstr "" msgid "Parallax occlusion scale" msgstr "" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -4838,7 +5074,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." msgstr "" #: src/settings_translation_file.cpp @@ -4871,6 +5109,14 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "" @@ -4939,6 +5185,18 @@ msgstr "" msgid "Profiling" msgstr "" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5376,6 +5634,13 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5399,6 +5664,10 @@ msgstr "" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "" @@ -5410,10 +5679,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "" @@ -5422,6 +5687,20 @@ msgstr "" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "" @@ -5536,7 +5815,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -5688,6 +5967,10 @@ msgstr "" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "" @@ -6007,6 +6290,14 @@ msgstr "" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6038,3 +6329,6 @@ msgstr "" #: src/settings_translation_file.cpp msgid "cURL timeout" msgstr "" + +#~ msgid "Ok" +#~ msgstr "Được" diff --git a/po/zh_CN/minetest.po b/po/zh_CN/minetest.po index a4daf878e..80f2d86fa 100644 --- a/po/zh_CN/minetest.po +++ b/po/zh_CN/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-13 21:08+0000\n" "Last-Translator: ferrumcccp \n" "Language-Team: Chinese (Simplified) 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "暂停菜单 FPS" @@ -3013,6 +3244,41 @@ msgstr "固定地图种子" msgid "Fixed virtual joystick" msgstr "固定虚拟摇杆" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "水级别" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "地窖最大Y坐标" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "地窖最小Y坐标" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "水级别" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "水级别" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "玩家转移距离" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "水级别" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "飞行键" @@ -3065,6 +3331,12 @@ msgstr "后备字体大小,单位pt。" msgid "Font size of the monospace font in point (pt)." msgstr "等宽字体大小,单位pt。" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4668,14 +4940,6 @@ msgstr "亮度曲线高梯度" msgid "Light curve low gradient" msgstr "亮度曲线低梯度" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "磁盘上的生产队列限制" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "要生成的生产队列限制" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4750,6 +5014,11 @@ msgstr "加载时区块修改间隔" msgid "Lower Y limit of dungeons." msgstr "地窖的Y值下限。" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "地窖的Y值下限。" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "主菜单脚本" @@ -4830,9 +5099,12 @@ msgstr "" "忽略'jungles'标签。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" "针对v7地图生成器的属性。\n" "'ridges'启用河流。" @@ -4921,10 +5193,6 @@ msgstr "地图生成器Valleys标签" msgid "Mapgen debug" msgstr "地图生成器调试" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "地图生成器标志" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "地图生成器名称" @@ -4996,17 +5264,19 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "可在加载时加入队列的最大方块数。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "在生成时加入队列的最大方块数。\n" "设置为空白则自动选择合适的数值。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "在从文件中加载时加入队列的最大方块数。\n" "设置为空白则自动选择合适的数值。" @@ -5101,6 +5371,10 @@ msgstr "发送给连接中玩家的今日消息。" msgid "Method used to highlight selected object." msgstr "用于高亮选定的对象的方法。" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "小地图" @@ -5269,11 +5543,9 @@ msgid "Number of emerge threads" msgstr "生产线程数" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5367,10 +5639,6 @@ msgstr "视差遮蔽模式" msgid "Parallax occlusion scale" msgstr "视差遮蔽比例" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "视差遮蔽强度" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5385,8 +5653,10 @@ msgstr "" "此字体用于不可用默认字体的语言。" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "屏幕截图保存路径。" +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5426,6 +5696,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "丢失窗口焦点时暂停" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "要生成的生产队列限制" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "物理" @@ -5502,6 +5781,18 @@ msgstr "性能分析启用/禁用键" msgid "Profiling" msgstr "性能分析" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "包含液体的大洞穴的比例。" @@ -6006,6 +6297,13 @@ msgstr "" "(显然,remote_media 部份应以斜线结束)。\n" "没有在其中的文件将会以通常的方式获取。" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -6030,6 +6328,11 @@ msgstr "地形高度" msgid "Step mountain spread noise" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "视差强度。" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "生成的一般地图强度。" @@ -6041,10 +6344,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "视差强度。" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "严格协议检查" @@ -6053,6 +6352,20 @@ msgstr "严格协议检查" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "同步 SQLite" @@ -6174,7 +6487,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6328,6 +6641,11 @@ msgstr "卸载未用服务器数据" msgid "Upper Y limit of dungeons." msgstr "地窖的Y值上限。" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "地窖的Y值上限。" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "使用 3D 云彩,而不是看起来是平面的。" @@ -6670,6 +6988,14 @@ msgstr "大型随机洞穴的Y轴最大值。" msgid "Y-distance over which caverns expand to full size." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "" @@ -6702,13 +7028,64 @@ msgstr "cURL 并发限制" msgid "cURL timeout" msgstr "cURL 超时" +#~ msgid "Toggle Cinematic" +#~ msgstr "切换电影模式" + +#~ msgid "Select Package File:" +#~ msgstr "选择包文件:" + +#, fuzzy +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "大型随机洞穴的Y轴最大值。" + +#~ msgid "Waving Water" +#~ msgstr "流动的水面" + +#~ msgid "Waving water" +#~ msgstr "摇动水" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "用于特定语言的字体。" + +#, fuzzy +#~ msgid "Shadow limit" +#~ msgstr "地图块限制" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "TrueType 字体或位图的路径。" + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "巨大洞穴深度" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 支持。" + +#~ msgid "Gamma" +#~ msgstr "伽马" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "字体阴影不透明度(0-255)。" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "启用电影基调映射" + +#~ msgid "Enable VBO" +#~ msgstr "启用 VBO" + #~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." #~ msgstr "" -#~ "调整亮度表的伽玛编码。较高的数值会较亮。\n" -#~ "这个设定是给客户端使用的,会被服务器忽略。" +#~ "定义 floatland 平滑地形的区域。\n" +#~ "当噪音0时, 平滑的 floatlands 发生。" + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "地图生成器平面湖坡度" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "控制隧道宽度,较小的值创建更宽的隧道。" #, fuzzy #~ msgid "" @@ -6718,65 +7095,28 @@ msgstr "cURL 超时" #~ "控制 floatland 地形的密度。\n" #~ "是添加到 \"np_mountain\" 噪声值的偏移量。" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "控制隧道宽度,较小的值创建更宽的隧道。" - -#, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "地图生成器平面湖坡度" - #~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "定义 floatland 平滑地形的区域。\n" -#~ "当噪音0时, 平滑的 floatlands 发生。" +#~ "调整亮度表的伽玛编码。较高的数值会较亮。\n" +#~ "这个设定是给客户端使用的,会被服务器忽略。" -#~ msgid "Enable VBO" -#~ msgstr "启用 VBO" +#~ msgid "Path to save screenshots at." +#~ msgstr "屏幕截图保存路径。" -#~ msgid "Enables filmic tone mapping" -#~ msgstr "启用电影基调映射" +#~ msgid "Parallax occlusion strength" +#~ msgstr "视差遮蔽强度" -#, fuzzy -#~ msgid "Floatland level" -#~ msgstr "水级别" +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "磁盘上的生产队列限制" -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "字体阴影不透明度(0-255)。" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "正在下载和安装 $1,请稍等..." -#~ msgid "Gamma" -#~ msgstr "伽马" +#~ msgid "Back" +#~ msgstr "后退" -#~ msgid "IPv6 support." -#~ msgstr "IPv6 支持。" - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "巨大洞穴深度" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "TrueType 字体或位图的路径。" - -#, fuzzy -#~ msgid "Shadow limit" -#~ msgstr "地图块限制" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "用于特定语言的字体。" - -#~ msgid "Waving water" -#~ msgstr "摇动水" - -#~ msgid "Waving Water" -#~ msgstr "流动的水面" - -#, fuzzy -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "大型随机洞穴的Y轴最大值。" - -#~ msgid "Select Package File:" -#~ msgstr "选择包文件:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "切换电影模式" +#~ msgid "Ok" +#~ msgstr "确定" diff --git a/po/zh_TW/minetest.po b/po/zh_TW/minetest.po index 5a2892465..646c292b5 100644 --- a/po/zh_TW/minetest.po +++ b/po/zh_TW/minetest.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Chinese (Traditional) (Minetest)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-03 23:18+0200\n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-01-29 13:50+0000\n" "Last-Translator: pan93412 \n" "Language-Team: Chinese (Traditional) 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + #: src/settings_translation_file.cpp msgid "FPS in pause menu" msgstr "在暫停選單中的 FPS" @@ -2995,6 +3227,41 @@ msgstr "固定的地圖種子" msgid "Fixed virtual joystick" msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland density" +msgstr "浮地山密度" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland maximum Y" +msgstr "浮地山高度" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland minimum Y" +msgstr "浮地山高度" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland noise" +msgstr "浮地基礎噪音" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland taper exponent" +msgstr "浮地山密度" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland tapering distance" +msgstr "浮地基礎噪音" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Floatland water level" +msgstr "浮地高度" + #: src/settings_translation_file.cpp msgid "Fly key" msgstr "飛行按鍵" @@ -3047,6 +3314,12 @@ msgstr "" msgid "Font size of the monospace font in point (pt)." msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Format of player chat messages. The following strings are valid " @@ -4637,14 +4910,6 @@ msgstr "" msgid "Light curve low gradient" msgstr "" -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues on disk" -msgstr "在磁碟上出現佇列的限制" - -#: src/settings_translation_file.cpp -msgid "Limit of emerge queues to generate" -msgstr "要生成的出現佇列的限制" - #: src/settings_translation_file.cpp msgid "" "Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" @@ -4720,6 +4985,11 @@ msgstr "正在載入方塊調整器" msgid "Lower Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Lower Y limit of floatlands." +msgstr "大型偽隨機洞穴的 Y 上限。" + #: src/settings_translation_file.cpp msgid "Main menu script" msgstr "主選單指令稿" @@ -4803,10 +5073,17 @@ msgstr "" "以「no」開頭的旗標字串將會用於明確的停用它們。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" -"'ridges' enables the rivers." +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." msgstr "" +"專用於 Mapgen flat 的地圖生成屬性。\n" +"可能會有少數的湖泊或是丘陵會在扁平的世界中生成。\n" +"未在旗標字串中指定的旗標將不會自預設值修改。\n" +"以「no」開頭的旗標字串將會用於明確的停用它們。" #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -4906,10 +5183,6 @@ msgstr "Mapgen flat 特別旗標" msgid "Mapgen debug" msgstr "Mapgen 除錯" -#: src/settings_translation_file.cpp -msgid "Mapgen flags" -msgstr "Mapgen 旗標" - #: src/settings_translation_file.cpp msgid "Mapgen name" msgstr "Mapgen 名稱" @@ -4976,17 +5249,19 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "可被放進佇列內等待載入的最大區塊數。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "可被放進佇列內等待生成的最大區塊數。\n" "將其設定留空則會自動選擇適當的值。" #: src/settings_translation_file.cpp +#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" -"Set to blank for an appropriate amount to be chosen automatically." +"This limit is enforced per player." msgstr "" "可被放進佇列內等待從檔案載入的最大區塊數。\n" "將其設定留空則會自動選擇適當的值。" @@ -5080,6 +5355,10 @@ msgstr "每日訊息會在玩家連線時顯示。" msgid "Method used to highlight selected object." msgstr "用於突顯物件的方法。" +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + #: src/settings_translation_file.cpp msgid "Minimap" msgstr "迷你地圖" @@ -5248,9 +5527,6 @@ msgstr "出現的執行緒數" #: src/settings_translation_file.cpp msgid "" "Number of emerge threads to use.\n" -"WARNING: Currently there are multiple bugs that may cause crashes when\n" -"'num_emerge_threads' is larger than 1. Until this warning is removed it is\n" -"strongly recommended this value is set to the default '1'.\n" "Value 0:\n" "- Automatic selection. The number of emerge threads will be\n" "- 'number of processors - 2', with a lower limit of 1.\n" @@ -5330,10 +5606,6 @@ msgstr "視差遮蔽模式" msgid "Parallax occlusion scale" msgstr "視差遮蔽係數" -#: src/settings_translation_file.cpp -msgid "Parallax occlusion strength" -msgstr "視差遮蔽強度" - #: src/settings_translation_file.cpp msgid "" "Path of the fallback font.\n" @@ -5344,8 +5616,10 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -msgid "Path to save screenshots at." -msgstr "儲存螢幕截圖的路徑。" +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" #: src/settings_translation_file.cpp msgid "" @@ -5377,6 +5651,15 @@ msgstr "" msgid "Pause on lost window focus" msgstr "" +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Per-player limit of queued blocks to generate" +msgstr "要生成的出現佇列的限制" + #: src/settings_translation_file.cpp msgid "Physics" msgstr "物理" @@ -5452,6 +5735,18 @@ msgstr "分析器切換鍵" msgid "Profiling" msgstr "分析" +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." msgstr "" @@ -5959,6 +6254,13 @@ msgstr "" "(當然,remote_media 部份應以斜線結束)。\n" "沒有在其中的檔案將會以平常的方式抓取。" +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + #: src/settings_translation_file.cpp msgid "" "Spread of light curve boost range.\n" @@ -5984,6 +6286,11 @@ msgstr "山雜訊" msgid "Step mountain spread noise" msgstr "山雜訊" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Strength of 3D mode parallax." +msgstr "視差強度。" + #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "生成之一般地圖的強度。" @@ -5995,10 +6302,6 @@ msgid "" "curve that is boosted in brightness." msgstr "" -#: src/settings_translation_file.cpp -msgid "Strength of parallax." -msgstr "視差強度。" - #: src/settings_translation_file.cpp msgid "Strict protocol checking" msgstr "嚴格協議檢查" @@ -6007,6 +6310,20 @@ msgstr "嚴格協議檢查" msgid "Strip color codes" msgstr "" +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + #: src/settings_translation_file.cpp msgid "Synchronous SQLite" msgstr "同步的 SQLite" @@ -6133,7 +6450,7 @@ msgid "" "In active blocks objects are loaded and ABMs run.\n" "This is also the minimum range in which active objects (mobs) are " "maintained.\n" -"This should be configured together with active_object_range." +"This should be configured together with active_object_send_range_blocks." msgstr "" #: src/settings_translation_file.cpp @@ -6310,6 +6627,11 @@ msgstr "卸除未使用的伺服器資料" msgid "Upper Y limit of dungeons." msgstr "" +#: src/settings_translation_file.cpp +#, fuzzy +msgid "Upper Y limit of floatlands." +msgstr "大型偽隨機洞穴的 Y 上限。" + #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." msgstr "使用 3D 立體而非扁平的雲朵外觀。" @@ -6677,6 +6999,14 @@ msgstr "大型偽隨機洞穴的 Y 上限。" msgid "Y-distance over which caverns expand to full size." msgstr "洞穴拓展至全尺寸的 Y 距離。" +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." msgstr "平均地形表面的 Y 高度。" @@ -6711,13 +7041,81 @@ msgstr "cURL 並行限制" msgid "cURL timeout" msgstr "cURL 逾時" +#~ msgid "Toggle Cinematic" +#~ msgstr "切換過場動畫" + +#, fuzzy +#~ msgid "Select Package File:" +#~ msgstr "選取 Mod 檔案:" + +#, fuzzy +#~ msgid "Y of upper limit of lava in large caves." +#~ msgstr "大型偽隨機洞穴的 Y 上限。" + +#~ msgid "Waving Water" +#~ msgstr "波動的水" + +#~ msgid "Y-level to which floatland shadows extend." +#~ msgstr "浮地陰影擴展的 Y 高度。" + +#~ msgid "Y-level of floatland midpoint and lake surface." +#~ msgstr "浮地中點與湖表面的 Y 高度。" + +#~ msgid "Waving water" +#~ msgstr "波動的水" + +#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." +#~ msgstr "在平整浮地地形的山丘高度與湖泊深度變化。" + +#, fuzzy #~ msgid "" -#~ "Adjust the gamma encoding for the light tables. Higher numbers are " -#~ "brighter.\n" -#~ "This setting is for the client only and is ignored by the server." +#~ "Typical maximum height, above and below midpoint, of floatland mountains." +#~ msgstr "浮地山區域的典型最大高度,高於與低於中點。" + +#~ msgid "This font will be used for certain languages." +#~ msgstr "這個字型將會被用於特定的語言。" + +#~ msgid "Shadow limit" +#~ msgstr "陰影限制" + +#~ msgid "Path to TrueTypeFont or bitmap." +#~ msgstr "TrueType 字型或點陣字的路徑。" + +#, fuzzy +#~ msgid "Lava depth" +#~ msgstr "大型洞穴深度" + +#~ msgid "IPv6 support." +#~ msgstr "IPv6 支援。" + +#~ msgid "Gamma" +#~ msgstr "Gamma" + +#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." +#~ msgstr "字型陰影 alpha(不透明度,介於 0 到 255)。" + +#~ msgid "Floatland base height noise" +#~ msgstr "浮地基礎高度噪音" + +#~ msgid "Enables filmic tone mapping" +#~ msgstr "啟用電影色調映射" + +#~ msgid "Enable VBO" +#~ msgstr "啟用 VBO" + +#~ msgid "" +#~ "Defines areas of floatland smooth terrain.\n" +#~ "Smooth floatlands occur when noise > 0." #~ msgstr "" -#~ "調整亮度表的伽瑪編碼。較高的數值會較亮。\n" -#~ "這個設定是給客戶端使用的,會被伺服器忽略。" +#~ "定義浮地的平整地形區。\n" +#~ "平整的浮地會在噪音 > 0 時產生。" + +#, fuzzy +#~ msgid "Darkness sharpness" +#~ msgstr "湖泊坡度" + +#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." +#~ msgstr "控制隧道的寬度,較小的值會創造出較寬的隧道。" #, fuzzy #~ msgid "" @@ -6727,94 +7125,28 @@ msgstr "cURL 逾時" #~ "控制山地的浮地密度。\n" #~ "是加入到 'np_mountain' 噪音值的補償。" -#~ msgid "Controls width of tunnels, a smaller value creates wider tunnels." -#~ msgstr "控制隧道的寬度,較小的值會創造出較寬的隧道。" - -#, fuzzy -#~ msgid "Darkness sharpness" -#~ msgstr "湖泊坡度" - #~ msgid "" -#~ "Defines areas of floatland smooth terrain.\n" -#~ "Smooth floatlands occur when noise > 0." +#~ "Adjust the gamma encoding for the light tables. Higher numbers are " +#~ "brighter.\n" +#~ "This setting is for the client only and is ignored by the server." #~ msgstr "" -#~ "定義浮地的平整地形區。\n" -#~ "平整的浮地會在噪音 > 0 時產生。" +#~ "調整亮度表的伽瑪編碼。較高的數值會較亮。\n" +#~ "這個設定是給客戶端使用的,會被伺服器忽略。" -#~ msgid "Enable VBO" -#~ msgstr "啟用 VBO" +#~ msgid "Path to save screenshots at." +#~ msgstr "儲存螢幕截圖的路徑。" -#~ msgid "Enables filmic tone mapping" -#~ msgstr "啟用電影色調映射" +#~ msgid "Parallax occlusion strength" +#~ msgstr "視差遮蔽強度" -#~ msgid "Floatland base height noise" -#~ msgstr "浮地基礎高度噪音" +#~ msgid "Limit of emerge queues on disk" +#~ msgstr "在磁碟上出現佇列的限制" -#~ msgid "Floatland base noise" -#~ msgstr "浮地基礎噪音" +#~ msgid "Downloading and installing $1, please wait..." +#~ msgstr "正在下載並安裝 $1,請稍候……" -#~ msgid "Floatland level" -#~ msgstr "浮地高度" +#~ msgid "Back" +#~ msgstr "返回" -#~ msgid "Floatland mountain density" -#~ msgstr "浮地山密度" - -#, fuzzy -#~ msgid "Floatland mountain exponent" -#~ msgstr "浮地山密度" - -#~ msgid "Floatland mountain height" -#~ msgstr "浮地山高度" - -#~ msgid "Font shadow alpha (opaqueness, between 0 and 255)." -#~ msgstr "字型陰影 alpha(不透明度,介於 0 到 255)。" - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "IPv6 support." -#~ msgstr "IPv6 支援。" - -#, fuzzy -#~ msgid "Lava depth" -#~ msgstr "大型洞穴深度" - -#~ msgid "Path to TrueTypeFont or bitmap." -#~ msgstr "TrueType 字型或點陣字的路徑。" - -#~ msgid "Shadow limit" -#~ msgstr "陰影限制" - -#~ msgid "This font will be used for certain languages." -#~ msgstr "這個字型將會被用於特定的語言。" - -#, fuzzy -#~ msgid "" -#~ "Typical maximum height, above and below midpoint, of floatland mountains." -#~ msgstr "浮地山區域的典型最大高度,高於與低於中點。" - -#~ msgid "Variation of hill height and lake depth on floatland smooth terrain." -#~ msgstr "在平整浮地地形的山丘高度與湖泊深度變化。" - -#~ msgid "Waving water" -#~ msgstr "波動的水" - -#~ msgid "Y-level of floatland midpoint and lake surface." -#~ msgstr "浮地中點與湖表面的 Y 高度。" - -#~ msgid "Y-level to which floatland shadows extend." -#~ msgstr "浮地陰影擴展的 Y 高度。" - -#~ msgid "Waving Water" -#~ msgstr "波動的水" - -#, fuzzy -#~ msgid "Y of upper limit of lava in large caves." -#~ msgstr "大型偽隨機洞穴的 Y 上限。" - -#, fuzzy -#~ msgid "Select Package File:" -#~ msgstr "選取 Mod 檔案:" - -#~ msgid "Toggle Cinematic" -#~ msgstr "切換過場動畫" +#~ msgid "Ok" +#~ msgstr "確定" From 3a6dfda358112e2fb5d6f887a1a1e936eacddadd Mon Sep 17 00:00:00 2001 From: Danila Shutov Date: Tue, 16 Jun 2020 22:48:31 +0300 Subject: [PATCH 338/424] Make shading of CAOs optional (#10033) --- client/shaders/object_shader/opengl_vertex.glsl | 4 ++++ doc/lua_api.txt | 3 +++ games/devtest/mods/testentities/visuals.lua | 12 +++++++++++- src/client/content_cao.cpp | 15 +++++++++++---- src/client/mesh.cpp | 2 +- src/client/shader.cpp | 6 +++++- src/client/tile.h | 2 ++ src/object_properties.cpp | 6 ++++++ src/object_properties.h | 1 + src/script/common/c_content.cpp | 3 +++ 10 files changed, 47 insertions(+), 7 deletions(-) diff --git a/client/shaders/object_shader/opengl_vertex.glsl b/client/shaders/object_shader/opengl_vertex.glsl index 59171145f..968a07e22 100644 --- a/client/shaders/object_shader/opengl_vertex.glsl +++ b/client/shaders/object_shader/opengl_vertex.glsl @@ -39,11 +39,15 @@ void main(void) lightVec = sunPosition - worldPosition; eyeVec = -(gl_ModelViewMatrix * gl_Vertex).xyz; +#if (MATERIAL_TYPE == TILE_MATERIAL_PLAIN) || (MATERIAL_TYPE == TILE_MATERIAL_PLAIN_ALPHA) + vIDiff = 1.0; +#else // This is intentional comparison with zero without any margin. // If normal is not equal to zero exactly, then we assume it's a valid, just not normalized vector vIDiff = length(gl_Normal) == 0.0 ? 1.0 : directional_ambient(normalize(gl_Normal)); +#endif gl_FrontColor = gl_BackColor = gl_Color; } diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 07e9698e8..11c5cfb91 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -6644,6 +6644,9 @@ Player properties need to be saved manually. damage_texture_modifier = "^[brighten", -- Texture modifier to be applied for a short duration when object is hit + + shaded = true, + -- Setting this to 'false' disables diffuse lighting of entity } Entity definition diff --git a/games/devtest/mods/testentities/visuals.lua b/games/devtest/mods/testentities/visuals.lua index 314f51657..83f361f16 100644 --- a/games/devtest/mods/testentities/visuals.lua +++ b/games/devtest/mods/testentities/visuals.lua @@ -55,6 +55,17 @@ minetest.register_entity("testentities:mesh", { }, }) +minetest.register_entity("testentities:mesh_unshaded", { + initial_properties = { + visual = "mesh", + mesh = "testnodes_pyramid.obj", + textures = { + "testnodes_mesh_stripes2.png" + }, + shaded = false, + }, +}) + -- Advanced visual tests -- A test entity for testing animated and yaw-modulated sprites @@ -71,4 +82,3 @@ minetest.register_entity("testentities:yawsprite", { self.object:set_sprite({x=0, y=0}, 1, 0, true) end, }) - diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index eec4e3de0..5352c35f4 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -577,10 +577,16 @@ void GenericCAO::addToScene(ITextureSource *tsrc) if (m_enable_shaders) { IShaderSource *shader_source = m_client->getShaderSource(); - u32 shader_id = shader_source->getShader( - "object_shader", - (m_prop.use_texture_alpha) ? TILE_MATERIAL_ALPHA : TILE_MATERIAL_BASIC, - NDT_NORMAL); + MaterialType material_type; + + if (m_prop.shaded && m_prop.glow == 0) + material_type = (m_prop.use_texture_alpha) ? + TILE_MATERIAL_ALPHA : TILE_MATERIAL_BASIC; + else + material_type = (m_prop.use_texture_alpha) ? + TILE_MATERIAL_PLAIN_ALPHA : TILE_MATERIAL_PLAIN; + + u32 shader_id = shader_source->getShader("object_shader", material_type, NDT_NORMAL); m_material_type = shader_source->getShaderInfo(shader_id).material; } else { m_material_type = (m_prop.use_texture_alpha) ? @@ -1504,6 +1510,7 @@ bool GenericCAO::visualExpiryRequired(const ObjectProperties &new_) const return old.backface_culling != new_.backface_culling || old.is_visible != new_.is_visible || old.mesh != new_.mesh || + old.shaded != new_.shaded || old.use_texture_alpha != new_.use_texture_alpha || old.visual != new_.visual || old.visual_size != new_.visual_size || diff --git a/src/client/mesh.cpp b/src/client/mesh.cpp index 68832849e..e1ec22068 100644 --- a/src/client/mesh.cpp +++ b/src/client/mesh.cpp @@ -341,7 +341,7 @@ bool checkMeshNormals(scene::IMesh *mesh) // hurting the performance and covering only really weird broken models. f32 length = buffer->getNormal(0).getLength(); - if (!std::isfinite(length) || std::fabs(length) < 1e-10f) + if (!std::isfinite(length) || length < 1e-10f) return false; } diff --git a/src/client/shader.cpp b/src/client/shader.cpp index eda415ce6..ee6079f7a 100644 --- a/src/client/shader.cpp +++ b/src/client/shader.cpp @@ -537,11 +537,13 @@ ShaderInfo generate_shader(const std::string &name, u8 material_type, u8 drawtyp shaderinfo.base_material = video::EMT_SOLID; break; case TILE_MATERIAL_ALPHA: + case TILE_MATERIAL_PLAIN_ALPHA: case TILE_MATERIAL_LIQUID_TRANSPARENT: case TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT: shaderinfo.base_material = video::EMT_TRANSPARENT_ALPHA_CHANNEL; break; case TILE_MATERIAL_BASIC: + case TILE_MATERIAL_PLAIN: case TILE_MATERIAL_WAVING_LEAVES: case TILE_MATERIAL_WAVING_PLANTS: case TILE_MATERIAL_WAVING_LIQUID_BASIC: @@ -644,9 +646,11 @@ ShaderInfo generate_shader(const std::string &name, u8 material_type, u8 drawtyp "TILE_MATERIAL_WAVING_LIQUID_BASIC", "TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT", "TILE_MATERIAL_WAVING_LIQUID_OPAQUE", + "TILE_MATERIAL_PLAIN", + "TILE_MATERIAL_PLAIN_ALPHA", }; - for (int i = 0; i < 10; i++){ + for (int i = 0; i < 12; i++){ shaders_header += "#define "; shaders_header += materialTypes[i]; shaders_header += " "; diff --git a/src/client/tile.h b/src/client/tile.h index 533df676e..52e0a2b2b 100644 --- a/src/client/tile.h +++ b/src/client/tile.h @@ -150,6 +150,8 @@ enum MaterialType{ TILE_MATERIAL_WAVING_LIQUID_BASIC, TILE_MATERIAL_WAVING_LIQUID_TRANSPARENT, TILE_MATERIAL_WAVING_LIQUID_OPAQUE, + TILE_MATERIAL_PLAIN, + TILE_MATERIAL_PLAIN_ALPHA }; // Material flags diff --git a/src/object_properties.cpp b/src/object_properties.cpp index 6ff344dce..8d51bcbfa 100644 --- a/src/object_properties.cpp +++ b/src/object_properties.cpp @@ -69,6 +69,7 @@ std::string ObjectProperties::dump() os << ", zoom_fov=" << zoom_fov; os << ", use_texture_alpha=" << use_texture_alpha; os << ", damage_texture_modifier=" << damage_texture_modifier; + os << ", shaded=" << shaded; return os.str(); } @@ -116,6 +117,7 @@ void ObjectProperties::serialize(std::ostream &os) const writeF32(os, zoom_fov); writeU8(os, use_texture_alpha); os << serializeString(damage_texture_modifier); + writeU8(os, shaded); // Add stuff only at the bottom. // Never remove anything, because we don't want new versions of this @@ -170,5 +172,9 @@ void ObjectProperties::deSerialize(std::istream &is) use_texture_alpha = readU8(is); try { damage_texture_modifier = deSerializeString(is); + u8 tmp = readU8(is); + if (is.eof()) + throw SerializationError(""); + shaded = tmp; } catch (SerializationError &e) {} } diff --git a/src/object_properties.h b/src/object_properties.h index f7848f5a2..f010c1daf 100644 --- a/src/object_properties.h +++ b/src/object_properties.h @@ -61,6 +61,7 @@ struct ObjectProperties float eye_height = 1.625f; float zoom_fov = 0.0f; bool use_texture_alpha = false; + bool shaded = true; ObjectProperties(); std::string dump(); diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp index 2157d087d..3dfd7ce61 100644 --- a/src/script/common/c_content.cpp +++ b/src/script/common/c_content.cpp @@ -327,6 +327,7 @@ void read_object_properties(lua_State *L, int index, getfloatfield(L, -1, "zoom_fov", prop->zoom_fov); getboolfield(L, -1, "use_texture_alpha", prop->use_texture_alpha); + getboolfield(L, -1, "shaded", prop->shaded); getstringfield(L, -1, "damage_texture_modifier", prop->damage_texture_modifier); } @@ -411,6 +412,8 @@ void push_object_properties(lua_State *L, ObjectProperties *prop) lua_setfield(L, -2, "zoom_fov"); lua_pushboolean(L, prop->use_texture_alpha); lua_setfield(L, -2, "use_texture_alpha"); + lua_pushboolean(L, prop->shaded); + lua_setfield(L, -2, "shaded"); lua_pushlstring(L, prop->damage_texture_modifier.c_str(), prop->damage_texture_modifier.size()); lua_setfield(L, -2, "damage_texture_modifier"); } From a1b444bb61e6c9dcb0581a8550fd7795a3555cec Mon Sep 17 00:00:00 2001 From: oilboi <47129783+oilboi@users.noreply.github.com> Date: Wed, 17 Jun 2020 13:59:02 -0400 Subject: [PATCH 339/424] Fix typo (#10043) --- doc/menu_lua_api.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt index 4eccf5d10..724e37855 100644 --- a/doc/menu_lua_api.txt +++ b/doc/menu_lua_api.txt @@ -11,7 +11,7 @@ Description of formspec language to show your menu is in lua_api.txt Callbacks --------- -core.buttonhandler(fields): called when a button is pressed. +core.button_handler(fields): called when a button is pressed. ^ fields = {name1 = value1, name2 = value2, ...} core.event_handler(event) ^ event: "MenuQuit", "KeyEnter", "ExitButton" or "EditBoxEnter" From 8ebeed53ad01986eea0608cb8b1f583aace9528b Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Thu, 18 Jun 2020 01:43:43 +0100 Subject: [PATCH 340/424] Android: Fix only right strafe working (#10046) --- src/gui/touchscreengui.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/touchscreengui.cpp b/src/gui/touchscreengui.cpp index 3ee9e4a64..0d64aa618 100644 --- a/src/gui/touchscreengui.cpp +++ b/src/gui/touchscreengui.cpp @@ -738,7 +738,7 @@ void TouchScreenGUI::translateEvent(const SEvent &event) * android would provide this information but Irrlicht guys don't * wanna design a efficient interface */ - id_status toadd; + id_status toadd{}; toadd.id = event.TouchInput.ID; toadd.X = event.TouchInput.X; toadd.Y = event.TouchInput.Y; @@ -1043,7 +1043,7 @@ void TouchScreenGUI::applyJoystickStatus() if (i == 4 && !m_joystick_triggers_special1) continue; - SEvent translated; + SEvent translated{}; translated.EventType = irr::EET_KEY_INPUT_EVENT; translated.KeyInput.Key = id2keycode(m_joystick_names[i]); translated.KeyInput.PressedDown = false; From 469e8d8b7eb71a4650fb842024ef505153ab9cd2 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Thu, 18 Jun 2020 18:24:38 +0100 Subject: [PATCH 341/424] Add .nomedia file to Android assets (#10047) --- build/android/app/build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/android/app/build.gradle b/build/android/app/build.gradle index 00b8806bf..4a4559d65 100644 --- a/build/android/app/build.gradle +++ b/build/android/app/build.gradle @@ -83,6 +83,8 @@ task prepareAssets() { from "${projRoot}/textures" into "${assetsFolder}/textures" } + file("${assetsFolder}/.nomedia").text = ""; + task zipAssets(type: Zip) { archiveName "Minetest.zip" from "${assetsFolder}" From 495f7198ef8336048fd3a03a9705fe45dbd57574 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 18 Jun 2020 15:11:54 +0200 Subject: [PATCH 342/424] content_cao: Fix behavior of legacy "textures" field for wielditems --- src/client/content_cao.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index 5352c35f4..7f573b5a1 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -1506,6 +1506,9 @@ bool GenericCAO::visualExpiryRequired(const ObjectProperties &new_) const * - glow: handled by updateLight() * - any other properties that do not change appearance */ + + bool uses_legacy_texture = new_.wield_item.empty() && + (new_.visual == "wielditem" || new_.visual == "item"); // Ordered to compare primitive types before std::vectors return old.backface_culling != new_.backface_culling || old.is_visible != new_.is_visible || @@ -1515,7 +1518,8 @@ bool GenericCAO::visualExpiryRequired(const ObjectProperties &new_) const old.visual != new_.visual || old.visual_size != new_.visual_size || old.wield_item != new_.wield_item || - old.colors != new_.colors; + old.colors != new_.colors || + (uses_legacy_texture && old.textures != new_.textures); } void GenericCAO::processMessage(const std::string &data) From 57df895cf93d79293a8b47802f9523bafcaa330f Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Fri, 19 Jun 2020 19:29:47 +0200 Subject: [PATCH 343/424] ParticleSpawner: Fix crash when attaching to invisible entity --- src/client/content_cao.h | 7 ++++--- src/client/particles.cpp | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/client/content_cao.h b/src/client/content_cao.h index 699148c52..974ff9a1e 100644 --- a/src/client/content_cao.h +++ b/src/client/content_cao.h @@ -188,10 +188,11 @@ public: return m_matrixnode->getRelativeTransformationMatrix(); } - inline const core::matrix4 &getAbsolutePosRotMatrix() const + inline const core::matrix4 *getAbsolutePosRotMatrix() const { - assert(m_matrixnode); - return m_matrixnode->getAbsoluteTransformation(); + if (!m_matrixnode) + return nullptr; + return &m_matrixnode->getAbsoluteTransformation(); } inline f32 getStepHeight() const diff --git a/src/client/particles.cpp b/src/client/particles.cpp index c78a3e71a..7acd996dc 100644 --- a/src/client/particles.cpp +++ b/src/client/particles.cpp @@ -349,7 +349,7 @@ void ParticleSpawner::step(float dtime, ClientEnvironment *env) const core::matrix4 *attached_absolute_pos_rot_matrix = nullptr; if (m_attached_id) { if (GenericCAO *attached = dynamic_cast(env->getActiveObject(m_attached_id))) { - attached_absolute_pos_rot_matrix = &attached->getAbsolutePosRotMatrix(); + attached_absolute_pos_rot_matrix = attached->getAbsolutePosRotMatrix(); } else { unloaded = true; } From a2199bf62232707e96ece031a00b320d30e34445 Mon Sep 17 00:00:00 2001 From: Maksim Date: Sat, 20 Jun 2020 12:06:30 +0200 Subject: [PATCH 344/424] Android: fix TMPFolder path (#10052) --- src/defaultsettings.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 5d1795003..abb6593b7 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -451,6 +451,7 @@ void set_default_settings(Settings *settings) settings->setDefault("high_precision_fpu", "true"); settings->setDefault("enable_console", "false"); + settings->setDefault("screen_dpi", "72"); // Altered settings for macOS #if defined(__MACH__) && defined(__APPLE__) @@ -464,7 +465,7 @@ void set_default_settings(Settings *settings) settings->setDefault("screen_h", "0"); settings->setDefault("fullscreen", "true"); settings->setDefault("touchtarget", "true"); - settings->setDefault("TMPFolder", porting::getDataPath("tmp" DIR_DELIM)); + settings->setDefault("TMPFolder", porting::path_cache); settings->setDefault("touchscreen_threshold","20"); settings->setDefault("fixed_virtual_joystick", "false"); settings->setDefault("virtual_joystick_triggers_aux", "false"); @@ -486,8 +487,8 @@ void set_default_settings(Settings *settings) settings->setDefault("curl_verify_cert","false"); // Apply settings according to screen size - float x_inches = ((double) porting::getDisplaySize().X / - (160 * porting::getDisplayDensity())); + float x_inches = (float) porting::getDisplaySize().X / + (160.f * porting::getDisplayDensity()); if (x_inches < 3.7f) { settings->setDefault("hud_scaling", "0.6"); @@ -503,8 +504,5 @@ void set_default_settings(Settings *settings) settings->setDefault("mono_font_size", "14"); } // Tablets >= 6.0 use non-Android defaults for these settings -#else - settings->setDefault("screen_dpi", "72"); #endif } - From 0f1f8e4a0fed72f0f2223448f34406eeb26f9b7b Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sat, 20 Jun 2020 13:21:38 +0100 Subject: [PATCH 345/424] Add warning when disabling secure.enable_security (#9943) --- src/script/scripting_server.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/script/scripting_server.cpp b/src/script/scripting_server.cpp index cbf229640..85411ded4 100644 --- a/src/script/scripting_server.cpp +++ b/src/script/scripting_server.cpp @@ -62,6 +62,10 @@ ServerScripting::ServerScripting(Server* server): if (g_settings->getBool("secure.enable_security")) { initializeSecurity(); + } else { + warningstream << "\\!/ Mod security should never be disabled, as it allows any mod to " + << "access the host machine." + << "Mods should use minetest.request_insecure_environment() instead \\!/" << std::endl; } lua_getglobal(L, "core"); From e99415e0c5ae4a89907424d0f5f9f48ab94efbfa Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sat, 20 Jun 2020 14:52:24 +0100 Subject: [PATCH 346/424] Android: Fix asset upgrade by renaming license file (#10073) --- build/android/app/build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build/android/app/build.gradle b/build/android/app/build.gradle index 4a4559d65..e3619af17 100644 --- a/build/android/app/build.gradle +++ b/build/android/app/build.gradle @@ -57,7 +57,6 @@ task prepareAssets() { } copy { from "${projRoot}/doc/lgpl-2.1.txt" into "${assetsFolder}" - rename("lgpl-2.1.txt", "LICENSE.txt") } copy { from "${projRoot}/builtin" into "${assetsFolder}/builtin" From 4cb18d4874126b384ad5faa1b10a208c8fdce4db Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Mon, 22 Jun 2020 14:40:04 +0100 Subject: [PATCH 347/424] Fix HTTP API not being available in async mainmenu (#10086) --- src/script/lua_api/l_http.cpp | 7 +++++++ src/script/lua_api/l_http.h | 1 + src/script/scripting_mainmenu.cpp | 1 + 3 files changed, 9 insertions(+) diff --git a/src/script/lua_api/l_http.cpp b/src/script/lua_api/l_http.cpp index 73b4586e0..ec43bf174 100644 --- a/src/script/lua_api/l_http.cpp +++ b/src/script/lua_api/l_http.cpp @@ -230,3 +230,10 @@ void ModApiHttp::Initialize(lua_State *L, int top) #endif } + +void ModApiHttp::InitializeAsync(lua_State *L, int top) +{ +#if USE_CURL + API_FCT(get_http_api); +#endif +} diff --git a/src/script/lua_api/l_http.h b/src/script/lua_api/l_http.h index c665235a9..de6e51b37 100644 --- a/src/script/lua_api/l_http.h +++ b/src/script/lua_api/l_http.h @@ -50,4 +50,5 @@ private: public: static void Initialize(lua_State *L, int top); + static void InitializeAsync(lua_State *L, int top); }; diff --git a/src/script/scripting_mainmenu.cpp b/src/script/scripting_mainmenu.cpp index 08858b1a5..0f672f917 100644 --- a/src/script/scripting_mainmenu.cpp +++ b/src/script/scripting_mainmenu.cpp @@ -73,6 +73,7 @@ void MainMenuScripting::initializeModApi(lua_State *L, int top) asyncEngine.registerStateInitializer(registerLuaClasses); asyncEngine.registerStateInitializer(ModApiMainMenu::InitializeAsync); asyncEngine.registerStateInitializer(ModApiUtil::InitializeAsync); + asyncEngine.registerStateInitializer(ModApiHttp::InitializeAsync); // Initialize async environment //TODO possibly make number of async threads configurable From d7a2113893c6ff3298d4d2cd592260d4102551c3 Mon Sep 17 00:00:00 2001 From: adrido Date: Mon, 22 Jun 2020 17:17:36 +0200 Subject: [PATCH 348/424] Disable pgsql in VS 2019 workflow --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4def50925..ae359f5d8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -261,6 +261,7 @@ jobs: cmake ${{matrix.config.generator}} ` -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}\vcpkg\scripts\buildsystems\vcpkg.cmake" ` -DCMAKE_BUILD_TYPE=Release ` + -DENABLE_POSTGRESQL=OFF ` -DRUN_IN_PLACE=${{ contains(matrix.type, 'portable') }} . - name: Build From f7c78993f61e410f969f981c31833e465e015fde Mon Sep 17 00:00:00 2001 From: v-rob Date: Tue, 23 Jun 2020 09:59:02 -0700 Subject: [PATCH 349/424] Document deprecation of *_hovered and *_pressed styles (#10092) --- doc/lua_api.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 11c5cfb91..f2a83eca5 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -2706,13 +2706,17 @@ Some types may inherit styles from parent types. * alpha - boolean, whether to draw alpha in bgimg. Default true. * bgcolor - color, sets button tint. * bgcolor_hovered - color when hovered. Defaults to a lighter bgcolor when not provided. + * This is deprecated, use states instead. * bgcolor_pressed - color when pressed. Defaults to a darker bgcolor when not provided. + * This is deprecated, use states instead. * bgimg - standard background image. Defaults to none. * bgimg_hovered - background image when hovered. Defaults to bgimg when not provided. + * This is deprecated, use states instead. * bgimg_middle - Makes the bgimg textures render in 9-sliced mode and defines the middle rect. See background9[] documentation for more details. This property also pads the button's content when set. * bgimg_pressed - background image when pressed. Defaults to bgimg when not provided. + * This is deprecated, use states instead. * border - boolean, draw border. Set to false to hide the bevelled button pane. Default true. * content_offset - 2d vector, shifts the position of the button's content without resizing it. * noclip - boolean, set to true to allow the element to exceed formspec bounds. @@ -2741,7 +2745,9 @@ Some types may inherit styles from parent types. * image_button (additional properties) * fgimg - standard image. Defaults to none. * fgimg_hovered - image when hovered. Defaults to fgimg when not provided. + * This is deprecated, use states instead. * fgimg_pressed - image when pressed. Defaults to fgimg when not provided. + * This is deprecated, use states instead. * NOTE: The parameters of any given image_button will take precedence over fgimg/fgimg_pressed * tabheader * noclip - boolean, set to true to allow the element to exceed formspec bounds. From 646af2ef5f52cc3a04ea806d13dd2a048395da88 Mon Sep 17 00:00:00 2001 From: Maksim Date: Tue, 23 Jun 2020 20:00:34 +0200 Subject: [PATCH 350/424] Android: fix maxAspectRatio (should be float) (#10080) --- build/android/app/src/main/AndroidManifest.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build/android/app/src/main/AndroidManifest.xml b/build/android/app/src/main/AndroidManifest.xml index aa5af110e..0a7c8d95a 100644 --- a/build/android/app/src/main/AndroidManifest.xml +++ b/build/android/app/src/main/AndroidManifest.xml @@ -23,12 +23,12 @@ + android:value="3.0" /> @@ -42,7 +42,7 @@ android:configChanges="orientation|keyboard|keyboardHidden|navigation|screenSize|smallestScreenSize" android:hardwareAccelerated="true" android:launchMode="singleTask" - android:maxAspectRatio="3" + android:maxAspectRatio="3.0" android:screenOrientation="sensorLandscape" android:theme="@style/AppTheme"> @@ -55,7 +55,7 @@ Date: Wed, 24 Jun 2020 11:35:06 +0200 Subject: [PATCH 351/424] Fix wrong use of guiScalingImageButton in formspecs buttons (#10094) --- src/gui/guiButton.cpp | 5 ++--- src/gui/guiButtonImage.cpp | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/gui/guiButton.cpp b/src/gui/guiButton.cpp index ff35958fd..6732a9233 100644 --- a/src/gui/guiButton.cpp +++ b/src/gui/guiButton.cpp @@ -789,13 +789,12 @@ void GUIButton::setFromStyle(const StyleSpec& style) setDrawBorder(style.getBool(StyleSpec::BORDER, true)); setUseAlphaChannel(style.getBool(StyleSpec::ALPHA, true)); - const core::position2di buttonCenter(AbsoluteRect.getCenter()); - core::position2d geom(buttonCenter); if (style.isNotDefault(StyleSpec::BGIMG)) { video::ITexture *texture = style.getTexture(StyleSpec::BGIMG, getTextureSource()); setImage(guiScalingImageButton( - Environment->getVideoDriver(), texture, geom.X, geom.Y)); + Environment->getVideoDriver(), texture, + AbsoluteRect.getWidth(), AbsoluteRect.getHeight())); setScaleImage(true); } else { setImage(nullptr); diff --git a/src/gui/guiButtonImage.cpp b/src/gui/guiButtonImage.cpp index 2658ad967..b507ffece 100644 --- a/src/gui/guiButtonImage.cpp +++ b/src/gui/guiButtonImage.cpp @@ -62,13 +62,12 @@ void GUIButtonImage::setFromStyle(const StyleSpec& style) video::IVideoDriver *driver = Environment->getVideoDriver(); - const core::position2di buttonCenter(AbsoluteRect.getCenter()); - core::position2d geom(buttonCenter); if (style.isNotDefault(StyleSpec::FGIMG)) { video::ITexture *texture = style.getTexture(StyleSpec::FGIMG, getTextureSource()); - setForegroundImage(guiScalingImageButton(driver, texture, geom.X, geom.Y)); + setForegroundImage(guiScalingImageButton(driver, texture, + AbsoluteRect.getWidth(), AbsoluteRect.getHeight())); setScaleImage(true); } else { setForegroundImage(nullptr); From 3014e8b33b3d14165cc207be13631f4ee9a8fd2e Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Thu, 25 Jun 2020 15:36:51 +0100 Subject: [PATCH 352/424] Release test build to Android beta program --- .gitignore | 2 ++ build/android/build.gradle | 2 +- util/bump_version.sh | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 33d764f76..52f8bc4f4 100644 --- a/.gitignore +++ b/.gitignore @@ -104,3 +104,5 @@ cmake_config.h cmake_config_githash.h CMakeDoxy* compile_commands.json +*.apk +*.zip diff --git a/build/android/build.gradle b/build/android/build.gradle index c4de09bf8..6e67030ba 100644 --- a/build/android/build.gradle +++ b/build/android/build.gradle @@ -4,7 +4,7 @@ project.ext.set("versionMajor", 5) // Version Major project.ext.set("versionMinor", 3) // Version Minor project.ext.set("versionPatch", 0) // Version Patch project.ext.set("versionExtra", "-dev") // Version Extra -project.ext.set("versionCode", 26) // Android Version Code +project.ext.set("versionCode", 28) // Android Version Code // NOTE: +2 after each release! // +1 for ARM and +1 for ARM64 APK's, because // each APK must have a larger `versionCode` than the previous diff --git a/util/bump_version.sh b/util/bump_version.sh index ad1c9e1cd..58509198a 100755 --- a/util/bump_version.sh +++ b/util/bump_version.sh @@ -90,7 +90,8 @@ RELEASE_VERSION="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH" echo "Current Minetest version: $RELEASE_VERSION" echo "Current Android version code: $ANDROID_VERSION_CODE" -NEW_ANDROID_VERSION_CODE=$(expr $ANDROID_VERSION_CODE + 1) +# +1 for ARM and +1 for ARM64 APKs +NEW_ANDROID_VERSION_CODE=$(expr $ANDROID_VERSION_CODE + 2) NEW_ANDROID_VERSION_CODE=$(prompt_for_number "Set android version code" $NEW_ANDROID_VERSION_CODE) echo From 7be082f9a8bb6bd46c226d7ef4c42f0fd9fe7314 Mon Sep 17 00:00:00 2001 From: hecktest <42101236+hecktest@users.noreply.github.com> Date: Fri, 26 Jun 2020 00:06:29 +0200 Subject: [PATCH 353/424] Fix bone-attached entities (#10015) --- src/client/content_cao.cpp | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/src/client/content_cao.cpp b/src/client/content_cao.cpp index 7f573b5a1..4f949f6b0 100644 --- a/src/client/content_cao.cpp +++ b/src/client/content_cao.cpp @@ -162,6 +162,15 @@ static void setBillboardTextureMatrix(scene::IBillboardSceneNode *bill, matrix.setTextureScale(txs, tys); } +// Evaluate transform chain recursively; irrlicht does not do this for us +static void updatePositionRecursive(scene::ISceneNode *node) +{ + scene::ISceneNode *parent = node->getParent(); + if (parent) + updatePositionRecursive(parent); + node->updateAbsolutePosition(); +} + /* TestCAO */ @@ -929,11 +938,6 @@ void GenericCAO::updateNodePos() void GenericCAO::step(float dtime, ClientEnvironment *env) { - if (m_animated_meshnode) { - m_animated_meshnode->animateJoints(); - updateBonePosition(); - } - // Handle model animations and update positions instantly to prevent lags if (m_is_local_player) { LocalPlayer *player = m_env->getLocalPlayer(); @@ -1143,6 +1147,18 @@ void GenericCAO::step(float dtime, ClientEnvironment *env) rot_translator.val_current = m_rotation; updateNodePos(); } + + if (m_animated_meshnode) { + // Everything must be updated; the whole transform + // chain as well as the animated mesh node. + // Otherwise, bone attachments would be relative to + // a position that's one frame old. + if (m_matrixnode) + updatePositionRecursive(m_matrixnode); + m_animated_meshnode->updateAbsolutePosition(); + m_animated_meshnode->animateJoints(); + updateBonePosition(); + } } void GenericCAO::updateTexturePos() @@ -1444,6 +1460,18 @@ void GenericCAO::updateBonePosition() bone->updateAbsolutePosition(); } } + // The following is needed for set_bone_pos to propagate to + // attached objects correctly. + // Irrlicht ought to do this, but doesn't when using EJUOR_CONTROL. + for (u32 i = 0; i < m_animated_meshnode->getJointCount(); ++i) { + auto bone = m_animated_meshnode->getJointNode(i); + // Look for the root bone. + if (bone && bone->getParent() == m_animated_meshnode) { + // Update entire skeleton. + bone->updateAbsolutePositionOfAllChildren(); + break; + } + } } void GenericCAO::updateAttachments() From 3f702fa1a9ace33111256ed7b7d5579099830015 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 2 Jul 2020 19:05:06 +0200 Subject: [PATCH 354/424] Fix undeclared global in devtest (#10133) --- games/devtest/mods/experimental/commands.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/games/devtest/mods/experimental/commands.lua b/games/devtest/mods/experimental/commands.lua index 96f8cbe39..158e5039d 100644 --- a/games/devtest/mods/experimental/commands.lua +++ b/games/devtest/mods/experimental/commands.lua @@ -113,6 +113,7 @@ local function place_nodes(param) table.sort(nodes) minetest.chat_send_player(name, "Placing nodes …") local nodes_placed = 0 + local aborted = false for n=1, #nodes do local itemstring = nodes[n] local def = minetest.registered_nodes[itemstring] From da71313e1df3326c2b9ddb410b963ec25682319e Mon Sep 17 00:00:00 2001 From: v-rob Date: Fri, 3 Jul 2020 09:33:23 -0700 Subject: [PATCH 355/424] Don't stop style parsing on unknown property (#10143) --- src/gui/guiFormSpecMenu.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index 0bb401251..37edf3c4b 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -2562,7 +2562,7 @@ bool GUIFormSpecMenu::parseStyle(parserData *data, const std::string &element, b << "'" << std::endl; property_warned.insert(propname); } - return false; + continue; } spec.set(prop, value); @@ -2603,7 +2603,7 @@ bool GUIFormSpecMenu::parseStyle(parserData *data, const std::string &element, b } } - if(!state_valid) { + if (!state_valid) { // Skip this selector continue; } From dc6318b84aa8c079330b2adc711113f7d4b55961 Mon Sep 17 00:00:00 2001 From: Paramat Date: Sun, 5 Jul 2020 23:45:21 +0100 Subject: [PATCH 356/424] Apply camera smoothing to 'air stepheight' (#10025) Recent changes to collision code have changed the behaviour of the 'touching_ground' bool in movement code. This had the effect of disabling camera smoothing when 'air stepheight' occurred when jumping onto a node while pressing forwards against the node, causing an unpleasant sharp camera movement. Rewrite the conditions for camera smoothing such that it is applied when jumping. --- src/client/camera.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/client/camera.cpp b/src/client/camera.cpp index 9b311171a..abc55e4b7 100644 --- a/src/client/camera.cpp +++ b/src/client/camera.cpp @@ -342,9 +342,13 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r if (player->getParent()) player_position = player->getParent()->getPosition(); - if(player->touching_ground && - player_position.Y > old_player_position.Y) - { + // Smooth the camera movement when the player instantly moves upward due to stepheight. + // To smooth the 'not touching_ground' stepheight, smoothing is necessary when jumping + // or swimming (for when moving from liquid to land). + // Disable smoothing if climbing or flying, to avoid upwards offset of player model + // when seen in 3rd person view. + bool flying = g_settings->getBool("free_move") && m_client->checkLocalPrivilege("fly"); + if (player_position.Y > old_player_position.Y && !player->is_climbing && !flying) { f32 oldy = old_player_position.Y; f32 newy = player_position.Y; f32 t = std::exp(-23 * frametime); @@ -607,14 +611,11 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r const bool walking = movement_XZ && player->touching_ground; const bool swimming = (movement_XZ || player->swimming_vertical) && player->in_liquid; const bool climbing = movement_Y && player->is_climbing; - if ((walking || swimming || climbing) && - (!g_settings->getBool("free_move") || !m_client->checkLocalPrivilege("fly"))) { + if ((walking || swimming || climbing) && !flying) { // Start animation m_view_bobbing_state = 1; m_view_bobbing_speed = MYMIN(speed.getLength(), 70); - } - else if (m_view_bobbing_state == 1) - { + } else if (m_view_bobbing_state == 1) { // Stop animation m_view_bobbing_state = 2; m_view_bobbing_speed = 60; From 6e4d8de10442eecf71ba36ad015872a135a53338 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 7 Jul 2020 17:50:52 +0100 Subject: [PATCH 357/424] Revert "Verify database connection on interval (#9665)" Fixes #10113 This reverts commit 5c588f89e79e02cba392abe3d00688772321f88b. --- src/database/database-postgresql.cpp | 36 ++++++++++++---------------- src/database/database-postgresql.h | 8 ++----- src/database/database-sqlite3.cpp | 26 ++++++++++---------- src/database/database-sqlite3.h | 12 +++------- src/database/database.h | 4 ---- src/map.cpp | 5 ---- src/map.h | 1 - src/serverenvironment.cpp | 5 ---- src/serverenvironment.h | 1 - 9 files changed, 33 insertions(+), 65 deletions(-) diff --git a/src/database/database-postgresql.cpp b/src/database/database-postgresql.cpp index ca750b466..6acfb5937 100644 --- a/src/database/database-postgresql.cpp +++ b/src/database/database-postgresql.cpp @@ -90,19 +90,13 @@ void Database_PostgreSQL::connectToDatabase() initStatements(); } -void Database_PostgreSQL::pingDatabase() +void Database_PostgreSQL::verifyDatabase() { - // Verify DB connection with ping - try { - ping(); - } catch (const DatabaseException &e) { - // If ping failed, show the error and try reconnect - PQreset(m_conn); + if (PQstatus(m_conn) == CONNECTION_OK) + return; - errorstream << e.what() << std::endl - << "Reconnecting to database " << m_connect_string << std::endl; - connectToDatabase(); - } + PQreset(m_conn); + ping(); } void Database_PostgreSQL::ping() @@ -157,7 +151,7 @@ void Database_PostgreSQL::createTableIfNotExists(const std::string &table_name, void Database_PostgreSQL::beginSave() { - pingDatabase(); + verifyDatabase(); checkResults(PQexec(m_conn, "BEGIN;")); } @@ -238,7 +232,7 @@ bool MapDatabasePostgreSQL::saveBlock(const v3s16 &pos, const std::string &data) return false; } - pingDatabase(); + verifyDatabase(); s32 x, y, z; x = htonl(pos.X); @@ -262,7 +256,7 @@ bool MapDatabasePostgreSQL::saveBlock(const v3s16 &pos, const std::string &data) void MapDatabasePostgreSQL::loadBlock(const v3s16 &pos, std::string *block) { - pingDatabase(); + verifyDatabase(); s32 x, y, z; x = htonl(pos.X); @@ -286,7 +280,7 @@ void MapDatabasePostgreSQL::loadBlock(const v3s16 &pos, std::string *block) bool MapDatabasePostgreSQL::deleteBlock(const v3s16 &pos) { - pingDatabase(); + verifyDatabase(); s32 x, y, z; x = htonl(pos.X); @@ -304,7 +298,7 @@ bool MapDatabasePostgreSQL::deleteBlock(const v3s16 &pos) void MapDatabasePostgreSQL::listAllLoadableBlocks(std::vector &dst) { - pingDatabase(); + verifyDatabase(); PGresult *results = execPrepared("list_all_loadable_blocks", 0, NULL, NULL, NULL, false, false); @@ -446,7 +440,7 @@ void PlayerDatabasePostgreSQL::initStatements() bool PlayerDatabasePostgreSQL::playerDataExists(const std::string &playername) { - pingDatabase(); + verifyDatabase(); const char *values[] = { playername.c_str() }; PGresult *results = execPrepared("load_player", 1, values, false); @@ -462,7 +456,7 @@ void PlayerDatabasePostgreSQL::savePlayer(RemotePlayer *player) if (!sao) return; - pingDatabase(); + verifyDatabase(); v3f pos = sao->getBasePosition(); std::string pitch = ftos(sao->getLookPitch()); @@ -546,7 +540,7 @@ void PlayerDatabasePostgreSQL::savePlayer(RemotePlayer *player) bool PlayerDatabasePostgreSQL::loadPlayer(RemotePlayer *player, PlayerSAO *sao) { sanity_check(sao); - pingDatabase(); + verifyDatabase(); const char *values[] = { player->getName() }; PGresult *results = execPrepared("load_player", 1, values, false, false); @@ -621,7 +615,7 @@ bool PlayerDatabasePostgreSQL::removePlayer(const std::string &name) if (!playerDataExists(name)) return false; - pingDatabase(); + verifyDatabase(); const char *values[] = { name.c_str() }; execPrepared("remove_player", 1, values); @@ -631,7 +625,7 @@ bool PlayerDatabasePostgreSQL::removePlayer(const std::string &name) void PlayerDatabasePostgreSQL::listPlayers(std::vector &res) { - pingDatabase(); + verifyDatabase(); PGresult *results = execPrepared("load_player_list", 0, NULL, false); diff --git a/src/database/database-postgresql.h b/src/database/database-postgresql.h index 340f0a7b8..409e62fe0 100644 --- a/src/database/database-postgresql.h +++ b/src/database/database-postgresql.h @@ -32,14 +32,13 @@ public: Database_PostgreSQL(const std::string &connect_string); ~Database_PostgreSQL(); - virtual void pingDatabase(); - void beginSave(); void endSave(); void rollback(); bool initialized() const; + protected: // Conversion helpers inline int pg_to_int(PGresult *res, int row, int col) @@ -84,6 +83,7 @@ protected: } void createTableIfNotExists(const std::string &table_name, const std::string &definition); + void verifyDatabase(); // Database initialization void connectToDatabase(); @@ -114,8 +114,6 @@ public: MapDatabasePostgreSQL(const std::string &connect_string); virtual ~MapDatabasePostgreSQL() = default; - virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); } - bool saveBlock(const v3s16 &pos, const std::string &data); void loadBlock(const v3s16 &pos, std::string *block); bool deleteBlock(const v3s16 &pos); @@ -135,8 +133,6 @@ public: PlayerDatabasePostgreSQL(const std::string &connect_string); virtual ~PlayerDatabasePostgreSQL() = default; - virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); } - void savePlayer(RemotePlayer *player); bool loadPlayer(RemotePlayer *player, PlayerSAO *sao); bool removePlayer(const std::string &name); diff --git a/src/database/database-sqlite3.cpp b/src/database/database-sqlite3.cpp index 116096f68..4560743b9 100644 --- a/src/database/database-sqlite3.cpp +++ b/src/database/database-sqlite3.cpp @@ -121,7 +121,7 @@ Database_SQLite3::Database_SQLite3(const std::string &savedir, const std::string void Database_SQLite3::beginSave() { - pingDatabase(); + verifyDatabase(); SQLRES(sqlite3_step(m_stmt_begin), SQLITE_DONE, "Failed to start SQLite3 transaction"); sqlite3_reset(m_stmt_begin); @@ -129,7 +129,7 @@ void Database_SQLite3::beginSave() void Database_SQLite3::endSave() { - pingDatabase(); + verifyDatabase(); SQLRES(sqlite3_step(m_stmt_end), SQLITE_DONE, "Failed to commit SQLite3 transaction"); sqlite3_reset(m_stmt_end); @@ -171,7 +171,7 @@ void Database_SQLite3::openDatabase() "Failed to enable sqlite3 foreign key support"); } -void Database_SQLite3::pingDatabase() +void Database_SQLite3::verifyDatabase() { if (m_initialized) return; @@ -247,7 +247,7 @@ inline void MapDatabaseSQLite3::bindPos(sqlite3_stmt *stmt, const v3s16 &pos, in bool MapDatabaseSQLite3::deleteBlock(const v3s16 &pos) { - pingDatabase(); + verifyDatabase(); bindPos(m_stmt_delete, pos); @@ -263,7 +263,7 @@ bool MapDatabaseSQLite3::deleteBlock(const v3s16 &pos) bool MapDatabaseSQLite3::saveBlock(const v3s16 &pos, const std::string &data) { - pingDatabase(); + verifyDatabase(); #ifdef __ANDROID__ /** @@ -290,7 +290,7 @@ bool MapDatabaseSQLite3::saveBlock(const v3s16 &pos, const std::string &data) void MapDatabaseSQLite3::loadBlock(const v3s16 &pos, std::string *block) { - pingDatabase(); + verifyDatabase(); bindPos(m_stmt_read, pos); @@ -311,7 +311,7 @@ void MapDatabaseSQLite3::loadBlock(const v3s16 &pos, std::string *block) void MapDatabaseSQLite3::listAllLoadableBlocks(std::vector &dst) { - pingDatabase(); + verifyDatabase(); while (sqlite3_step(m_stmt_list) == SQLITE_ROW) dst.push_back(getIntegerAsBlock(sqlite3_column_int64(m_stmt_list, 0))); @@ -439,7 +439,7 @@ void PlayerDatabaseSQLite3::initStatements() bool PlayerDatabaseSQLite3::playerDataExists(const std::string &name) { - pingDatabase(); + verifyDatabase(); str_to_sqlite(m_stmt_player_load, 1, name); bool res = (sqlite3_step(m_stmt_player_load) == SQLITE_ROW); sqlite3_reset(m_stmt_player_load); @@ -536,7 +536,7 @@ void PlayerDatabaseSQLite3::savePlayer(RemotePlayer *player) bool PlayerDatabaseSQLite3::loadPlayer(RemotePlayer *player, PlayerSAO *sao) { - pingDatabase(); + verifyDatabase(); str_to_sqlite(m_stmt_player_load, 1, player->getName()); if (sqlite3_step(m_stmt_player_load) != SQLITE_ROW) { @@ -600,7 +600,7 @@ bool PlayerDatabaseSQLite3::removePlayer(const std::string &name) void PlayerDatabaseSQLite3::listPlayers(std::vector &res) { - pingDatabase(); + verifyDatabase(); while (sqlite3_step(m_stmt_player_list) == SQLITE_ROW) res.push_back(sqlite_to_string(m_stmt_player_list, 0)); @@ -673,7 +673,7 @@ void AuthDatabaseSQLite3::initStatements() bool AuthDatabaseSQLite3::getAuth(const std::string &name, AuthEntry &res) { - pingDatabase(); + verifyDatabase(); str_to_sqlite(m_stmt_read, 1, name); if (sqlite3_step(m_stmt_read) != SQLITE_ROW) { sqlite3_reset(m_stmt_read); @@ -735,7 +735,7 @@ bool AuthDatabaseSQLite3::createAuth(AuthEntry &authEntry) bool AuthDatabaseSQLite3::deleteAuth(const std::string &name) { - pingDatabase(); + verifyDatabase(); str_to_sqlite(m_stmt_delete, 1, name); sqlite3_vrfy(sqlite3_step(m_stmt_delete), SQLITE_DONE); @@ -749,7 +749,7 @@ bool AuthDatabaseSQLite3::deleteAuth(const std::string &name) void AuthDatabaseSQLite3::listNames(std::vector &res) { - pingDatabase(); + verifyDatabase(); while (sqlite3_step(m_stmt_list_names) == SQLITE_ROW) { res.push_back(sqlite_to_string(m_stmt_list_names, 0)); diff --git a/src/database/database-sqlite3.h b/src/database/database-sqlite3.h index 647eddf7a..d7202a918 100644 --- a/src/database/database-sqlite3.h +++ b/src/database/database-sqlite3.h @@ -36,13 +36,13 @@ public: void beginSave(); void endSave(); - // Open and initialize the database if needed - virtual void pingDatabase(); - bool initialized() const { return m_initialized; } protected: Database_SQLite3(const std::string &savedir, const std::string &dbname); + // Open and initialize the database if needed + void verifyDatabase(); + // Convertors inline void str_to_sqlite(sqlite3_stmt *s, int iCol, const std::string &str) const { @@ -146,8 +146,6 @@ public: MapDatabaseSQLite3(const std::string &savedir); virtual ~MapDatabaseSQLite3(); - virtual void pingDatabase() { Database_SQLite3::pingDatabase(); } - bool saveBlock(const v3s16 &pos, const std::string &data); void loadBlock(const v3s16 &pos, std::string *block); bool deleteBlock(const v3s16 &pos); @@ -175,8 +173,6 @@ public: PlayerDatabaseSQLite3(const std::string &savedir); virtual ~PlayerDatabaseSQLite3(); - virtual void pingDatabase() { Database_SQLite3::pingDatabase(); } - void savePlayer(RemotePlayer *player); bool loadPlayer(RemotePlayer *player, PlayerSAO *sao); bool removePlayer(const std::string &name); @@ -212,8 +208,6 @@ public: AuthDatabaseSQLite3(const std::string &savedir); virtual ~AuthDatabaseSQLite3(); - virtual void pingDatabase() { Database_SQLite3::pingDatabase(); } - virtual bool getAuth(const std::string &name, AuthEntry &res); virtual bool saveAuth(const AuthEntry &authEntry); virtual bool createAuth(AuthEntry &authEntry); diff --git a/src/database/database.h b/src/database/database.h index 47605a07e..b7d551935 100644 --- a/src/database/database.h +++ b/src/database/database.h @@ -32,7 +32,6 @@ public: virtual void beginSave() = 0; virtual void endSave() = 0; virtual bool initialized() const { return true; } - virtual void pingDatabase() {} }; class MapDatabase : public Database @@ -58,8 +57,6 @@ class PlayerDatabase public: virtual ~PlayerDatabase() = default; - virtual void pingDatabase() {} - virtual void savePlayer(RemotePlayer *player) = 0; virtual bool loadPlayer(RemotePlayer *player, PlayerSAO *sao) = 0; virtual bool removePlayer(const std::string &name) = 0; @@ -86,5 +83,4 @@ public: virtual bool deleteAuth(const std::string &name) = 0; virtual void listNames(std::vector &res) = 0; virtual void reload() = 0; - virtual void pingDatabase() {} }; diff --git a/src/map.cpp b/src/map.cpp index 7c776b070..b9ab7c066 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1907,11 +1907,6 @@ MapDatabase *ServerMap::createDatabase( throw BaseException(std::string("Database backend ") + name + " not supported."); } -void ServerMap::pingDatabase() -{ - dbase->pingDatabase(); -} - void ServerMap::beginSave() { dbase->beginSave(); diff --git a/src/map.h b/src/map.h index 77ee4da9e..4d9847063 100644 --- a/src/map.h +++ b/src/map.h @@ -387,7 +387,6 @@ public: Database functions */ static MapDatabase *createDatabase(const std::string &name, const std::string &savedir, Settings &conf); - void pingDatabase(); // Call these before and after saving of blocks void beginSave(); diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 2c6a39ee3..ad2ffc9a4 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -1228,11 +1228,6 @@ void ServerEnvironment::step(float dtime) } } - if (m_database_check_interval.step(dtime, 10.0f)) { - m_auth_database->pingDatabase(); - m_player_database->pingDatabase(); - m_map->pingDatabase(); - } /* Manage active block list */ diff --git a/src/serverenvironment.h b/src/serverenvironment.h index 4b453d39a..af742e290 100644 --- a/src/serverenvironment.h +++ b/src/serverenvironment.h @@ -436,7 +436,6 @@ private: IntervalLimiter m_object_management_interval; // List of active blocks ActiveBlockList m_active_blocks; - IntervalLimiter m_database_check_interval; IntervalLimiter m_active_blocks_management_interval; IntervalLimiter m_active_block_modifier_interval; IntervalLimiter m_active_blocks_nodemetadata_interval; From ebb721a476ada0350b73fe44efa66850397b9e96 Mon Sep 17 00:00:00 2001 From: TheTermos <55103816+TheTermos@users.noreply.github.com> Date: Fri, 3 Jul 2020 17:21:42 +0200 Subject: [PATCH 358/424] Fix player controls only being applied for the first move --- src/client/client.cpp | 5 +---- src/client/clientenvironment.cpp | 3 +++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/client/client.cpp b/src/client/client.cpp index 34f97a9de..65e5b3d8c 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -459,12 +459,9 @@ void Client::step(float dtime) /* Handle environment */ - // Control local player (0ms) LocalPlayer *player = m_env.getLocalPlayer(); - assert(player); - player->applyControl(dtime, &m_env); - // Step environment + // Step environment (also handles player controls) m_env.step(dtime); m_sound->step(dtime); diff --git a/src/client/clientenvironment.cpp b/src/client/clientenvironment.cpp index 44ea1e4a1..895b0193c 100644 --- a/src/client/clientenvironment.cpp +++ b/src/client/clientenvironment.cpp @@ -216,6 +216,9 @@ void ClientEnvironment::step(float dtime) */ { + // Control local player + lplayer->applyControl(dtime_part, this); + // Apply physics if (!free_move && !is_climbing) { // Gravity From 42b0d612ef488dd5b4836fa303aeebe424f09e92 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 7 Jul 2020 19:30:35 +0100 Subject: [PATCH 359/424] Fix build due to revert error --- src/database/database-postgresql.cpp | 10 +++++----- src/database/database-postgresql.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/database/database-postgresql.cpp b/src/database/database-postgresql.cpp index 6acfb5937..e1bb39928 100644 --- a/src/database/database-postgresql.cpp +++ b/src/database/database-postgresql.cpp @@ -678,7 +678,7 @@ void AuthDatabasePostgreSQL::initStatements() bool AuthDatabasePostgreSQL::getAuth(const std::string &name, AuthEntry &res) { - pingDatabase(); + verifyDatabase(); const char *values[] = { name.c_str() }; PGresult *result = execPrepared("auth_read", 1, values, false, false); @@ -710,7 +710,7 @@ bool AuthDatabasePostgreSQL::getAuth(const std::string &name, AuthEntry &res) bool AuthDatabasePostgreSQL::saveAuth(const AuthEntry &authEntry) { - pingDatabase(); + verifyDatabase(); beginSave(); @@ -732,7 +732,7 @@ bool AuthDatabasePostgreSQL::saveAuth(const AuthEntry &authEntry) bool AuthDatabasePostgreSQL::createAuth(AuthEntry &authEntry) { - pingDatabase(); + verifyDatabase(); std::string lastLoginStr = itos(authEntry.last_login); const char *values[] = { @@ -764,7 +764,7 @@ bool AuthDatabasePostgreSQL::createAuth(AuthEntry &authEntry) bool AuthDatabasePostgreSQL::deleteAuth(const std::string &name) { - pingDatabase(); + verifyDatabase(); const char *values[] = { name.c_str() }; execPrepared("auth_delete", 1, values); @@ -775,7 +775,7 @@ bool AuthDatabasePostgreSQL::deleteAuth(const std::string &name) void AuthDatabasePostgreSQL::listNames(std::vector &res) { - pingDatabase(); + verifyDatabase(); PGresult *results = execPrepared("auth_list_names", 0, NULL, NULL, NULL, false, false); diff --git a/src/database/database-postgresql.h b/src/database/database-postgresql.h index 409e62fe0..f47deda33 100644 --- a/src/database/database-postgresql.h +++ b/src/database/database-postgresql.h @@ -152,7 +152,7 @@ public: AuthDatabasePostgreSQL(const std::string &connect_string); virtual ~AuthDatabasePostgreSQL() = default; - virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); } + virtual void verifyDatabase() { Database_PostgreSQL::verifyDatabase(); } virtual bool getAuth(const std::string &name, AuthEntry &res); virtual bool saveAuth(const AuthEntry &authEntry); From b3f78c57a828a08fac24b7ebc7ef067f14d0a1b7 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 13 Jun 2020 23:40:03 +0000 Subject: [PATCH 360/424] Translated using Weblate (German) Currently translated at 100.0% (1350 of 1350 strings) --- po/de/minetest.po | 342 ++++++++++++++++++++++++---------------------- 1 file changed, 176 insertions(+), 166 deletions(-) diff --git a/po/de/minetest.po b/po/de/minetest.po index 42e274251..be63088d2 100644 --- a/po/de/minetest.po +++ b/po/de/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: German (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-04-04 19:54+0000\n" -"Last-Translator: sfan5 \n" +"PO-Revision-Date: 2020-06-15 22:41+0000\n" +"Last-Translator: Wuzzy \n" "Language-Team: German \n" "Language: de\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.1\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -24,7 +24,7 @@ msgstr "Sie sind gestorben" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "OK" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -116,7 +116,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Mehr Mods finden" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -169,12 +169,11 @@ msgstr "Zurück zum Hauptmenü" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "ContentDB ist nicht verfügbar, wenn Minetest ohne cURL kompiliert wurde" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Downloading..." -msgstr "Lädt …" +msgstr "Herunterladen …" #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" @@ -221,7 +220,7 @@ msgstr "Aktualisieren" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "Ansehen" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -229,45 +228,39 @@ msgstr "Eine Welt namens „$1“ existiert bereits" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "Zusätzliches Gelände" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" msgstr "Höhenabkühlung" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Altitude dry" -msgstr "Höhenabkühlung" +msgstr "Höhenabtrocknung" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biome blending" -msgstr "Biomrauschen" +msgstr "Biomübergänge" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biomes" -msgstr "Biomrauschen" +msgstr "Biome" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caverns" -msgstr "Hohlraumrauschen" +msgstr "Hohlräume" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caves" -msgstr "Oktaven" +msgstr "Höhlen" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "Erstellen" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Decorations" -msgstr "Iterationen" +msgstr "Dekorationen" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" @@ -278,23 +271,20 @@ msgid "Download one from minetest.net" msgstr "Spiele können von minetest.net heruntergeladen werden" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Dungeons" -msgstr "Verliesrauschen" +msgstr "Verliese" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "Flaches Gelände" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floating landmasses in the sky" -msgstr "Schwebelandbergdichte" +msgstr "Schwebende Landmassen im Himmel" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floatlands (experimental)" -msgstr "Schwebelandhöhe" +msgstr "Schwebeländer (experimentell)" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -302,28 +292,29 @@ msgstr "Spiel" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "Nicht-fraktales Gelände erzeugen: Ozeane und Untergrund" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Hügel" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Humid rivers" -msgstr "Grafiktreiber" +msgstr "Feuchte Flüsse" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Erhöht die Luftfeuchte um Flüsse" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Seen" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" msgstr "" +"Niedrige Luftfeuchtigkeit und hohe Hitze erzeugen seichte oder " +"ausgetrocknete Flüsse" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -334,22 +325,20 @@ msgid "Mapgen flags" msgstr "Kartengenerator-Flags" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mapgen-specific flags" -msgstr "Flags spezifisch für Kartengenerator V5" +msgstr "Kartengeneratorspezifische Flags" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mountains" -msgstr "Bergrauschen" +msgstr "Berge" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "Schlammfließen" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "Netzwerk aus Tunneln und Höhlen" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -357,20 +346,19 @@ msgstr "Kein Spiel ausgewählt" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "Reduziert Hitze mit der Höhe" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "Reduziert Luftfeuchte mit der Höhe" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Rivers" -msgstr "Flussgröße" +msgstr "Flüsse" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "Flüsse am Meeresspiegel" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -379,52 +367,52 @@ msgstr "Seed" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "Weicher Übergang zwischen Biomen" #: builtin/mainmenu/dlg_create_world.lua msgid "" "Structures appearing on the terrain (no effect on trees and jungle grass " "created by v6)" msgstr "" +"Gebäude, die auf dem Gelände auftauchen (keine Wirkung auf von v6 erzeugte " +"Bäume u. Dschungelgras)" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" msgstr "" +"Gebäude, die auf dem Gelände auftauchen, üblicherweise Bäume und Pflanzen" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "Gemäßigt, Wüste" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "Gemäßigt, Wüste, Dschungel" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "Gemäßigt, Wüste, Dschungel, Tundra, Taiga" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Terrain surface erosion" -msgstr "Geländebasisrauschen" +msgstr "Geländeoberflächenerosion" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "Bäume und Dschungelgras" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Vary river depth" -msgstr "Flusstiefe" +msgstr "Flusstiefe variieren" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "Sehr große Hohlräume tief im Untergrund" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Warning: The Development Test is meant for developers." -msgstr "Warnung: Die minimale Testversion ist für Entwickler gedacht." +msgstr "Achtung: Der Development Test ist für Entwickler gedacht." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -740,7 +728,7 @@ msgstr "Server hosten" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "Spiele von ContentDB installieren" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" @@ -1173,8 +1161,8 @@ msgstr "" "- %s: Nach rechts\n" "- %s: Springen/klettern\n" "- %s: Kriechen/runter\n" -"- %s: Gegenstand wegwerfen\n" -"- %s: Inventar\n" +"- %s: Gegenstand wegwerfen\n" +"- %s: Inventar\n" "- Maus: Drehen/Umschauen\n" "- Maus links: Graben/Schlagen\n" "- Maus rechts: Bauen/Benutzen\n" @@ -1399,11 +1387,11 @@ msgstr "Ton verstummt" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "Tonsystem ist deaktiviert" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "" +msgstr "Tonsystem ist in diesem Build nicht unterstützt" #: src/client/game.cpp msgid "Sound unmuted" @@ -2054,9 +2042,8 @@ msgid "3D mode" msgstr "3-Dimensionaler-Modus" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode parallax strength" -msgstr "Normalmap-Stärke" +msgstr "3D-Modus-Parallaxstärke" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." @@ -2078,6 +2065,11 @@ msgid "" "to be adjusted, as floatland tapering functions best when this noise has\n" "a value range of approximately -2.0 to 2.0." msgstr "" +"3D-Rauschen, das die Form von Schwebeländern definiert.\n" +"Falls vom Standardwert verschieden, müsste der Rauschwert „Skalierung“\n" +"(standardmäßig 0.7) evtl. angepasst werden, da die Schwebeland-\n" +"zuspitzung am Besten funktioniert, wenn dieses Rauschen\n" +"einen Wert zwischen etwa -2.0 bis 2.0 hat." #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." @@ -2151,9 +2143,8 @@ msgid "ABM interval" msgstr "ABM-Intervall" #: src/settings_translation_file.cpp -#, fuzzy msgid "Absolute limit of queued blocks to emerge" -msgstr "Absolute Grenze der Erzeugungswarteschlangen" +msgstr "Absolute Grenze der zu erzeugenden Kartenblöcke in Warteschlange" #: src/settings_translation_file.cpp msgid "Acceleration in air" @@ -2208,6 +2199,12 @@ msgid "" "Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" "to be sure) creates a solid floatland layer." msgstr "" +"Passt die Dichte der Schwebelandebene an.\n" +"Wert erhöhen, um die Dichte zu erhöhen. Kann positiv oder negativ sein.\n" +"Wert = 0.0: 50% des Volumens sind Schwebeländer.\n" +"Wert = 2.0 (kann abhängig von „mgv7_np_floatland“ höher sein, solle man\n" +"immer testen, um sicher zu sein) erzeugt eine durchgehende\n" +"Schwebelandebene." #: src/settings_translation_file.cpp msgid "Advanced" @@ -2506,18 +2503,16 @@ msgstr "" "für kleinere Bildschirme nötig sein." #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat font size" -msgstr "Schriftgröße" +msgstr "Chat-Schriftgröße" #: src/settings_translation_file.cpp msgid "Chat key" msgstr "Chattaste" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat log level" -msgstr "Debugausgabelevel" +msgstr "Chatprotokollausgabelevel" #: src/settings_translation_file.cpp msgid "Chat message count limit" @@ -2815,9 +2810,8 @@ msgid "Default report format" msgstr "Standard-Berichtsformat" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default stack size" -msgstr "Standardspiel" +msgstr "Standardstapelgröße" #: src/settings_translation_file.cpp msgid "" @@ -3204,6 +3198,13 @@ msgid "" "Values < 1.0 (for example 0.25) create a more defined surface level with\n" "flatter lowlands, suitable for a solid floatland layer." msgstr "" +"Exponent der Schwebelandzuspitzung. Passt das Zuspitzungverhalten an.\n" +"Wert = 1.0 erzeugt eine einheitliche lineare Zuspitzung.\n" +"Werte > 1.0 erzeugen eine weiche Zuspitzung, die für die standardmäßig\n" +"getrennten Schwebeländer geeignet sind.\n" +"Werte < 1.0 (z.B. 0.25) erzeugen eine bestimmtere Oberflächenhöhe mit\n" +"flacheren Tiefländern; dies ist für eine durchgehende Schwebelandebene\n" +"geeignet." #: src/settings_translation_file.cpp msgid "FPS in pause menu" @@ -3326,39 +3327,32 @@ msgid "Fixed virtual joystick" msgstr "Fester virtueller Joystick" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland density" -msgstr "Schwebelandbergdichte" +msgstr "Schwebelanddichte" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland maximum Y" -msgstr "Verlies: Max. Y" +msgstr "Schwebeland: Max. Y" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland minimum Y" -msgstr "Verlies: Min. Y" +msgstr "Schwebeland: Min. Y" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland noise" -msgstr "Schwebelandbasisrauschen" +msgstr "Schwebelandrauschen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland taper exponent" -msgstr "Schwebelandbergexponent" +msgstr "Schwebelandzuspitzexponent" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland tapering distance" -msgstr "Schwebelandbasisrauschen" +msgstr "Schwebelandzuspitzdistanz" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland water level" -msgstr "Schwebelandhöhe" +msgstr "Schwebelandwasserhöhe" #: src/settings_translation_file.cpp msgid "Fly key" @@ -3417,6 +3411,9 @@ msgid "" "Font size of the recent chat text and chat prompt in point (pt).\n" "Value 0 will use the default font size." msgstr "" +"Schriftgröße für den Chattext (für neue Chatnachrichten) und\n" +"der Chateingabe in Punkt (pt).\n" +"Der Wert 0 wird die Standardschriftgröße benutzen." #: src/settings_translation_file.cpp msgid "" @@ -4040,8 +4037,8 @@ msgstr "Spiel" #: src/settings_translation_file.cpp msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." msgstr "" -"Undurchsichtigkeit des Hintergrundes der Chat-Konsole im Spiel\n" -"(Wert zwischen 0 und 255)." +"Undurchsichtigkeit des Hintergrundes der Chat-Konsole im Spiel (Wert " +"zwischen 0 und 255)." #: src/settings_translation_file.cpp msgid "In-game chat console background color (R,G,B)." @@ -4051,8 +4048,7 @@ msgstr "Hintergrundfarbe (R,G,B) der Chat-Konsole im Spiel." msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." msgstr "" "Chatkonsolenhöhe im Spiel, zwischen 0.1 (10%) und 1.0 (100%).\n" -"(Beachten Sie die englische Notation mit Punkt als\n" -"Dezimaltrennzeichen.)" +"(Beachten Sie die englische Notation mit Punkt als Dezimaltrennzeichen.)" #: src/settings_translation_file.cpp msgid "Inc. volume key" @@ -5046,8 +5042,8 @@ msgid "" "- info\n" "- verbose" msgstr "" -"Bis zu welcher Dringlichkeitsstufe Protokollmeldungen\n" -"in debug.txt geschrieben werden sollen:\n" +"Bis zu welcher Stufe Protokollmeldungen in debug.txt geschrieben werden " +"sollen:\n" "- (keine Protokollierung)\n" "- none (Meldungen ohne Einstufung)\n" "- error (Fehler)\n" @@ -5157,9 +5153,8 @@ msgid "Lower Y limit of dungeons." msgstr "Y-Untergrenze von Verliesen." #: src/settings_translation_file.cpp -#, fuzzy msgid "Lower Y limit of floatlands." -msgstr "Y-Untergrenze von Verliesen." +msgstr "Y-Untergrenze von Schwebeländern." #: src/settings_translation_file.cpp msgid "Main menu script" @@ -5173,14 +5168,14 @@ msgstr "Hauptmenü-Stil" msgid "" "Make fog and sky colors depend on daytime (dawn/sunset) and view direction." msgstr "" -"Nebel- und Himmelsfarben von der Tageszeit (Sonnenaufgang/Sonnenuntergang)\n" +"Nebel- und Himmelsfarben von der Tageszeit (Sonnenaufgang/Sonnenuntergang) " "und Blickrichtung abhängig machen." #: src/settings_translation_file.cpp msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." msgstr "" -"DirectX mit LuaJIT zusammenarbeiten lassen. Deaktivieren Sie dies,\n" -"falls es Probleme verursacht." +"DirectX mit LuaJIT zusammenarbeiten lassen. Deaktivieren Sie dies, falls es " +"Probleme verursacht." #: src/settings_translation_file.cpp msgid "Makes all liquids opaque" @@ -5247,7 +5242,6 @@ msgstr "" "aktiviert und das „jungles“-Flag wird ignoriert." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" "'ridges': Rivers.\n" @@ -5255,7 +5249,9 @@ msgid "" "'caverns': Giant caves deep underground." msgstr "" "Kartengenerierungsattribute speziell für den Kartengenerator v7.\n" -"„ridges“ aktiviert die Flüsse." +"„ridges”: Flüsse.\n" +"„floatlands“: Schwebende Landmassen in der Atmosphäre.\n" +"„caverns“: Gigantische Höhlen tief im Untergrund." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5412,24 +5408,22 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Maximale Anzahl der Kartenblöcke in der Ladewarteschlange." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "This limit is enforced per player." msgstr "" -"Maximale Anzahl der Kartenblöcke, die in die Erzeugungswarteschlage gesetzt " -"werden.\n" -"Feld frei lassen, um automatisch einen geeigneten Wert zu bestimmen." +"Maximale Anzahl der Kartenblöcke, die in die Warteschlange für\n" +"die Erzeugung eingereiht werden sollen.\n" +"Diese Grenze wird für jeden Spieler einzeln erzwungen." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "This limit is enforced per player." msgstr "" -"Maximale Anzahl der Kartenblöcke, die in die Warteschlange zum Laden aus\n" -"einer Datei gesetzt werden können.\n" -"Feld frei lassen, um automatisch einen geeigneten Wert zu bestimmen." +"Maximale Anzahl der Kartenblöcke, die in die Warteschlange zum Laden aus " +"einer Datei eingereiht werden.\n" +"Diese Grenze wird für jeden Spieler einzeln erzwungen." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5450,7 +5444,7 @@ msgid "" "try reducing it, but don't reduce it to a number below double of targeted\n" "client number." msgstr "" -"Maximale Anzahl der Pakete, die pro Sende-Schritt gesendet werden. Falls Sie " +"Maximale Anzahl der Pakete, die pro Sendeschritt gesendet werden. Falls Sie " "eine\n" "langsame Verbindung haben, probieren Sie, diesen Wert zu reduzieren,\n" "aber reduzieren Sie ihn nicht unter der doppelten Anzahl der Clients, die " @@ -5535,7 +5529,7 @@ msgstr "Verwendete Methode, um ein ausgewähltes Objekt hervorzuheben." #: src/settings_translation_file.cpp msgid "Minimal level of logging to be written to chat." -msgstr "" +msgstr "Minimaler Level des Prokolls, die in den Chat geschrieben werden soll." #: src/settings_translation_file.cpp msgid "Minimap" @@ -5615,8 +5609,8 @@ msgid "" "For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." msgstr "" "Faktor für Kameraschütteln beim Sturz.\n" -"Zum Beispiel: 0 für kein Schütteln, 1.0 für den Standardwert,\n" -"2.0 für doppelte Geschwindigkeit." +"Zum Beispiel: 0 für kein Schütteln, 1.0 für den Standardwert, 2.0 für " +"doppelte Geschwindigkeit." #: src/settings_translation_file.cpp msgid "Mute key" @@ -5654,8 +5648,7 @@ msgid "" "Name of the server, to be displayed when players join and in the serverlist." msgstr "" "Name des Servers. Er wird in der Serverliste angezeigt und für frisch " -"verbundene\n" -"Spieler angezeigt." +"verbundene Spieler angezeigt." #: src/settings_translation_file.cpp msgid "Near plane" @@ -5671,8 +5664,7 @@ msgid "" "This value will be overridden when starting from the main menu." msgstr "" "Netzwerkport (UDP), auf dem gelauscht werden soll.\n" -"Dieser Wert wird überschrieben, wenn vom Hauptmenü\n" -"aus gestartet wird." +"Dieser Wert wird überschrieben, wenn vom Hauptmenü aus gestartet wird." #: src/settings_translation_file.cpp msgid "New users need to input this password." @@ -5711,7 +5703,6 @@ msgid "Number of emerge threads" msgstr "Anzahl der Erzeugerthreads" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of emerge threads to use.\n" "Value 0:\n" @@ -5725,18 +5716,14 @@ msgid "" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" "Anzahl der zu verwendeten Erzeugerthreads.\n" -"ACHTUNG: Momentan gibt es mehrere Bugs, die Abstürze verursachen können,\n" -"wenn „num_emerge_threads“ größer als 1 ist. Bis diese Warnung entfernt ist,\n" -"wird es stark empfohlen, diesen Wert auf den Standardwert „1“ zu setzen.\n" "Wert 0:\n" -"Leerer Wert oder 0:\n" "- Automatische Wahl. Die Anzahl der Erzeugerthreads wird\n" "- „Anzahl der Prozessoren - 2“ sein, mit einer Untergrenze von 1.\n" "Jeder andere Wert:\n" "- Legt die Anzahl der Erzeugerthreads fest, mit einer Untergrenze von 1.\n" "ACHTUNG: Das Erhöhen der Anzahl der Erzeugerthreads erhöht die\n" "Geschwindigkeit des Engine-Kartengenerators, aber dies könnte die Spiel-\n" -"performanz beeinträchtigen, da mit anderen Prozessen konkurriert wird,\n" +"performanz beeinträchtigen, da mit anderen Prozessen konkurriert wird;\n" "das ist besonders im Einzelspielermodus der Fall und/oder, wenn Lua-Code\n" "in „on_generated“ ausgeführt wird.\n" "Für viele Benutzer wird die optimale Einstellung wohl die „1“ sein." @@ -5837,6 +5824,9 @@ msgid "" "Path to save screenshots at. Can be an absolute or relative path.\n" "The folder will be created if it doesn't already exist." msgstr "" +"Pfad, in dem Bildschirmfotos gespeichert werden sollen. Kann ein absoluter " +"oder relativer Pfad sein.\n" +"Dieses Verzeichnis wird erstellt, wenn es nicht bereits existiert." #: src/settings_translation_file.cpp msgid "" @@ -5844,8 +5834,7 @@ msgid "" "used." msgstr "" "Pfad zum Shader-Verzeichnis. Falls kein Pfad definiert ist, wird der " -"Standard-\n" -"pfad benutzt." +"Standardpfad benutzt." #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." @@ -5887,12 +5876,11 @@ msgstr "Pausieren bei Fensterfokusverlust" #: src/settings_translation_file.cpp msgid "Per-player limit of queued blocks load from disk" -msgstr "" +msgstr "Je-Spieler-Grenze der Ladewarteschlange für Kartenblöcke" #: src/settings_translation_file.cpp -#, fuzzy msgid "Per-player limit of queued blocks to generate" -msgstr "Limit der Erzeugungswarteschlangen" +msgstr "Je-Spieler-Grenze der Kartenblöcke in Erzeugungswarteschlange" #: src/settings_translation_file.cpp msgid "Physics" @@ -5932,23 +5920,22 @@ msgid "" "Note that the port field in the main menu overrides this setting." msgstr "" "UDP-Port, zu dem sich verbunden werden soll.\n" -"Beachten Sie, dass das Port-Feld im Hauptmenü diese Einstellung\n" -"überschreibt." +"Beachten Sie, dass das Port-Feld im Hauptmenü diese Einstellung überschreibt." #: src/settings_translation_file.cpp msgid "" "Prevent digging and placing from repeating when holding the mouse buttons.\n" "Enable this when you dig or place too often by accident." msgstr "" -"Verhindert wiederholtes Graben und Bauen, wenn man die\n" -"Maustasten gedrückt hält. Aktivieren Sie dies, wenn sie zu oft aus Versehen\n" -"graben oder bauen." +"Verhindert wiederholtes Graben und Bauen, wenn man die Maustasten gedrückt " +"hält.\n" +"Aktivieren Sie dies, wenn sie zu oft aus Versehen graben oder bauen." #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." msgstr "" -"Verhindert, dass Mods unsichere Funktionen, wie das Ausführen von\n" -"Shell-Kommandos, benutzen können." +"Verhindert, dass Mods unsichere Funktionen, wie das Ausführen von Shell-" +"Kommandos, benutzen können." #: src/settings_translation_file.cpp msgid "" @@ -5977,7 +5964,7 @@ msgstr "Profiling" #: src/settings_translation_file.cpp msgid "Prometheus listener address" -msgstr "" +msgstr "Prometheus-Lauschadresse" #: src/settings_translation_file.cpp msgid "" @@ -5986,6 +5973,10 @@ msgid "" "enable metrics listener for Prometheus on that address.\n" "Metrics can be fetch on http://127.0.0.1:30000/metrics" msgstr "" +"Prometheus-Lauschadresse.\n" +"Falls Minetest mit der ENABLE_PROMETEUS-Option kompiliert wurde,\n" +"wird dies den Metriklauscher für Prometheus auf dieser Adresse aktivieren.\n" +"Metriken können von http://127.0.0.1:30000/metrics abgegriffen werden." #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." @@ -5998,8 +5989,8 @@ msgid "" "corners." msgstr "" "Radius des Wolkenbereichs; In Einheiten von 64 Wolkenquadraten.\n" -"Werte größer als 26 werden scharfe Schnittkanten an den Ecken des Wolken-\n" -"bereichs erzeugen." +"Werte größer als 26 werden scharfe Schnittkanten an den Ecken des " +"Wolkenbereichs erzeugen." #: src/settings_translation_file.cpp msgid "Raises terrain to make valleys around the rivers." @@ -6035,7 +6026,7 @@ msgid "" "Use this to stop players from being able to use color in their messages" msgstr "" "Farbcodes aus eingehenden Chatnachrichten entfernen.\n" -"Benutzen Sie dies, um Spieler daran zu hindern, Farbe in ihren Nachrichten\n" +"Benutzen Sie dies, um Spieler daran zu hindern, Farbe in ihren Nachrichten " "zu verwenden" #: src/settings_translation_file.cpp @@ -6423,7 +6414,7 @@ msgid "" msgstr "" "Größe vom Kartenblock-Cache des Meshgenerators. Wird sie\n" "erhöht, wird die Cache-Trefferrate erhöht, was die Anzahl der Daten,\n" -"die vom Hauptthread kopiert werden, reduziert und somit das Stottern\n" +"die vom Hauptthread kopiert werden, reduziert und somit das Stottern " "reduziert." #: src/settings_translation_file.cpp @@ -6460,8 +6451,8 @@ msgid "" "Smooths camera when looking around. Also called look or mouse smoothing.\n" "Useful for recording videos." msgstr "" -"Glättet Kamerabewegungen bei der Fortbewegung und beim Umsehen.\n" -"Auch bekannt als „Look Smoothing“ oder „Mouse Smoothing“.\n" +"Glättet Kamerabewegungen bei der Fortbewegung und beim Umsehen. Auch bekannt " +"als „Look Smoothing“ oder „Mouse Smoothing“.\n" "Nützlich zum Aufnehmen von Videos." #: src/settings_translation_file.cpp @@ -6516,6 +6507,10 @@ msgid "" "Note that mods or games may explicitly set a stack for certain (or all) " "items." msgstr "" +"Legt die Standardstapelgröße von Blöcken, Gegenständen und Werkzeugen fest.\n" +"Beachten Sie, dass Mods oder Spiele eine explizite Stapelgröße für " +"bestimmte\n" +"(oder alle) Gegenstände setzen kann." #: src/settings_translation_file.cpp msgid "" @@ -6544,9 +6539,8 @@ msgid "Step mountain spread noise" msgstr "Stufenbergsausbreitungsrauschen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of 3D mode parallax." -msgstr "Stärke von Parallax." +msgstr "Stärke von 3D-Modus-Parallax." #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." @@ -6583,6 +6577,18 @@ msgid "" "server-intensive extreme water flow and to avoid vast flooding of the\n" "world surface below." msgstr "" +"Oberfläche mit optionalem Wasser, das auf einer durchgehenden\n" +"Schwebelandebene platziert wird. Wasser ist standardmäßig deaktiviert\n" +"und wird nur platziert, wenn dieser Wert auf einem Wert größer als\n" +"„mgv7_floatland_ymax” minus „mgv7_floatland_taper” (dem Start\n" +"der oberen Zuspitzung) gesetzt wurde.\n" +"***ACHTUNG, MÖGLICHE GEFAHR FÜR WELTEN UND SERVERPERFORMANZ***:\n" +"Wenn die Wasserplatzierung aktiviert wird, müssen die Schwebeländer\n" +"konfiguriert und darauf abgeklopft werden, dass sie eine durchgehende\n" +"Ebene sind, indem „mgv7_floatland_density“ auf 2.0 (oder einem anderen\n" +"erforderlichen Wert, abhängig von „mgv7_np_floatland“) gesetzt wird,\n" +"um ein serverbelastendes extremes Wasserfließen und einer gewaltigen\n" +"Überflutung der Weltoberfläche unten zu vermeiden." #: src/settings_translation_file.cpp msgid "Synchronous SQLite" @@ -6716,11 +6722,9 @@ msgid "" msgstr "" "Die Privilegien, die neue Benutzer automatisch erhalten.\n" "Siehe /privs im Spiel für eine vollständige Liste aller möglichen " -"Privilegien\n" -"auf Ihrem Server und die Modkonfiguration." +"Privilegien auf Ihrem Server und die Modkonfiguration." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6735,7 +6739,8 @@ msgstr "" "In aktiven Kartenblöcken werden Objekte geladen und ABMs ausgeführt.\n" "Dies ist außerdem die minimale Reichweite, in der aktive Objekte (Mobs) " "verwaltet\n" -"werden. Dies sollte zusammen mit active_object_range konfiguriert werden." +"werden. Dies sollte zusammen mit active_object_send_range_blocks\n" +"konfiguriert werden." #: src/settings_translation_file.cpp msgid "" @@ -6785,8 +6790,7 @@ msgstr "" "Die Zeit (in Sekunden), die die Flüssigkeitswarteschlange über die " "Verarbeitungs-\n" "kapazität hinauswachsen darf, bevor versucht wird, ihre Größe durch das\n" -"Verwerfen alter Warteschlangeneinträge zu reduzieren. Der Wert 0 " -"deaktiviert\n" +"Verwerfen alter Warteschlangeneinträge zu reduzieren. Der Wert 0 deaktiviert " "diese Funktion." #: src/settings_translation_file.cpp @@ -6854,8 +6858,7 @@ msgstr "Zeitgeschwindigkeit" #: src/settings_translation_file.cpp msgid "Timeout for client to remove unused map data from memory." msgstr "" -"Zeit, nach der der Client nicht benutzte Kartendaten aus\n" -"dem Speicher löscht." +"Zeit, nach der der Client nicht benutzte Kartendaten aus dem Speicher löscht." #: src/settings_translation_file.cpp msgid "" @@ -6923,7 +6926,7 @@ msgid "" msgstr "" "Unterabtastung ist ähnlich der Verwendung einer niedrigeren " "Bildschirmauflösung, aber sie wird nur auf die Spielwelt angewandt, während " -"das GUI intakt bleibt.\n" +"die GUI intakt bleibt.\n" "Dies sollte einen beträchtlichen Performanzschub auf Kosten einer weniger " "detaillierten Grafik geben.\n" "Hohe Werte führen zu einer weniger detaillierten Grafik." @@ -6941,9 +6944,8 @@ msgid "Upper Y limit of dungeons." msgstr "Y-Obergrenze von Verliesen." #: src/settings_translation_file.cpp -#, fuzzy msgid "Upper Y limit of floatlands." -msgstr "Y-Obergrenze von Verliesen." +msgstr "Y-Obergrenze von Schwebeländern." #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." @@ -6956,8 +6958,8 @@ msgstr "Eine Wolkenanimation für den Hintergrund im Hauptmenü benutzen." #: src/settings_translation_file.cpp msgid "Use anisotropic filtering when viewing at textures from an angle." msgstr "" -"Anisotrope Filterung verwenden, wenn auf Texturen aus einem\n" -"gewissen Blickwinkel heraus geschaut wird." +"Anisotrope Filterung verwenden, wenn auf Texturen aus einem gewissen " +"Blickwinkel heraus geschaut wird." #: src/settings_translation_file.cpp msgid "Use bilinear filtering when scaling textures." @@ -6969,9 +6971,9 @@ msgid "" "especially when using a high resolution texture pack.\n" "Gamma correct downscaling is not supported." msgstr "" -"Map-Mapping benutzen, um Texturen zu skalieren. Könnte die Performanz\n" -"leicht erhöhen, besonders, wenn ein hochauflösendes Texturenpaket\n" -"benutzt wird.\n" +"Mip-Mapping benutzen, um Texturen zu skalieren. Könnte die Performanz\n" +"leicht erhöhen, besonders, wenn ein hochauflösendes Texturenpaket benutzt " +"wird.\n" "Eine gammakorrigierte Herunterskalierung wird nicht unterstützt." #: src/settings_translation_file.cpp @@ -7033,8 +7035,8 @@ msgid "" "Defines the 'persistence' value for terrain_base and terrain_alt noises." msgstr "" "Variiert die Rauheit des Geländes.\n" -"Definiert den „persistence“-Wert für\n" -"„terrain_base“- und „terrain_alt“-Rauschen." +"Definiert den „persistence“-Wert für „terrain_base“- und " +"„terrain_alt“-Rauschen." #: src/settings_translation_file.cpp msgid "Varies steepness of cliffs." @@ -7240,9 +7242,10 @@ msgid "" "Whether to ask clients to reconnect after a (Lua) crash.\n" "Set this to true if your server is set up to restart automatically." msgstr "" -"Ob Clients gefragt werden sollen, sich nach einem (Lua-)Absturz\n" -"neu zu verbinden. Auf „wahr“ setzen, falls Ihr Server für automatische\n" -"Neustarts eingerichtet ist." +"Ob Clients gefragt werden sollen, sich nach einem (Lua-)Absturz neu zu " +"verbinden.\n" +"Auf „wahr“ setzen, falls Ihr Server für automatische Neustarts eingerichtet " +"ist." #: src/settings_translation_file.cpp msgid "Whether to fog out the end of the visible area." @@ -7265,8 +7268,8 @@ msgstr "" msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." msgstr "" -"Ob der Client Debug-Informationen zeigen soll (hat die selbe Wirkung\n" -"wie das Drücken von F5)." +"Ob der Client Debug-Informationen zeigen soll (hat die selbe Wirkung wie das " +"Drücken von F5)." #: src/settings_translation_file.cpp msgid "Width component of the initial window size." @@ -7346,6 +7349,13 @@ msgid "" "For a solid floatland layer, this controls the height of hills/mountains.\n" "Must be less than or equal to half the distance between the Y limits." msgstr "" +"Y-Distanz, über welche die Schwebeländer sich von voller Dichte\n" +"zu nichts zuspitzen. Die Zuspitzung beginnt an dieser Distanz vom\n" +"Y-Limit.\n" +"Für eine durchgehende Schwebelandebene regelt dies die Höhe von\n" +"Hügeln/Bergen.\n" +"Muss kleiner als oder gleich der Hälfte der Distanz zwischen den\n" +"Y-Limits sein." #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." From 12dd01b7316f0a5cc42bc636562cdca6eae4f8cc Mon Sep 17 00:00:00 2001 From: runs Date: Sun, 14 Jun 2020 21:58:36 +0000 Subject: [PATCH 361/424] Translated using Weblate (Spanish) Currently translated at 67.8% (916 of 1350 strings) --- po/es/minetest.po | 127 ++++++++++++++++++---------------------------- 1 file changed, 48 insertions(+), 79 deletions(-) diff --git a/po/es/minetest.po b/po/es/minetest.po index 7f4776516..b32b6f1b1 100644 --- a/po/es/minetest.po +++ b/po/es/minetest.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Spanish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-05-23 12:41+0000\n" +"PO-Revision-Date: 2020-06-14 22:27+0000\n" "Last-Translator: runs \n" "Language-Team: Spanish \n" @@ -24,7 +24,7 @@ msgstr "Has muerto" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "Aceptar" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -116,7 +116,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Encontrar más mods" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -170,11 +170,11 @@ msgstr "Volver al menú principal" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" msgstr "" +"ContentDB no se encuentra disponible cuando Minetest se compiló sin cURL" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Downloading..." -msgstr "Cargando..." +msgstr "Descargando..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" @@ -221,7 +221,7 @@ msgstr "Actualizar" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "Ver" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -229,45 +229,39 @@ msgstr "Ya existe un mundo llamado \"$1\"" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "Terreno adicional" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" msgstr "Frío de altitud" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Altitude dry" -msgstr "Frío de altitud" +msgstr "Sequedad de altitud" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biome blending" -msgstr "Ruido de bioma" +msgstr "Mezclado de biomas" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biomes" -msgstr "Ruido de bioma" +msgstr "Biomas" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caverns" -msgstr "Ruido de caverna" +msgstr "Cavernas" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caves" -msgstr "Octavas" +msgstr "Cavernas" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "Crear" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Decorations" -msgstr "Iteraciones" +msgstr "Decoraciones" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" @@ -278,23 +272,20 @@ msgid "Download one from minetest.net" msgstr "Descarga uno desde minetest.net" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Dungeons" -msgstr "Ruido de mazmorra" +msgstr "Mazmorras" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "Terreno plano" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floating landmasses in the sky" -msgstr "Densidad de las montañas en tierras flotantes" +msgstr "Tierras flotantes en el cielo" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floatlands (experimental)" -msgstr "Nivel de tierra flotante" +msgstr "Tierras flotantes (experimental)" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -306,20 +297,19 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Colinas" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Humid rivers" -msgstr "Ruido para la humedad" +msgstr "Ríos húmedos" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Incrementa humedad alrededor de los ríos" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Lagos" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" @@ -340,7 +330,7 @@ msgstr "Banderas planas de Mapgen" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" -msgstr "" +msgstr "Montañas" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" @@ -360,16 +350,15 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "Reduce la humedad con la altitud" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Rivers" -msgstr "Ruido de caverna" +msgstr "Ríos" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "Ríos a nivel de mar" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -378,7 +367,7 @@ msgstr "Semilla" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "Transición suave entre biomas" #: builtin/mainmenu/dlg_create_world.lua msgid "" @@ -404,7 +393,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Terrain surface erosion" -msgstr "" +msgstr "Erosión superficie terreno" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" @@ -2981,7 +2970,6 @@ msgid "Dungeon minimum Y" msgstr "Mazmorras, mín. Y" #: src/settings_translation_file.cpp -#, fuzzy msgid "Dungeon noise" msgstr "Ruido de mazmorra" @@ -3477,8 +3465,8 @@ msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." msgstr "" -"Desde cuán lejos se generan los bloques para los clientes, especificado\n" -"en bloques de mapa (mapblocks, 16 nodos)." +"Desde cuán lejos se generan los bloques para los clientes, especificado en " +"bloques de mapa (mapblocks, 16 nodos)." #: src/settings_translation_file.cpp msgid "" @@ -5035,9 +5023,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost" -msgstr "Aumento medio del centro de la curva de luz." +msgstr "Aumento medio del centro de la curva de luz" #: src/settings_translation_file.cpp msgid "Light curve boost center" @@ -5134,9 +5121,8 @@ msgid "Main menu script" msgstr "Script del menú principal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Main menu style" -msgstr "Script del menú principal" +msgstr "Estilo del menú principal" #: src/settings_translation_file.cpp msgid "" @@ -5267,9 +5253,8 @@ msgid "Mapblock unload timeout" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Carpathian" -msgstr "Generador de mapas" +msgstr "Generador de mapas carpatiano" #: src/settings_translation_file.cpp #, fuzzy @@ -5277,9 +5262,8 @@ msgid "Mapgen Carpathian specific flags" msgstr "Banderas planas de Mapgen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Flat" -msgstr "Mapgen plano" +msgstr "Generador de mapas plano" #: src/settings_translation_file.cpp #, fuzzy @@ -5287,9 +5271,8 @@ msgid "Mapgen Flat specific flags" msgstr "Banderas planas de Mapgen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Fractal" -msgstr "Generador de mapas" +msgstr "Generador de mapas fractal" #: src/settings_translation_file.cpp #, fuzzy @@ -5297,9 +5280,8 @@ msgid "Mapgen Fractal specific flags" msgstr "Banderas planas de Mapgen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V5" -msgstr "Generador de mapas" +msgstr "Generador de mapas V5" #: src/settings_translation_file.cpp #, fuzzy @@ -5307,9 +5289,8 @@ msgid "Mapgen V5 specific flags" msgstr "Banderas planas de Mapgen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V6" -msgstr "Generador de mapas" +msgstr "Generador de mapas V6" #: src/settings_translation_file.cpp #, fuzzy @@ -5317,9 +5298,8 @@ msgid "Mapgen V6 specific flags" msgstr "Banderas planas de Mapgen" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen V7" -msgstr "Generador de mapas" +msgstr "Generador de mapas v7" #: src/settings_translation_file.cpp #, fuzzy @@ -5981,19 +5961,16 @@ msgid "River channel depth" msgstr "Profundidad del relleno" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel width" -msgstr "Profundidad del relleno" +msgstr "Ancho de canal de río" #: src/settings_translation_file.cpp -#, fuzzy msgid "River depth" -msgstr "Profundidad del relleno" +msgstr "Profundidad de río" #: src/settings_translation_file.cpp -#, fuzzy msgid "River noise" -msgstr "Ruido de caverna" +msgstr "Ruido de río" #: src/settings_translation_file.cpp msgid "River size" @@ -6062,14 +6039,12 @@ msgid "Screenshot folder" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot format" -msgstr "Captura de pantalla" +msgstr "Formato de captura de pantalla" #: src/settings_translation_file.cpp -#, fuzzy msgid "Screenshot quality" -msgstr "Captura de pantalla" +msgstr "Calidad de captura de pantalla" #: src/settings_translation_file.cpp msgid "" @@ -6230,9 +6205,8 @@ msgstr "" "Requiere habilitar sombreadores." #: src/settings_translation_file.cpp -#, fuzzy msgid "Shader path" -msgstr "Sombreadores" +msgstr "Ruta de sombreador" #: src/settings_translation_file.cpp msgid "" @@ -6349,9 +6323,8 @@ msgid "Sound" msgstr "Sonido" #: src/settings_translation_file.cpp -#, fuzzy msgid "Special key" -msgstr "Tecla sigilo" +msgstr "Tecla especial" #: src/settings_translation_file.cpp msgid "Special key for climbing/descending" @@ -6679,9 +6652,8 @@ msgid "URL to the server list displayed in the Multiplayer Tab." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Undersampling" -msgstr "Renderizado:" +msgstr "Renderizado" #: src/settings_translation_file.cpp msgid "" @@ -6745,9 +6717,8 @@ msgid "VSync" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Valley depth" -msgstr "Profundidad del relleno" +msgstr "Profundidad del valle" #: src/settings_translation_file.cpp msgid "Valley fill" @@ -6877,9 +6848,8 @@ msgid "Water surface level of the world." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving Nodes" -msgstr "Movimiento de hojas" +msgstr "Movimiento de nodos" #: src/settings_translation_file.cpp msgid "Waving leaves" @@ -7003,9 +6973,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "World start time" -msgstr "Nombre del mundo" +msgstr "Tiempo comienzo mundo" #: src/settings_translation_file.cpp msgid "" From 68cc9583dacbc5bf868f7a86bb55c8539f144b31 Mon Sep 17 00:00:00 2001 From: Jose Reina Leon Date: Sun, 14 Jun 2020 22:27:16 +0000 Subject: [PATCH 362/424] Translated using Weblate (Spanish) Currently translated at 67.8% (916 of 1350 strings) --- po/es/minetest.po | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/po/es/minetest.po b/po/es/minetest.po index b32b6f1b1..776b543ea 100644 --- a/po/es/minetest.po +++ b/po/es/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-14 22:27+0000\n" -"Last-Translator: runs \n" +"Last-Translator: Jose Reina Leon \n" "Language-Team: Spanish \n" "Language: es\n" @@ -4035,13 +4035,12 @@ msgid "Initial vertical speed when jumping, in nodes per second." msgstr "Velocidad vertical inicial al saltar, en nodos por segundo." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Instrument builtin.\n" "This is usually only needed by core/builtin contributors" msgstr "" -"El instrumento está construido.\n" -"Por lo general, esto sólo lo necesitan los contribuyentes del núcleo/base" +"Instrumento incorporado.\n" +"Esto solo suele ser necesario para los colaboradores principales o integrados" #: src/settings_translation_file.cpp msgid "Instrument chatcommands on registration." From faf1985953e1a1517607866a9f579bb426d38049 Mon Sep 17 00:00:00 2001 From: runs Date: Sun, 14 Jun 2020 22:28:18 +0000 Subject: [PATCH 363/424] Translated using Weblate (Spanish) Currently translated at 67.8% (916 of 1350 strings) --- po/es/minetest.po | 84 +++++++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 39 deletions(-) diff --git a/po/es/minetest.po b/po/es/minetest.po index 776b543ea..33c55d55a 100644 --- a/po/es/minetest.po +++ b/po/es/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Spanish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-14 22:27+0000\n" -"Last-Translator: Jose Reina Leon \n" +"PO-Revision-Date: 2020-06-22 17:56+0000\n" +"Last-Translator: runs \n" "Language-Team: Spanish \n" "Language: es\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -157,7 +157,7 @@ msgstr "Mundo:" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" -msgstr "Activado" +msgstr "activado" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" @@ -178,7 +178,7 @@ msgstr "Descargando..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" -msgstr "Fallo al descargar $1 en $2" +msgstr "Fallo al descargar $1" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -293,7 +293,7 @@ msgstr "Juego" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "Generar terreno no fractal: Oceanos y subterráneos" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" @@ -314,6 +314,8 @@ msgstr "Lagos" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" msgstr "" +"La baja humedad y el alto calor causan que los ríos sean poco profundos o " +"secos" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -324,9 +326,8 @@ msgid "Mapgen flags" msgstr "Banderas de Mapgen" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mapgen-specific flags" -msgstr "Banderas planas de Mapgen" +msgstr "Banderas específicas de Mapgen" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" @@ -334,11 +335,11 @@ msgstr "Montañas" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "Flujo de lodo" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "Red de túneles y cuevas" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -346,7 +347,7 @@ msgstr "Ningún juego seleccionado" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "Reduce el calor con la altitud" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" @@ -377,43 +378,40 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" -msgstr "" +msgstr "Estructuras que aparecen en el terreno, típicamente árboles y plantas" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "Templado, Desierto" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "Templado, Desierto, Jungla" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "Templado, Desierto, Jungla, Tundra, Taiga" #: builtin/mainmenu/dlg_create_world.lua msgid "Terrain surface erosion" -msgstr "Erosión superficie terreno" +msgstr "Erosión de la superficie del terreno" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "Árboles y hierba de la selva" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Vary river depth" -msgstr "Profundidad del relleno" +msgstr "Variar la profundidad del río" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "Cavernas muy grandes en lo profundo del subsuelo" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Warning: The Development Test is meant for developers." msgstr "" -"Advertencia: El juego \"Minimal development test\" está diseñado para " -"desarrolladores." +"Advertencia: La prueba de desarrollo está destinada a los desarrolladores." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -471,7 +469,7 @@ msgstr "Ruido 2D" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" -msgstr "< Volver a la página de Configuración" +msgstr "< Volver a la página de configuración" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Browse" @@ -728,7 +726,7 @@ msgstr "Servidor anfitrión" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "Instalar juegos desde ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" @@ -1389,11 +1387,11 @@ msgstr "Sonido silenciado" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "El sistema de sonido está desactivado" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "" +msgstr "El sistema de sonido no está soportado en esta \"build\"" #: src/client/game.cpp msgid "Sound unmuted" @@ -3879,8 +3877,8 @@ msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" -"Si los FPS subieran a más de esto, limítelos durmiendo a fin de no malgastar " -"potencia de CPU sin beneficio." +"Si los FPS subieran a más de esto, limítelos durmiendo\n" +"a fin de no malgastar potencia de CPU sin beneficio." #: src/settings_translation_file.cpp msgid "" @@ -4884,6 +4882,10 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para activar/desactivar la visualización de información de depuración." +"\n" +"Ver http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp #, fuzzy @@ -4902,6 +4904,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para activar/desactivar la visualización del HUD.\n" +"Ver http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4916,6 +4921,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para activar/desactivar el perfilador. Usado para desarrollo.\n" +"Ver http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -4923,6 +4931,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para activar/desactivar rango de vista ilimitado.\n" +"Ver http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -5111,9 +5122,8 @@ msgid "Lower Y limit of dungeons." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Lower Y limit of floatlands." -msgstr "Limite absoluto de colas emergentes" +msgstr "Límite inferior Y de las tierras flotantes." #: src/settings_translation_file.cpp msgid "Main menu script" @@ -6368,14 +6378,12 @@ msgid "Step mountain spread noise" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of 3D mode parallax." -msgstr "Generar mapas normales" +msgstr "La fuerza del paralaje del modo 3D." #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of generated normalmaps." -msgstr "Generar mapas normales" +msgstr "Fuerza de los mapas normales generados." #: src/settings_translation_file.cpp msgid "" @@ -6676,9 +6684,8 @@ msgid "Upper Y limit of dungeons." msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Upper Y limit of floatlands." -msgstr "Limite absoluto de colas emergentes" +msgstr "Límite superior Y de las tierras flotantes." #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." @@ -7000,9 +7007,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Y of upper limit of large caves." -msgstr "Limite absoluto de colas emergentes" +msgstr "\"Y\" del límite superior de las grandes cuevas." #: src/settings_translation_file.cpp msgid "Y-distance over which caverns expand to full size." From 7c52a53aeb929e5483b4ed9db6539dcd7e11c100 Mon Sep 17 00:00:00 2001 From: BreadW Date: Sun, 14 Jun 2020 03:10:14 +0000 Subject: [PATCH 364/424] Translated using Weblate (Japanese) Currently translated at 100.0% (1350 of 1350 strings) --- po/ja/minetest.po | 227 +++++++++++++++++++++++----------------------- 1 file changed, 113 insertions(+), 114 deletions(-) diff --git a/po/ja/minetest.po b/po/ja/minetest.po index 65960c8e2..f274682c4 100644 --- a/po/ja/minetest.po +++ b/po/ja/minetest.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Japanese (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-04-05 05:27+0000\n" +"PO-Revision-Date: 2020-06-15 22:41+0000\n" "Last-Translator: BreadW \n" "Language-Team: Japanese \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.1\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -24,7 +24,7 @@ msgstr "死んでしまった" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "OK" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -114,7 +114,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "他のModを探す" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -167,12 +167,11 @@ msgstr "メインメニューへ戻る" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "MinetestがcURLなしでコンパイルされた場合、コンテンツDBは使用できません" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Downloading..." -msgstr "読み込み中..." +msgstr "ダウンロード中..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" @@ -219,7 +218,7 @@ msgstr "更新" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "見る" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -227,45 +226,39 @@ msgstr "ワールド名「$1」は既に存在します" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "追加の地形" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" -msgstr "高所の寒さ" +msgstr "高所で低温" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Altitude dry" -msgstr "高所の寒さ" +msgstr "高所で乾燥" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biome blending" -msgstr "バイオームノイズ" +msgstr "バイオームの交錯" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biomes" -msgstr "バイオームノイズ" +msgstr "バイオーム" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caverns" -msgstr "大きな洞窟ノイズ" +msgstr "大きな洞窟" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caves" -msgstr "オクターブ" +msgstr "洞窟" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "作成" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Decorations" -msgstr "繰り返し" +msgstr "デコレーション" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" @@ -276,23 +269,20 @@ msgid "Download one from minetest.net" msgstr "minetest.netからダウンロードしてください" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Dungeons" -msgstr "ダンジョンノイズ" +msgstr "ダンジョン" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "平らな地形" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floating landmasses in the sky" -msgstr "浮遊大陸の山の密度" +msgstr "空に浮かぶ大陸" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floatlands (experimental)" -msgstr "浮遊大陸の水位" +msgstr "浮遊大陸(実験的)" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -300,54 +290,51 @@ msgstr "ゲーム" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "非フラクタルな地形の生成: 海と地下" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "丘" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Humid rivers" -msgstr "ビデオドライバ" +msgstr "湿気のある川" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "川周辺の湿度を上げる" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "湖" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" -msgstr "" +msgstr "低湿度と高熱は浅いまたは乾燥した川をもたらす" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "マップジェネレ-タ" +msgstr "マップジェネレータ" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen flags" msgstr "マップジェネレータフラグ" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mapgen-specific flags" -msgstr "マップジェネレータ V5 固有のフラグ" +msgstr "マップジェネレータ固有のフラグ" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mountains" -msgstr "山ノイズ" +msgstr "山" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "泥流" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "トンネルと洞窟の繋がり" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -355,20 +342,19 @@ msgstr "ゲームが選択されていません" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "高度で熱を低下" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "高度で湿度を低下" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Rivers" -msgstr "川のサイズ" +msgstr "川" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "海面の高さの川" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -377,52 +363,49 @@ msgstr "Seed値" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "バイオーム間の円滑な移行" #: builtin/mainmenu/dlg_create_world.lua msgid "" "Structures appearing on the terrain (no effect on trees and jungle grass " "created by v6)" -msgstr "" +msgstr "地形上に現れる構造物(v6によって生成された木やジャングルの草に影響なし)" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" -msgstr "" +msgstr "地形上に現れる構造物、通常は木や植物" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "温帯、砂漠" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "温帯、砂漠、ジャングル" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "温帯、砂漠、ジャングル、ツンドラ、タイガ" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Terrain surface erosion" -msgstr "地形基準ノイズ" +msgstr "地形表面の侵食" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "木とジャングルの草" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Vary river depth" -msgstr "川の深さ" +msgstr "川の深さを多様にする" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "地下深くにある非常に大きな洞窟" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Warning: The Development Test is meant for developers." -msgstr "警告: minimal development testは開発者用です。" +msgstr "警告: The Development Testは開発者用です。" #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -735,7 +718,7 @@ msgstr "ホストサーバ" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "コンテンツDBからゲームをインストール" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" @@ -1211,7 +1194,7 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" -"デフォルトの操作:\n" +"既定の操作:\n" "タッチ操作:\n" "- シングルタップ: ブロックの破壊\n" "- ダブルタップ: 設置/使用\n" @@ -1394,11 +1377,11 @@ msgstr "消音" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "サウンドシステムは無効" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "" +msgstr "このビルドではサウンド システムがサポートされていない" #: src/client/game.cpp msgid "Sound unmuted" @@ -2039,9 +2022,8 @@ msgid "3D mode" msgstr "3Dモード" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode parallax strength" -msgstr "法線マップの強さ" +msgstr "3Dモード視差強度" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." @@ -2062,6 +2044,10 @@ msgid "" "to be adjusted, as floatland tapering functions best when this noise has\n" "a value range of approximately -2.0 to 2.0." msgstr "" +"浮遊大陸の構造を定義する3Dノイズ。\n" +"既定から変更すると、ノイズの「スケール」(規定では 0.7)の調整が\n" +"必要になる場合があり、このノイズの値の範囲は約 -2.0 ~ 2.0 で\n" +"浮遊大陸の先細りが最も良く機能します。" #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." @@ -2124,9 +2110,8 @@ msgid "ABM interval" msgstr "ABMの間隔" #: src/settings_translation_file.cpp -#, fuzzy msgid "Absolute limit of queued blocks to emerge" -msgstr "出現するキューの絶対的な制限値" +msgstr "キューに入れられたブロックが出現する絶対制限" #: src/settings_translation_file.cpp msgid "Acceleration in air" @@ -2182,6 +2167,11 @@ msgid "" "Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" "to be sure) creates a solid floatland layer." msgstr "" +"浮遊大陸層の密度を調整します。\n" +"密度を高めるために値を増やします。正または負の値を指定できます。\n" +"値 = 0.0: 50% が浮遊大陸です。\n" +"値 = 2.0('mgv7_np_floatland' によって高くなる場合があります、常に\n" +"念のためテスト)浮遊大陸層を密に作成します。" #: src/settings_translation_file.cpp msgid "Advanced" @@ -2473,18 +2463,16 @@ msgstr "" "テクスチャパックの選択はありません。小さな画面で必要かもしれません。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat font size" -msgstr "フォントの大きさ" +msgstr "チャットのフォントサイズ" #: src/settings_translation_file.cpp msgid "Chat key" msgstr "チャットキー" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat log level" -msgstr "デバッグログのレベル" +msgstr "チャットログのレベル" #: src/settings_translation_file.cpp msgid "Chat message count limit" @@ -2774,9 +2762,8 @@ msgid "Default report format" msgstr "既定のレポート形式" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default stack size" -msgstr "標準ゲーム" +msgstr "既定のスタック数" #: src/settings_translation_file.cpp msgid "" @@ -3143,6 +3130,12 @@ msgid "" "Values < 1.0 (for example 0.25) create a more defined surface level with\n" "flatter lowlands, suitable for a solid floatland layer." msgstr "" +"浮遊大陸の先細り指数。先細りの動作を変更します。\n" +"値 = 1.0は、均一で線形な先細りを作成します。\n" +"値 > 1.0は、規定の分離された浮遊大陸に適した滑らかな先細りを\n" +"作成します。\n" +"値 < 1.0(例 0.25)は、より明確な表面レベルで平坦な低地を\n" +"作成し、密な浮遊大陸層に適しています。" #: src/settings_translation_file.cpp msgid "FPS in pause menu" @@ -3262,37 +3255,30 @@ msgid "Fixed virtual joystick" msgstr "バーチャルパッドを固定" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland density" -msgstr "浮遊大陸の山の密度" +msgstr "浮遊大陸の密度" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland maximum Y" -msgstr "ダンジョンの最大Y" +msgstr "浮遊大陸の最大 Y" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland minimum Y" -msgstr "ダンジョンの最小Y" +msgstr "浮遊大陸の最小 Y" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland noise" -msgstr "浮遊大陸の基準ノイズ" +msgstr "浮遊大陸ノイズ" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland taper exponent" -msgstr "浮遊大陸の山指数" +msgstr "浮遊大陸の先細り指数" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland tapering distance" -msgstr "浮遊大陸の基準ノイズ" +msgstr "浮遊大陸の先細り距離" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland water level" msgstr "浮遊大陸の水位" @@ -3353,6 +3339,8 @@ msgid "" "Font size of the recent chat text and chat prompt in point (pt).\n" "Value 0 will use the default font size." msgstr "" +"最近のチャットテキストとチャットプロンプトのフォントサイズ(ポイント)。\n" +"値 0 は規定のフォントサイズを使用します。" #: src/settings_translation_file.cpp msgid "" @@ -5050,9 +5038,8 @@ msgid "Lower Y limit of dungeons." msgstr "ダンジョンのY値の下限。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Lower Y limit of floatlands." -msgstr "ダンジョンのY値の下限。" +msgstr "浮遊大陸の Y の下限。" #: src/settings_translation_file.cpp msgid "Main menu script" @@ -5134,7 +5121,6 @@ msgstr "" "'jungles' フラグは無視されます。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" "'ridges': Rivers.\n" @@ -5142,7 +5128,9 @@ msgid "" "'caverns': Giant caves deep underground." msgstr "" "マップジェネレータ v7 に固有のマップ生成属性。\n" -"'ridges' は川ができるようにします。" +"'ridges': 川。\n" +"'floatlands': 空に浮かぶ大陸。\n" +"'caverns': 地下深くの巨大な洞窟。" #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5297,22 +5285,20 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "読み込みのためにキューに入れることができる最大ブロック数。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "This limit is enforced per player." msgstr "" -"生成されるキューに入れる最大ブロック数。\n" -"適切な量を自動的に選択するには、空白を設定します。" +"生成されてキューに入れられる最大ブロック数。\n" +"この制限はプレイヤーごとに適用されます。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "This limit is enforced per player." msgstr "" -"ファイルから読み込まれるキューに入れる最大ブロック数。\n" -"適切な量を自動的に選択するには、空白を設定します。" +"ファイルから読み込まれてキューに入れられる最大ブロック数。\n" +"この制限はプレイヤーごとに適用されます。" #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5406,7 +5392,7 @@ msgstr "選択したオブジェクトを強調表示するために使用され #: src/settings_translation_file.cpp msgid "Minimal level of logging to be written to chat." -msgstr "" +msgstr "チャットに書き込まれる最小限のログレベル。" #: src/settings_translation_file.cpp msgid "Minimap" @@ -5577,7 +5563,6 @@ msgid "Number of emerge threads" msgstr "出現するスレッド数" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of emerge threads to use.\n" "Value 0:\n" @@ -5591,9 +5576,6 @@ msgid "" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" "使用する出現スレッド数。\n" -"警告: 'num_emerge_threads' が 1 より大きいときにクラッシュを引き起こす\n" -"可能性のあるバグが現在複数あります。この警告が削除されるまでは\n" -"この値を規定の '1' に設定することを強くお勧めします。\n" "値 0:\n" "- 自動選択。 出現スレッド数は\n" "- 'プロセッサー数 - 2'、下限は 1 です。\n" @@ -5695,6 +5677,8 @@ msgid "" "Path to save screenshots at. Can be an absolute or relative path.\n" "The folder will be created if it doesn't already exist." msgstr "" +"スクリーンショットを保存するパス。絶対パスまたは相対パスを指定できます。\n" +"フォルダーが存在しない場合は作成されます。" #: src/settings_translation_file.cpp msgid "" @@ -5744,12 +5728,11 @@ msgstr "ウィンドウフォーカス喪失時に一時停止" #: src/settings_translation_file.cpp msgid "Per-player limit of queued blocks load from disk" -msgstr "" +msgstr "ファイルから読み込まれるキューブロックのプレイヤーごとの制限" #: src/settings_translation_file.cpp -#, fuzzy msgid "Per-player limit of queued blocks to generate" -msgstr "生成されて出現するキューの制限" +msgstr "生成されるキューブロックのプレイヤーごとの制限" #: src/settings_translation_file.cpp msgid "Physics" @@ -5829,7 +5812,7 @@ msgstr "プロファイリング" #: src/settings_translation_file.cpp msgid "Prometheus listener address" -msgstr "" +msgstr "プロメテウスリスナーのアドレス" #: src/settings_translation_file.cpp msgid "" @@ -5838,6 +5821,10 @@ msgid "" "enable metrics listener for Prometheus on that address.\n" "Metrics can be fetch on http://127.0.0.1:30000/metrics" msgstr "" +"プロメテウスリスナーのアドレス。\n" +"minetest が ENABLE_PROMETHEUS オプションを有効にしてコンパイルされている場合、\n" +"そのアドレスのプロメテウスのメトリックスリスナーを有効にします。\n" +"メトリックは http://127.0.0.1:30000/metrics で取得可能" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." @@ -6355,6 +6342,9 @@ msgid "" "Note that mods or games may explicitly set a stack for certain (or all) " "items." msgstr "" +"既定のノード、アイテム、ツールのスタック数を指定します。\n" +"Mod またはゲームは、特定の(またはすべての)アイテムのスタック数を\n" +"明示的に設定する場合があることに注意してください。" #: src/settings_translation_file.cpp msgid "" @@ -6383,9 +6373,8 @@ msgid "Step mountain spread noise" msgstr "ステップマウンテンの広がりノイズ" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of 3D mode parallax." -msgstr "視差の強さです。" +msgstr "3Dモード視差の強さです。" #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." @@ -6422,6 +6411,14 @@ msgid "" "server-intensive extreme water flow and to avoid vast flooding of the\n" "world surface below." msgstr "" +"密な浮遊大陸層に配置されるオプションの水の表面レベル。\n" +"水は規定で無効になっており、この値が 'mgv7_floatland_ymax' - 'mgv7_floatland_taper'\n" +"(上部の先細り開始点)より上に設定されている場合にのみ配置されます。\n" +"***警告、サーバーのパフォーマンスへの潜在的な危険性***:\n" +"水の配置を有効にする場合、浮遊大陸を密な層にするために\n" +"'mgv7_floatland_density' を2.0(または 'mgv7_np_floatland' に応じて他の必要な値)に\n" +"設定して、サーバーに集中する極端な水の流れを避け、下の世界表面への大規模な\n" +"洪水を避けるようにテストする必要があります。" #: src/settings_translation_file.cpp msgid "Synchronous SQLite" @@ -6553,7 +6550,6 @@ msgstr "" "してください。" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6567,7 +6563,7 @@ msgstr "" "マップブロック(16ノード)で定めます。\n" "アクティブブロックのオブジェクトはロードされ、ABMが実行されます。\n" "これはアクティブオブジェクト(モブ)が維持される最小範囲でもあります。\n" -"これは active_object_range と一緒に設定する必要があります。" +"これは active_object_send_range_blocks と一緒に設定する必要があります。" #: src/settings_translation_file.cpp msgid "" @@ -6748,9 +6744,8 @@ msgid "Upper Y limit of dungeons." msgstr "ダンジョンのY値の上限。" #: src/settings_translation_file.cpp -#, fuzzy msgid "Upper Y limit of floatlands." -msgstr "ダンジョンのY値の上限。" +msgstr "浮遊大陸の Y の上限。" #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." @@ -7143,6 +7138,10 @@ msgid "" "For a solid floatland layer, this controls the height of hills/mountains.\n" "Must be less than or equal to half the distance between the Y limits." msgstr "" +"完全な密度からゼロまでの浮遊大陸先細りの Y距離。\n" +"先細りは、Y制限からこの距離で始まります。\n" +"密な浮遊大陸層の場合、これは丘/山の高さを制御します。\n" +"Y制限間の距離の半分以下でなければなりません。" #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." From 6e5fc82f9a3ee4527a291fcd3c5d74c552ad09fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sun, 14 Jun 2020 06:23:14 +0000 Subject: [PATCH 365/424] Translated using Weblate (Turkish) Currently translated at 100.0% (1350 of 1350 strings) --- po/tr/minetest.po | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/po/tr/minetest.po b/po/tr/minetest.po index 8c88d7e81..bc2ac25b1 100644 --- a/po/tr/minetest.po +++ b/po/tr/minetest.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Turkish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-13 21:08+0000\n" +"PO-Revision-Date: 2020-06-15 22:41+0000\n" "Last-Translator: Oğuz Ersen \n" "Language-Team: Turkish \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.1\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -5160,15 +5160,16 @@ msgstr "" "'jungles' bayrağı yok sayılır." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" "'ridges': Rivers.\n" "'floatlands': Floating land masses in the atmosphere.\n" "'caverns': Giant caves deep underground." msgstr "" -"Mapgen v7'ye özgü harita üretim özellikleri.\n" -"'ridges' nehirleri etkinleştirir." +"Mapgen v7'ye özgü harita oluşturma özellikleri.\n" +"'ridges': Nehirler.\n" +"'floatlands': Atmosferde yüzen kara kütleleri.\n" +"'caverns:' Dev derin yeraltı mağaraları." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5608,7 +5609,6 @@ msgid "Number of emerge threads" msgstr "Emerge iş sayısı" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of emerge threads to use.\n" "Value 0:\n" @@ -5622,10 +5622,6 @@ msgid "" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" "Kullanılacak emerge iş parçacıklarının sayısı.\n" -"UYARI: Şu anda 'num_emerge_threads' 1'den büyük olduğunda çökmelere\n" -"neden olabilecek birden fazla hata var. Bu uyarı kaldırılıncaya kadar, bu " -"değerin\n" -"öntanımlı '1' olarak ayarlanması şiddetle önerilir.\n" "Değer 0:\n" "- Kendiliğinden seçim. Ortaya çıkan emerge iş parçacıklarının sayısı\n" "- alt limit 1 olmak üzere 'işlemci sayısı - 2' olacaktır.\n" From 99541ab2944edc9e6105411dd58309553bb4ae6c Mon Sep 17 00:00:00 2001 From: monolifed Date: Sun, 14 Jun 2020 09:51:55 +0000 Subject: [PATCH 366/424] Translated using Weblate (Turkish) Currently translated at 100.0% (1350 of 1350 strings) --- po/tr/minetest.po | 219 ++++++++++++++++++++++++---------------------- 1 file changed, 115 insertions(+), 104 deletions(-) diff --git a/po/tr/minetest.po b/po/tr/minetest.po index bc2ac25b1..5101b66fa 100644 --- a/po/tr/minetest.po +++ b/po/tr/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-15 22:41+0000\n" -"Last-Translator: Oğuz Ersen \n" +"Last-Translator: monolifed \n" "Language-Team: Turkish \n" "Language: tr\n" @@ -24,7 +24,7 @@ msgstr "Öldün" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "Tamam" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -116,7 +116,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Daha Çok Mod Bul" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -169,12 +169,11 @@ msgstr "Ana Menüye Dön" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "Minetest cURL'siz derlediğinde ContentDB kullanılamaz" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Downloading..." -msgstr "Yükleniyor..." +msgstr "İndiriliyor..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" @@ -221,7 +220,7 @@ msgstr "Güncelle" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "Görüntüle" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -229,45 +228,39 @@ msgstr "\"$1\" adlı dünya zaten var" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "Ek arazi" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" msgstr "Yükseklik soğukluğu" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Altitude dry" -msgstr "Yükseklik soğukluğu" +msgstr "Yükseklik kuruluğu" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biome blending" -msgstr "Biyom Gürültüsü" +msgstr "Biyom karıştırma" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biomes" -msgstr "Biyom Gürültüsü" +msgstr "Biyomlar" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caverns" -msgstr "Oyuk gürültüsü" +msgstr "Oyuklar" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caves" -msgstr "Oktavlar" +msgstr "Mağaralar" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "Yarat" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Decorations" -msgstr "Yinelemeler" +msgstr "Dekorasyonlar" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" @@ -278,23 +271,20 @@ msgid "Download one from minetest.net" msgstr "minetest.net adresinden indirin" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Dungeons" -msgstr "Zindan gürültüsü" +msgstr "Zindanlar" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "Düz arazi" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floating landmasses in the sky" -msgstr "Yüzenkara dağ yoğunluğu" +msgstr "Gökyüzünde yüzenkara kütleleri" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floatlands (experimental)" -msgstr "Yüzenkara seviyesi" +msgstr "Yüzenkaralar (deneysel)" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -302,28 +292,27 @@ msgstr "Oyun" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "Fraktal olmayan arazi üret: Okyanuslar ve yeraltı" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Tepeler" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Humid rivers" -msgstr "Video sürücüsü" +msgstr "Nemli nehirler" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Nehirler etrafındaki nemi artırır" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Göller" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" -msgstr "" +msgstr "Düşük nem ve yüksek ısı, sığ ve kuru nehirler oluşturur" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -334,22 +323,20 @@ msgid "Mapgen flags" msgstr "Mapgen bayrakları" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mapgen-specific flags" -msgstr "Mapgen V5'e özgü bayraklar" +msgstr "Mapgen'e özgü bayraklar" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mountains" -msgstr "Dağ gürültüsü" +msgstr "Dağlar" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "Çamur akışı" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "Tüneller ve mağaralar ağı" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -357,20 +344,19 @@ msgstr "Seçilen oyun yok" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "Yükseklikle ısıyı azaltır" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "Yükseklik ile nemi azaltır" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Rivers" -msgstr "Nehir boyutu" +msgstr "Nehirler" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "Deniz seviyesi nehirleri" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -379,52 +365,51 @@ msgstr "Tohum" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "Biyomlar arası yumuşak geçiş" #: builtin/mainmenu/dlg_create_world.lua msgid "" "Structures appearing on the terrain (no effect on trees and jungle grass " "created by v6)" msgstr "" +"Arazide görülen yapılar (v6 ile oluşturulan ağaçlar ve jangıl çimi üzerinde " +"etkisizdir)" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" -msgstr "" +msgstr "Arazide görülen yapılar, genellikle ağaçlar ve bitkiler" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "Ilıman, Çöl" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "Ilıman, Çöl, Jangıl" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "Ilıman, Çöl, Jangıl, Tundra, Tayga" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Terrain surface erosion" -msgstr "Arazi taban gürültüsü" +msgstr "Arazi yüzey erozyonu" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "Ağaçlar ve jangıl çimi" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Vary river depth" -msgstr "Nehir derinliği" +msgstr "Nehir derinliğini değiştir" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "Yerin derinliklerinde çok büyük oyuklar" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Warning: The Development Test is meant for developers." -msgstr "Uyarı : Minimal geliştirici testi geliştiriciler içindir." +msgstr "Uyarı : Geliştirici testi geliştiriciler içindir." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -737,7 +722,7 @@ msgstr "Sunucu Barındır" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "ContentDB'den oyunlar yükle" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" @@ -1396,11 +1381,11 @@ msgstr "Ses kısık" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "Ses sistemi devre dışı" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "" +msgstr "Bu inşada ses sistemi desteklenmiyor" #: src/client/game.cpp msgid "Sound unmuted" @@ -2039,9 +2024,8 @@ msgid "3D mode" msgstr "3D kipi" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode parallax strength" -msgstr "Normal eşleme gücü" +msgstr "3D kipi paralaks gücü" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." @@ -2062,6 +2046,10 @@ msgid "" "to be adjusted, as floatland tapering functions best when this noise has\n" "a value range of approximately -2.0 to 2.0." msgstr "" +"Yüzenkaraların yapısını tanımlayan 3D gürültü.\n" +"Öntanımlıdan değiştirildiğinde, 'scale' (öntanımlı 0.7) gürültüsünün\n" +"ayarlanması gerekebilir. Gürültü yaklaşık -2.0 ve 2.0 aralığındayken\n" +"yüzenkara koniklik fonksiyonları en iyidir." #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." @@ -2126,9 +2114,8 @@ msgid "ABM interval" msgstr "ABM aralığı" #: src/settings_translation_file.cpp -#, fuzzy msgid "Absolute limit of queued blocks to emerge" -msgstr "Emerge sıralarının mutlak sınırı" +msgstr "Emerge için sıralanmış blokların mutlak sınırı" #: src/settings_translation_file.cpp msgid "Acceleration in air" @@ -2185,6 +2172,11 @@ msgid "" "Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" "to be sure) creates a solid floatland layer." msgstr "" +"Yüzenkara katmanının yoğunluğunu ayarlar\n" +"Yoğunluğu artırmak için değeri artırın. Pozitif ve negatif olabilir.\n" +"Değer = 0.0: hacmin %50'si yüzenkaradır\n" +"Değer = 2.0 ('mgv7_np_floatland' de daha yüksek olabilir, emin olmak\n" +"için her zaman test edin) katı yüzenkara katmanı yaratır." #: src/settings_translation_file.cpp msgid "Advanced" @@ -2479,18 +2471,16 @@ msgstr "" "Küçük ekranlar için gerekli olabilir." #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat font size" -msgstr "Yazı tipi boyutu" +msgstr "Sohbet yazı tipi boyutu" #: src/settings_translation_file.cpp msgid "Chat key" msgstr "Sohbet tuşu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat log level" -msgstr "Hata ayıklama günlük düzeyi" +msgstr "Sohbet günlük düzeyi" #: src/settings_translation_file.cpp msgid "Chat message count limit" @@ -2782,9 +2772,8 @@ msgid "Default report format" msgstr "Öntanımlı rapor biçimi" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default stack size" -msgstr "Öntanımlı oyun" +msgstr "Öntanımlı yığın boyutu" #: src/settings_translation_file.cpp msgid "" @@ -3159,6 +3148,13 @@ msgid "" "Values < 1.0 (for example 0.25) create a more defined surface level with\n" "flatter lowlands, suitable for a solid floatland layer." msgstr "" +"Yüzenkara konikliğinin eksponenti. Koniklik davranışını değiştirir.\n" +"Değer = 1.0 düzgün, doğrusal bir koniklik oluşturur.\n" +"Değerler > 1.0, öntanımlı ayrılmış yüzenkaralar için uygun pürüzsüz bir\n" +"koniklik oluşturur.\n" +"Değerler <1.0 (örneğin 0.25) Daha düz aşağı karalarla daha tanımlı bir " +"yüzey\n" +"seviyesi oluşturur: katı bir yüzenkara katmanı için uygundur." #: src/settings_translation_file.cpp msgid "FPS in pause menu" @@ -3280,39 +3276,32 @@ msgid "Fixed virtual joystick" msgstr "Sabit sanal joystick" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland density" -msgstr "Yüzenkara dağ yoğunluğu" +msgstr "Yüzenkara yoğunluğu" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland maximum Y" -msgstr "Zindan maksimum Y" +msgstr "Yüzenkara maksimum Y" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland minimum Y" -msgstr "Zindan minimum Y" +msgstr "Yüzenkara minimum Y" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland noise" -msgstr "Yüzenkara taban gürültüsü" +msgstr "Yüzenkara gürültüsü" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland taper exponent" -msgstr "Yüzenkara dağ eksponenti" +msgstr "Yüzenkara koniklik eksponenti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland tapering distance" -msgstr "Yüzenkara taban gürültüsü" +msgstr "Yüzenkara koniklik uzaklığı" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland water level" -msgstr "Yüzenkara seviyesi" +msgstr "Yüzenkara su seviyesi" #: src/settings_translation_file.cpp msgid "Fly key" @@ -3371,6 +3360,9 @@ msgid "" "Font size of the recent chat text and chat prompt in point (pt).\n" "Value 0 will use the default font size." msgstr "" +"Son sohbet metninin ve sohbet isteminin nokta(pt) cinsinden yazı tipi boyutu." +"\n" +"0 değer öntanımlı yazı tipi boyutunu kullanır." #: src/settings_translation_file.cpp msgid "" @@ -5071,9 +5063,8 @@ msgid "Lower Y limit of dungeons." msgstr "Zindanların alt Y sınırı." #: src/settings_translation_file.cpp -#, fuzzy msgid "Lower Y limit of floatlands." -msgstr "Zindanların alt Y sınırı." +msgstr "Yüzenkaraların alt Y sınırı." #: src/settings_translation_file.cpp msgid "Main menu script" @@ -5326,22 +5317,20 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Yükleme için sıraya alınabilecek maksimum blok sayısı." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "This limit is enforced per player." msgstr "" "Üretilmesi için sıralanacak maksimum blok sayısı.\n" -"Uygun miktarın kendiliğinden seçilmesi için boş olarak ayarlayın." +"Bu sınır her oyuncu için zorunlu kılınır." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "This limit is enforced per player." msgstr "" "Bir dosyadan yüklenmesi için sıraya koyulacak maksimum blok sayısı.\n" -"Uygun miktarın kendiliğinden seçilmesi için boş olarak ayarlayın." +"Bu sınır her oyuncu için zorunlu kılınır." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5438,7 +5427,7 @@ msgstr "Seçili nesneyi vurgulamak için kullanılan yöntem." #: src/settings_translation_file.cpp msgid "Minimal level of logging to be written to chat." -msgstr "" +msgstr "Sohbete yazılacak en az günlük düzeyi." #: src/settings_translation_file.cpp msgid "Minimap" @@ -5674,7 +5663,7 @@ msgid "" "formspec is\n" "open." msgstr "" -"Pencere odağı kaybolduğunda duraklat menüsünü aç. Bir formspec açıksa " +"Pencere odağı kaybolduğunda duraklat menüsünü aç. Bir formspec açıksa\n" "duraklamaz." #: src/settings_translation_file.cpp @@ -5724,6 +5713,8 @@ msgid "" "Path to save screenshots at. Can be an absolute or relative path.\n" "The folder will be created if it doesn't already exist." msgstr "" +"Ekran görüntülerini kaydetme konumu. Mutlak veya göreli bir konum olabilir.\n" +"Klasör henüz yoksa oluşturulur." #: src/settings_translation_file.cpp msgid "" @@ -5767,12 +5758,11 @@ msgstr "Pencere odağı kaybolunca duraklat" #: src/settings_translation_file.cpp msgid "Per-player limit of queued blocks load from disk" -msgstr "" +msgstr "Diskten yüklenen sıralanmış blokların oyuncu başına sınırı" #: src/settings_translation_file.cpp -#, fuzzy msgid "Per-player limit of queued blocks to generate" -msgstr "Üretilecek emerge sıralarının sınırı" +msgstr "Üretilecek sıralanmış blokların, oyuncu başına sınırı" #: src/settings_translation_file.cpp msgid "Physics" @@ -5854,7 +5844,7 @@ msgstr "Profilleme" #: src/settings_translation_file.cpp msgid "Prometheus listener address" -msgstr "" +msgstr "Prometheus dinleyici adresi" #: src/settings_translation_file.cpp msgid "" @@ -5863,6 +5853,10 @@ msgid "" "enable metrics listener for Prometheus on that address.\n" "Metrics can be fetch on http://127.0.0.1:30000/metrics" msgstr "" +"Prometheus dinleyici adresi.\n" +"Minetest ENABLE_PROMETHEUS seçeneği etkin olarak derlenmişse,\n" +"bu adreste Prometheus için metrik dinleyicisini etkinleştirin.\n" +"Metrikler http://127.0.0.1:30000/metrics adresinden alınabilir" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." @@ -6382,6 +6376,9 @@ msgid "" "Note that mods or games may explicitly set a stack for certain (or all) " "items." msgstr "" +"Nodların, ögelerin ve araçların öntanımlı yığın boyutunu belirtir.\n" +"Modların veya oyunların belirli (veya tüm) ögeler için açıkça bir yığın " +"ayarlayabileceğini unutmayın." #: src/settings_translation_file.cpp msgid "" @@ -6410,9 +6407,8 @@ msgid "Step mountain spread noise" msgstr "Step dağ yayılma gürültüsü" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of 3D mode parallax." -msgstr "Paralaks gücü." +msgstr "3D kipi paralaksın gücü." #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." @@ -6449,6 +6445,18 @@ msgid "" "server-intensive extreme water flow and to avoid vast flooding of the\n" "world surface below." msgstr "" +"Katı yüzenkara katmanına yerleştirilmiş isteğe bağlı suyun yüzey seviyesi.\n" +"Su öntanımlı olarak devre dışıdır ve yalnızca bu değer,\n" +"'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (üst koniklik başlangıcı)\n" +"üstünde ayarlandığında yerleştirilir.\n" +"***UYARI, DÜNYA VE SUNUCU PERFORMANSI İÇİN POTANSİYEL TEHLİKE***:\n" +"Su yerleşimi etkinleştirilirken, sunucuyu yoracak aşırı su akışını ve " +"aşağıdaki\n" +"dünya yüzeyine büyük taşkınları önlemek için, yüzenkaralar katı bir katman\n" +"olması için, 'mgv7_floatland_density' 2.0'a (veya 'mgv7_np_floatland' e " +"bağlı\n" +"olarak başka zorunlu değere) ayarlanarak\n" +"yapılandırılmalı ve test edilmelidir." #: src/settings_translation_file.cpp msgid "Synchronous SQLite" @@ -6581,7 +6589,6 @@ msgstr "" "komutuna bakın." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6596,7 +6603,7 @@ msgstr "" "yarıçapı, harita blokları (16 nod) cinsinden.\n" "Etkin bloklarda neseneler yüklenir ve ABMler çalışır.\n" "Bu ayrıca etkin nesnelerin (moblar) korunacağı minimum uzaklıktır.\n" -"Bu active_object_range ile birlikte ayarlanmalıdır." +"Bu active_object_send_range_blocks ile birlikte ayarlanmalıdır." #: src/settings_translation_file.cpp msgid "" @@ -6674,7 +6681,8 @@ msgid "" "'altitude_dry' is enabled." msgstr "" "'altitude_chill' etkinse, ısının 20 azalacağı dikey uzaklık.\n" -"Ayrıca, 'altitude_dry' etkinse, nemin 10 azalacağı dikey uzaklık." +"Ayrıca, 'altitude_dry' etkinse, nemin 10 azalacağı dikey\n" +"uzaklık." #: src/settings_translation_file.cpp msgid "Third of 4 2D noises that together define hill/mountain range height." @@ -6789,9 +6797,8 @@ msgid "Upper Y limit of dungeons." msgstr "Zindanların üst Y sınırı." #: src/settings_translation_file.cpp -#, fuzzy msgid "Upper Y limit of floatlands." -msgstr "Zindanların üst Y sınırı." +msgstr "Yüzenkaraların üst Y sınırı." #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." @@ -7187,6 +7194,10 @@ msgid "" "For a solid floatland layer, this controls the height of hills/mountains.\n" "Must be less than or equal to half the distance between the Y limits." msgstr "" +"Yüzenkaraların tam yoğunluktan hiçliğe konikleştiği Y-uzaklığı.\n" +"Konikleşme Y sınırından bu uzaklıkta başlar.\n" +"Katı bir yüzenkara katmanı için tepelerin/dağların yüksekliğini denetler.\n" +"Y sınırları arasındaki uzaklığın yarısına eşit veya az olmalıdır." #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." From 6e12846ad86b2361e5829eeed6da5cff7fb5162c Mon Sep 17 00:00:00 2001 From: "Yaya - Nurul Azeera Hidayah @ Muhammad Nur Hidayat Yasuyoshi" Date: Sat, 13 Jun 2020 23:29:48 +0000 Subject: [PATCH 367/424] Translated using Weblate (Malay) Currently translated at 100.0% (1350 of 1350 strings) --- po/ms/minetest.po | 502 ++++++++++++++++++++++++---------------------- 1 file changed, 261 insertions(+), 241 deletions(-) diff --git a/po/ms/minetest.po b/po/ms/minetest.po index 9eba67cfd..fb3989a3f 100644 --- a/po/ms/minetest.po +++ b/po/ms/minetest.po @@ -3,8 +3,9 @@ msgstr "" "Project-Id-Version: Malay (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-04-22 04:11+0000\n" -"Last-Translator: Muhammad Nur Hidayat Yasuyoshi \n" +"PO-Revision-Date: 2020-07-08 20:47+0000\n" +"Last-Translator: Yaya - Nurul Azeera Hidayah @ Muhammad Nur Hidayat " +"Yasuyoshi \n" "Language-Team: Malay \n" "Language: ms\n" @@ -12,7 +13,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.2-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -24,7 +25,7 @@ msgstr "Anda telah meninggal" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "OK" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -116,7 +117,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Cari Mods Lain" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -169,12 +170,11 @@ msgstr "Kembali ke Menu Utama" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "ContentDB tidak tersedia apabila Minetest dikompil tanpa cURL" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Downloading..." -msgstr "Sedang memuatkan..." +msgstr "Memuat turun..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" @@ -221,7 +221,7 @@ msgstr "Kemas kini" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "Lihat" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -229,45 +229,39 @@ msgstr "Dunia bernama \"$1\" telah wujud" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "Rupa bumi tambahan" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" msgstr "Kedinginan altitud" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Altitude dry" -msgstr "Kedinginan altitud" +msgstr "Kekeringan altitud" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biome blending" -msgstr "Hingar biom" +msgstr "Penyebatian biom" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biomes" -msgstr "Hingar biom" +msgstr "Biom" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caverns" -msgstr "Hingar gua" +msgstr "Gua besar" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caves" -msgstr "Oktaf" +msgstr "Gua" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "Cipta" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Decorations" -msgstr "Lelaran" +msgstr "Hiasan" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" @@ -278,23 +272,20 @@ msgid "Download one from minetest.net" msgstr "Muat turun satu dari minetest.net" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Dungeons" -msgstr "Hingar kurungan bawah tanah" +msgstr "Kurungan bawah tanah" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "Rupa bumi rata" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floating landmasses in the sky" -msgstr "Ketumpatan gunung tanah terapung" +msgstr "Jisim bumi terapung atas langit" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floatlands (experimental)" -msgstr "Aras tanah terapung" +msgstr "Tanah terapung (dalam ujikaji)" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -302,28 +293,27 @@ msgstr "Permainan" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "Jana rupa bumi bukan-fraktal: Lautan dan bawah tanah" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Bukit" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Humid rivers" -msgstr "Pemacu video" +msgstr "Sungai lembap" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Tingkatkan kelembapan sekitar sungai" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Tasik" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" -msgstr "" +msgstr "Kelembapan rendah dan haba tinggi menyebabkan sungai cetek atau kering" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -334,22 +324,20 @@ msgid "Mapgen flags" msgstr "Bendera janapeta" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mapgen-specific flags" -msgstr "Bendera khusus Janapeta V5" +msgstr "Bendera khusus Janapeta" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mountains" -msgstr "Hingar gunung" +msgstr "Gunung" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "Aliran lumpur" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "Jaringan terowong dan gua" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -357,20 +345,19 @@ msgstr "Tiada permainan dipilih" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "Kurangkan haba mengikut altitud" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "Kurangkan kelembapan mengikut altitud" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Rivers" -msgstr "Saiz sungai" +msgstr "Sungai" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "Sungai aras laut" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -379,53 +366,51 @@ msgstr "Benih" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "Peralihan lembut di antara biom" #: builtin/mainmenu/dlg_create_world.lua msgid "" "Structures appearing on the terrain (no effect on trees and jungle grass " "created by v6)" msgstr "" +"Struktur yang muncul atas rupa bumi (tiada kesan pada pokok dan rumput hutan " +"dicipta oleh v6)" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" -msgstr "" +msgstr "Struktur yang muncul atas rupa bumi, biasanya pokok dan tumbuhan" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "Iklim Sederhana, Gurun" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "Iklim Sederhana, Gurun, Hutan" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "Iklim Sederhana, Gurun, Hutan, Tundra, Taiga" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Terrain surface erosion" -msgstr "Hingar asas rupa bumi" +msgstr "Hakisan permukaan rupa bumi" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "Pokok dan rumput hutan" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Vary river depth" -msgstr "Kedalaman sungai" +msgstr "Kedalaman sungai berbagai" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "Gua gergasi yang sangat mendalam bawah tanah" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Warning: The Development Test is meant for developers." -msgstr "" -"Amaran: Percubaan pembangunan minimum hanyalah untuk kegunaan pembangun." +msgstr "Amaran: The Development Test hanyalah untuk kegunaan pembangun." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -463,7 +448,7 @@ msgstr "Terima" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "Menamakan semula pek mods:" +msgstr "Namakan semula pek mods:" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" @@ -622,7 +607,7 @@ msgstr "Pasang Mods: tidak jumpa nama folder yang sesuai untuk pek mods $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" -msgstr "Pasang Mods: Jenis fail \"$1\" tidak disokong atau arkib rosak" +msgstr "Pasang: Jenis fail \"$1\" tidak disokong atau arkib rosak" #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" @@ -738,7 +723,7 @@ msgstr "Hos Pelayan" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "Pasangkan permainan daripada ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" @@ -1044,7 +1029,7 @@ msgstr "Nama pemain terlalu panjang." #: src/client/clientlauncher.cpp msgid "Please choose a name!" -msgstr "Sila masukkan nama!" +msgstr "Sila pilih suatu nama!" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " @@ -1400,11 +1385,11 @@ msgstr "Bunyi dibisukan" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "Sistem bunyi dilumpuhkan" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "" +msgstr "Sistem bunyi tidak disokong di binaan ini" #: src/client/game.cpp msgid "Sound unmuted" @@ -1418,12 +1403,12 @@ msgstr "Jarak pandang ditukar ke %d" #: src/client/game.cpp #, c-format msgid "Viewing range is at maximum: %d" -msgstr "Jarak pandang berada di tahap maksimum %d" +msgstr "Jarak pandang berada di tahap maksimum: %d" #: src/client/game.cpp #, c-format msgid "Viewing range is at minimum: %d" -msgstr "Jarak pandang pada tahap minimum: %d" +msgstr "Jarak pandang berada di tahap minimum: %d" #: src/client/game.cpp #, c-format @@ -1452,11 +1437,11 @@ msgstr "Sembang ditunjukkan" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "Papar pandu disembunyikan" +msgstr "Papar pandu (HUD) disembunyikan" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "Papar pandu ditunjukkan" +msgstr "Papar pandu (HUD) ditunjukkan" #: src/client/gameui.cpp msgid "Profiler hidden" @@ -1570,67 +1555,67 @@ msgstr "Butang Tengah" #: src/client/keycode.cpp msgid "Num Lock" -msgstr "Num Lock" +msgstr "Kunci Angka" #: src/client/keycode.cpp msgid "Numpad *" -msgstr "Numpad *" +msgstr "Pad Angka *" #: src/client/keycode.cpp msgid "Numpad +" -msgstr "Numpad +" +msgstr "Pad Angka +" #: src/client/keycode.cpp msgid "Numpad -" -msgstr "Numpad -" +msgstr "Pad Angka -" #: src/client/keycode.cpp msgid "Numpad ." -msgstr "Numpad ." +msgstr "Pad Angka ." #: src/client/keycode.cpp msgid "Numpad /" -msgstr "Numpad /" +msgstr "Pad Angka /" #: src/client/keycode.cpp msgid "Numpad 0" -msgstr "Numpad 0" +msgstr "Pad Angka 0" #: src/client/keycode.cpp msgid "Numpad 1" -msgstr "Numpad 1" +msgstr "Pad Angka 1" #: src/client/keycode.cpp msgid "Numpad 2" -msgstr "Numpad 2" +msgstr "Pad Angka 2" #: src/client/keycode.cpp msgid "Numpad 3" -msgstr "Numpad 3" +msgstr "Pad Angka 3" #: src/client/keycode.cpp msgid "Numpad 4" -msgstr "Numpad 4" +msgstr "Pad Angka 4" #: src/client/keycode.cpp msgid "Numpad 5" -msgstr "Numpad 5" +msgstr "Pad Angka 5" #: src/client/keycode.cpp msgid "Numpad 6" -msgstr "Numpad 6" +msgstr "Pad Angka 6" #: src/client/keycode.cpp msgid "Numpad 7" -msgstr "Numpad 7" +msgstr "Pad Angka 7" #: src/client/keycode.cpp msgid "Numpad 8" -msgstr "Numpad 8" +msgstr "Pad Angka 8" #: src/client/keycode.cpp msgid "Numpad 9" -msgstr "Numpad 9" +msgstr "Pad Angka 9" #: src/client/keycode.cpp msgid "OEM Clear" @@ -1655,7 +1640,7 @@ msgstr "Mula Main" #. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" -msgstr "Cetak" +msgstr "Print Screen" #: src/client/keycode.cpp msgid "Return" @@ -1692,7 +1677,7 @@ msgstr "Scroll Lock" #. ~ Key name #: src/client/keycode.cpp msgid "Select" -msgstr "Pilih kekunci" +msgstr "Select" #: src/client/keycode.cpp msgid "Shift" @@ -1869,7 +1854,7 @@ msgstr "Istimewa" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" -msgstr "Togol Papar Pandu" +msgstr "Togol papar pandu (HUD)" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle chat log" @@ -1935,7 +1920,7 @@ msgstr "Kekuatan Bunyi: " #. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " -msgstr "Masuk " +msgstr "Masukkan " #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string which needs to contain the translation's @@ -2046,9 +2031,8 @@ msgid "3D mode" msgstr "Mod 3D" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode parallax strength" -msgstr "Kekuatan peta normal" +msgstr "Kekuatan paralaks mod 3D" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." @@ -2069,6 +2053,10 @@ msgid "" "to be adjusted, as floatland tapering functions best when this noise has\n" "a value range of approximately -2.0 to 2.0." msgstr "" +"Hingar 3D mentakrifkan struktur tanah terapung.\n" +"Jika diubah dari nilai asal, hingar skala 'scale' (asalnya 0.7) mungkin\n" +"perlu dilaraskan, kerana tirusan tanah terapung berfungsi dengan\n" +"terbaik apabila jarak nilai berada dalam lingkungan -2.0 ke 2.0." #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." @@ -2132,9 +2120,8 @@ msgid "ABM interval" msgstr "Selang masa ABM" #: src/settings_translation_file.cpp -#, fuzzy msgid "Absolute limit of queued blocks to emerge" -msgstr "Had mutlak baris gilir keluar" +msgstr "Had mutlak untuk blok dibarisgilirkan untuk timbul" #: src/settings_translation_file.cpp msgid "Acceleration in air" @@ -2191,6 +2178,12 @@ msgid "" "Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" "to be sure) creates a solid floatland layer." msgstr "" +"Melaraskan ketumpatan lapisan tanah terapung.\n" +"Tambah nilai untuk tambah ketumpatan. Boleh jadi positif atau negatif.\n" +"Nilai = 0.0: 50% daripada jilid merupakan tanah terapung.\n" +"Nilai = 2.0 mencipta lapisan tanah terapung yang pejal (boleh jadi lebih " +"tinggi\n" +"bergantung kepada tetapan 'mgv7_np_floatland', sentiasa cuba untuk pastikan)." #: src/settings_translation_file.cpp msgid "Advanced" @@ -2282,10 +2275,10 @@ msgid "" msgstr "" "Pada jarak ini, pelayan akan mengoptimumkan secara agresif blok yang mana\n" "akan dihantar kepada klien.\n" -"Nilai lebih kecil berkemungkinan besar boleh meningkatkan prestasi dengan\n" -"banyak, dengan mengorbankan glic penerjemahan tampak (sesetengah\n" -"blok tidak akan diterjemah di bawah air dan dalam gua, kadang-kadang\n" -"turut berlaku atas daratan).\n" +"Nilai lebih kecil berkemungkinan boleh meningkatkan prestasi dengan banyak,\n" +"dengan mengorbankan glic penerjemahan tampak (sesetengah blok tidak akan\n" +"diterjemah di bawah air dan dalam gua, kekadang turut berlaku atas daratan)." +"\n" "Menetapkan nilai ini lebih bear daripada nilai max_block_send_distance akan\n" "melumpuhkan pengoptimunan ini.\n" "Nyatakan dalam unit blokpeta (16 nod)." @@ -2380,7 +2373,7 @@ msgstr "Laluan fon monospace tebal" #: src/settings_translation_file.cpp msgid "Build inside player" -msgstr "Bina dalam sistem pemain" +msgstr "Bina dalam pemain" #: src/settings_translation_file.cpp msgid "Builtin" @@ -2484,18 +2477,16 @@ msgstr "" "Mungkin diperlukan untuk skrin yang lebih kecil." #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat font size" -msgstr "Saiz fon" +msgstr "Saiz fon sembang" #: src/settings_translation_file.cpp msgid "Chat key" msgstr "Kekunci sembang" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat log level" -msgstr "Tahap log nyahpepijat" +msgstr "Tahap log sembang" #: src/settings_translation_file.cpp msgid "Chat message count limit" @@ -2614,9 +2605,10 @@ msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" -"Senarai mods boleh dipercayai yang dibenarkan mengakses fungsi tidak\n" -"selamat walaupun ketika keselamatan mods diaktifkan\n" -"(melalui request_insecure_environment())." +"Senarai dipisahkan dengan koma untuk mods boleh dipercayai yang dibenarkan " +"mengakses\n" +"fungsi tidak selamat walaupun ketika keselamatan mods diaktifkan (melalui " +"request_insecure_environment())." #: src/settings_translation_file.cpp msgid "Command key" @@ -2790,9 +2782,8 @@ msgid "Default report format" msgstr "Format laporan lalai" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default stack size" -msgstr "Permainan lalai" +msgstr "Saiz tindanan lalai" #: src/settings_translation_file.cpp msgid "" @@ -2870,9 +2861,10 @@ msgid "" "Delay between mesh updates on the client in ms. Increasing this will slow\n" "down the rate of mesh updates, thus reducing jitter on slower clients." msgstr "" -"Lengah masa di antara kemaskini jejaring dekat klien dalam unit ms.\n" -"Menaikkan nilai ini akan mengurangkan kadar kemaskini jejaring, lalu\n" -"mengurangkan ketaran dekat klien yang lebih perlahan." +"Lengah masa di antara kemaskini jejaring dekat klien dalam unit ms. " +"Menaikkan nilai ini akan\n" +"mengurangkan kadar kemaskini jejaring, lalu mengurangkan ketaran dekat klien " +"yang lebih perlahan." #: src/settings_translation_file.cpp msgid "Delay in sending blocks after building" @@ -3039,9 +3031,9 @@ msgid "" msgstr "" "Bolehkan tetapan untuk melarang klien lama daripada menyambung.\n" "Klien lama masih sesuai digunakan jika mereka tidak runtuh (crash) apabila " -"cuba\n" -"untuk menyambung ke pelayan baharu, tetapi mereka mungkin tidak mampu\n" -"menyokong semua sifat baharu yang anda sangkakan." +"cuba untuk menyambung ke pelayan baharu,\n" +"tetapi mereka mungkin tidak mampu menyokong semua sifat baharu yang anda " +"sangkakan." #: src/settings_translation_file.cpp msgid "" @@ -3171,6 +3163,12 @@ msgid "" "Values < 1.0 (for example 0.25) create a more defined surface level with\n" "flatter lowlands, suitable for a solid floatland layer." msgstr "" +"Eksponen penirusan tanah terapung. Mengubah tingkah laku tirusan.\n" +"Nilai = 1.0 mencipta tirusan sekata, lelurus.\n" +"Nilai > 1.0 mencipta tirusan lembut sesuai untuk tanah terapung asal\n" +"yang terpisah antara satu sama lain.\n" +"Nilai < 1.0 (contohnya 0.25) mencipta aras permukaan lebih jelas dengan\n" +"bahagian tanah yang lebih rata, sesuai untuk lapisan tanah terapung pejal." #: src/settings_translation_file.cpp msgid "FPS in pause menu" @@ -3226,7 +3224,8 @@ msgid "" "This requires the \"fast\" privilege on the server." msgstr "" "Bergerak pantas (dengan kekunci \"istimewa\").\n" -"Ini memerlukan keistimewaan \"pergerakan pantas\" dalam pelayan." +"Ini memerlukan keistimewaan \"pergerakan pantas\" dalam pelayan permainan " +"tersebut." #: src/settings_translation_file.cpp msgid "Field of view" @@ -3265,11 +3264,13 @@ msgid "" "light edge to transparent textures. Apply this filter to clean that up\n" "at texture load time." msgstr "" -"Tekstur yang ditapis boleh sebatikan nilai RGB dengan jiran yang\n" -"lut sinar sepenuhnya, yang mana pengoptimum PNG sering abaikan,\n" -"kadangkala menyebabkan sisi gelap atau terang pada tekstur lut sinar.\n" -"Guna penapisan ini untuk membersihkan tekstur tersebut ketika ia\n" -"sedang dimuatkan." +"Tekstur yang ditapis boleh sebatikan nilai RGB dengan jiran yang lut sinar " +"sepenuhnya,\n" +"yang mana pengoptimum PNG sering abaikan, kadangkala menyebabkan sisi gelap " +"atau\n" +"terang pada tekstur lut sinar. Guna penapisan ini untuk membersihkan tekstur " +"tersebut\n" +"ketika ia sedang dimuatkan." #: src/settings_translation_file.cpp msgid "Filtering" @@ -3293,39 +3294,32 @@ msgid "Fixed virtual joystick" msgstr "Kayu bedik maya tetap" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland density" -msgstr "Ketumpatan gunung tanah terapung" +msgstr "Ketumpatan tanah terapung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland maximum Y" -msgstr "Y maksimum kurungan bawah tanah" +msgstr "Y maksimum tanah terapung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland minimum Y" -msgstr "Y minimum kurungan bawah tanah" +msgstr "Y minimum tanah terapung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland noise" -msgstr "Hingar asas tanah terapung" +msgstr "Hingar tanah terapung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland taper exponent" -msgstr "Eksponen gunung tanah terapung" +msgstr "Eksponen tirusan tanah terapung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland tapering distance" -msgstr "Hingar asas tanah terapung" +msgstr "Jarak tirusan tanah terapung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland water level" -msgstr "Aras tanah terapung" +msgstr "Aras air tanah terapung" #: src/settings_translation_file.cpp msgid "Fly key" @@ -3384,6 +3378,8 @@ msgid "" "Font size of the recent chat text and chat prompt in point (pt).\n" "Value 0 will use the default font size." msgstr "" +"Saiz fon tulisan sembang baru-baru ini dan prom dalam unit titik (pt).\n" +"Nilai 0 akan menggunakan saiz fon lalai." #: src/settings_translation_file.cpp msgid "" @@ -3568,11 +3564,11 @@ msgstr "Mods HTTP" #: src/settings_translation_file.cpp msgid "HUD scale factor" -msgstr "Faktor skala HUD" +msgstr "Faktor skala papar pandu (HUD)" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "Kekunci menogol HUD" +msgstr "Kekunci menogol papar pandu (HUD)" #: src/settings_translation_file.cpp msgid "" @@ -3691,131 +3687,131 @@ msgstr "Kekunci item sebelumnya dalam hotbar" #: src/settings_translation_file.cpp msgid "Hotbar slot 1 key" -msgstr "Kekunci slot 1 hotbar" +msgstr "Kekunci slot hotbar 1" #: src/settings_translation_file.cpp msgid "Hotbar slot 10 key" -msgstr "Kekunci slot 10 hotbar" +msgstr "Kekunci slot hotbar 10" #: src/settings_translation_file.cpp msgid "Hotbar slot 11 key" -msgstr "Kekunci slot 11 hotbar" +msgstr "Kekunci slot hotbar 11" #: src/settings_translation_file.cpp msgid "Hotbar slot 12 key" -msgstr "Kekunci slot 12 hotbar" +msgstr "Kekunci slot hotbar 12" #: src/settings_translation_file.cpp msgid "Hotbar slot 13 key" -msgstr "Kekunci slot 13 hotbar" +msgstr "Kekunci slot hotbar 13" #: src/settings_translation_file.cpp msgid "Hotbar slot 14 key" -msgstr "Kekunci slot 14 hotbar" +msgstr "Kekunci slot hotbar 14" #: src/settings_translation_file.cpp msgid "Hotbar slot 15 key" -msgstr "Kekunci slot 15 hotbar" +msgstr "Kekunci slot hotbar 15" #: src/settings_translation_file.cpp msgid "Hotbar slot 16 key" -msgstr "Kekunci slot 16 hotbar" +msgstr "Kekunci slot hotbar 16" #: src/settings_translation_file.cpp msgid "Hotbar slot 17 key" -msgstr "Kekunci slot 17 hotbar" +msgstr "Kekunci slot hotbar 17" #: src/settings_translation_file.cpp msgid "Hotbar slot 18 key" -msgstr "Kekunci slot 18 hotbar" +msgstr "Kekunci slot hotbar 18" #: src/settings_translation_file.cpp msgid "Hotbar slot 19 key" -msgstr "Kekunci slot 19 hotbar" +msgstr "Kekunci slot hotbar 19" #: src/settings_translation_file.cpp msgid "Hotbar slot 2 key" -msgstr "Kekunci slot 2 hotbar" +msgstr "Kekunci slot hotbar 2" #: src/settings_translation_file.cpp msgid "Hotbar slot 20 key" -msgstr "Kekunci slot 20 hotbar" +msgstr "Kekunci slot hotbar 20" #: src/settings_translation_file.cpp msgid "Hotbar slot 21 key" -msgstr "Kekunci slot 21 hotbar" +msgstr "Kekunci slot hotbar 21" #: src/settings_translation_file.cpp msgid "Hotbar slot 22 key" -msgstr "Kekunci slot 22 hotbar" +msgstr "Kekunci slot hotbar 22" #: src/settings_translation_file.cpp msgid "Hotbar slot 23 key" -msgstr "Kekunci slot 23 hotbar" +msgstr "Kekunci slot hotbar 23" #: src/settings_translation_file.cpp msgid "Hotbar slot 24 key" -msgstr "Kekunci slot 24 hotbar" +msgstr "Kekunci slot hotbar 24" #: src/settings_translation_file.cpp msgid "Hotbar slot 25 key" -msgstr "Kekunci slot 25 hotbar" +msgstr "Kekunci slot hotbar 25" #: src/settings_translation_file.cpp msgid "Hotbar slot 26 key" -msgstr "Kekunci slot 26 hotbar" +msgstr "Kekunci slot hotbar 26" #: src/settings_translation_file.cpp msgid "Hotbar slot 27 key" -msgstr "Kekunci slot 27 hotbar" +msgstr "Kekunci slot hotbar 27" #: src/settings_translation_file.cpp msgid "Hotbar slot 28 key" -msgstr "Kekunci slot 28 hotbar" +msgstr "Kekunci slot hotbar 28" #: src/settings_translation_file.cpp msgid "Hotbar slot 29 key" -msgstr "Kekunci slot 29 hotbar" +msgstr "Kekunci slot hotbar 29" #: src/settings_translation_file.cpp msgid "Hotbar slot 3 key" -msgstr "Kekunci slot 3 hotbar" +msgstr "Kekunci slot hotbar 3" #: src/settings_translation_file.cpp msgid "Hotbar slot 30 key" -msgstr "Kekunci slot 30 hotbar" +msgstr "Kekunci slot hotbar 30" #: src/settings_translation_file.cpp msgid "Hotbar slot 31 key" -msgstr "Kekunci slot 31 hotbar" +msgstr "Kekunci slot hotbar 31" #: src/settings_translation_file.cpp msgid "Hotbar slot 32 key" -msgstr "Kekunci slot 32 hotbar" +msgstr "Kekunci slot hotbar 32" #: src/settings_translation_file.cpp msgid "Hotbar slot 4 key" -msgstr "Kekunci slot 4 hotbar" +msgstr "Kekunci slot hotbar 4" #: src/settings_translation_file.cpp msgid "Hotbar slot 5 key" -msgstr "Kekunci slot 5 hotbar" +msgstr "Kekunci slot hotbar 5" #: src/settings_translation_file.cpp msgid "Hotbar slot 6 key" -msgstr "Kekunci slot 6 hotbar" +msgstr "Kekunci slot hotbar 6" #: src/settings_translation_file.cpp msgid "Hotbar slot 7 key" -msgstr "Kekunci slot 7 hotbar" +msgstr "Kekunci slot hotbar 7" #: src/settings_translation_file.cpp msgid "Hotbar slot 8 key" -msgstr "Kekunci slot 8 hotbar" +msgstr "Kekunci slot hotbar 8" #: src/settings_translation_file.cpp msgid "Hotbar slot 9 key" -msgstr "Kekunci slot 9 hotbar" +msgstr "Kekunci slot hotbar 9" #: src/settings_translation_file.cpp msgid "How deep to make rivers." @@ -3869,9 +3865,9 @@ msgid "" "If FPS would go higher than this, limit it by sleeping\n" "to not waste CPU power for no benefit." msgstr "" -"Jika bingkai per saat (FPS) ingin naik lebih tinggi\n" -"daripada nilai ini, hadkan ia dengan tidurkannya supaya\n" -"tidak bazirkan kuasa CPU dengan sia-sia." +"Jika bingkai per saat (FPS) akan naik lebih tinggi daripada nilai ini, " +"hadkan ia dengan\n" +"tidurkannya supaya tidak bazirkan kuasa CPU dengan sia-sia." #: src/settings_translation_file.cpp msgid "" @@ -3957,7 +3953,7 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" -"Jika dibolehkan, anda boleh meletak blok di kedudukan berdiri (aras kaki + " +"Jika dibolehkan, anda boleh meletak blok di kedudukan berdiri (kaki + aras " "mata).\n" "Ini sangat berguna apabila bekerja dengan kotak nod di kawasan yang kecil." @@ -4713,6 +4709,8 @@ msgid "" "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" "Kekunci untuk menyelinap.\n" +"Juga digunakan untuk turun bawah ketika memanjat dan dalam air jika tetapan " +"aux1_descends dilumpuhkan.\n" "Lihat http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -5104,9 +5102,8 @@ msgid "Lower Y limit of dungeons." msgstr "Had Y bawah kurungan bawah tanah." #: src/settings_translation_file.cpp -#, fuzzy msgid "Lower Y limit of floatlands." -msgstr "Had Y bawah kurungan bawah tanah." +msgstr "Had Y bawah tanah terapung." #: src/settings_translation_file.cpp msgid "Main menu script" @@ -5191,7 +5188,6 @@ msgstr "" "automatik dan bendera 'jungles' diabaikan." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" "'ridges': Rivers.\n" @@ -5199,7 +5195,9 @@ msgid "" "'caverns': Giant caves deep underground." msgstr "" "Atribut penjanaan peta khusus untuk Janapeta v7.\n" -"'ridges' membolehkan sungai." +"'ridges': Sungai.\n" +"'floatlands': Jisim bumi tanah terapung di atmosfera.\n" +"'caverns': Gua gergasi yang mendalam bawah tanah." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5356,22 +5354,20 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Jumlah maksimum blok yang boleh dibaris gilirkan untuk dimuatkan." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "This limit is enforced per player." msgstr "" -"Jumlah maksimum blok baris gilir untuk dijana.\n" -"Tetapkan kepada kosong untuk memilih jumlah sesuai secara automatik." +"Jumlah maksimum blok untuk dibarisgilirkan untuk dijana.\n" +"Had ini dikuatkuasakan per pemain." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "This limit is enforced per player." msgstr "" -"Jumlah maksimum blok baris gilir untuk dimuatkan daripada fail.\n" -"Tetapkan kepada kosong untuk memilih jumlah sesuai secara automatik." +"Jumlah maksimum blok untuk dibarisgilirkan untuk dimuatkan daripada fail.\n" +"Had ini dikuatkuasakan per pemain." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5468,7 +5464,7 @@ msgstr "Kaedah yang digunakan untuk menonjolkan objek dipilih." #: src/settings_translation_file.cpp msgid "Minimal level of logging to be written to chat." -msgstr "" +msgstr "Tahap pengelogan minimum untuk ditulis ke sembang." #: src/settings_translation_file.cpp msgid "Minimap" @@ -5504,7 +5500,7 @@ msgstr "Saluran mods" #: src/settings_translation_file.cpp msgid "Modifies the size of the hudbar elements." -msgstr "Mengubah saiz elemen hudbar." +msgstr "Mengubah saiz elemen palang papar pandu (hudbar)." #: src/settings_translation_file.cpp msgid "Monospace font path" @@ -5642,7 +5638,6 @@ msgid "Number of emerge threads" msgstr "Jumlah jalur keluar" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of emerge threads to use.\n" "Value 0:\n" @@ -5656,19 +5651,19 @@ msgid "" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" "Jumlah jalur timbul untuk digunakan.\n" -"AMARAN: Ketika ini terdapat beberapa pepijat yang mungkin mengakibatkan\n" -"ranap apabila nilai 'num_emerge_threads' lebih tinggi daripada 1. Sehingga\n" -"amaran ini dibuang, adalah digalakkan untuk kekalkan nilai asalnya '1'.\n" "Nilai 0:\n" "- Pemilihan automatik. Jumlah jalur timbul akan dikira berdasarkan\n" "- 'jumlah pemproses - 2', dengan had minimum 1.\n" "Sebarang nilai lain:\n" "- Menetapkan jumlah jalur timbul, dengan had minimum 1.\n" -"AMARAN: Menaikkan jumlah jalur timbul meningkatkan kelajuan penjanaan\n" -"peta enjin, tetapi ia boleh memberi kesan buruk kepada prestasi permainan\n" -"dengan mengganggu proses-proses lain, terutamanya dalam mod pemain\n" -"perseorangan dan/atau apabila menjalankan kod Lua dalam fungsi\n" -"'on_generated'. Untuk kebanyakan pengguna, tetapan optimum ialah '1'." +"AMARAN: Menaikkan jumlah jalur timbul meningkatkan kelajuan penjanaan peta " +"enjin, tetapi\n" +"ia boleh memberi kesan buruk kepada prestasi permainan dengan mengganggu " +"proses-proses\n" +"lain, terutamanya dalam mod pemain perseorangan dan/atau apabila menjalankan " +"kod Lua\n" +"dalam fungsi 'on_generated'. Untuk kebanyakan pengguna, tetapan optimum " +"ialah '1'." #: src/settings_translation_file.cpp msgid "" @@ -5709,8 +5704,8 @@ msgid "" "formspec is\n" "open." msgstr "" -"Buka menu jeda apabila fokus tetingkap hilang. Tidak jeda jika formspec " -"dibuka." +"Buka menu jeda apabila fokus tetingkap hilang.\n" +"Tidak jeda jika formspec dibuka." #: src/settings_translation_file.cpp msgid "Overall bias of parallax occlusion effect, usually scale/2." @@ -5761,6 +5756,8 @@ msgid "" "Path to save screenshots at. Can be an absolute or relative path.\n" "The folder will be created if it doesn't already exist." msgstr "" +"Laluan untuk simpan tangkapan layar. Boleh jadi laluan mutlak atau relatif.\n" +"Folder akan dicipta sekiranya ia belum wujud." #: src/settings_translation_file.cpp msgid "" @@ -5806,12 +5803,11 @@ msgstr "Jeda ketika hilang fokus tetingkap" #: src/settings_translation_file.cpp msgid "Per-player limit of queued blocks load from disk" -msgstr "" +msgstr "Had baris gilir pemuatan blok daripada cakera per pemain" #: src/settings_translation_file.cpp -#, fuzzy msgid "Per-player limit of queued blocks to generate" -msgstr "Had baris gilir keluar untuk dijana" +msgstr "Had baris gilir penjanaan blok per pemain" #: src/settings_translation_file.cpp msgid "Physics" @@ -5897,7 +5893,7 @@ msgstr "Pemprofilan" #: src/settings_translation_file.cpp msgid "Prometheus listener address" -msgstr "" +msgstr "Alamat pendengar Prometheus" #: src/settings_translation_file.cpp msgid "" @@ -5906,6 +5902,10 @@ msgid "" "enable metrics listener for Prometheus on that address.\n" "Metrics can be fetch on http://127.0.0.1:30000/metrics" msgstr "" +"Alamat pendengar Prometheus.\n" +"Jika minetest dikompil dengan tetapan ENABLE_PROMETHEUS dibolehkan,\n" +"membolehkan pendengar metrik untuk Prometheus pada alamat berkenaan.\n" +"Metrik boleh diambil di http://127.0.0.1:30000/metrics" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." @@ -6085,10 +6085,9 @@ msgid "" msgstr "" "Menyesuaikan GUI dengan nilai ditentukan oleh pengguna.\n" "Gunakan penapis antialias jiran terdekat untuk menyesuaikan GUI.\n" -"Ini membolehkan sisi tajam dilembutkan, dan sebatikan piksel\n" -"apabila menyesuaiturunkan, namun ia akan mengkaburkan\n" -"sesetengah piksel di sisi apabila imej disesuaikan dengan saiz\n" -"bukan integer." +"Ini membolehkan sisi tajam dilembutkan, dan sebatikan piksel apabila\n" +"menyesuaiturunkan, namun ia akan mengaburkan sesetengah piksel\n" +"di sisi apabila imej disesuaikan dengan saiz bukan integer." #: src/settings_translation_file.cpp msgid "Screen height" @@ -6324,14 +6323,12 @@ msgid "" "Altering this value is for special usage, leaving it unchanged is\n" "recommended." msgstr "" -"Saiz potongan peta dijana oleh janapeta, dinyatakan dalam blokpeta (16 " -"nod).\n" -"AMARAN!: Tiada manfaat, dan terdapatnya bahaya, jika menaikkan nilai ini di " -"atas 5.\n" -"Mengurangkan nilai ini meningkatkan ketumpatan gua dan kurungan bawah " -"tanah.\n" -"Mengubah nilai ini untuk kegunaan istimewa, lebih baik biarkan ia tidak " -"berubah." +"Saiz potongan peta dijana oleh janapeta, dinyatakan dalam unit\n" +"blokpeta (16 nod). AMARAN!: Tiada manfaat, dan terdapatnya\n" +"bahaya, jika menaikkan nilai ini di atas 5. Mengurangkan nilai ini\n" +"meningkatkan ketumpatan gua dan kurungan bawah tanah.\n" +"Mengubah nilai ini adalah untuk kegunaan istimewa, lebih baik\n" +"biarkan ia tidak berubah." #: src/settings_translation_file.cpp msgid "" @@ -6423,9 +6420,8 @@ msgid "" "Files that are not present will be fetched the usual way." msgstr "" "Menetapkan URL dari mana klien mengambil media, menggantikan UDP.\n" -"$filename mestilah boleh diakses daripada $remote_media$filename\n" -"melalui cURL (sudah tentu, remote_media mesti berakhir dengan tanda\n" -"condong).\n" +"$filename mestilah boleh diakses daripada $remote_media$filename melalui\n" +"cURL (sudah tentu, remote_media mesti berakhir dengan tanda condong).\n" "Fail yang tidak wujud akan diambil dengan cara biasa." #: src/settings_translation_file.cpp @@ -6434,6 +6430,9 @@ msgid "" "Note that mods or games may explicitly set a stack for certain (or all) " "items." msgstr "" +"Menetapkan saiz tindanan lalai bagi nod, item dan alatan.\n" +"Ambil perhatian bahawa mods atau permainan boleh tetapkan secara khusus " +"tindanan untuk sesetengah (atau semua) item." #: src/settings_translation_file.cpp msgid "" @@ -6462,9 +6461,8 @@ msgid "Step mountain spread noise" msgstr "Hingar sebar gunung curam" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of 3D mode parallax." -msgstr "Kekuatan paralaks." +msgstr "Kekuatan paralaks mod 3D." #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." @@ -6501,6 +6499,23 @@ msgid "" "server-intensive extreme water flow and to avoid vast flooding of the\n" "world surface below." msgstr "" +"Aras permukaan untuk air pilihan yang boleh terletak atas lapisan tanah " +"terapung pejal.\n" +"Air dilumpuhkan secara lalai dan hanya akan diletakkan sekiranya nilai ini " +"ditetapkan\n" +"melebihi \"nilai Y maksimum tanah terapung 'mgv7_floatland_ymax' tolak nilai " +"tirusan\n" +"tanah terapung 'mgv7_floatland_taper' (iaitu permulaan tirusan atasan)\".\n" +"***AMARAN, WUJUD POTENSI BAHAYA KEPADA PRESTASI DUNIA DAN PELAYAN***:\n" +"Apabila membolehkan peletakan air, tanah terapung mestilah ditatarajahkan " +"dan dicuba dahulu\n" +"agar ia sentiasa menjadi lapisan pejal dengan menetapkan ketumpatan " +"'mgv7_floatland_density'\n" +"kepada 2.0 (atau nilai lain yang diperlukan bergantung kepada nilai " +"'mgv7_np_floatland'), untuk\n" +"mengelakkan aliran air keterlaluan yang intensif pelayan dan untuk " +"mengelakkan kebanjiran\n" +"besar-besaran air ke permukaan dunia di bawah tanah terapung tersebut." #: src/settings_translation_file.cpp msgid "Synchronous SQLite" @@ -6635,7 +6650,6 @@ msgstr "" "konfigurasi mods." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6645,12 +6659,12 @@ msgid "" "maintained.\n" "This should be configured together with active_object_send_range_blocks." msgstr "" -"Radius jilid blok di sekitar setiap pemain yang tertakluk kepada benda blok " -"aktif,\n" -"dinyatakan dalam blokpeta (16 nod).\n" +"Radius jilid blok di sekitar setiap pemain yang tertakluk kepada benda blok\n" +"aktif, dinyatakan dalam blokpeta (16 nod).\n" "Dalam blok aktif, objek dimuatkan dan ABM dijalankan.\n" "Ini juga jarak minimum di mana objek aktif (mob) dikekalkan.\n" -"Ini perlu ditetapkan bersama-sama jarak objek aktif (active_object_range)." +"Ini perlu ditetapkan bersama nilai blok jarak penghantaran objek aktif " +"(active_object_send_range_blocks)." #: src/settings_translation_file.cpp msgid "" @@ -6772,10 +6786,9 @@ msgid "" "node." msgstr "" "Untuk mengurangkan lembapnya tindak balas, pemindahan blok diperlahankan " -"apabila\n" -"pemain membina sesuatu. Tetapan ini menetapkan berapa lama ianya " -"diperlahankan\n" -"setelah meletakkan atau menggali sesebuah nod." +"apabila pemain membina sesuatu.\n" +"Tetapan ini menetapkan berapa lama ianya diperlahankan setelah meletakkan " +"atau mengalihkan sesebuah nod." #: src/settings_translation_file.cpp msgid "Toggle camera mode key" @@ -6846,9 +6859,8 @@ msgid "Upper Y limit of dungeons." msgstr "Had Y atas kurungan bawah tanah." #: src/settings_translation_file.cpp -#, fuzzy msgid "Upper Y limit of floatlands." -msgstr "Had Y atas kurungan bawah tanah." +msgstr "Had Y atas tanah terapung." #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." @@ -7064,10 +7076,11 @@ msgid "" "filtered in software, but some images are generated directly\n" "to hardware (e.g. render-to-texture for nodes in inventory)." msgstr "" -"Apabila penapis skala GUI (gui_scaling_filter) ditetapkan kepada\n" -"\"true\", semua imej GUI perlu ditapis dalam perisian, tetapi sesetengah\n" -"imeg dijana secara terus ke perkakasan (contohnya, render-to-texture\n" -"untuk nod dalam inventori)." +"Apabila penapis skala GUI (gui_scaling_filter) ditetapkan kepada \"true\", " +"semua\n" +"imej GUI perlu ditapis dalam perisian, tetapi sesetengah imej dijana secara " +"terus\n" +"ke perkakasan (contohnya, render-to-texture untuk nod dalam inventori)." #: src/settings_translation_file.cpp msgid "" @@ -7076,13 +7089,14 @@ msgid "" "to the old scaling method, for video drivers that don't\n" "properly support downloading textures back from hardware." msgstr "" -"Apabila gui_scaling_filter_txr2img ditetapkan kepada \"true\",\n" -"salin semula kesemua imej tersebut dari perkakasan\n" -"kepada perisian untuk disesuaikan. Sekiranya ia ditetapkan\n" -"kepada \"false\", berbalik kepada kaedah penyesuaian yang\n" -"lama, untuk pemacu video yang tidak mampu menyokong\n" -"dengan sempurna fungsi muat turun semula tekstur\n" -"daripada perkakasan." +"Apabila gui_scaling_filter_txr2img ditetapkan kepada \"true\", salin semula " +"kesemua imej\n" +"tersebut dari perkakasan ke perisian untuk disesuaikan. Sekiranya ditetapkan " +"kepada\n" +"\"false\", berbalik kepada kaedah penyesuaian yang lama, untuk pemacu video " +"yang tidak\n" +"mampu menyokong dengan sempurna fungsi muat turun semula tekstur daripada " +"perkakasan." #: src/settings_translation_file.cpp msgid "" @@ -7231,8 +7245,8 @@ msgid "" "Y of mountain density gradient zero level. Used to shift mountains " "vertically." msgstr "" -"Nilai Y untuk permulaan kecerunan ketumpatan gunung.\n" -"Digunakan untuk menganjak gunung secara menegak." +"Nilai Y untuk permulaan kecerunan ketumpatan gunung. Digunakan untuk " +"menganjak gunung secara menegak." #: src/settings_translation_file.cpp msgid "Y of upper limit of large caves." @@ -7249,6 +7263,12 @@ msgid "" "For a solid floatland layer, this controls the height of hills/mountains.\n" "Must be less than or equal to half the distance between the Y limits." msgstr "" +"Jarak-Y di mana tanah terapung menirus daripada ketumpatan penuh kepada " +"tiada apa-apa.\n" +"Ketirusan bermula pada jarak ini daripada had Y.\n" +"Untuk lapisan tanah terapung pejal, nilai ini mengawal ketinggian bukit/" +"gunung.\n" +"Mesti kurang atau sama dengan separuh jarak di antara had-had Y." #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." From ecc66ccf40f6d738a88608e07cf09a44deedd9c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Wed, 17 Jun 2020 08:21:44 +0000 Subject: [PATCH 368/424] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 56.8% (768 of 1350 strings) --- po/nb/minetest.po | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/po/nb/minetest.po b/po/nb/minetest.po index 5decd9c22..ed5bab6db 100644 --- a/po/nb/minetest.po +++ b/po/nb/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Norwegian Bokmål (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-03-31 10:14+0000\n" -"Last-Translator: Liet Kynes \n" +"PO-Revision-Date: 2020-06-18 13:41+0000\n" +"Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.1.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -111,7 +111,7 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" -"Kunne ikke aktivere mod \"$1\" fordi den inneholder ugyldige tegn. Kun " +"Kunne ikke aktivere modden «$1» fordi den inneholder ugyldige tegn. Kun " "tegnene [a-z0-9_] er tillatt." #: builtin/mainmenu/dlg_config_world.lua @@ -641,8 +641,9 @@ msgid "Unable to install a mod as a $1" msgstr "Klarte ikke å installere mod som en $1" #: builtin/mainmenu/pkgmgr.lua +#, fuzzy msgid "Unable to install a modpack as a $1" -msgstr "Klarte ikke å installere en modpack som $2" +msgstr "Klarte ikke å installere en modpakke som $1" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" @@ -1031,7 +1032,7 @@ msgstr "Hovedmeny" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "Intet å gjøre. Ingen verden valgt og ingen adresse oppgitt." +msgstr "Intet å gjøre. Ingen verden valgt og ingen adresse oppgitt." #: src/client/clientlauncher.cpp msgid "Player name too long." From 2675fb93ace00cad18e482b0c8f92a1b520ffa42 Mon Sep 17 00:00:00 2001 From: Guus Seldenthuis Date: Wed, 17 Jun 2020 13:23:37 +0000 Subject: [PATCH 369/424] Translated using Weblate (Dutch) Currently translated at 78.4% (1059 of 1350 strings) --- po/nl/minetest.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/po/nl/minetest.po b/po/nl/minetest.po index 3bbef6e58..7dd5096a8 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Dutch (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-05-29 11:41+0000\n" -"Last-Translator: Miniontoby \n" +"PO-Revision-Date: 2020-06-18 13:41+0000\n" +"Last-Translator: Guus Seldenthuis \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.1.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -116,7 +116,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Zoek Meer Mods" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -170,11 +170,11 @@ msgstr "Terug naar hoofdmenu" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" msgstr "" +"ContentDB is niet beschikbaar wanneer Minetest compileert is zonder cURL" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Downloading..." -msgstr "Laden..." +msgstr "Downloading..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" From 6e51935aa9da80948a7465be1d03365795b20fdc Mon Sep 17 00:00:00 2001 From: Maksim Gamarnik Date: Tue, 16 Jun 2020 20:42:07 +0000 Subject: [PATCH 370/424] Translated using Weblate (Russian) Currently translated at 92.0% (1243 of 1350 strings) --- po/ru/minetest.po | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/po/ru/minetest.po b/po/ru/minetest.po index a0a379639..e626d58b3 100644 --- a/po/ru/minetest.po +++ b/po/ru/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Russian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-05-12 14:46+0000\n" -"Last-Translator: Anonymous \n" +"PO-Revision-Date: 2020-06-18 13:41+0000\n" +"Last-Translator: Maksim Gamarnik \n" "Language-Team: Russian \n" "Language: ru\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.1.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -25,7 +25,7 @@ msgstr "Вы умерли" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "ОК" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -116,7 +116,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Больше Модов" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -169,7 +169,7 @@ msgstr "Назад в главное меню" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "ContentDB недоступен, когда Minetest скомпилирован без cURL" #: builtin/mainmenu/dlg_contentstore.lua #, fuzzy @@ -221,7 +221,7 @@ msgstr "Обновить" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "Вид" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -229,7 +229,7 @@ msgstr "Мир с названием «$1» уже существует" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "Дополнительная местность" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" @@ -284,7 +284,7 @@ msgstr "Шум подземелья" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "Плоская местность" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -306,7 +306,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Холмы" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -319,7 +319,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Озёра" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" @@ -349,7 +349,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "Сеть туннелей и пещер" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -357,11 +357,11 @@ msgstr "Игра не выбрана" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "Уменьшает жару с высотой" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "Уменьшает влажность с высотой" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -379,7 +379,7 @@ msgstr "Зерно" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "Плавный переход между биомами" #: builtin/mainmenu/dlg_create_world.lua msgid "" @@ -410,7 +410,7 @@ msgstr "Базовый шум поверхности" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "Деревья и Джунгли-трава" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -742,7 +742,7 @@ msgstr "Запустить сервер" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "Установите игры из ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" @@ -1404,11 +1404,11 @@ msgstr "Звук отключён" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "Звук отключён" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "" +msgstr "Звук не поддерживается в этой сборке" #: src/client/game.cpp msgid "Sound unmuted" From 3ebfe0ccfdfdc964cd3a13fe3cbbeb867c1cb076 Mon Sep 17 00:00:00 2001 From: Maksim Gamarnik Date: Tue, 16 Jun 2020 20:49:09 +0000 Subject: [PATCH 371/424] Translated using Weblate (Ukrainian) Currently translated at 41.4% (560 of 1350 strings) --- po/uk/minetest.po | 52 +++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/po/uk/minetest.po b/po/uk/minetest.po index a0194dd49..11c8ced86 100644 --- a/po/uk/minetest.po +++ b/po/uk/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Ukrainian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-02 00:46+0000\n" -"Last-Translator: Rostyslav \n" +"PO-Revision-Date: 2020-06-18 13:41+0000\n" +"Last-Translator: Maksim Gamarnik \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.1.1-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -25,7 +25,7 @@ msgstr "Ви загинули" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "ОК" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -117,7 +117,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Знайти Більше Модів" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -222,7 +222,7 @@ msgstr "Оновити" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "Вид" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -230,7 +230,7 @@ msgstr "Світ з такою назвою \"$1\" вже існує" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "Додаткова місцевість" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" @@ -246,11 +246,11 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Biomes" -msgstr "" +msgstr "Біоми" #: builtin/mainmenu/dlg_create_world.lua msgid "Caverns" -msgstr "" +msgstr "Печери" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -276,7 +276,7 @@ msgstr "Завантажте з minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Dungeons" -msgstr "" +msgstr "Підземелля" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" @@ -284,7 +284,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Floating landmasses in the sky" -msgstr "" +msgstr "Плаваючі земельні масиви в небі" #: builtin/mainmenu/dlg_create_world.lua msgid "Floatlands (experimental)" @@ -300,19 +300,19 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Пагорби" #: builtin/mainmenu/dlg_create_world.lua msgid "Humid rivers" -msgstr "" +msgstr "Вологі ріки" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Підвищує вологість навколо річок" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Озера" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" @@ -333,15 +333,15 @@ msgstr "Генератор світу: фрактальний" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" -msgstr "" +msgstr "Гори" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "Грязьовий потік" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "Мережа тунелів і печер" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -349,11 +349,11 @@ msgstr "Гру не вибрано" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "Зменшує тепло з висотою" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "Зменшує вологість з висотою" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -371,7 +371,7 @@ msgstr "Зерно" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "Плавний перехід між біомами" #: builtin/mainmenu/dlg_create_world.lua msgid "" @@ -381,15 +381,15 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" -msgstr "" +msgstr "Споруди, що з’являються на місцевості, зазвичай дерева та рослини" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "Помірний, пустеля" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "Помірного Поясу, Пустелі, Джунглі" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" @@ -6025,7 +6025,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" -msgstr "" +msgstr "Необмежена відстань передачі гравця" #: src/settings_translation_file.cpp msgid "Unload unused server data" @@ -6033,7 +6033,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Upper Y limit of dungeons." -msgstr "" +msgstr "Верхня межа р підземель." #: src/settings_translation_file.cpp msgid "Upper Y limit of floatlands." From 5564babc944c179039b1f43df07f6960cf9c37ed Mon Sep 17 00:00:00 2001 From: Hamlet Date: Fri, 19 Jun 2020 22:22:07 +0000 Subject: [PATCH 372/424] Translated using Weblate (Italian) Currently translated at 93.7% (1266 of 1350 strings) --- po/it/minetest.po | 164 +++++++++++++++++++++------------------------- 1 file changed, 74 insertions(+), 90 deletions(-) diff --git a/po/it/minetest.po b/po/it/minetest.po index 26cca010b..8e33293cf 100644 --- a/po/it/minetest.po +++ b/po/it/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Italian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-04-29 12:38+0000\n" -"Last-Translator: Matteo Gheza \n" +"PO-Revision-Date: 2020-06-19 23:01+0000\n" +"Last-Translator: Hamlet \n" "Language-Team: Italian \n" "Language: it\n" @@ -12,11 +12,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0.2\n" +"X-Generator: Weblate 4.1.1\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" -msgstr "Ricompari" +msgstr "Ricomincia" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" @@ -24,7 +24,7 @@ msgstr "Sei morto" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "Ok" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -116,7 +116,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Trova più mod" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -169,12 +169,11 @@ msgstr "Torna al Menu Principale" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "ContentDB non è disponibile quando Minetest viene compilato senza cuRL" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Downloading..." -msgstr "Caricamento..." +msgstr "Scaricamento..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" @@ -221,7 +220,7 @@ msgstr "Aggiorna" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "Vedi" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -229,72 +228,63 @@ msgstr "Un mondo chiamato \"$1\" esiste già" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "Terreno aggiuntivo" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" -msgstr "Raffreddamento altitudine" +msgstr "Raffreddamento da altitudine" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Altitude dry" -msgstr "Raffreddamento altitudine" +msgstr "Siccità da altitudine" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biome blending" -msgstr "Rumore biomi" +msgstr "Miscelatura biomi" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biomes" -msgstr "Rumore biomi" +msgstr "Biomi" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caverns" -msgstr "Rumore della caverna" +msgstr "Caverne" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caves" -msgstr "Ottave" +msgstr "Grotte" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "Crea" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Decorations" -msgstr "Iterazioni" +msgstr "Decorazioni" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "Scarica un gioco, per esempio Minetest Game, da minetest.net" +msgstr "Scarica un gioco, come Minetest Game, da minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" msgstr "Scaricane uno da minetest.net" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Dungeons" -msgstr "Rumore per le segrete" +msgstr "Sotterranei" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "Terreno piatto" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floating landmasses in the sky" -msgstr "Densità montuosa delle terre fluttuanti" +msgstr "Pietre miliari fluttuanti nel cielo" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floatlands (experimental)" -msgstr "Livello delle terre fluttuanti" +msgstr "Terre fluttuanti (sperimentale)" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -302,28 +292,27 @@ msgstr "Gioco" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "Generare terreno non-frattale: oceani e sottoterra" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Colline" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Humid rivers" -msgstr "Driver video" +msgstr "Fiumi umidi" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Aumenta l'umidità attorno ai fiumi" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Laghi" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" -msgstr "" +msgstr "Bassa umidità e calore elevato producono fiumi bassi o secchi" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -334,22 +323,20 @@ msgid "Mapgen flags" msgstr "Valori del generatore mappa" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mapgen-specific flags" -msgstr "Valori specifici del generatore di mappe v5" +msgstr "Valori specifici del generatore di mappe" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mountains" -msgstr "Rumore montano" +msgstr "Montagne" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "Colata di fango" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "Rete di gallerie e grotte" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -357,74 +344,73 @@ msgstr "Nessun gioco selezionato" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "Diminuisce il calore con l'altitudine" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "Diminuisce l'umidità con l'altitudine" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Rivers" -msgstr "Dimensione dei fiumi" +msgstr "Fiumi" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "Fiumi a livello del mare" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Seed" -msgstr "Seme di generazione" +msgstr "Seme" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "Transizione uniforme tra biomi" #: builtin/mainmenu/dlg_create_world.lua msgid "" "Structures appearing on the terrain (no effect on trees and jungle grass " "created by v6)" msgstr "" +"Strutture che compaiono sul terreno (nessun effetto su alberi ed erba della " +"giungla creati dal v6)" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" -msgstr "" +msgstr "Strutture che compaiono sul terreno, tipicamente alberi e piante" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "Temperato, Deserto" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "Temperato, Deserto, Giungla" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "Temperato, Deserto, Giungla, Tundra, Taiga" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Terrain surface erosion" -msgstr "Rumore di base del terreno" +msgstr "Erosione della superficie del terreno" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "Alberi ed erba della giungla" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Vary river depth" -msgstr "Profondità dei fiumi" +msgstr "Diversifica la profondità dei fiumi" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "Caverne davvero grandi in profondità sottoterra" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Warning: The Development Test is meant for developers." -msgstr "Avvertimento: il Minimal Development Test è rivolto agli sviluppatori." +msgstr "" +"Avvertimento: il Minimal Development Test è inteso per gli sviluppatori." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -436,13 +422,13 @@ msgstr "Non hai nessun gioco installato." #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "Sei sicuro di volere eliminare \"$1\"?" +msgstr "Sei sicuro di volere cancellare \"$1\"?" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua #: src/client/keycode.cpp msgid "Delete" -msgstr "Elimina" +msgstr "Cancella" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" @@ -454,7 +440,7 @@ msgstr "pkgmgr: percorso non valido \"$1\"" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" -msgstr "Vuoi eliminare il mondo \"$1\"?" +msgstr "Cancellare il mondo \"$1\"?" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" @@ -462,15 +448,15 @@ msgstr "Accetta" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "Rinomina il pacchetto mod:" +msgstr "Rinominare il pacchetto di mod:" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" -"Questo pacchetto mod ha un nome esplicito datogli nel suo modpack.conf che " -"ignorerà qualsiasi rinominazione qui effettuata." +"Questo pacchetto di mod ha un nome esplicito datogli nel suo modpack.conf " +"che ignorerà qualsiasi rinominazione qui effettuata." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" @@ -498,7 +484,7 @@ msgstr "Modifica" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Enabled" -msgstr "Abilitat*" +msgstr "Abilitato" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Lacunarity" @@ -510,7 +496,7 @@ msgstr "Ottave" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" -msgstr "Spostamento" +msgstr "Scarto" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" @@ -526,7 +512,7 @@ msgstr "Per favore inserisci un numero valido." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Restore Default" -msgstr "Ripristina predefiniti" +msgstr "Ripristina" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" @@ -739,7 +725,7 @@ msgstr "Ospita un server" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "Installa giochi dal ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" @@ -1398,11 +1384,11 @@ msgstr "Suono disattivato" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "Il sistema audio è disabilitato" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "" +msgstr "Il sistema audio non è supportato su questa build" #: src/client/game.cpp msgid "Sound unmuted" @@ -2053,9 +2039,8 @@ msgid "3D mode" msgstr "Modalità 3D" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode parallax strength" -msgstr "Intensità normalmap" +msgstr "Intensità della modalità 3D di parallasse" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." @@ -2142,9 +2127,8 @@ msgid "ABM interval" msgstr "Intervallo ABM" #: src/settings_translation_file.cpp -#, fuzzy msgid "Absolute limit of queued blocks to emerge" -msgstr "Limite assoluto di code emerge" +msgstr "Limite assoluto di blocchi in coda da fare apparire" #: src/settings_translation_file.cpp msgid "Acceleration in air" @@ -2497,18 +2481,16 @@ msgstr "" "Potrebbe servire per gli schermi più piccoli." #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat font size" -msgstr "Dimensione del carattere" +msgstr "Dimensione del carattere dell'area di messaggistica" #: src/settings_translation_file.cpp msgid "Chat key" msgstr "Tasto della chat" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat log level" -msgstr "Livello del registro di debug" +msgstr "Livello del registro dell'area di messaggistica" #: src/settings_translation_file.cpp msgid "Chat message count limit" @@ -2768,9 +2750,8 @@ msgid "Dec. volume key" msgstr "Tasto dim. volume" #: src/settings_translation_file.cpp -#, fuzzy msgid "Decrease this to increase liquid resistance to movement." -msgstr "Va diminuito per aumentare la resistenza al movimento nel liquido." +msgstr "Diminuisci questo per aumentare la resistenza dei liquidi al movimento." #: src/settings_translation_file.cpp msgid "Dedicated server step" @@ -2805,9 +2786,8 @@ msgid "Default report format" msgstr "Formato di rapporto predefinito" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default stack size" -msgstr "Gioco predefinito" +msgstr "Dimensione predefinita della pila" #: src/settings_translation_file.cpp msgid "" @@ -3090,14 +3070,14 @@ msgstr "" "Per esempio: 0 per nessun ondeggiamento, 1.0 per normale, 2.0 per doppio." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Enable/disable running an IPv6 server.\n" "Ignored if bind_address is set.\n" "Needs enable_ipv6 to be enabled." msgstr "" "Abilita/Disabilita l'esecuzione di un server IPv6.\n" -"Ignorata se si imposta bind_address." +"Ignorata se si imposta bind_address.\n" +"Richiede enable_ipv6 per essere abilitata." #: src/settings_translation_file.cpp msgid "" @@ -3160,6 +3140,10 @@ msgid "" "sound controls will be non-functional.\n" "Changing this setting requires a restart." msgstr "" +"Abilita il sistema audio.\n" +"Se disabilitato, disabilita completamente tutti i suoni ovunque rendendo i " +"controlli audio nel gioco non funzionanti.\n" +"Cambiare questa impostazione richiede un riavvio.\n" #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" From de35541465b45be3260e8f769d86f48133285549 Mon Sep 17 00:00:00 2001 From: Shuli Date: Fri, 19 Jun 2020 23:00:23 +0000 Subject: [PATCH 373/424] Translated using Weblate (Italian) Currently translated at 93.7% (1266 of 1350 strings) --- po/it/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/it/minetest.po b/po/it/minetest.po index 8e33293cf..61280e52b 100644 --- a/po/it/minetest.po +++ b/po/it/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-19 23:01+0000\n" -"Last-Translator: Hamlet \n" +"Last-Translator: Shuli \n" "Language-Team: Italian \n" "Language: it\n" @@ -96,15 +96,15 @@ msgstr "Disattiva tutto" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "Disabilita pacchetto mod" +msgstr "Disattiva raccolta di mod" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "Abilita tutto" +msgstr "Attiva tutto" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "Abilita pacchetto mod" +msgstr "Attiva raccolta di mod" #: builtin/mainmenu/dlg_config_world.lua msgid "" From 4c05453cbecb0ce0e8bafc0bf98965ce8961afc6 Mon Sep 17 00:00:00 2001 From: Jacques Lagrange Date: Fri, 19 Jun 2020 23:00:54 +0000 Subject: [PATCH 374/424] Translated using Weblate (Italian) Currently translated at 93.7% (1266 of 1350 strings) --- po/it/minetest.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/po/it/minetest.po b/po/it/minetest.po index 61280e52b..8e1563dbe 100644 --- a/po/it/minetest.po +++ b/po/it/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-19 23:01+0000\n" -"Last-Translator: Shuli \n" +"Last-Translator: Jacques Lagrange \n" "Language-Team: Italian \n" "Language: it\n" @@ -124,7 +124,7 @@ msgstr "Mod:" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" -msgstr "Dipendenze facoltative" +msgstr "Nessuna dipendenza (facoltativa)" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." From ac0f168e10ed8ffe9f7ee99d5cc30829b1cb35a9 Mon Sep 17 00:00:00 2001 From: runs Date: Sat, 20 Jun 2020 10:46:54 +0000 Subject: [PATCH 375/424] Added translation using Weblate (Galician) --- po/gl/minetest.po | 6325 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 6325 insertions(+) create mode 100644 po/gl/minetest.po diff --git a/po/gl/minetest.po b/po/gl/minetest.po new file mode 100644 index 000000000..43e3c8e44 --- /dev/null +++ b/po/gl/minetest.po @@ -0,0 +1,6325 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the minetest package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: minetest\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "You died" +msgstr "" + +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "Respawn" +msgstr "" + +#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp +msgid "OK" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "The server has requested a reconnect:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Reconnect" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Main menu" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occurred in a Lua script:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occurred:" +msgstr "" + +#: builtin/mainmenu/common.lua src/client/game.cpp +msgid "Loading..." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Try reenabling public serverlist and check your internet connection." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server supports protocol versions between $1 and $2. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server enforces protocol version $1. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We support protocol versions between version $1 and $2." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We only support protocol version $1." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Protocol version mismatch. " +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "World:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No modpack description provided." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No game description provided." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Mod:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No (optional) dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No hard dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Optional dependencies:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Dependencies:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No optional dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp +msgid "Save" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_delete_content.lua +#: builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp +#: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp +#: src/gui/guiPasswordChange.cpp +msgid "Cancel" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Find More Mods" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable modpack" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable modpack" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable all" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable all" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "" +"Failed to enable mod \"$1\" as it contains disallowed characters. Only " +"characters [a-z0-9_] are allowed." +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "ContentDB is not available when Minetest was compiled without cURL" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "All packages" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Texture packs" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Failed to download $1" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua +msgid "Search" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Back to Main Menu" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No results" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No packages could be retrieved" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Downloading..." +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Install" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Update" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Uninstall" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "View" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Caverns" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Very large caverns deep in the underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Sea level rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mountains" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Floatlands (experimental)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Floating landmasses in the sky" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Altitude chill" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces heat with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Altitude dry" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces humidity with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Humid rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Increases humidity around rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Vary river depth" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Low humidity and high heat causes shallow or dry rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Hills" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Lakes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Additional terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Generate non-fractal terrain: Oceans and underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Trees and jungle grass" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Flat terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mud flow" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Terrain surface erosion" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle, Tundra, Taiga" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "You have no games installed." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download one from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Caves" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Dungeons" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Decorations" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "" +"Structures appearing on the terrain (no effect on trees and jungle grass " +"created by v6)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Structures appearing on the terrain, typically trees and plants" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Network of tunnels and caves" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Biome blending" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Smooth transition between biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mapgen-specific flags" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Warning: The Development Test is meant for developers." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download a game, such as Minetest Game, from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "World name" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Seed" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Game" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Create" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "A world named \"$1\" already exists" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "No game selected" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "Are you sure you want to delete \"$1\"?" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua +#: src/client/keycode.cpp +msgid "Delete" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "pkgmgr: failed to delete \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "pkgmgr: invalid path \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_world.lua +msgid "Delete World \"$1\"?" +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Accept" +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "" +"This modpack has an explicit name given in its modpack.conf which will " +"override any renaming here." +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Rename Modpack:" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Offset" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Scale" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "2D Noise" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Octaves" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Persistance" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Lacunarity" +msgstr "" + +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "defaults" +msgstr "" + +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "eased" +msgstr "" + +#. ~ "absvalue" is a noise parameter flag. +#. It is short for "absolute value". +#. It can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "absvalue" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be at least $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must not be larger than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select directory" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select file" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "$1 (Enabled)" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a $1 as a texture pack" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Failed to install $1 to $2" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to find a valid mod or modpack" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a modpack as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install Mod: Unable to find suitable folder name for modpack $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a mod as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install Mod: Unable to find real mod name for: $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a game as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install: file: \"$1\"" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install: Unsupported file type \"$1\" or broken archive" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "$1 mods" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Installed Packages:" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Browse online content" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "No package description available" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Rename" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "No dependencies." +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Disable Texture Pack" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Use Texture Pack" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Information:" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Uninstall Package" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Credits" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Active Contributors" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Contributors" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Configure" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "New" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Select World:" +msgstr "" + +#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative Mode" +msgstr "" + +#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +msgid "Enable Damage" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Host Server" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Host Game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Announce Server" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Name/Password" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Bind Address" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Port" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Server Port" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Play Game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "No world created or selected!" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Start Game" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Address / Port" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Connect" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Ping" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative mode" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Damage enabled" +msgstr "" + +#. ~ PvP = Player versus Player +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "PvP enabled" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Join Game" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Simple Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Fancy Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Outlining" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "None" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "2x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "3D Clouds" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Connected Glass" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Screen:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Autosave Screen Size" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Shaders (unavailable)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Reset singleplayer world" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/client/game.cpp +msgid "Change Keys" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "All Settings" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold: (px)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Generate Normal Maps" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Liquids" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Settings" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Start Singleplayer" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Config mods" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Main" +msgstr "" + +#: src/client/client.cpp +msgid "Connection timed out." +msgstr "" + +#: src/client/client.cpp +msgid "Loading textures..." +msgstr "" + +#: src/client/client.cpp +msgid "Rebuilding shaders..." +msgstr "" + +#: src/client/client.cpp +msgid "Initializing nodes..." +msgstr "" + +#: src/client/client.cpp +msgid "Initializing nodes" +msgstr "" + +#: src/client/client.cpp +msgid "Done!" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Main Menu" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Player name too long." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Connection error (timed out?)" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided password file failed to open: " +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Please choose a name!" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "No world selected and no address provided. Nothing to do." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided world path doesn't exist: " +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Could not find or load game \"" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Invalid gamespec." +msgstr "" + +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. +#: src/client/fontengine.cpp +msgid "needs_fallback_font" +msgstr "" + +#: src/client/game.cpp +msgid "Shutting down..." +msgstr "" + +#: src/client/game.cpp +msgid "Creating server..." +msgstr "" + +#: src/client/game.cpp +msgid "Creating client..." +msgstr "" + +#: src/client/game.cpp +msgid "Resolving address..." +msgstr "" + +#: src/client/game.cpp +msgid "Connecting to server..." +msgstr "" + +#: src/client/game.cpp +msgid "Item definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "Node definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "Media..." +msgstr "" + +#: src/client/game.cpp +msgid "KiB/s" +msgstr "" + +#: src/client/game.cpp +msgid "MiB/s" +msgstr "" + +#: src/client/game.cpp +msgid "Client side scripting is disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Sound muted" +msgstr "" + +#: src/client/game.cpp +msgid "Sound unmuted" +msgstr "" + +#: src/client/game.cpp +msgid "Sound system is disabled" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Volume changed to %d%%" +msgstr "" + +#: src/client/game.cpp +msgid "Sound system is not supported on this build" +msgstr "" + +#: src/client/game.cpp +msgid "ok" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode enabled (note: no 'fly' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Pitch move mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Pitch move mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode enabled (note: no 'fast' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode enabled (note: no 'noclip' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Cinematic mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Cinematic mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Automatic forward enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Automatic forward disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x1" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x2" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x4" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x1" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x2" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x4" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap currently disabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "Fog disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fog enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info shown" +msgstr "" + +#: src/client/game.cpp +msgid "Profiler graph shown" +msgstr "" + +#: src/client/game.cpp +msgid "Wireframe shown" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info, profiler graph, and wireframe hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info and profiler graph hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Camera update disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Camera update enabled" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at maximum: %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at minimum: %d" +msgstr "" + +#: src/client/game.cpp +msgid "Enabled unlimited viewing range" +msgstr "" + +#: src/client/game.cpp +msgid "Disabled unlimited viewing range" +msgstr "" + +#: src/client/game.cpp +msgid "Zoom currently disabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "" +"Default Controls:\n" +"No menu visible:\n" +"- single tap: button activate\n" +"- double tap: place/use\n" +"- slide finger: look around\n" +"Menu/Inventory visible:\n" +"- double tap (outside):\n" +" -->close\n" +"- touch stack, touch slot:\n" +" --> move stack\n" +"- touch&drag, tap 2nd finger\n" +" --> place single item to slot\n" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "" +"Controls:\n" +"- %s: move forwards\n" +"- %s: move backwards\n" +"- %s: move left\n" +"- %s: move right\n" +"- %s: jump/climb\n" +"- %s: sneak/go down\n" +"- %s: drop item\n" +"- %s: inventory\n" +"- Mouse: turn/look\n" +"- Mouse left: dig/punch\n" +"- Mouse right: place/use\n" +"- Mouse wheel: select item\n" +"- %s: chat\n" +msgstr "" + +#: src/client/game.cpp +msgid "Continue" +msgstr "" + +#: src/client/game.cpp +msgid "Change Password" +msgstr "" + +#: src/client/game.cpp +msgid "Game paused" +msgstr "" + +#: src/client/game.cpp +msgid "Sound Volume" +msgstr "" + +#: src/client/game.cpp +msgid "Exit to Menu" +msgstr "" + +#: src/client/game.cpp +msgid "Exit to OS" +msgstr "" + +#: src/client/game.cpp +msgid "Game info:" +msgstr "" + +#: src/client/game.cpp +msgid "- Mode: " +msgstr "" + +#: src/client/game.cpp +msgid "Remote server" +msgstr "" + +#: src/client/game.cpp +msgid "- Address: " +msgstr "" + +#: src/client/game.cpp +msgid "Hosting server" +msgstr "" + +#: src/client/game.cpp +msgid "- Port: " +msgstr "" + +#: src/client/game.cpp +msgid "Singleplayer" +msgstr "" + +#: src/client/game.cpp +msgid "On" +msgstr "" + +#: src/client/game.cpp +msgid "Off" +msgstr "" + +#: src/client/game.cpp +msgid "- Damage: " +msgstr "" + +#: src/client/game.cpp +msgid "- Creative Mode: " +msgstr "" + +#. ~ PvP = Player versus Player +#: src/client/game.cpp +msgid "- PvP: " +msgstr "" + +#: src/client/game.cpp +msgid "- Public: " +msgstr "" + +#: src/client/game.cpp +msgid "- Server Name: " +msgstr "" + +#: src/client/game.cpp +msgid "" +"\n" +"Check debug.txt for details." +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat shown" +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat hidden" +msgstr "" + +#: src/client/gameui.cpp +msgid "HUD shown" +msgstr "" + +#: src/client/gameui.cpp +msgid "HUD hidden" +msgstr "" + +#: src/client/gameui.cpp +#, c-format +msgid "Profiler shown (page %d of %d)" +msgstr "" + +#: src/client/gameui.cpp +msgid "Profiler hidden" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "Middle Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "X Button 1" +msgstr "" + +#: src/client/keycode.cpp +msgid "X Button 2" +msgstr "" + +#: src/client/keycode.cpp +msgid "Backspace" +msgstr "" + +#: src/client/keycode.cpp +msgid "Tab" +msgstr "" + +#: src/client/keycode.cpp +msgid "Clear" +msgstr "" + +#: src/client/keycode.cpp +msgid "Return" +msgstr "" + +#: src/client/keycode.cpp +msgid "Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Control" +msgstr "" + +#. ~ Key name, common on Windows keyboards +#: src/client/keycode.cpp +msgid "Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "Pause" +msgstr "" + +#: src/client/keycode.cpp +msgid "Caps Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Space" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page up" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page down" +msgstr "" + +#: src/client/keycode.cpp +msgid "End" +msgstr "" + +#: src/client/keycode.cpp +msgid "Home" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Left" +msgstr "" + +#: src/client/keycode.cpp +msgid "Up" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Right" +msgstr "" + +#: src/client/keycode.cpp +msgid "Down" +msgstr "" + +#. ~ Key name +#: src/client/keycode.cpp +msgid "Select" +msgstr "" + +#. ~ "Print screen" key +#: src/client/keycode.cpp +msgid "Print" +msgstr "" + +#: src/client/keycode.cpp +msgid "Execute" +msgstr "" + +#: src/client/keycode.cpp +msgid "Snapshot" +msgstr "" + +#: src/client/keycode.cpp +msgid "Insert" +msgstr "" + +#: src/client/keycode.cpp +msgid "Help" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 0" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 2" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 3" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 4" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 5" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 6" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 7" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 8" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 9" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad *" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad +" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad ." +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad -" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad /" +msgstr "" + +#: src/client/keycode.cpp +msgid "Num Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Scroll Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Control" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Control" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Escape" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Convert" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Nonconvert" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Accept" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Mode Change" +msgstr "" + +#: src/client/keycode.cpp +msgid "Apps" +msgstr "" + +#: src/client/keycode.cpp +msgid "Sleep" +msgstr "" + +#: src/client/keycode.cpp +msgid "Erase EOF" +msgstr "" + +#: src/client/keycode.cpp +msgid "Play" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Zoom" +msgstr "" + +#: src/client/keycode.cpp +msgid "OEM Clear" +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp +#, c-format +msgid "" +"You are about to join this server with the name \"%s\" for the first time.\n" +"If you proceed, a new account using your credentials will be created on this " +"server.\n" +"Please retype your password and click 'Register and Join' to confirm account " +"creation, or click 'Cancel' to abort." +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp +msgid "Register and Join" +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp +msgid "Passwords do not match!" +msgstr "" + +#: src/gui/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "\"Special\" = climb down" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Double tap \"jump\" to toggle fly" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Automatic jumping" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Key already in use" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "press key" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Forward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Backward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Special" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Jump" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Sneak" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Drop" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inventory" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Prev. item" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Next item" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Change camera" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle minimap" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fly" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle pitchmove" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fast" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle noclip" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Mute" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. volume" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. volume" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Autoforward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Chat" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Screenshot" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Range select" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. range" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. range" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Console" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Command" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Local command" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle HUD" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle chat log" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fog" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Old Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "New Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Confirm Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Change" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Sound Volume: " +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Exit" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Muted" +msgstr "" + +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. +#: src/gui/modalMenu.cpp +msgid "Enter " +msgstr "" + +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). +#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp +msgid "LANG_CODE" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Build inside player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place blocks at the position (feet + eye level) where " +"you stand.\n" +"This is helpful when working with nodeboxes in small areas." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Flying" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Player is able to fly without being affected by gravity.\n" +"This requires the \"fly\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, makes move directions relative to the player's pitch when flying " +"or swimming." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast movement" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Fast movement (via the \"special\" key).\n" +"This requires the \"fast\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled together with fly mode, player is able to fly through solid " +"nodes.\n" +"This requires the \"noclip\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths camera when looking around. Also called look or mouse smoothing.\n" +"Useful for recording videos." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera in cinematic mode. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert vertical mouse movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity multiplier." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key for climbing/descending" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, \"special\" key instead of \"sneak\" key is used for climbing " +"down and\n" +"descending." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double tap jump for fly" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double-tapping the jump key toggles fly mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Always fly and fast" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If disabled, \"special\" key is used to fly fast if both fly and fast mode " +"are\n" +"enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rightclick repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated right clicks when holding the " +"right\n" +"mouse button." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically jump up single-node obstacles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Safe digging and placing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prevent digging and placing from repeating when holding the mouse buttons.\n" +"Enable this when you dig or place too often by accident." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Random input" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random user input (only used for testing)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Continuous forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Continuous forward movement, toggled by autoforward key.\n" +"Press the autoforward key again or the backwards movement to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touch screen threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The length in pixels it takes for touch screen interaction to start." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed virtual joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(Android) Fixes the position of virtual joystick.\n" +"If disabled, virtual joystick will center to first-touch's position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Virtual joystick triggers aux button" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(Android) Use virtual joystick to trigger \"aux\" button.\n" +"If enabled, virtual joystick will also tap \"aux\" button when out of main " +"circle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable joysticks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick ID" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The identifier of the joystick to use" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The type of joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick button repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated events\n" +"when holding down a joystick button combination." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick frustum sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The sensitivity of the joystick axes for moving the\n" +"ingame view frustum around." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player forward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Backward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player backward.\n" +"Will also disable autoforward, when active.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Left key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player left.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Right key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player right.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for jumping.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneak key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for sneaking.\n" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the inventory.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving fast in fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Command key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type local commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Range select key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling unlimited view range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fly key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling flying.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling pitch move mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling noclip mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar next key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the next item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar previous key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the previous item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for muting the game.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inc. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dec. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatic forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling autoforward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling cinematic mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling display of minimap.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for taking screenshots.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Drop item key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for dropping the currently selected item.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View zoom key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key to use view zoom when possible.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 1 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the first hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 2 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the second hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 3 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the third hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 4 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fourth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 5 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fifth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 6 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the sixth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 7 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the seventh hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 8 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the eighth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 9 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the ninth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 10 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the tenth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 11 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 11th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 12 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 12th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 13 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 13th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 14 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 14th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 15 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 15th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 16 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 16th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 17 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 17th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 18 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 18th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 19 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 19th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 20 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 20th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 21 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 21st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 22 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 22nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 23 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 23rd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 24 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 24th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 25 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 25th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 26 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 26th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 27 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 27th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 28 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 28th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 29 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 29th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 30 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 30th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 31 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 31st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 32 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 32nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the HUD.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of chat.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large chat console key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the large chat console.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of fog.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera update toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the camera update. Only used for development\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug info toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of debug info.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the profiler. Used for development.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for switching between first- and third-person camera.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range increase key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range decrease key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Graphics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-Game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable vertex buffer objects.\n" +"This should greatly improve graphics performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to fog out the end of the visible area." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces, if defined special_tiles are used\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect glass" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connects glass if supported by node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooth lighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable smooth lighting with simple ambient occlusion.\n" +"Disable for speed or for different looks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds are a client side effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use 3D cloud look instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Digging particles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Adds particles when digging a node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use mip mapping to scale textures. May slightly increase performance,\n" +"especially when using a high resolution texture pack.\n" +"Gamma correct downscaling is not supported." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anisotropic filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use anisotropic filtering when viewing at textures from an angle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use trilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clean transparent textures" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Filtered textures can blend RGB values with fully-transparent neighbors,\n" +"which PNG optimizers usually discard, sometimes resulting in a dark or\n" +"light edge to transparent textures. Apply this filter to clean that up\n" +"at texture load time." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum texture size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" +"can be blurred, so automatically upscale them with nearest-neighbor\n" +"interpolation to preserve crisp pixels. This sets the minimum texture size\n" +"for the upscaled textures; higher values look sharper, but require more\n" +"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n" +"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" +"enabled.\n" +"This is also used as the base node texture size for world-aligned\n" +"texture autoscaling." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FSAA" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Experimental option, might cause visible spaces between blocks\n" +"when set to higher number than 0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Undersampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Undersampling is similar to using a lower screen resolution, but it applies\n" +"to the game world only, keeping the GUI intact.\n" +"It should give a significant performance boost at the cost of less detailed " +"image.\n" +"Higher values result in a less detailed image." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shaders allow advanced visual effects and may increase performance on some " +"video\n" +"cards.\n" +"This only works with the OpenGL video backend." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shader path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to shader directory. If no path is defined, default location will be " +"used." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables Hable's 'Uncharted 2' filmic tone mapping.\n" +"Simulates the tone curve of photographic film and how this approximates the\n" +"appearance of high dynamic range images. Mid-range contrast is slightly\n" +"enhanced, highlights and shadows are gradually compressed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bumpmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables bumpmapping for textures. Normalmaps need to be supplied by the " +"texture pack\n" +"or need to be auto-generated.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Generate normalmaps" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables on the fly normalmap generation (Emboss effect).\n" +"Requires bumpmapping to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of generated normalmaps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps sampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Defines sampling step of texture.\n" +"A higher value results in smoother normal maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables parallax occlusion mapping.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of parallax occlusion iterations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall scale of parallax occlusion effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion bias" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall bias of parallax occlusion effect, usually scale/2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving Nodes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving liquids (like water).\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The maximum height of the surface of waving liquids.\n" +"4.0 = Wave height is two nodes.\n" +"0.0 = Wave doesn't move at all.\n" +"Default is 1.0 (1/2 node).\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wavelength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of liquid waves.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How fast liquid waves will move. Higher = faster.\n" +"If negative, liquid waves will move backwards.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving leaves" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving leaves.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving plants" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving plants.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Advanced" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Arm inertia" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Arm inertia, gives a more realistic movement of\n" +"the arm when the camera moves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If FPS would go higher than this, limit it by sleeping\n" +"to not waste CPU power for no benefit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS in pause menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS when game is paused." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pause on lost window focus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Open the pause menu when the window's focus is lost. Does not pause if a " +"formspec is\n" +"open." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Viewing range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View distance in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Near plane" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" +"Increasing can reduce artifacting on weaker GPUs.\n" +"0.1 = Default, 0.25 = Good value for weaker tablets." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autosave screen size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save window size automatically when modified." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen BPP" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bits per pixel (aka color depth) in fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VSync" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical screen synchronization." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view in degrees." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Alters the light curve by applying 'gamma correction' to it.\n" +"Higher values make middle and lower light levels brighter.\n" +"Value '1.0' leaves the light curve unaltered.\n" +"This only has significant effect on daylight and artificial\n" +"light, it has very little effect on natural night light." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve low gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at minimum light level.\n" +"Controls the contrast of the lowest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve high gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at maximum light level.\n" +"Controls the contrast of the highest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Strength of light curve boost.\n" +"The 3 'boost' parameters define a range of the light\n" +"curve that is boosted in brightness." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost center" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Center of light curve boost range.\n" +"Where 0.0 is minimum light level, 1.0 is maximum light level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost spread" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Spread of light curve boost range.\n" +"Controls the width of the range to be boosted.\n" +"Standard deviation of the light curve boost Gaussian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to texture directory. All textures are first searched from here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Video driver" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The rendering back-end for Irrlicht.\n" +"A restart is required after changing this.\n" +"Note: On Android, stick with OGLES1 if unsure! App may fail to start " +"otherwise.\n" +"On other platforms, OpenGL is recommended, and it’s the only driver with\n" +"shader support currently." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cloud radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Radius of cloud area stated in number of 64 node cloud squares.\n" +"Values larger than 26 will start to produce sharp cutoffs at cloud area " +"corners." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable view bobbing and amount of view bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fall bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Multiplier for fall bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D support.\n" +"Currently supported:\n" +"- none: no 3d output.\n" +"- anaglyph: cyan/magenta color 3d.\n" +"- interlaced: odd/even line based polarisation screen support.\n" +"- topbottom: split screen top/bottom.\n" +"- sidebyside: split screen side by side.\n" +"- crossview: Cross-eyed 3d\n" +"- pageflip: quadbuffer based 3d.\n" +"Note that the interlaced mode requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D mode parallax strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box border color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selection box lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Recent Chat Messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of recent chat messages to show" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desynchronize block animation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether node texture animations should be desynchronized per mapblock." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum hotbar width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum proportion of current window to be used for hotbar.\n" +"Useful if there's something to be displayed right or left of hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD scale factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modifies the size of the hudbar elements." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mesh cache" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables caching of facedir rotated meshes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generation delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Delay between mesh updates on the client in ms. Increasing this will slow\n" +"down the rate of mesh updates, thus reducing jitter on slower clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generator's MapBlock cache size in MB" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of the MapBlock cache of the mesh generator. Increasing this will\n" +"increase the cache hit %, reducing the data being copied from the main\n" +"thread, thus reducing jitter." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables minimap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Round minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shape of the minimap. Enabled = round, disabled = square." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"True = 256\n" +"False = 128\n" +"Usable to make minimap smoother on slower machines." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Colored fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ambient occlusion gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The strength (darkness) of node ambient-occlusion shading.\n" +"Lower is darker, Higher is lighter. The valid range of values for this\n" +"setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" +"set to the nearest valid value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog start" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fraction of the visible distance at which fog starts to be rendered" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Opaque liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes all liquids opaque" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World-aligned textures mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Textures on a node may be aligned either to the node or to the world.\n" +"The former mode suits better things like machines, furniture, etc., while\n" +"the latter makes stairs and microblocks fit surroundings better.\n" +"However, as this possibility is new, thus may not be used by older servers,\n" +"this option allows enforcing it for certain node types. Note though that\n" +"that is considered EXPERIMENTAL and may not work properly." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autoscaling mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World-aligned textures may be scaled to span several nodes. However,\n" +"the server may not send the scale you want, especially if you use\n" +"a specially-designed texture pack; with this option, the client tries\n" +"to determine the scale automatically basing on the texture size.\n" +"See also texture_min_size.\n" +"Warning: This option is EXPERIMENTAL!" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Menus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Scale GUI by a user specified value.\n" +"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" +"This will smooth over some of the rough edges, and blend\n" +"pixels when scaling down, at the cost of blurring some\n" +"edge pixels when images are scaled by non-integer sizes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter is true, all GUI images need to be\n" +"filtered in software, but some images are generated directly\n" +"to hardware (e.g. render-to-texture for nodes in inventory)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter txr2img" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter_txr2img is true, copy those images\n" +"from hardware to software for scaling. When false, fall back\n" +"to the old scaling method, for video drivers that don't\n" +"properly support downloading textures back from hardware." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay showing tooltips, stated in milliseconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Append item name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Append item name to tooltip." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FreeType fonts" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether FreeType fonts are used, requires FreeType support to be compiled " +"in.\n" +"If disabled, bitmap and XML vectors fonts are used instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font bold by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font italic by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shadow offset (in pixels) of the default font. If 0, then shadow will not be " +"drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the default font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Regular font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the default font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"The fallback font will be used if the font cannot be loaded." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the monospace font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the monospace font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font is used for e.g. the console and profiler screen." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the fallback font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " +"be drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path of the fallback font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font will be used for certain languages or if the default font is " +"unavailable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot folder" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "DPI" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " +"screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable console window" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Windows systems only: Start Minetest with the command line window in the " +"background.\n" +"Contains the same information as the file debug.txt (default name)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables the sound system.\n" +"If disabled, this completely disables all sounds everywhere and the in-game\n" +"sound controls will be non-functional.\n" +"Changing this setting requires a restart." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volume" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Volume of all sounds.\n" +"Requires the sound system to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to mute sounds. You can unmute sounds at any time, unless the\n" +"sound system is disabled (enable_sound=false).\n" +"In-game, you can toggle the mute state with the mute key or by using the\n" +"pause menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Network" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Address to connect to.\n" +"Leave this blank to start a local server.\n" +"Note that the address field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Port to connect to (UDP).\n" +"Note that the port field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Saving map received from server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save the map received by the client on disk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect to external media server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable usage of remote media server (if provided by server).\n" +"Remote servers offer a significantly faster way to download media (e.g. " +"textures)\n" +"when connecting to the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client modding" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable Lua modding support on client.\n" +"This support is experimental and API can change." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "URL to the server list displayed in the Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist file" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"File in client/serverlist/ that contains your favorite servers displayed in " +"the\n" +"Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum size of the out chat queue" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum size of the out chat queue.\n" +"0 to disable queueing and -1 to make the queue size unlimited." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable register confirmation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable register confirmation when connecting to server.\n" +"If disabled, new account will be registered automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock unload timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Timeout for client to remove unused map data from memory." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of mapblocks for client to be kept in memory.\n" +"Set to -1 for unlimited amount." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show debug info" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server / Singleplayer" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the server, to be displayed when players join and in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server description" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Description of server, to be displayed when players join and in the " +"serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Domain name of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Homepage of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically report to the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce to this serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strip color codes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Remove color codes from incoming chat messages\n" +"Use this to stop players from being able to use color in their messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Network port to listen (UDP).\n" +"This value will be overridden when starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bind address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The network interface that the server listens on." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strict protocol checking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable to disallow old clients from connecting.\n" +"Older clients are compatible in the sense that they will not crash when " +"connecting\n" +"to new servers, but they may not support all new features that you are " +"expecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies URL from which client fetches media instead of using UDP.\n" +"$filename should be accessible from $remote_media$filename via cURL\n" +"(obviously, remote_media should end with a slash).\n" +"Files that are not present will be fetched the usual way." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6 server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable/disable running an IPv6 server.\n" +"Ignored if bind_address is set.\n" +"Needs enable_ipv6 to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum simultaneous block sends per client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks that are simultaneously sent per client.\n" +"The maximum total count is calculated dynamically:\n" +"max_total = ceil((#clients + max_users) * per_client / 4)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay in sending blocks after building" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"To reduce lag, block transfers are slowed down when a player is building " +"something.\n" +"This determines how long they are slowed down after placing or removing a " +"node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. packets per iteration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step, if you have a slow connection\n" +"try reducing it, but don't reduce it to a number below double of targeted\n" +"client number." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default game when creating a new world.\n" +"This will be overridden when creating a world from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day displayed to players connecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum users" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of players that can be connected simultaneously." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map directory" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World directory (everything in the world is stored here).\n" +"Not needed if starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Item entity TTL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Time in seconds for item entity (dropped items) to live.\n" +"Setting it to -1 disables the feature." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default stack size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Damage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable players getting damage and dying." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Creative" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable creative mode for new created maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed map seed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"A chosen map seed for a new map, leave empty for random.\n" +"Will be overridden when creating a new world in the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default password" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "New users need to input this password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The privileges that new users automatically get.\n" +"See /privs in game for a full list on your server and mod configuration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unlimited player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether players are shown to clients without any range limit.\n" +"Deprecated, use the setting player_transfer_distance instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player versus player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to allow players to damage and kill each other." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mod channels" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod channels support." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Static spawnpoint" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If this is set, players will always (re)spawn at the given position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disallow empty passwords" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, new players cannot join with an empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable anticheat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, disable cheat prevention in multiplayer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rollback recording" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, actions are recorded for rollback.\n" +"This option is only read when server starts." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Format of player chat messages. The following strings are valid " +"placeholders:\n" +"@name, @message, @timestamp (optional)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shutdown message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server shuts down." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crash message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server crashes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ask to reconnect after crash" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to ask clients to reconnect after a (Lua) crash.\n" +"Set this to true if your server is set up to restart automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active object send range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far clients know about objects, stated in mapblocks (16 nodes).\n" +"\n" +"Setting this larger than active_block_range will also cause the server\n" +"to maintain active objects up to this distance in the direction the\n" +"player is looking. (This can avoid mobs suddenly disappearing from view)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The radius of the volume of blocks around every player that is subject to " +"the\n" +"active block stuff, stated in mapblocks (16 nodes).\n" +"In active blocks objects are loaded and ABMs run.\n" +"This is also the minimum range in which active objects (mobs) are " +"maintained.\n" +"This should be configured together with active_object_send_range_blocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block send distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are sent to clients, stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum forceloaded blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of forceloaded mapblocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time send interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of sending time of day to clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls length of day/night cycle.\n" +"Examples:\n" +"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World start time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time of day when a new world is started, in millihours (0-23999)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map save interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of saving important changes in the world, stated in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message max length" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set the maximum character length of a chat message sent by clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message count limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amount of messages a player may send per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message kick threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Kick players who sent more than X messages per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Physics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration on ground or when climbing,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration in air" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal acceleration in air when jumping or falling,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration in fast mode,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking and flying speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking, flying and climbing speed in fast mode, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Climbing speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical climbing speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Initial vertical speed when jumping, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease this to increase liquid resistance to movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum liquid resistance. Controls deceleration when entering liquid at\n" +"high speed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid sinking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls sinking speed in liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gravity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration of gravity, in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Deprecated Lua API handling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Handling for deprecated Lua API calls:\n" +"- legacy: (try to) mimic old behaviour (default for release).\n" +"- log: mimic and log backtrace of deprecated call (default for debug).\n" +"- error: abort on usage of deprecated call (suggested for mod developers)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. clearobjects extra blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of extra blocks that can be loaded by /clearobjects at once.\n" +"This is a trade-off between sqlite transaction overhead and\n" +"memory consumption (4096=100MB, as a rule of thumb)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unload unused server data" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How much the server will wait before unloading unused mapblocks.\n" +"Higher value is smoother, but will use more RAM." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum objects per block" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of statically stored objects in a block." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Synchronous SQLite" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dedicated server step" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick and the interval at which objects are generally " +"updated over\n" +"network." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between active block management cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ABM interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between Active Block Modifier (ABM) execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ignore world errors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, invalid world data won't cause the server to shut down.\n" +"Only enable this if you know what you are doing." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid loop max" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max liquids processed per step." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid queue purge time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time (in seconds) that the liquids queue may grow beyond processing\n" +"capacity until an attempt is made to decrease its size by dumping old queue\n" +"items. A value of 0 disables the functionality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update tick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update interval in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block send optimize distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"At this distance the server will aggressively optimize which blocks are sent " +"to\n" +"clients.\n" +"Small values potentially improve performance a lot, at the expense of " +"visible\n" +"rendering glitches (some blocks will not be rendered under water and in " +"caves,\n" +"as well as sometimes on land).\n" +"Setting this to a value greater than max_block_send_distance disables this\n" +"optimization.\n" +"Stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server side occlusion culling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled the server will perform map block occlusion culling based on\n" +"on the eye position of the player. This can reduce the number of blocks\n" +"sent to the client 50-80%. The client will not longer receive most " +"invisible\n" +"so that the utility of noclip mode is reduced." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side modding restrictions" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Restricts the access of certain client-side functions on servers.\n" +"Combine the byteflags below to restrict client-side features, or set to 0\n" +"for no restrictions:\n" +"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n" +"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n" +"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n" +"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n" +"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n" +"csm_restriction_noderange)\n" +"READ_PLAYERINFO: 32 (disable get_player_names call client-side)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side node lookup range restriction" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the CSM restriction for node range is enabled, get_node calls are " +"limited\n" +"to this distance from the player to the node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prevent mods from doing insecure things like running shell commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trusted mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of trusted mods that are allowed to access insecure\n" +"functions even when mod security is on (via request_insecure_environment())." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HTTP mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Load the game profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Load the game profiler to collect game profiling data.\n" +"Provides a /profiler command to access the compiled profile.\n" +"Useful for mod developers and server operators." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default report format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The default format in which profiles are being saved,\n" +"when calling `/profiler save [format]` without format." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Report path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The file path relative to your worldpath in which profiles will be saved to." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrumentation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Entity methods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument the methods of entities on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Active Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Loading Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Loading Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chatcommands" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument chatcommands on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Global callbacks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument global callback functions on registration.\n" +"(anything you pass to a minetest.register_*() function)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Builtin" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument builtin.\n" +"This is usually only needed by core/builtin contributors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Have the profiler instrument itself:\n" +"* Instrument an empty function.\n" +"This estimates the overhead, that instrumentation is adding (+1 function " +"call).\n" +"* Instrument the sampler being used to update the statistics." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client and Server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the player.\n" +"When running a server, clients connecting with this name are admins.\n" +"When starting from the main menu, this is overridden." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Language" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the language. Leave empty to use the system language.\n" +"A restart is required after changing this." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Level of logging to be written to debug.txt:\n" +"- (no logging)\n" +"- none (messages with no level)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log file size threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the file size of debug.txt exceeds the number of megabytes specified in\n" +"this setting when it is opened, the file is moved to debug.txt.1,\n" +"deleting an older debug.txt.1 if it exists.\n" +"debug.txt is only moved if this setting is positive." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable IPv6 support (for both client and server).\n" +"Required for IPv6 connections to work at all." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default timeout for cURL, stated in milliseconds.\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL parallel limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limits number of parallel HTTP requests. Affects:\n" +"- Media fetch if server uses remote_media setting.\n" +"- Serverlist download and server announcement.\n" +"- Downloads performed by main menu (e.g. mod manager).\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum time in ms a file download (e.g. a mod download) may take." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "High-precision FPU" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Changes the main menu UI:\n" +"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, " +"etc.\n" +"- Simple: One singleplayer world, no game or texture pack choosers. May " +"be\n" +"necessary for smaller screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu script" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Replaces the default main menu with a custom one." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Engine profiling data print interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Print the engine's profiling data in regular intervals (in seconds).\n" +"0 = disable. Useful for developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of map generator to be used when creating a new world.\n" +"Creating a world in the main menu will override this.\n" +"Current mapgens in a highly unstable state:\n" +"- The optional floatlands of v7 (disabled by default)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water surface level of the world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block generate distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are generated for clients, stated in mapblocks (16 " +"nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" +"Only mapchunks completely within the mapgen limit are generated.\n" +"Value is stored per-world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome API temperature and humidity noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Temperature variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale temperature variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale humidity variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen v5." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls width of tunnels, a smaller value creates wider tunnels.\n" +"Value >= 10.0 completely disables generation of tunnels and avoids the\n" +"intensive noise calculations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave proportion flooded" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Proportion of large caves that contain liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of cavern upper limit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern taper" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-distance over which caverns expand to full size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines full size of caverns, smaller values create larger caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of biome filler depth." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Factor noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Variation of terrain vertical scale.\n" +"When noise is < -0.55 terrain is near-flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of average terrain surface." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Second of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise that determines number of dungeons per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"The 'snowbiomes' flag enables the new 5 biome system.\n" +"When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" +"the 'jungles' flag is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desert noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Deserts occur when np_biome exceeds this value.\n" +"When the 'snowbiomes' flag is enabled, this is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sandy beaches occur when np_beach exceeds this value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain base noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of lower terrain and seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain higher noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of higher terrain that creates cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Steepness noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height select noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mud noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies depth of biome surface nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas with sandy beaches." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of number of caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines tree areas and tree density." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Apple trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas where trees have apples." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain zero level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y of mountain density gradient zero level. Used to shift mountains " +"vertically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Exponent of the floatland tapering. Alters the tapering behaviour.\n" +"Value = 1.0 creates a uniform, linear tapering.\n" +"Values > 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +#, c-format +msgid "" +"Adjusts the density of the floatland layer.\n" +"Increase value to increase density. Can be positive or negative.\n" +"Value = 0.0: 50% of volume is floatland.\n" +"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" +"to be sure) creates a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain alternative noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain persistence noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Varies roughness of terrain.\n" +"Defines the 'persistence' value for terrain_base and terrain_alt noises." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain and steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of maximum mountain height (in nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge underwater noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines large-scale river channel structure." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining mountain structure and height.\n" +"Also defines structure of floatland mountain terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining structure of river canyon walls." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining structure of floatlands.\n" +"If altered from the default, the noise 'scale' (0.7 by default) may need\n" +"to be adjusted, as floatland tapering functions best when this noise has\n" +"a value range of approximately -2.0 to 2.0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen Carpathian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the base ground level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the depth of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River valley width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river valley." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Second of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness3 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Third of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness4 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fourth of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rolling hills spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of rolling hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of ridged mountain ranges." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of step mountain ranges." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rolling hill size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of rolling hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridged mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of ridged mountains." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of step mountains." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that locates the river valleys and channels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain variation noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Flat.\n" +"Occasional lakes and hills can be added to the flat world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines location and terrain of optional hills and lakes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Fractal.\n" +"'terrain' enables the generation of non-fractal terrain:\n" +"ocean, islands and underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fractal type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Selects one of 18 fractal types.\n" +"1 = 4D \"Roundy\" Mandelbrot set.\n" +"2 = 4D \"Roundy\" Julia set.\n" +"3 = 4D \"Squarry\" Mandelbrot set.\n" +"4 = 4D \"Squarry\" Julia set.\n" +"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" Julia set.\n" +"7 = 4D \"Variation\" Mandelbrot set.\n" +"8 = 4D \"Variation\" Julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n" +"11 = 3D \"Christmas Tree\" Mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" Julia set.\n" +"13 = 3D \"Mandelbulb\" Mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" Julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" Julia set.\n" +"17 = 4D \"Mandelbulb\" Mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" Julia set." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Increasing this increases the amount of fine detail, but also\n" +"increases processing load.\n" +"At iterations = 20 this mapgen has a similar load to mapgen V7." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) scale of fractal in nodes.\n" +"Actual fractal size will be 2 to 3 times larger.\n" +"These numbers can be made very large, the fractal does\n" +"not have to fit inside the world.\n" +"Increase these to 'zoom' into the detail of the fractal.\n" +"Default is for a vertically-squashed shape suitable for\n" +"an island, set all 3 numbers equal for the raw shape." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" +"Can be used to move a desired point to (0, 0) to create a\n" +"suitable spawn point, or to allow 'zooming in' on a desired\n" +"point by increasing 'scale'.\n" +"The default is tuned for a suitable spawn point for Mandelbrot\n" +"sets with default parameters, it may need altering in other\n" +"situations.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slice w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"W coordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"X component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Y component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Z component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"W component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Seabed noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill': Reduces heat with altitude.\n" +"'humid_rivers': Increases humidity around rivers.\n" +"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n" +"to become shallower and occasionally dry.\n" +"'altitude_dry': Reduces humidity with altitude." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n" +"enabled. Also the vertical distance over which humidity drops by 10 if\n" +"'altitude_dry' is enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern upper limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How deep to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other biome filler node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base terrain height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n" +"WARNING!: There is no benefit, and there are several dangers, in\n" +"increasing this value above 5.\n" +"Reducing this value increases cave and dungeon density.\n" +"Altering this value is for special usage, leaving it unchanged is\n" +"recommended." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dump the mapgen debug information." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Absolute limit of queued blocks to emerge" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of blocks that can be queued for loading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be loaded from file.\n" +"This limit is enforced per player." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be generated.\n" +"This limit is enforced per player." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of emerge threads" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of emerge threads to use.\n" +"Value 0:\n" +"- Automatic selection. The number of emerge threads will be\n" +"- 'number of processors - 2', with a lower limit of 1.\n" +"Any other value:\n" +"- Specifies the number of emerge threads, with a lower limit of 1.\n" +"WARNING: Increasing the number of emerge threads increases engine mapgen\n" +"speed, but this may harm game performance by interfering with other\n" +"processes, especially in singleplayer and/or when running Lua code in\n" +"'on_generated'. For many users the optimum setting may be '1'." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Online Content Repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The URL for the content repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB Flag Blacklist" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of flags to hide in the content repository.\n" +"\"nonfree\" can be used to hide packages which do not qualify as 'free " +"software',\n" +"as defined by the Free Software Foundation.\n" +"You can also specify content ratings.\n" +"These flags are independent from Minetest versions,\n" +"so see a full list at https://content.minetest.net/help/content_flags/" +msgstr "" From 719b0e9850c2ae46f2094bd78983f54914a0b1b3 Mon Sep 17 00:00:00 2001 From: GunChleoc Date: Sat, 20 Jun 2020 15:24:26 +0000 Subject: [PATCH 376/424] Added translation using Weblate (Gaelic) --- po/gd/minetest.po | 6325 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 6325 insertions(+) create mode 100644 po/gd/minetest.po diff --git a/po/gd/minetest.po b/po/gd/minetest.po new file mode 100644 index 000000000..839161a6c --- /dev/null +++ b/po/gd/minetest.po @@ -0,0 +1,6325 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the minetest package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: minetest\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: gd\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "You died" +msgstr "" + +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "Respawn" +msgstr "" + +#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp +msgid "OK" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "The server has requested a reconnect:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Reconnect" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Main menu" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occurred in a Lua script:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occurred:" +msgstr "" + +#: builtin/mainmenu/common.lua src/client/game.cpp +msgid "Loading..." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Try reenabling public serverlist and check your internet connection." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server supports protocol versions between $1 and $2. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server enforces protocol version $1. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We support protocol versions between version $1 and $2." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We only support protocol version $1." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Protocol version mismatch. " +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "World:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No modpack description provided." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No game description provided." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Mod:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No (optional) dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No hard dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Optional dependencies:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Dependencies:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No optional dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp +msgid "Save" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_delete_content.lua +#: builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp +#: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp +#: src/gui/guiPasswordChange.cpp +msgid "Cancel" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Find More Mods" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable modpack" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable modpack" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable all" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable all" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "" +"Failed to enable mod \"$1\" as it contains disallowed characters. Only " +"characters [a-z0-9_] are allowed." +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "ContentDB is not available when Minetest was compiled without cURL" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "All packages" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Texture packs" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Failed to download $1" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua +msgid "Search" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Back to Main Menu" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No results" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No packages could be retrieved" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Downloading..." +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Install" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Update" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Uninstall" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "View" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Caverns" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Very large caverns deep in the underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Sea level rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mountains" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Floatlands (experimental)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Floating landmasses in the sky" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Altitude chill" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces heat with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Altitude dry" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces humidity with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Humid rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Increases humidity around rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Vary river depth" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Low humidity and high heat causes shallow or dry rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Hills" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Lakes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Additional terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Generate non-fractal terrain: Oceans and underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Trees and jungle grass" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Flat terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mud flow" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Terrain surface erosion" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle, Tundra, Taiga" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "You have no games installed." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download one from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Caves" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Dungeons" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Decorations" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "" +"Structures appearing on the terrain (no effect on trees and jungle grass " +"created by v6)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Structures appearing on the terrain, typically trees and plants" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Network of tunnels and caves" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Biome blending" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Smooth transition between biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mapgen-specific flags" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Warning: The Development Test is meant for developers." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download a game, such as Minetest Game, from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "World name" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Seed" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Game" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Create" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "A world named \"$1\" already exists" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "No game selected" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "Are you sure you want to delete \"$1\"?" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua +#: src/client/keycode.cpp +msgid "Delete" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "pkgmgr: failed to delete \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "pkgmgr: invalid path \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_world.lua +msgid "Delete World \"$1\"?" +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Accept" +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "" +"This modpack has an explicit name given in its modpack.conf which will " +"override any renaming here." +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Rename Modpack:" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Offset" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Scale" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "2D Noise" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Octaves" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Persistance" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Lacunarity" +msgstr "" + +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "defaults" +msgstr "" + +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "eased" +msgstr "" + +#. ~ "absvalue" is a noise parameter flag. +#. It is short for "absolute value". +#. It can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "absvalue" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be at least $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must not be larger than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select directory" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select file" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "$1 (Enabled)" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a $1 as a texture pack" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Failed to install $1 to $2" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to find a valid mod or modpack" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a modpack as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install Mod: Unable to find suitable folder name for modpack $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a mod as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install Mod: Unable to find real mod name for: $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a game as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install: file: \"$1\"" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install: Unsupported file type \"$1\" or broken archive" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "$1 mods" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Installed Packages:" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Browse online content" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "No package description available" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Rename" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "No dependencies." +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Disable Texture Pack" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Use Texture Pack" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Information:" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Uninstall Package" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Credits" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Active Contributors" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Contributors" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Configure" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "New" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Select World:" +msgstr "" + +#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative Mode" +msgstr "" + +#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +msgid "Enable Damage" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Host Server" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Host Game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Announce Server" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Name/Password" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Bind Address" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Port" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Server Port" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Play Game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "No world created or selected!" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Start Game" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Address / Port" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Connect" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Ping" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative mode" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Damage enabled" +msgstr "" + +#. ~ PvP = Player versus Player +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "PvP enabled" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Join Game" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Simple Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Fancy Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Outlining" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "None" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "2x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "3D Clouds" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Connected Glass" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Screen:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Autosave Screen Size" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Shaders (unavailable)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Reset singleplayer world" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/client/game.cpp +msgid "Change Keys" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "All Settings" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold: (px)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Generate Normal Maps" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Liquids" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Settings" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Start Singleplayer" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Config mods" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Main" +msgstr "" + +#: src/client/client.cpp +msgid "Connection timed out." +msgstr "" + +#: src/client/client.cpp +msgid "Loading textures..." +msgstr "" + +#: src/client/client.cpp +msgid "Rebuilding shaders..." +msgstr "" + +#: src/client/client.cpp +msgid "Initializing nodes..." +msgstr "" + +#: src/client/client.cpp +msgid "Initializing nodes" +msgstr "" + +#: src/client/client.cpp +msgid "Done!" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Main Menu" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Player name too long." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Connection error (timed out?)" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided password file failed to open: " +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Please choose a name!" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "No world selected and no address provided. Nothing to do." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided world path doesn't exist: " +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Could not find or load game \"" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Invalid gamespec." +msgstr "" + +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. +#: src/client/fontengine.cpp +msgid "needs_fallback_font" +msgstr "" + +#: src/client/game.cpp +msgid "Shutting down..." +msgstr "" + +#: src/client/game.cpp +msgid "Creating server..." +msgstr "" + +#: src/client/game.cpp +msgid "Creating client..." +msgstr "" + +#: src/client/game.cpp +msgid "Resolving address..." +msgstr "" + +#: src/client/game.cpp +msgid "Connecting to server..." +msgstr "" + +#: src/client/game.cpp +msgid "Item definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "Node definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "Media..." +msgstr "" + +#: src/client/game.cpp +msgid "KiB/s" +msgstr "" + +#: src/client/game.cpp +msgid "MiB/s" +msgstr "" + +#: src/client/game.cpp +msgid "Client side scripting is disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Sound muted" +msgstr "" + +#: src/client/game.cpp +msgid "Sound unmuted" +msgstr "" + +#: src/client/game.cpp +msgid "Sound system is disabled" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Volume changed to %d%%" +msgstr "" + +#: src/client/game.cpp +msgid "Sound system is not supported on this build" +msgstr "" + +#: src/client/game.cpp +msgid "ok" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode enabled (note: no 'fly' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Pitch move mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Pitch move mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode enabled (note: no 'fast' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode enabled (note: no 'noclip' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Cinematic mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Cinematic mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Automatic forward enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Automatic forward disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x1" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x2" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x4" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x1" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x2" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x4" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap currently disabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "Fog disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fog enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info shown" +msgstr "" + +#: src/client/game.cpp +msgid "Profiler graph shown" +msgstr "" + +#: src/client/game.cpp +msgid "Wireframe shown" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info, profiler graph, and wireframe hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info and profiler graph hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Camera update disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Camera update enabled" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at maximum: %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at minimum: %d" +msgstr "" + +#: src/client/game.cpp +msgid "Enabled unlimited viewing range" +msgstr "" + +#: src/client/game.cpp +msgid "Disabled unlimited viewing range" +msgstr "" + +#: src/client/game.cpp +msgid "Zoom currently disabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "" +"Default Controls:\n" +"No menu visible:\n" +"- single tap: button activate\n" +"- double tap: place/use\n" +"- slide finger: look around\n" +"Menu/Inventory visible:\n" +"- double tap (outside):\n" +" -->close\n" +"- touch stack, touch slot:\n" +" --> move stack\n" +"- touch&drag, tap 2nd finger\n" +" --> place single item to slot\n" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "" +"Controls:\n" +"- %s: move forwards\n" +"- %s: move backwards\n" +"- %s: move left\n" +"- %s: move right\n" +"- %s: jump/climb\n" +"- %s: sneak/go down\n" +"- %s: drop item\n" +"- %s: inventory\n" +"- Mouse: turn/look\n" +"- Mouse left: dig/punch\n" +"- Mouse right: place/use\n" +"- Mouse wheel: select item\n" +"- %s: chat\n" +msgstr "" + +#: src/client/game.cpp +msgid "Continue" +msgstr "" + +#: src/client/game.cpp +msgid "Change Password" +msgstr "" + +#: src/client/game.cpp +msgid "Game paused" +msgstr "" + +#: src/client/game.cpp +msgid "Sound Volume" +msgstr "" + +#: src/client/game.cpp +msgid "Exit to Menu" +msgstr "" + +#: src/client/game.cpp +msgid "Exit to OS" +msgstr "" + +#: src/client/game.cpp +msgid "Game info:" +msgstr "" + +#: src/client/game.cpp +msgid "- Mode: " +msgstr "" + +#: src/client/game.cpp +msgid "Remote server" +msgstr "" + +#: src/client/game.cpp +msgid "- Address: " +msgstr "" + +#: src/client/game.cpp +msgid "Hosting server" +msgstr "" + +#: src/client/game.cpp +msgid "- Port: " +msgstr "" + +#: src/client/game.cpp +msgid "Singleplayer" +msgstr "" + +#: src/client/game.cpp +msgid "On" +msgstr "" + +#: src/client/game.cpp +msgid "Off" +msgstr "" + +#: src/client/game.cpp +msgid "- Damage: " +msgstr "" + +#: src/client/game.cpp +msgid "- Creative Mode: " +msgstr "" + +#. ~ PvP = Player versus Player +#: src/client/game.cpp +msgid "- PvP: " +msgstr "" + +#: src/client/game.cpp +msgid "- Public: " +msgstr "" + +#: src/client/game.cpp +msgid "- Server Name: " +msgstr "" + +#: src/client/game.cpp +msgid "" +"\n" +"Check debug.txt for details." +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat shown" +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat hidden" +msgstr "" + +#: src/client/gameui.cpp +msgid "HUD shown" +msgstr "" + +#: src/client/gameui.cpp +msgid "HUD hidden" +msgstr "" + +#: src/client/gameui.cpp +#, c-format +msgid "Profiler shown (page %d of %d)" +msgstr "" + +#: src/client/gameui.cpp +msgid "Profiler hidden" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "Middle Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "X Button 1" +msgstr "" + +#: src/client/keycode.cpp +msgid "X Button 2" +msgstr "" + +#: src/client/keycode.cpp +msgid "Backspace" +msgstr "" + +#: src/client/keycode.cpp +msgid "Tab" +msgstr "" + +#: src/client/keycode.cpp +msgid "Clear" +msgstr "" + +#: src/client/keycode.cpp +msgid "Return" +msgstr "" + +#: src/client/keycode.cpp +msgid "Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Control" +msgstr "" + +#. ~ Key name, common on Windows keyboards +#: src/client/keycode.cpp +msgid "Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "Pause" +msgstr "" + +#: src/client/keycode.cpp +msgid "Caps Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Space" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page up" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page down" +msgstr "" + +#: src/client/keycode.cpp +msgid "End" +msgstr "" + +#: src/client/keycode.cpp +msgid "Home" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Left" +msgstr "" + +#: src/client/keycode.cpp +msgid "Up" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Right" +msgstr "" + +#: src/client/keycode.cpp +msgid "Down" +msgstr "" + +#. ~ Key name +#: src/client/keycode.cpp +msgid "Select" +msgstr "" + +#. ~ "Print screen" key +#: src/client/keycode.cpp +msgid "Print" +msgstr "" + +#: src/client/keycode.cpp +msgid "Execute" +msgstr "" + +#: src/client/keycode.cpp +msgid "Snapshot" +msgstr "" + +#: src/client/keycode.cpp +msgid "Insert" +msgstr "" + +#: src/client/keycode.cpp +msgid "Help" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 0" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 2" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 3" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 4" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 5" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 6" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 7" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 8" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 9" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad *" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad +" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad ." +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad -" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad /" +msgstr "" + +#: src/client/keycode.cpp +msgid "Num Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Scroll Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Control" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Control" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Escape" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Convert" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Nonconvert" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Accept" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Mode Change" +msgstr "" + +#: src/client/keycode.cpp +msgid "Apps" +msgstr "" + +#: src/client/keycode.cpp +msgid "Sleep" +msgstr "" + +#: src/client/keycode.cpp +msgid "Erase EOF" +msgstr "" + +#: src/client/keycode.cpp +msgid "Play" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Zoom" +msgstr "" + +#: src/client/keycode.cpp +msgid "OEM Clear" +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp +#, c-format +msgid "" +"You are about to join this server with the name \"%s\" for the first time.\n" +"If you proceed, a new account using your credentials will be created on this " +"server.\n" +"Please retype your password and click 'Register and Join' to confirm account " +"creation, or click 'Cancel' to abort." +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp +msgid "Register and Join" +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp +msgid "Passwords do not match!" +msgstr "" + +#: src/gui/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "\"Special\" = climb down" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Double tap \"jump\" to toggle fly" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Automatic jumping" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Key already in use" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "press key" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Forward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Backward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Special" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Jump" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Sneak" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Drop" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inventory" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Prev. item" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Next item" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Change camera" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle minimap" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fly" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle pitchmove" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fast" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle noclip" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Mute" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. volume" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. volume" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Autoforward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Chat" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Screenshot" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Range select" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. range" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. range" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Console" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Command" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Local command" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle HUD" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle chat log" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fog" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Old Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "New Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Confirm Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Change" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Sound Volume: " +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Exit" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Muted" +msgstr "" + +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. +#: src/gui/modalMenu.cpp +msgid "Enter " +msgstr "" + +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). +#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp +msgid "LANG_CODE" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Build inside player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place blocks at the position (feet + eye level) where " +"you stand.\n" +"This is helpful when working with nodeboxes in small areas." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Flying" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Player is able to fly without being affected by gravity.\n" +"This requires the \"fly\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, makes move directions relative to the player's pitch when flying " +"or swimming." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast movement" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Fast movement (via the \"special\" key).\n" +"This requires the \"fast\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled together with fly mode, player is able to fly through solid " +"nodes.\n" +"This requires the \"noclip\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths camera when looking around. Also called look or mouse smoothing.\n" +"Useful for recording videos." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera in cinematic mode. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert vertical mouse movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity multiplier." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key for climbing/descending" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, \"special\" key instead of \"sneak\" key is used for climbing " +"down and\n" +"descending." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double tap jump for fly" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double-tapping the jump key toggles fly mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Always fly and fast" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If disabled, \"special\" key is used to fly fast if both fly and fast mode " +"are\n" +"enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rightclick repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated right clicks when holding the " +"right\n" +"mouse button." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically jump up single-node obstacles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Safe digging and placing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prevent digging and placing from repeating when holding the mouse buttons.\n" +"Enable this when you dig or place too often by accident." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Random input" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random user input (only used for testing)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Continuous forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Continuous forward movement, toggled by autoforward key.\n" +"Press the autoforward key again or the backwards movement to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touch screen threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The length in pixels it takes for touch screen interaction to start." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed virtual joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(Android) Fixes the position of virtual joystick.\n" +"If disabled, virtual joystick will center to first-touch's position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Virtual joystick triggers aux button" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(Android) Use virtual joystick to trigger \"aux\" button.\n" +"If enabled, virtual joystick will also tap \"aux\" button when out of main " +"circle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable joysticks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick ID" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The identifier of the joystick to use" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The type of joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick button repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated events\n" +"when holding down a joystick button combination." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick frustum sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The sensitivity of the joystick axes for moving the\n" +"ingame view frustum around." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player forward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Backward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player backward.\n" +"Will also disable autoforward, when active.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Left key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player left.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Right key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player right.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for jumping.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneak key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for sneaking.\n" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the inventory.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving fast in fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Command key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type local commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Range select key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling unlimited view range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fly key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling flying.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling pitch move mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling noclip mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar next key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the next item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar previous key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the previous item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for muting the game.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inc. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dec. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatic forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling autoforward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling cinematic mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling display of minimap.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for taking screenshots.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Drop item key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for dropping the currently selected item.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View zoom key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key to use view zoom when possible.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 1 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the first hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 2 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the second hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 3 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the third hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 4 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fourth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 5 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fifth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 6 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the sixth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 7 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the seventh hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 8 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the eighth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 9 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the ninth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 10 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the tenth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 11 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 11th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 12 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 12th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 13 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 13th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 14 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 14th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 15 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 15th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 16 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 16th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 17 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 17th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 18 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 18th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 19 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 19th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 20 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 20th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 21 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 21st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 22 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 22nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 23 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 23rd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 24 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 24th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 25 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 25th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 26 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 26th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 27 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 27th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 28 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 28th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 29 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 29th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 30 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 30th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 31 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 31st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 32 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 32nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the HUD.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of chat.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large chat console key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the large chat console.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of fog.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera update toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the camera update. Only used for development\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug info toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of debug info.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the profiler. Used for development.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for switching between first- and third-person camera.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range increase key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range decrease key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Graphics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-Game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable vertex buffer objects.\n" +"This should greatly improve graphics performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to fog out the end of the visible area." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces, if defined special_tiles are used\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect glass" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connects glass if supported by node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooth lighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable smooth lighting with simple ambient occlusion.\n" +"Disable for speed or for different looks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds are a client side effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use 3D cloud look instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Digging particles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Adds particles when digging a node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use mip mapping to scale textures. May slightly increase performance,\n" +"especially when using a high resolution texture pack.\n" +"Gamma correct downscaling is not supported." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anisotropic filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use anisotropic filtering when viewing at textures from an angle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use trilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clean transparent textures" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Filtered textures can blend RGB values with fully-transparent neighbors,\n" +"which PNG optimizers usually discard, sometimes resulting in a dark or\n" +"light edge to transparent textures. Apply this filter to clean that up\n" +"at texture load time." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum texture size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" +"can be blurred, so automatically upscale them with nearest-neighbor\n" +"interpolation to preserve crisp pixels. This sets the minimum texture size\n" +"for the upscaled textures; higher values look sharper, but require more\n" +"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n" +"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" +"enabled.\n" +"This is also used as the base node texture size for world-aligned\n" +"texture autoscaling." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FSAA" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Experimental option, might cause visible spaces between blocks\n" +"when set to higher number than 0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Undersampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Undersampling is similar to using a lower screen resolution, but it applies\n" +"to the game world only, keeping the GUI intact.\n" +"It should give a significant performance boost at the cost of less detailed " +"image.\n" +"Higher values result in a less detailed image." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shaders allow advanced visual effects and may increase performance on some " +"video\n" +"cards.\n" +"This only works with the OpenGL video backend." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shader path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to shader directory. If no path is defined, default location will be " +"used." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables Hable's 'Uncharted 2' filmic tone mapping.\n" +"Simulates the tone curve of photographic film and how this approximates the\n" +"appearance of high dynamic range images. Mid-range contrast is slightly\n" +"enhanced, highlights and shadows are gradually compressed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bumpmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables bumpmapping for textures. Normalmaps need to be supplied by the " +"texture pack\n" +"or need to be auto-generated.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Generate normalmaps" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables on the fly normalmap generation (Emboss effect).\n" +"Requires bumpmapping to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of generated normalmaps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps sampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Defines sampling step of texture.\n" +"A higher value results in smoother normal maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables parallax occlusion mapping.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of parallax occlusion iterations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall scale of parallax occlusion effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion bias" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall bias of parallax occlusion effect, usually scale/2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving Nodes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving liquids (like water).\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The maximum height of the surface of waving liquids.\n" +"4.0 = Wave height is two nodes.\n" +"0.0 = Wave doesn't move at all.\n" +"Default is 1.0 (1/2 node).\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wavelength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of liquid waves.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How fast liquid waves will move. Higher = faster.\n" +"If negative, liquid waves will move backwards.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving leaves" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving leaves.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving plants" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving plants.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Advanced" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Arm inertia" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Arm inertia, gives a more realistic movement of\n" +"the arm when the camera moves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If FPS would go higher than this, limit it by sleeping\n" +"to not waste CPU power for no benefit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS in pause menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS when game is paused." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pause on lost window focus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Open the pause menu when the window's focus is lost. Does not pause if a " +"formspec is\n" +"open." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Viewing range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View distance in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Near plane" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" +"Increasing can reduce artifacting on weaker GPUs.\n" +"0.1 = Default, 0.25 = Good value for weaker tablets." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autosave screen size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save window size automatically when modified." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen BPP" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bits per pixel (aka color depth) in fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VSync" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical screen synchronization." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view in degrees." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Alters the light curve by applying 'gamma correction' to it.\n" +"Higher values make middle and lower light levels brighter.\n" +"Value '1.0' leaves the light curve unaltered.\n" +"This only has significant effect on daylight and artificial\n" +"light, it has very little effect on natural night light." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve low gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at minimum light level.\n" +"Controls the contrast of the lowest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve high gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at maximum light level.\n" +"Controls the contrast of the highest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Strength of light curve boost.\n" +"The 3 'boost' parameters define a range of the light\n" +"curve that is boosted in brightness." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost center" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Center of light curve boost range.\n" +"Where 0.0 is minimum light level, 1.0 is maximum light level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost spread" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Spread of light curve boost range.\n" +"Controls the width of the range to be boosted.\n" +"Standard deviation of the light curve boost Gaussian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to texture directory. All textures are first searched from here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Video driver" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The rendering back-end for Irrlicht.\n" +"A restart is required after changing this.\n" +"Note: On Android, stick with OGLES1 if unsure! App may fail to start " +"otherwise.\n" +"On other platforms, OpenGL is recommended, and it’s the only driver with\n" +"shader support currently." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cloud radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Radius of cloud area stated in number of 64 node cloud squares.\n" +"Values larger than 26 will start to produce sharp cutoffs at cloud area " +"corners." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable view bobbing and amount of view bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fall bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Multiplier for fall bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D support.\n" +"Currently supported:\n" +"- none: no 3d output.\n" +"- anaglyph: cyan/magenta color 3d.\n" +"- interlaced: odd/even line based polarisation screen support.\n" +"- topbottom: split screen top/bottom.\n" +"- sidebyside: split screen side by side.\n" +"- crossview: Cross-eyed 3d\n" +"- pageflip: quadbuffer based 3d.\n" +"Note that the interlaced mode requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D mode parallax strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box border color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selection box lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Recent Chat Messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of recent chat messages to show" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desynchronize block animation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether node texture animations should be desynchronized per mapblock." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum hotbar width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum proportion of current window to be used for hotbar.\n" +"Useful if there's something to be displayed right or left of hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD scale factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modifies the size of the hudbar elements." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mesh cache" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables caching of facedir rotated meshes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generation delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Delay between mesh updates on the client in ms. Increasing this will slow\n" +"down the rate of mesh updates, thus reducing jitter on slower clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generator's MapBlock cache size in MB" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of the MapBlock cache of the mesh generator. Increasing this will\n" +"increase the cache hit %, reducing the data being copied from the main\n" +"thread, thus reducing jitter." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables minimap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Round minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shape of the minimap. Enabled = round, disabled = square." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"True = 256\n" +"False = 128\n" +"Usable to make minimap smoother on slower machines." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Colored fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ambient occlusion gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The strength (darkness) of node ambient-occlusion shading.\n" +"Lower is darker, Higher is lighter. The valid range of values for this\n" +"setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" +"set to the nearest valid value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog start" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fraction of the visible distance at which fog starts to be rendered" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Opaque liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes all liquids opaque" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World-aligned textures mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Textures on a node may be aligned either to the node or to the world.\n" +"The former mode suits better things like machines, furniture, etc., while\n" +"the latter makes stairs and microblocks fit surroundings better.\n" +"However, as this possibility is new, thus may not be used by older servers,\n" +"this option allows enforcing it for certain node types. Note though that\n" +"that is considered EXPERIMENTAL and may not work properly." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autoscaling mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World-aligned textures may be scaled to span several nodes. However,\n" +"the server may not send the scale you want, especially if you use\n" +"a specially-designed texture pack; with this option, the client tries\n" +"to determine the scale automatically basing on the texture size.\n" +"See also texture_min_size.\n" +"Warning: This option is EXPERIMENTAL!" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Menus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Scale GUI by a user specified value.\n" +"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" +"This will smooth over some of the rough edges, and blend\n" +"pixels when scaling down, at the cost of blurring some\n" +"edge pixels when images are scaled by non-integer sizes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter is true, all GUI images need to be\n" +"filtered in software, but some images are generated directly\n" +"to hardware (e.g. render-to-texture for nodes in inventory)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter txr2img" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter_txr2img is true, copy those images\n" +"from hardware to software for scaling. When false, fall back\n" +"to the old scaling method, for video drivers that don't\n" +"properly support downloading textures back from hardware." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay showing tooltips, stated in milliseconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Append item name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Append item name to tooltip." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FreeType fonts" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether FreeType fonts are used, requires FreeType support to be compiled " +"in.\n" +"If disabled, bitmap and XML vectors fonts are used instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font bold by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font italic by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shadow offset (in pixels) of the default font. If 0, then shadow will not be " +"drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the default font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Regular font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the default font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"The fallback font will be used if the font cannot be loaded." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the monospace font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the monospace font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font is used for e.g. the console and profiler screen." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the fallback font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " +"be drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path of the fallback font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font will be used for certain languages or if the default font is " +"unavailable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot folder" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "DPI" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " +"screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable console window" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Windows systems only: Start Minetest with the command line window in the " +"background.\n" +"Contains the same information as the file debug.txt (default name)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables the sound system.\n" +"If disabled, this completely disables all sounds everywhere and the in-game\n" +"sound controls will be non-functional.\n" +"Changing this setting requires a restart." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volume" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Volume of all sounds.\n" +"Requires the sound system to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to mute sounds. You can unmute sounds at any time, unless the\n" +"sound system is disabled (enable_sound=false).\n" +"In-game, you can toggle the mute state with the mute key or by using the\n" +"pause menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Network" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Address to connect to.\n" +"Leave this blank to start a local server.\n" +"Note that the address field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Port to connect to (UDP).\n" +"Note that the port field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Saving map received from server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save the map received by the client on disk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect to external media server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable usage of remote media server (if provided by server).\n" +"Remote servers offer a significantly faster way to download media (e.g. " +"textures)\n" +"when connecting to the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client modding" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable Lua modding support on client.\n" +"This support is experimental and API can change." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "URL to the server list displayed in the Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist file" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"File in client/serverlist/ that contains your favorite servers displayed in " +"the\n" +"Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum size of the out chat queue" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum size of the out chat queue.\n" +"0 to disable queueing and -1 to make the queue size unlimited." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable register confirmation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable register confirmation when connecting to server.\n" +"If disabled, new account will be registered automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock unload timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Timeout for client to remove unused map data from memory." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of mapblocks for client to be kept in memory.\n" +"Set to -1 for unlimited amount." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show debug info" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server / Singleplayer" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the server, to be displayed when players join and in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server description" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Description of server, to be displayed when players join and in the " +"serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Domain name of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Homepage of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically report to the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce to this serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strip color codes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Remove color codes from incoming chat messages\n" +"Use this to stop players from being able to use color in their messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Network port to listen (UDP).\n" +"This value will be overridden when starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bind address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The network interface that the server listens on." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strict protocol checking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable to disallow old clients from connecting.\n" +"Older clients are compatible in the sense that they will not crash when " +"connecting\n" +"to new servers, but they may not support all new features that you are " +"expecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies URL from which client fetches media instead of using UDP.\n" +"$filename should be accessible from $remote_media$filename via cURL\n" +"(obviously, remote_media should end with a slash).\n" +"Files that are not present will be fetched the usual way." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6 server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable/disable running an IPv6 server.\n" +"Ignored if bind_address is set.\n" +"Needs enable_ipv6 to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum simultaneous block sends per client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks that are simultaneously sent per client.\n" +"The maximum total count is calculated dynamically:\n" +"max_total = ceil((#clients + max_users) * per_client / 4)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay in sending blocks after building" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"To reduce lag, block transfers are slowed down when a player is building " +"something.\n" +"This determines how long they are slowed down after placing or removing a " +"node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. packets per iteration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step, if you have a slow connection\n" +"try reducing it, but don't reduce it to a number below double of targeted\n" +"client number." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default game when creating a new world.\n" +"This will be overridden when creating a world from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day displayed to players connecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum users" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of players that can be connected simultaneously." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map directory" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World directory (everything in the world is stored here).\n" +"Not needed if starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Item entity TTL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Time in seconds for item entity (dropped items) to live.\n" +"Setting it to -1 disables the feature." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default stack size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Damage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable players getting damage and dying." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Creative" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable creative mode for new created maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed map seed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"A chosen map seed for a new map, leave empty for random.\n" +"Will be overridden when creating a new world in the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default password" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "New users need to input this password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The privileges that new users automatically get.\n" +"See /privs in game for a full list on your server and mod configuration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unlimited player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether players are shown to clients without any range limit.\n" +"Deprecated, use the setting player_transfer_distance instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player versus player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to allow players to damage and kill each other." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mod channels" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod channels support." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Static spawnpoint" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If this is set, players will always (re)spawn at the given position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disallow empty passwords" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, new players cannot join with an empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable anticheat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, disable cheat prevention in multiplayer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rollback recording" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, actions are recorded for rollback.\n" +"This option is only read when server starts." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Format of player chat messages. The following strings are valid " +"placeholders:\n" +"@name, @message, @timestamp (optional)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shutdown message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server shuts down." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crash message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server crashes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ask to reconnect after crash" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to ask clients to reconnect after a (Lua) crash.\n" +"Set this to true if your server is set up to restart automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active object send range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far clients know about objects, stated in mapblocks (16 nodes).\n" +"\n" +"Setting this larger than active_block_range will also cause the server\n" +"to maintain active objects up to this distance in the direction the\n" +"player is looking. (This can avoid mobs suddenly disappearing from view)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The radius of the volume of blocks around every player that is subject to " +"the\n" +"active block stuff, stated in mapblocks (16 nodes).\n" +"In active blocks objects are loaded and ABMs run.\n" +"This is also the minimum range in which active objects (mobs) are " +"maintained.\n" +"This should be configured together with active_object_send_range_blocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block send distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are sent to clients, stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum forceloaded blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of forceloaded mapblocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time send interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of sending time of day to clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls length of day/night cycle.\n" +"Examples:\n" +"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World start time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time of day when a new world is started, in millihours (0-23999)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map save interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of saving important changes in the world, stated in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message max length" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set the maximum character length of a chat message sent by clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message count limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amount of messages a player may send per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message kick threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Kick players who sent more than X messages per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Physics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration on ground or when climbing,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration in air" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal acceleration in air when jumping or falling,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration in fast mode,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking and flying speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking, flying and climbing speed in fast mode, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Climbing speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical climbing speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Initial vertical speed when jumping, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease this to increase liquid resistance to movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum liquid resistance. Controls deceleration when entering liquid at\n" +"high speed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid sinking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls sinking speed in liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gravity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration of gravity, in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Deprecated Lua API handling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Handling for deprecated Lua API calls:\n" +"- legacy: (try to) mimic old behaviour (default for release).\n" +"- log: mimic and log backtrace of deprecated call (default for debug).\n" +"- error: abort on usage of deprecated call (suggested for mod developers)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. clearobjects extra blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of extra blocks that can be loaded by /clearobjects at once.\n" +"This is a trade-off between sqlite transaction overhead and\n" +"memory consumption (4096=100MB, as a rule of thumb)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unload unused server data" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How much the server will wait before unloading unused mapblocks.\n" +"Higher value is smoother, but will use more RAM." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum objects per block" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of statically stored objects in a block." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Synchronous SQLite" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dedicated server step" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick and the interval at which objects are generally " +"updated over\n" +"network." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between active block management cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ABM interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between Active Block Modifier (ABM) execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ignore world errors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, invalid world data won't cause the server to shut down.\n" +"Only enable this if you know what you are doing." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid loop max" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max liquids processed per step." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid queue purge time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time (in seconds) that the liquids queue may grow beyond processing\n" +"capacity until an attempt is made to decrease its size by dumping old queue\n" +"items. A value of 0 disables the functionality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update tick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update interval in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block send optimize distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"At this distance the server will aggressively optimize which blocks are sent " +"to\n" +"clients.\n" +"Small values potentially improve performance a lot, at the expense of " +"visible\n" +"rendering glitches (some blocks will not be rendered under water and in " +"caves,\n" +"as well as sometimes on land).\n" +"Setting this to a value greater than max_block_send_distance disables this\n" +"optimization.\n" +"Stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server side occlusion culling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled the server will perform map block occlusion culling based on\n" +"on the eye position of the player. This can reduce the number of blocks\n" +"sent to the client 50-80%. The client will not longer receive most " +"invisible\n" +"so that the utility of noclip mode is reduced." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side modding restrictions" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Restricts the access of certain client-side functions on servers.\n" +"Combine the byteflags below to restrict client-side features, or set to 0\n" +"for no restrictions:\n" +"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n" +"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n" +"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n" +"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n" +"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n" +"csm_restriction_noderange)\n" +"READ_PLAYERINFO: 32 (disable get_player_names call client-side)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side node lookup range restriction" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the CSM restriction for node range is enabled, get_node calls are " +"limited\n" +"to this distance from the player to the node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prevent mods from doing insecure things like running shell commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trusted mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of trusted mods that are allowed to access insecure\n" +"functions even when mod security is on (via request_insecure_environment())." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HTTP mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Load the game profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Load the game profiler to collect game profiling data.\n" +"Provides a /profiler command to access the compiled profile.\n" +"Useful for mod developers and server operators." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default report format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The default format in which profiles are being saved,\n" +"when calling `/profiler save [format]` without format." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Report path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The file path relative to your worldpath in which profiles will be saved to." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrumentation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Entity methods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument the methods of entities on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Active Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Loading Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Loading Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chatcommands" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument chatcommands on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Global callbacks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument global callback functions on registration.\n" +"(anything you pass to a minetest.register_*() function)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Builtin" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument builtin.\n" +"This is usually only needed by core/builtin contributors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Have the profiler instrument itself:\n" +"* Instrument an empty function.\n" +"This estimates the overhead, that instrumentation is adding (+1 function " +"call).\n" +"* Instrument the sampler being used to update the statistics." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client and Server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the player.\n" +"When running a server, clients connecting with this name are admins.\n" +"When starting from the main menu, this is overridden." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Language" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the language. Leave empty to use the system language.\n" +"A restart is required after changing this." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Level of logging to be written to debug.txt:\n" +"- (no logging)\n" +"- none (messages with no level)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log file size threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the file size of debug.txt exceeds the number of megabytes specified in\n" +"this setting when it is opened, the file is moved to debug.txt.1,\n" +"deleting an older debug.txt.1 if it exists.\n" +"debug.txt is only moved if this setting is positive." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable IPv6 support (for both client and server).\n" +"Required for IPv6 connections to work at all." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default timeout for cURL, stated in milliseconds.\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL parallel limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limits number of parallel HTTP requests. Affects:\n" +"- Media fetch if server uses remote_media setting.\n" +"- Serverlist download and server announcement.\n" +"- Downloads performed by main menu (e.g. mod manager).\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum time in ms a file download (e.g. a mod download) may take." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "High-precision FPU" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Changes the main menu UI:\n" +"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, " +"etc.\n" +"- Simple: One singleplayer world, no game or texture pack choosers. May " +"be\n" +"necessary for smaller screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu script" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Replaces the default main menu with a custom one." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Engine profiling data print interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Print the engine's profiling data in regular intervals (in seconds).\n" +"0 = disable. Useful for developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of map generator to be used when creating a new world.\n" +"Creating a world in the main menu will override this.\n" +"Current mapgens in a highly unstable state:\n" +"- The optional floatlands of v7 (disabled by default)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water surface level of the world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block generate distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are generated for clients, stated in mapblocks (16 " +"nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" +"Only mapchunks completely within the mapgen limit are generated.\n" +"Value is stored per-world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome API temperature and humidity noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Temperature variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale temperature variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale humidity variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen v5." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls width of tunnels, a smaller value creates wider tunnels.\n" +"Value >= 10.0 completely disables generation of tunnels and avoids the\n" +"intensive noise calculations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave proportion flooded" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Proportion of large caves that contain liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of cavern upper limit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern taper" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-distance over which caverns expand to full size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines full size of caverns, smaller values create larger caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of biome filler depth." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Factor noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Variation of terrain vertical scale.\n" +"When noise is < -0.55 terrain is near-flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of average terrain surface." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Second of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise that determines number of dungeons per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"The 'snowbiomes' flag enables the new 5 biome system.\n" +"When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" +"the 'jungles' flag is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desert noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Deserts occur when np_biome exceeds this value.\n" +"When the 'snowbiomes' flag is enabled, this is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sandy beaches occur when np_beach exceeds this value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain base noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of lower terrain and seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain higher noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of higher terrain that creates cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Steepness noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height select noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mud noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies depth of biome surface nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas with sandy beaches." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of number of caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines tree areas and tree density." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Apple trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas where trees have apples." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain zero level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y of mountain density gradient zero level. Used to shift mountains " +"vertically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Exponent of the floatland tapering. Alters the tapering behaviour.\n" +"Value = 1.0 creates a uniform, linear tapering.\n" +"Values > 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +#, c-format +msgid "" +"Adjusts the density of the floatland layer.\n" +"Increase value to increase density. Can be positive or negative.\n" +"Value = 0.0: 50% of volume is floatland.\n" +"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" +"to be sure) creates a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain alternative noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain persistence noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Varies roughness of terrain.\n" +"Defines the 'persistence' value for terrain_base and terrain_alt noises." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain and steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of maximum mountain height (in nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge underwater noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines large-scale river channel structure." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining mountain structure and height.\n" +"Also defines structure of floatland mountain terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining structure of river canyon walls." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining structure of floatlands.\n" +"If altered from the default, the noise 'scale' (0.7 by default) may need\n" +"to be adjusted, as floatland tapering functions best when this noise has\n" +"a value range of approximately -2.0 to 2.0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen Carpathian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the base ground level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the depth of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River valley width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river valley." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Second of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness3 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Third of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness4 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fourth of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rolling hills spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of rolling hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of ridged mountain ranges." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of step mountain ranges." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rolling hill size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of rolling hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridged mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of ridged mountains." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of step mountains." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that locates the river valleys and channels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain variation noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Flat.\n" +"Occasional lakes and hills can be added to the flat world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines location and terrain of optional hills and lakes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Fractal.\n" +"'terrain' enables the generation of non-fractal terrain:\n" +"ocean, islands and underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fractal type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Selects one of 18 fractal types.\n" +"1 = 4D \"Roundy\" Mandelbrot set.\n" +"2 = 4D \"Roundy\" Julia set.\n" +"3 = 4D \"Squarry\" Mandelbrot set.\n" +"4 = 4D \"Squarry\" Julia set.\n" +"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" Julia set.\n" +"7 = 4D \"Variation\" Mandelbrot set.\n" +"8 = 4D \"Variation\" Julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n" +"11 = 3D \"Christmas Tree\" Mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" Julia set.\n" +"13 = 3D \"Mandelbulb\" Mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" Julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" Julia set.\n" +"17 = 4D \"Mandelbulb\" Mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" Julia set." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Increasing this increases the amount of fine detail, but also\n" +"increases processing load.\n" +"At iterations = 20 this mapgen has a similar load to mapgen V7." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) scale of fractal in nodes.\n" +"Actual fractal size will be 2 to 3 times larger.\n" +"These numbers can be made very large, the fractal does\n" +"not have to fit inside the world.\n" +"Increase these to 'zoom' into the detail of the fractal.\n" +"Default is for a vertically-squashed shape suitable for\n" +"an island, set all 3 numbers equal for the raw shape." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" +"Can be used to move a desired point to (0, 0) to create a\n" +"suitable spawn point, or to allow 'zooming in' on a desired\n" +"point by increasing 'scale'.\n" +"The default is tuned for a suitable spawn point for Mandelbrot\n" +"sets with default parameters, it may need altering in other\n" +"situations.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slice w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"W coordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"X component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Y component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Z component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"W component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Seabed noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill': Reduces heat with altitude.\n" +"'humid_rivers': Increases humidity around rivers.\n" +"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n" +"to become shallower and occasionally dry.\n" +"'altitude_dry': Reduces humidity with altitude." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n" +"enabled. Also the vertical distance over which humidity drops by 10 if\n" +"'altitude_dry' is enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern upper limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How deep to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other biome filler node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base terrain height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n" +"WARNING!: There is no benefit, and there are several dangers, in\n" +"increasing this value above 5.\n" +"Reducing this value increases cave and dungeon density.\n" +"Altering this value is for special usage, leaving it unchanged is\n" +"recommended." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dump the mapgen debug information." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Absolute limit of queued blocks to emerge" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of blocks that can be queued for loading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be loaded from file.\n" +"This limit is enforced per player." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be generated.\n" +"This limit is enforced per player." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of emerge threads" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of emerge threads to use.\n" +"Value 0:\n" +"- Automatic selection. The number of emerge threads will be\n" +"- 'number of processors - 2', with a lower limit of 1.\n" +"Any other value:\n" +"- Specifies the number of emerge threads, with a lower limit of 1.\n" +"WARNING: Increasing the number of emerge threads increases engine mapgen\n" +"speed, but this may harm game performance by interfering with other\n" +"processes, especially in singleplayer and/or when running Lua code in\n" +"'on_generated'. For many users the optimum setting may be '1'." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Online Content Repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The URL for the content repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB Flag Blacklist" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of flags to hide in the content repository.\n" +"\"nonfree\" can be used to hide packages which do not qualify as 'free " +"software',\n" +"as defined by the Free Software Foundation.\n" +"You can also specify content ratings.\n" +"These flags are independent from Minetest versions,\n" +"so see a full list at https://content.minetest.net/help/content_flags/" +msgstr "" From b7060499811e95d27b2100f08ee700706464de06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81cs=20Zolt=C3=A1n?= Date: Fri, 19 Jun 2020 18:27:35 +0000 Subject: [PATCH 377/424] Translated using Weblate (Hungarian) Currently translated at 77.1% (1042 of 1350 strings) --- po/hu/minetest.po | 800 +++++++++++++++++++++------------------------- 1 file changed, 370 insertions(+), 430 deletions(-) diff --git a/po/hu/minetest.po b/po/hu/minetest.po index d4d58d435..725c12629 100644 --- a/po/hu/minetest.po +++ b/po/hu/minetest.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Hungarian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-07 22:41+0000\n" +"PO-Revision-Date: 2020-06-22 17:56+0000\n" "Last-Translator: Ács Zoltán \n" "Language-Team: Hungarian \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -56,7 +56,7 @@ msgstr "Protokollverzió-eltérés. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "A kiszolgáló által megkövetelt protokollverzió: $1. " +msgstr "A szerver által megkövetelt protokollverzió: $1. " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " @@ -116,7 +116,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "További modok keresése" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -172,13 +172,12 @@ msgid "ContentDB is not available when Minetest was compiled without cURL" msgstr "" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Downloading..." -msgstr "Betöltés…" +msgstr "Letöltés…" #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" -msgstr "$1 telepítése nem sikerült" +msgstr "$1 letöltése nem sikerült" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -213,7 +212,7 @@ msgstr "Textúracsomagok" #: builtin/mainmenu/dlg_contentstore.lua msgid "Uninstall" -msgstr "Törlés" +msgstr "Eltávolítás" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update" @@ -221,7 +220,7 @@ msgstr "Frissítés" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "Megtekintés" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -229,7 +228,7 @@ msgstr "Már létezik egy „$1” nevű világ" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "További terep" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp #, fuzzy @@ -237,42 +236,36 @@ msgid "Altitude chill" msgstr "Hőmérsékletcsökkenés a magassággal" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Altitude dry" -msgstr "Hőmérsékletcsökkenés a magassággal" +msgstr "Páratartalomcsökkenés a magassággal" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biome blending" -msgstr "Éghajlat zaj" +msgstr "Biom keverés" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biomes" -msgstr "Éghajlat zaj" +msgstr "Biomok" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caverns" -msgstr "Barlang zaj" +msgstr "Üregek" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caves" -msgstr "Oktávok" +msgstr "Barlangok" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "Létrehozás" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Decorations" -msgstr "Ismétlések" +msgstr "Dekorációk" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "Aljáték (mint a minetest_game) letöltése a minetest.net címről" +msgstr "Játék (mint a minetest_game) letöltése a minetest.net címről" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" @@ -288,14 +281,12 @@ msgid "Flat terrain" msgstr "" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floating landmasses in the sky" -msgstr "Lebegő hegyek sűrűsége" +msgstr "Lebegő földdarabok az égben" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floatlands (experimental)" -msgstr "Lebegő föld szintje" +msgstr "Lebegő földek" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -307,24 +298,25 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Dombok" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Humid rivers" -msgstr "Videó driver" +msgstr "Párás folyók" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Megnöveli a páratartalmat a folyók körül" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Tavak" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" msgstr "" +"Az alacsony páratartalom és a magas hőmérséklet sekélyesíti vagy ki is " +"száríthatja a folyókat" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -332,25 +324,23 @@ msgstr "Térkép generálás" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen flags" -msgstr "Térképgeneráló zászlók" +msgstr "Térképgenerátor zászlók" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mapgen-specific flags" -msgstr "Lapos térképgenerátor különleges zászlók" +msgstr "Térképgenerátor különleges zászlói" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mountains" -msgstr "Hegy zaj" +msgstr "Hegyek" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "Iszap áramlás" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "Alagutak és barlangok hálózata" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -358,20 +348,19 @@ msgstr "Nincs játékmód kiválasztva" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "A magassággal csökken a hőmérséklet" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "A magassággal csökken a páratartalom" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Rivers" -msgstr "Folyó méret" +msgstr "Folyók" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "Tengerszinti folyók" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -380,7 +369,7 @@ msgstr "Kezdőérték" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "Sima átmenet a biomok között" #: builtin/mainmenu/dlg_create_world.lua msgid "" @@ -394,15 +383,15 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "Mérsékelt, Sivatag" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "Mérsékelt, Sivatag, Dzsungel" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "Mérsékelt, Sivatag, Dzsungel, Tundra, Tajga" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -411,22 +400,19 @@ msgstr "Terep alapzaj" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "Fák és dzsungelfű" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Vary river depth" -msgstr "Folyó mélység" +msgstr "Változatos folyómélység" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "Nagyon nagy üregek mélyen a föld alatt" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Warning: The Development Test is meant for developers." -msgstr "" -"Figyelmeztetés: a minimális fejlesztői teszt fejlesztőknek számára készült." +msgstr "Figyelmeztetés: a fejlesztői teszt fejlesztők számára készült." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -434,7 +420,7 @@ msgstr "Világ neve" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no games installed." -msgstr "Nincsenek aljátékok telepítve." +msgstr "Nincsenek játékok telepítve." #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" @@ -448,7 +434,7 @@ msgstr "Törlés" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" -msgstr "pkgmr: a(z) „$1” törlése meghiúsult" +msgstr "pkgmr: a(z) „$1” törlése sikertelen" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" @@ -471,7 +457,7 @@ msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" -"Ennek a modcsomagnak a neve a a modpack.conf fájlban meghatározott, ami " +"Ennek a modcsomagnak a neve a modpack.conf fájlban meghatározott, ami " "felülír minden itteni átnevezést." #: builtin/mainmenu/dlg_settings_advanced.lua @@ -672,7 +658,7 @@ msgstr "Telepített csomagok:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "Nincsenek függőségei." +msgstr "Nincsenek függőségek." #: builtin/mainmenu/tab_content.lua msgid "No package description available" @@ -712,7 +698,7 @@ msgstr "Korábbi belső fejlesztők" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" -msgstr "Kiszolgáló nyilvánossá tétele" +msgstr "Szerver nyilvánossá tétele" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" @@ -736,11 +722,11 @@ msgstr "Játék létrehozása" #: builtin/mainmenu/tab_local.lua msgid "Host Server" -msgstr "Kiszolgáló felállítása" +msgstr "Szerver felállítása" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "Játékok telepítése ContentDB-ről" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" @@ -768,7 +754,7 @@ msgstr "Világ kiválasztása:" #: builtin/mainmenu/tab_local.lua msgid "Server Port" -msgstr "Kiszolgáló port" +msgstr "Szerver port" #: builtin/mainmenu/tab_local.lua msgid "Start Game" @@ -800,7 +786,7 @@ msgstr "Kedvenc" #: builtin/mainmenu/tab_online.lua msgid "Join Game" -msgstr "Belépés" +msgstr "Csatlakozás játékhoz" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Name / Password" @@ -897,7 +883,7 @@ msgstr "Node kiemelés" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" -msgstr "Körvonal" +msgstr "Node körvonal" #: builtin/mainmenu/tab_settings.lua msgid "None" @@ -937,7 +923,7 @@ msgstr "Árnyalók" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" -msgstr "Árnyalók ( nem elérhető)" +msgstr "Árnyalók (nem elérhető)" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" @@ -1114,35 +1100,35 @@ msgstr "Automatikus előre kikapcsolva" #: src/client/game.cpp msgid "Automatic forward enabled" -msgstr "automata előre engedélyezve" +msgstr "Automatikus előre engedélyezve" #: src/client/game.cpp msgid "Camera update disabled" -msgstr "kamera frissítés kikapcsolva" +msgstr "Kamera frissítés letiltva" #: src/client/game.cpp msgid "Camera update enabled" -msgstr "Kamera frissítés bekapcsolva" +msgstr "Kamera frissítés engedélyezve" #: src/client/game.cpp msgid "Change Password" -msgstr "Jelszóváltoztatás" +msgstr "Jelszó változtatása" #: src/client/game.cpp msgid "Cinematic mode disabled" -msgstr "Film mód kikapcsolva" +msgstr "Filmszerű mód letiltva" #: src/client/game.cpp msgid "Cinematic mode enabled" -msgstr "Film mód bekapcsolva" +msgstr "Filmszerű mód engedélyezve" #: src/client/game.cpp msgid "Client side scripting is disabled" -msgstr "kliens oldali szkriptek KI" +msgstr "Kliens oldali szkriptek letiltva" #: src/client/game.cpp msgid "Connecting to server..." -msgstr "Kapcsolódás kiszolgálóhoz…" +msgstr "Kapcsolódás szerverhez..." #: src/client/game.cpp msgid "Continue" @@ -1191,11 +1177,11 @@ msgstr "Kiszolgáló létrehozása…" #: src/client/game.cpp msgid "Debug info and profiler graph hidden" -msgstr "H infó sor, és graph KI" +msgstr "Hibakereső információ és pofiler elrejtése" #: src/client/game.cpp msgid "Debug info shown" -msgstr "Hibakereső infó BE" +msgstr "Hibakereső információ engedélyezve" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" @@ -1231,11 +1217,11 @@ msgstr "" #: src/client/game.cpp msgid "Disabled unlimited viewing range" -msgstr "korlátlan látótáv KI" +msgstr "Korlátlan látótáv letiltása" #: src/client/game.cpp msgid "Enabled unlimited viewing range" -msgstr "korlátlan látótáv BE" +msgstr "Korlátlan látótáv engedélyezése" #: src/client/game.cpp msgid "Exit to Menu" @@ -1247,35 +1233,35 @@ msgstr "Kilépés a játékból" #: src/client/game.cpp msgid "Fast mode disabled" -msgstr "gyors mód KI" +msgstr "Gyors mód letiltva" #: src/client/game.cpp msgid "Fast mode enabled" -msgstr "gyors mód BE" +msgstr "Gyors mód engedélyezve" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "gyors haladási mód BE ( de nincs engedélyed )" +msgstr "Gyors mód engedélyezve (de nincs jogosultságod)" #: src/client/game.cpp msgid "Fly mode disabled" -msgstr "szabadon repülés KI" +msgstr "Repülés letiltva" #: src/client/game.cpp msgid "Fly mode enabled" -msgstr "szabadon repülés BE" +msgstr "Repülés engedélyezve" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "szabad repülés mód BE ( de nincs engedélyed )" +msgstr "Repülés engedélyezve (de nincs jogosultságod)" #: src/client/game.cpp msgid "Fog disabled" -msgstr "köd KI" +msgstr "Köd letiltva" #: src/client/game.cpp msgid "Fog enabled" -msgstr "köd BE" +msgstr "köd engedélyezve" #: src/client/game.cpp msgid "Game info:" @@ -1287,7 +1273,7 @@ msgstr "Játék szüneteltetve" #: src/client/game.cpp msgid "Hosting server" -msgstr "Kiszolgáló felállítása" +msgstr "Szerver felállítása" #: src/client/game.cpp msgid "Item definitions..." @@ -1307,47 +1293,47 @@ msgstr "MiB/s" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "a kis térkép KI ( szerver , vagy MOD álltal )" +msgstr "A kistérkép letiltva (szerver, vagy mod által)" #: src/client/game.cpp msgid "Minimap hidden" -msgstr "Minitérkép KI" +msgstr "Kistérkép letiltva" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" -msgstr "kistérkép RADAR módban x1" +msgstr "Kistérkép radar módban x1" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x2" -msgstr "kistérkép RADAR módban x2" +msgstr "Kistérkép radar módban x2" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x4" -msgstr "kistérkép RADAR módban x4" +msgstr "Kistérkép radar módban x4" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x1" -msgstr "kistérkép terület módban x1" +msgstr "Kistérkép terület módban x1" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x2" -msgstr "kistérkép terület módban x2" +msgstr "Kistérkép terület módban x2" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x4" -msgstr "kistérkép terület módban x4" +msgstr "Kistérkép terület módban x4" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "Szellem mód KI" +msgstr "Noclip mód letiltva" #: src/client/game.cpp msgid "Noclip mode enabled" -msgstr "Szellem mód engedélyezve" +msgstr "Noclip mód engedélyezve" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "Szellem mód BE ( de nincs engedélyed )" +msgstr "Noclip mód engedélyezve (de nincs jogosultságod)" #: src/client/game.cpp msgid "Node definitions..." @@ -1363,15 +1349,15 @@ msgstr "Be" #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "Pályamozgás mód kikapcsolva" +msgstr "Pályamozgás mód letiltva" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "Pályamozgás mód bekapcsolva" +msgstr "Pályamozgás mód engedélyezve" #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "Profilgrafika BE" +msgstr "Profilergrafika megjelenítése" #: src/client/game.cpp msgid "Remote server" @@ -1395,19 +1381,19 @@ msgstr "Hangerő" #: src/client/game.cpp msgid "Sound muted" -msgstr "hang KI" +msgstr "Hang némítva" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "A hangrendszer letiltva" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "" +msgstr "A hangrendszer nem támogatott ebben build-ben" #: src/client/game.cpp msgid "Sound unmuted" -msgstr "hang BE" +msgstr "Hang visszahangosítva" #: src/client/game.cpp #, c-format @@ -1431,11 +1417,11 @@ msgstr "Hangerő átállítva: %d%%" #: src/client/game.cpp msgid "Wireframe shown" -msgstr "hálós rajzolás BE" +msgstr "Drótváz megjelenítése" #: src/client/game.cpp msgid "Zoom currently disabled by game or mod" -msgstr "ZOOM KI ( szerver, vagy MOD álltal )" +msgstr "Nagyítás letiltva (szerver, vagy mod által)" #: src/client/game.cpp msgid "ok" @@ -1443,11 +1429,11 @@ msgstr "ok" #: src/client/gameui.cpp msgid "Chat hidden" -msgstr "Csevegés KI" +msgstr "Csevegés elrejtve" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "beszélgetős rész BE" +msgstr "Csevegés megjelenítése" #: src/client/gameui.cpp msgid "HUD hidden" @@ -1459,12 +1445,12 @@ msgstr "HUD megjelenítése" #: src/client/gameui.cpp msgid "Profiler hidden" -msgstr "profiler KI" +msgstr "Profiler elrejtése" #: src/client/gameui.cpp #, c-format msgid "Profiler shown (page %d of %d)" -msgstr "Profiler BE (lap: %d1 ennyiböl : %d2)" +msgstr "Profiler megjelenítése (lap: %d1 ennyiből : %d2)" #: src/client/keycode.cpp msgid "Apps" @@ -1472,7 +1458,7 @@ msgstr "Alkalmazások" #: src/client/keycode.cpp msgid "Backspace" -msgstr "bacspace gomb" +msgstr "Backspace" #: src/client/keycode.cpp msgid "Caps Lock" @@ -1508,7 +1494,7 @@ msgstr "Segítség" #: src/client/keycode.cpp msgid "Home" -msgstr "Homer" +msgstr "Home" #: src/client/keycode.cpp msgid "IME Accept" @@ -1528,7 +1514,7 @@ msgstr "IME Mód váltás" #: src/client/keycode.cpp msgid "IME Nonconvert" -msgstr "IME Nem konvertál" +msgstr "IME Nem átalakított" #: src/client/keycode.cpp msgid "Insert" @@ -1573,63 +1559,63 @@ msgstr "Num Lock" #: src/client/keycode.cpp msgid "Numpad *" -msgstr "Numerikus bill. *" +msgstr "Numpad *" #: src/client/keycode.cpp msgid "Numpad +" -msgstr "Numerikus bill. +" +msgstr "Numpad +" #: src/client/keycode.cpp msgid "Numpad -" -msgstr "Numerikus bill. -" +msgstr "Numpad -" #: src/client/keycode.cpp msgid "Numpad ." -msgstr "Numerikus bill." +msgstr "Numpad ." #: src/client/keycode.cpp msgid "Numpad /" -msgstr "Numerikus bill. /" +msgstr "Numpad /" #: src/client/keycode.cpp msgid "Numpad 0" -msgstr "Numerikus bill. 0" +msgstr "Numpad 0" #: src/client/keycode.cpp msgid "Numpad 1" -msgstr "Numerikus bill. 1" +msgstr "Numpad 1" #: src/client/keycode.cpp msgid "Numpad 2" -msgstr "Numerikus bill. 2" +msgstr "Numpad 2" #: src/client/keycode.cpp msgid "Numpad 3" -msgstr "Numerikus bill. 3" +msgstr "Numpad 3" #: src/client/keycode.cpp msgid "Numpad 4" -msgstr "Numerikus bill. 4" +msgstr "Numpad 5" #: src/client/keycode.cpp msgid "Numpad 5" -msgstr "Numerikus bill. 5" +msgstr "Numpad 5" #: src/client/keycode.cpp msgid "Numpad 6" -msgstr "Numerikus bill. 6" +msgstr "Numpad 6" #: src/client/keycode.cpp msgid "Numpad 7" -msgstr "Numerikus bill. 7" +msgstr "Numpad 7" #: src/client/keycode.cpp msgid "Numpad 8" -msgstr "Numerikus bill. 8" +msgstr "Numpad 8" #: src/client/keycode.cpp msgid "Numpad 9" -msgstr "Numerikus bill. 9" +msgstr "Numpad 9" #: src/client/keycode.cpp msgid "OEM Clear" @@ -1637,11 +1623,11 @@ msgstr "OEM Clear" #: src/client/keycode.cpp msgid "Page down" -msgstr "Page down" +msgstr "Page Down" #: src/client/keycode.cpp msgid "Page up" -msgstr "Page up" +msgstr "Page Up" #: src/client/keycode.cpp msgid "Pause" @@ -1654,7 +1640,7 @@ msgstr "Játék" #. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" -msgstr "Nyomtatás" +msgstr "PrintScreen" #: src/client/keycode.cpp msgid "Return" @@ -1849,7 +1835,7 @@ msgstr "Következő tárgy" #: src/gui/guiKeyChangeMenu.cpp msgid "Prev. item" -msgstr "Előző tárgy" +msgstr "Előző elem" #: src/gui/guiKeyChangeMenu.cpp msgid "Range select" @@ -1869,35 +1855,35 @@ msgstr "Különleges" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" -msgstr "HUD BE/KI" +msgstr "HUD váltása" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle chat log" -msgstr "csevegés log KI/BE" +msgstr "Csevegésnapló váltása" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fast" -msgstr "Gyors mód bekapcsolása" +msgstr "Gyors mód váltása" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "Repülés bekapcsolása" +msgstr "Repülés váltása" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fog" -msgstr "köd KI/BE" +msgstr "Köd váltása" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle minimap" -msgstr "kistérkép KI/BE" +msgstr "Kistérkép váltása" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "Szellem mód bekapcsolása" +msgstr "Noclip mód váltása" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle pitchmove" -msgstr "csevegés log KI/BE" +msgstr "Pályamozgás mód váltása" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" @@ -2012,7 +1998,7 @@ msgstr "2D zaj, amely a dombok alakját/méretét szabályozza." #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of step mountains." -msgstr "2D zaj ami irányítja a lépés hegyek formáját/méretét." +msgstr "2D zaj amely szabályozza a lépés hegyek formáját/méretét." #: src/settings_translation_file.cpp msgid "2D noise that controls the size/occurrence of ridged mountain ranges." @@ -2029,7 +2015,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "2D noise that locates the river valleys and channels." -msgstr "2D zaj, amely a folyómedrek elhelyezkedését szabályozza." +msgstr "" +"2D zaj, amely a folyóvölgyek és a folyómedrek elhelyezkedését szabályozza." #: src/settings_translation_file.cpp msgid "3D clouds" @@ -2046,7 +2033,7 @@ msgstr "Parallax Occlusion hatás ereje" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." -msgstr "Óriási barlangokat meghatározó 3D zaj." +msgstr "Óriási üregeket meghatározó 3D zaj." #: src/settings_translation_file.cpp msgid "" @@ -2212,7 +2199,7 @@ msgstr "Üzenetek száma / 10 s." #: src/settings_translation_file.cpp msgid "Amplifies the valleys." -msgstr "A völgyek erősítése." +msgstr "Erősíti a völgyeket." #: src/settings_translation_file.cpp msgid "Anisotropic filtering" @@ -2224,7 +2211,7 @@ msgstr "Szerver hirdetése" #: src/settings_translation_file.cpp msgid "Announce to this serverlist." -msgstr "Szerver kihirdetése ERRE a szerverlistára." +msgstr "Szerver kihirdetése erre a szerverlistára." #: src/settings_translation_file.cpp #, fuzzy @@ -2232,9 +2219,8 @@ msgid "Append item name" msgstr "Elem nevének hozzáadása" #: src/settings_translation_file.cpp -#, fuzzy msgid "Append item name to tooltip." -msgstr "Adja hozzá az elem nevét az eszköztipphez." +msgstr "Elem nevének hozzáadása az eszköztipphez." #: src/settings_translation_file.cpp msgid "Apple trees noise" @@ -2282,17 +2268,16 @@ msgstr "" "A távolság blokkokban értendő (16 node)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Automatic forward key" -msgstr "automata Előre gomb" +msgstr "Automatikus előre gomb" #: src/settings_translation_file.cpp msgid "Automatically jump up single-node obstacles." -msgstr "Automatikusan felugrik egy node magas akadályokra." +msgstr "Automatikusan felugrik az egy node magas akadályokra." #: src/settings_translation_file.cpp msgid "Automatically report to the serverlist." -msgstr "Automatikus bejelentés a FŐ szerverlistára." +msgstr "Automatikus bejelentés a szerverlistára." #: src/settings_translation_file.cpp msgid "Autosave screen size" @@ -2337,15 +2322,15 @@ msgstr "Bilineáris szűrés" #: src/settings_translation_file.cpp msgid "Bind address" -msgstr "Bind cím" +msgstr "Cím csatolása" #: src/settings_translation_file.cpp msgid "Biome API temperature and humidity noise parameters" -msgstr "Éghajlat API hőmérséklet- és páratartalom zaj paraméterei" +msgstr "Biom API hőmérséklet- és páratartalom zaj paraméterei" #: src/settings_translation_file.cpp msgid "Biome noise" -msgstr "Éghajlat zaj" +msgstr "Biom zaj" #: src/settings_translation_file.cpp msgid "Bits per pixel (aka color depth) in fullscreen mode." @@ -2356,14 +2341,12 @@ msgid "Block send optimize distance" msgstr "Max blokk küldési távolság" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic font path" -msgstr "Monospace betűtípus útvonal" +msgstr "Félkövér dőlt betűtípus útvonal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold and italic monospace font path" -msgstr "Monospace betűtípus útvonal" +msgstr "Félkövér dőlt monospace betűtípus útvonal" #: src/settings_translation_file.cpp #, fuzzy @@ -2371,9 +2354,8 @@ msgid "Bold font path" msgstr "Betűtípus helye" #: src/settings_translation_file.cpp -#, fuzzy msgid "Bold monospace font path" -msgstr "Monospace betűtípus útvonal" +msgstr "Félkövér betűtípus útvonal" #: src/settings_translation_file.cpp msgid "Build inside player" @@ -2401,11 +2383,11 @@ msgstr "Kamera simítás" #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "Kamera simítás film módban" +msgstr "Kamera simítás filmszerű módban" #: src/settings_translation_file.cpp msgid "Camera update toggle key" -msgstr "Kamera frissítés váltás gomb" +msgstr "Kamera frissítés váltása gomb" #: src/settings_translation_file.cpp msgid "Cave noise" @@ -2433,23 +2415,23 @@ msgstr "2. Barlang zaj" #: src/settings_translation_file.cpp msgid "Cavern limit" -msgstr "Barlang korlát" +msgstr "Üreg korlát" #: src/settings_translation_file.cpp msgid "Cavern noise" -msgstr "Barlang zaj" +msgstr "Üreg zaj" #: src/settings_translation_file.cpp msgid "Cavern taper" -msgstr "Barlang vékonyodás" +msgstr "Üreg vékonyodás" #: src/settings_translation_file.cpp msgid "Cavern threshold" -msgstr "Barlang küszöb" +msgstr "Üreg küszöb" #: src/settings_translation_file.cpp msgid "Cavern upper limit" -msgstr "Barlang felső korlát" +msgstr "Üreg felső korlát" #: src/settings_translation_file.cpp msgid "" @@ -2503,11 +2485,11 @@ msgstr "Sivatag zajának küszöbe" #: src/settings_translation_file.cpp msgid "Chat message max length" -msgstr "Chat üzenet maximális hossza" +msgstr "CSevegésüzenet maximális hossza" #: src/settings_translation_file.cpp msgid "Chat toggle key" -msgstr "Csevegés váltás gomb" +msgstr "Csevegés váltása gomb" #: src/settings_translation_file.cpp msgid "Chatcommands" @@ -2519,11 +2501,11 @@ msgstr "Térképdarabka (chunk) mérete" #: src/settings_translation_file.cpp msgid "Cinematic mode" -msgstr "Film mód" +msgstr "Filmszerű mód" #: src/settings_translation_file.cpp msgid "Cinematic mode key" -msgstr "Film mód gomb" +msgstr "Filmszerű mód gomb" #: src/settings_translation_file.cpp msgid "Clean transparent textures" @@ -2539,11 +2521,11 @@ msgstr "Kliens és szerver" #: src/settings_translation_file.cpp msgid "Client modding" -msgstr "Kliens moddolás" +msgstr "Kliens modolás" #: src/settings_translation_file.cpp msgid "Client side modding restrictions" -msgstr "Kliens moddolási megkötések" +msgstr "Kliens modolási korlátozások" #: src/settings_translation_file.cpp msgid "Client side node lookup range restriction" @@ -2633,12 +2615,11 @@ msgstr "Konzol magasság" #: src/settings_translation_file.cpp msgid "ContentDB Flag Blacklist" -msgstr "" +msgstr "ContentDB zászló feketelista" #: src/settings_translation_file.cpp -#, fuzzy msgid "ContentDB URL" -msgstr "tartalom" +msgstr "ContentDB URL" #: src/settings_translation_file.cpp msgid "Continuous forward" @@ -2734,9 +2715,8 @@ msgid "Dec. volume key" msgstr "Hangerő csökkentés gomb" #: src/settings_translation_file.cpp -#, fuzzy msgid "Decrease this to increase liquid resistance to movement." -msgstr "Csökkentse ezt a folyadék mozgásállóságának növelése érdekében." +msgstr "Csökkentse ezt hogy megnövelje a folyadék ellenállását." #: src/settings_translation_file.cpp msgid "Dedicated server step" @@ -2805,8 +2785,8 @@ msgstr "A \"terrain_higher\" területeit határozza meg (hegytetők terepe)." #: src/settings_translation_file.cpp msgid "Defines full size of caverns, smaller values create larger caverns." msgstr "" -"A barlangok teljes méretét adja meg. Kisebb értékek nagyobb\n" -"barlangokat képeznek." +"Az üregek teljes méretét adja meg. Kisebb értékek nagyobb\n" +"üregeket képeznek." #: src/settings_translation_file.cpp msgid "Defines large-scale river channel structure." @@ -2829,9 +2809,8 @@ msgid "Defines the base ground level." msgstr "Meghatározza az alap talajszintet." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the depth of the river channel." -msgstr "Az erdős területeket és a fák sűrűségét szabályozza." +msgstr "A folyómedrek mélységét határozza meg." #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." @@ -2840,14 +2819,12 @@ msgstr "" "blokkokban megadva (0 = korlátlan)." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river channel." -msgstr "A nagy léptékű folyómeder-struktúrát határozza meg." +msgstr "A folyómedrek szélességét határozza meg." #: src/settings_translation_file.cpp -#, fuzzy msgid "Defines the width of the river valley." -msgstr "Azokat a területeket adja meg, ahol a fák almát teremnek." +msgstr "A folyóvölgy szélességét határozza meg." #: src/settings_translation_file.cpp msgid "Defines tree areas and tree density." @@ -2874,9 +2851,8 @@ msgid "Deprecated Lua API handling" msgstr "Elavult Lua API kezelése" #: src/settings_translation_file.cpp -#, fuzzy msgid "Depth below which you'll find giant caverns." -msgstr "A mélység, ami alatt nagy terjedelmű barlangokat találsz majd." +msgstr "A mélység, ami alatt óriási üregeket találsz majd." #: src/settings_translation_file.cpp msgid "Depth below which you'll find large caves." @@ -2895,13 +2871,12 @@ msgid "Desert noise threshold" msgstr "Sivatag zaj küszöbe" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Deserts occur when np_biome exceeds this value.\n" "When the 'snowbiomes' flag is enabled, this is ignored." msgstr "" "Sivatag akkor keletkezik, ha az np_biome meghaladja ezt az értéket.\n" -"Ha az új biome rendszer engedélyezve van, akkor ez mellőzésre kerül." +"Ha az új biom rendszer engedélyezve van, akkor ez mellőzésre kerül." #: src/settings_translation_file.cpp msgid "Desynchronize block animation" @@ -2937,7 +2912,7 @@ msgstr "Tárgy eldobása gomb" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug information." -msgstr "A térkép-generálás hibakeresési információinak kiírása." +msgstr "A térképgenerátor hibakeresési információinak kiírása." #: src/settings_translation_file.cpp #, fuzzy @@ -2964,7 +2939,7 @@ msgid "" "Enable Lua modding support on client.\n" "This support is experimental and API can change." msgstr "" -"Lua moddolás támogatás bekapcsolása a kliensen.\n" +"Lua modolás támogatás bekapcsolása a kliensen.\n" "Ez a támogatás még kísérleti fázisban van, így az API változhat." #: src/settings_translation_file.cpp @@ -3099,7 +3074,7 @@ msgstr "Engedélyezi az elforgatott rácsvonalak gyorsítótárazását." #: src/settings_translation_file.cpp msgid "Enables minimap." -msgstr "Minitérkép engedélyezése." +msgstr "Engedélyezi a kistérképet." #: src/settings_translation_file.cpp msgid "" @@ -3125,7 +3100,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" -msgstr "" +msgstr "Játékmotor profiler adatok kiírási időköze" #: src/settings_translation_file.cpp #, fuzzy @@ -3260,7 +3235,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fixed map seed" -msgstr "lezárt r" +msgstr "Fix térkép seed" #: src/settings_translation_file.cpp #, fuzzy @@ -3268,24 +3243,20 @@ msgid "Fixed virtual joystick" msgstr "Rögzített virtuális joystick" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland density" -msgstr "Lebegő hegyek sűrűsége" +msgstr "Lebegő földek sűrűsége" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland maximum Y" -msgstr "Tömlöc maximális Y magassága" +msgstr "Lebegő földek maximális Y magassága" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland minimum Y" -msgstr "Tömlöc minimális Y magassága" +msgstr "Lebegő földek minimális Y magassága" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland noise" -msgstr "A lebegő hegyek alapzaja" +msgstr "Lebegőföldek zaja" #: src/settings_translation_file.cpp #, fuzzy @@ -3293,14 +3264,12 @@ msgid "Floatland taper exponent" msgstr "A lebegő hegyek alapzaja" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland tapering distance" -msgstr "A lebegő hegyek alapzaja" +msgstr "A lebegő földek hegyeinek távolsága" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland water level" -msgstr "Lebegő föld szintje" +msgstr "Lebegő földek vízszintje" #: src/settings_translation_file.cpp msgid "Fly key" @@ -3320,7 +3289,7 @@ msgstr "Köd indulás" #: src/settings_translation_file.cpp msgid "Fog toggle key" -msgstr "Köd váltás gomb" +msgstr "Köd váltása gomb" #: src/settings_translation_file.cpp msgid "Font bold by default" @@ -3580,7 +3549,7 @@ msgstr "Hőzaj" #: src/settings_translation_file.cpp msgid "Height component of the initial window size." -msgstr "A kezdeti ablak méret magasság összetevője." +msgstr "A kezdeti ablak magassága." #: src/settings_translation_file.cpp msgid "Height noise" @@ -3811,7 +3780,7 @@ msgstr "A folyók szélessége." #: src/settings_translation_file.cpp msgid "Humidity blend noise" -msgstr "Páratartalom keverék zaj" +msgstr "Páratartalom keverés zaj" #: src/settings_translation_file.cpp #, fuzzy @@ -3819,9 +3788,8 @@ msgid "Humidity noise" msgstr "Páratartalomzaj" #: src/settings_translation_file.cpp -#, fuzzy msgid "Humidity variation for biomes." -msgstr "Páratartalom-változás a biomokban." +msgstr "Páratartalom-változékonyság a biomokban." #: src/settings_translation_file.cpp msgid "IPv6" @@ -3865,9 +3833,8 @@ msgid "" "nodes.\n" "This requires the \"noclip\" privilege on the server." msgstr "" -"Ha engedélyezve van együtt a repülés (fly) móddal, a játékos átrepülhet " -"szilárd\n" -"node-okon. Szükséges hozzá a szellem jogosultság a szerveren." +"Ha a repülés móddal együtt van engedélyezve, a játékos átrepülhet szilárd\n" +"node-okon. Szükséges hozzá a noclip jogosultság a szerveren." #: src/settings_translation_file.cpp #, fuzzy @@ -3963,12 +3930,11 @@ msgstr "Játékon belüli csevegő konzol hátterének színe (R,G,B)." #: src/settings_translation_file.cpp msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." -msgstr "" -"Játékon belüli csevegő konzol magassága 0,1 (10%) és 1,0 (100%) között." +msgstr "Játékon belüli csevegéskonzol magassága 0,1 (10%) és 1,0 (100%) között." #: src/settings_translation_file.cpp msgid "Inc. volume key" -msgstr "Hangerő növ. gomb" +msgstr "Hangerő növelése gomb" #: src/settings_translation_file.cpp msgid "Initial vertical speed when jumping, in nodes per second." @@ -3981,9 +3947,8 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Instrument chatcommands on registration." -msgstr "Chat-parancsok a regisztrációkor." +msgstr "Csevegésparancsok bemutatása regisztrációkor." #: src/settings_translation_file.cpp msgid "" @@ -4032,17 +3997,15 @@ msgstr "Fordított egér" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "Függőleges egérmozgás megfordírtása." +msgstr "Függőleges egérmozgás megfordítása." #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic font path" -msgstr "Monospace betűtípus útvonal" +msgstr "Dőlt betűtípus útvonal" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic monospace font path" -msgstr "Monospace betűtípus útvonal" +msgstr "Dőlt monspace betűtípus útvonal" #: src/settings_translation_file.cpp #, fuzzy @@ -4061,11 +4024,11 @@ msgid "" "increases processing load.\n" "At iterations = 20 this mapgen has a similar load to mapgen V7." msgstr "" -"A rekurzív funkció ismétlései.\n" +"A rekurzív függvény ismétlései.\n" "Ennek növelése növeli a finom részletek mennyiségét és\n" "növeli a feldolgozási terhelést.\n" -" 20 ismétléseknél ez a térképgeneráló hasonló terheléssel rendelkezik, mint " -"a V7." +" 20 ismétlésnél ez a térképgeneráló hasonló terheléssel rendelkezik, mint a " +"V7." #: src/settings_translation_file.cpp msgid "Joystick ID" @@ -4098,7 +4061,6 @@ msgstr "" "Tartomány nagyjából -2 és 2 között." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Julia set only.\n" "X component of hypercomplex constant.\n" @@ -4111,7 +4073,6 @@ msgstr "" "Tartomány nagyjából -2 és 2 között." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Julia set only.\n" "Y component of hypercomplex constant.\n" @@ -4138,7 +4099,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Julia w" -msgstr "" +msgstr "Julia W" #: src/settings_translation_file.cpp msgid "Julia x" @@ -4216,7 +4177,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Ugrás gombja.\n" +"Gomb az ugráshoz.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4226,7 +4187,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a gyors mozgáshoz gyors (fast) módban.\n" +"Gomb a gyors mozgáshoz gyors módban.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4273,13 +4234,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for muting the game.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Ugrás gombja.\n" +"Gomb a játék némításához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4289,18 +4249,17 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a csevegő ablak megnyitásához, parancsok beírásához.\n" +"Gomb a csevegőablak megnyitásához, parancsok beírásához.\n" "Lásd: //irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for opening the chat window to type local commands.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a csevegő ablak megnyitásához, parancsok beírásához.\n" +"Gomb a csevegőablak megnyitásához, helyi parancsok beírásához.\n" "Lásd: //irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4310,7 +4269,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a csevegő ablak megnyitásához.\n" +"Gomb a csevegőablak megnyitásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4320,7 +4279,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" +"Gomb az eszköztár megnyitásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4330,7 +4289,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 11. eszköztár kiválasztásához.\n" +"Gomb a 11. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4340,7 +4299,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 12. eszköztár kiválasztásához.\n" +"Gomb a 12. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4350,7 +4309,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 13. eszköztár kiválasztásához.\n" +"Gomb a 13. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4360,7 +4319,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 14. eszköztár kiválasztásához.\n" +"Gomb a 14. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4370,7 +4329,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 15. eszköztár kiválasztásához.\n" +"Gomb a 15. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4380,7 +4339,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 16. eszköztár kiválasztásához.\n" +"Gomb a 16. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4390,7 +4349,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 17. eszköztár kiválasztásához.\n" +"Gomb a 17. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4400,7 +4359,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 18. eszköztár kiválasztásához.\n" +"Gomb a 18. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4410,7 +4369,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 19. eszköztár kiválasztásához.\n" +"Gomb a 19. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4420,7 +4379,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 20. eszköztár kiválasztásához.\n" +"Gomb a 20. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4430,7 +4389,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 21. eszköztár kiválasztásához.\n" +"Gomb a 21. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4440,7 +4399,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 22. eszköztár kiválasztásához.\n" +"Gomb a 22. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4450,7 +4409,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 23. eszköztár kiválasztásához.\n" +"Gomb a 23. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4460,7 +4419,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 24. eszköztár kiválasztásához.\n" +"Gomb a 24. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4470,7 +4429,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 25. eszköztár kiválasztásához.\n" +"Gomb a 25. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4480,7 +4439,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 26. eszköztár kiválasztásához.\n" +"Gomb a 26. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4490,7 +4449,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 27. eszköztár kiválasztásához.\n" +"Gomb a 27. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4500,7 +4459,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 28. eszköztár kiválasztásához.\n" +"Gomb a 28. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4510,7 +4469,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 29. eszköztár kiválasztásához.\n" +"Gomb a 29. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4520,7 +4479,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 30. eszköztár kiválasztásához.\n" +"Gomb a 30. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4530,7 +4489,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 31. eszköztár kiválasztásához.\n" +"Gomb a 31. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4540,7 +4499,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 32. eszköztár kiválasztásához.\n" +"Gomb a 32. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4550,7 +4509,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 8. eszköztár kiválasztásához.\n" +"Gomb a 8. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4560,7 +4519,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 5. eszköztár kiválasztásához.\n" +"Gomb a 5. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4570,7 +4529,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 1. eszköztár kiválasztásához.\n" +"Gomb a 1. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4580,18 +4539,17 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 4. eszköztár kiválasztásához.\n" +"Gomb a 4. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the next item in the hotbar.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" +"Gomb a következő elem kiválasztásához az eszköztárban.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4601,18 +4559,17 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 9. eszköztár kiválasztásához.\n" +"Gomb a 9. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for selecting the previous item in the hotbar.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb az Eszköztár megnyitásához.\n" +"Gomb az előző elem kiválasztásához az eszköztárban.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4622,7 +4579,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 2. eszköztár kiválasztásához.\n" +"Gomb a 2. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4632,7 +4589,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 7. eszköztár kiválasztásához.\n" +"Gomb a 7. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4642,7 +4599,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 6. eszköztár kiválasztásához.\n" +"Gomb a 6. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4652,7 +4609,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 10. eszköztár kiválasztásához.\n" +"Gomb a 10. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4662,7 +4619,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a 3. eszköztár kiválasztásához.\n" +"Gomb a 3. eszköztárhely kiválasztásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4674,7 +4631,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a lopakodáshoz (sneak).\n" +"Gomb a lopakodáshoz.\n" "A lefelé mászáshoz és vízben történő ereszkedéshez is használt, ha a " "aux1_descends le van tiltva.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." @@ -4686,7 +4643,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a belső és külső nézetű kamera váltáshoz.\n" +"Gomb a belső és külső nézetre váltáshoz.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4696,7 +4653,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb képernyőfelvétel készítéshez.\n" +"Gomb képernyőkép készítéshez.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4716,7 +4673,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a film mód bekapcsolásához.\n" +"Gomb a filmszerű mód váltásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4726,7 +4683,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a minitérkép megjelenítéséhez.\n" +"Gomb a kistérkép váltásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4736,7 +4693,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a gyors módra váltáshoz.\n" +"Gomb a gyors mód váltásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4746,7 +4703,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a repülés módra váltáshoz.\n" +"Gomb a repülés mód váltásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4756,7 +4713,7 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a szellem módra váltáshoz.\n" +"Gomb a noclip mód váltásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4766,29 +4723,27 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a szellem módra váltáshoz.\n" +"Gomb pályamozgás mód váltásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for toggling the camera update. Only used for development\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a kamerafrissítés bekapcsolásához. Csak fejlesztők számára.\n" +"Gomb a kamerafrissítés váltásához. Csak fejlesztők számára.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for toggling the display of chat.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a csevegő megjelenítéséhez.\n" +"Gomb a csevegés megjelenítéséhez.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4803,13 +4758,12 @@ msgstr "" "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for toggling the display of fog.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a köd megjelenítésének ki/bekapcsolásához.\n" +"Gomb a köd váltásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4819,18 +4773,17 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a HUD megjelenítéséhez/kikapcsolásához.\n" +"Gomb a HUD váltásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key for toggling the display of the large chat console.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a csevegő megjelenítéséhez.\n" +"Gomb a nagy csevegéskonzol megjelenítéséhez.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4847,18 +4800,17 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Gomb a végtelen látóterület bekapcsolásához.\n" +"Gomb a végtelen látóterület váltásához.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Key to use view zoom when possible.\n" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" -"Ugrás gombja.\n" +"Gomb a nagyításhoz amikor lehetséges.\n" "Lásd: http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" @@ -4886,20 +4838,19 @@ msgstr "Nagy barlang mélység" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "Nagy barlangok maximális száma" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "Nagy barlangok minimális száma" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" -msgstr "" +msgstr "A nagy barlangok egy része elárasztott" #: src/settings_translation_file.cpp -#, fuzzy msgid "Large chat console key" -msgstr "Konzol gomb" +msgstr "Nagy csevegéskonzol gomb" #: src/settings_translation_file.cpp msgid "Leaves style" @@ -4914,8 +4865,8 @@ msgid "" msgstr "" "Levelek stílusa:\n" "- Szép: minden oldal látható\n" -"- Egyszerű: csak a külső oldalak láthatók, if defined special_tiles are " -"used\n" +"- Egyszerű: csak a külső oldalak láthatók, ha meg van határozva a " +"special_tiles használt\n" "- Átlátszatlan: átlátszóság kikapcsolása" #: src/settings_translation_file.cpp @@ -4930,13 +4881,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Length of liquid waves.\n" "Requires waving liquids to be enabled." msgstr "" -"A \"true\" beállítás engedélyezi a levelek hullámzását.\n" -"A shaderek engedélyezése szükséges hozzá." +"Folyadékhullámok hossza.\n" +"A hullámzó folyadékok engedélyezése szükséges hozzá." #: src/settings_translation_file.cpp #, fuzzy @@ -5017,7 +4967,7 @@ msgstr "Folyadék folyékonysága" #: src/settings_translation_file.cpp msgid "Liquid fluidity smoothing" -msgstr "Folyadék folyékonyságának simítása" +msgstr "Folyadék folyásának simítása" #: src/settings_translation_file.cpp msgid "Liquid loop max" @@ -5039,12 +4989,11 @@ msgstr "A folyadékok frissítési időköze másodpercben." #: src/settings_translation_file.cpp msgid "Liquid update tick" -msgstr "" +msgstr "Folyadékfrissítés tick" #: src/settings_translation_file.cpp -#, fuzzy msgid "Load the game profiler" -msgstr "Töltse be a játék profilját" +msgstr "Játék profiler betöltése" #: src/settings_translation_file.cpp msgid "" @@ -5063,13 +5012,12 @@ msgid "Lower Y limit of dungeons." msgstr "A tömlöcök alsó Y határa." #: src/settings_translation_file.cpp -#, fuzzy msgid "Lower Y limit of floatlands." -msgstr "A tömlöcök alsó Y határa." +msgstr "A lebegő földek alsó Y határa." #: src/settings_translation_file.cpp msgid "Main menu script" -msgstr "Főmenü script" +msgstr "Főmenü szkript" #: src/settings_translation_file.cpp msgid "Main menu style" @@ -5079,7 +5027,8 @@ msgstr "Főmenü stílusa" msgid "" "Make fog and sky colors depend on daytime (dawn/sunset) and view direction." msgstr "" -"A köd és ég színe függjön a napszaktól (hajnal/naplemente) és a látószögtől." +"A köd és az ég színe függjön a napszaktól (hajnal/naplemente) és a " +"látószögtől." #: src/settings_translation_file.cpp msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." @@ -5204,11 +5153,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen Carpathian" -msgstr "Hegyek térképgenerátor" +msgstr "Kárpátok térképgenerátor" #: src/settings_translation_file.cpp msgid "Mapgen Carpathian specific flags" -msgstr "Hegyek térképgenerátor különleges zászlói" +msgstr "Kárpátok térképgenerátor különleges zászlói" #: src/settings_translation_file.cpp msgid "Mapgen Flat" @@ -5216,16 +5165,15 @@ msgstr "Lapos térképgenerátor" #: src/settings_translation_file.cpp msgid "Mapgen Flat specific flags" -msgstr "Flat (lapos) térképgenerátor különleges zászlói" +msgstr "Lapos térképgenerátor különleges zászlói" #: src/settings_translation_file.cpp msgid "Mapgen Fractal" msgstr "Fraktál térképgenerátor" #: src/settings_translation_file.cpp -#, fuzzy msgid "Mapgen Fractal specific flags" -msgstr "Flat (lapos) térképgenerátor domb meredekség" +msgstr "Fraktál térképgenerátor domb meredekség" #: src/settings_translation_file.cpp msgid "Mapgen V5" @@ -5241,7 +5189,7 @@ msgstr "V6 térképgenerátor" #: src/settings_translation_file.cpp msgid "Mapgen V6 specific flags" -msgstr "V6 térképgenerátor különleges zászlók" +msgstr "V6 térképgenerátor különleges zászlói" #: src/settings_translation_file.cpp msgid "Mapgen V7" @@ -5253,19 +5201,19 @@ msgstr "V7 térképgenerátor különleges zászlói" #: src/settings_translation_file.cpp msgid "Mapgen Valleys" -msgstr "Valleys térképgenerátor" +msgstr "Völgyek térképgenerátor" #: src/settings_translation_file.cpp msgid "Mapgen Valleys specific flags" -msgstr "Lapos térképgenerátor különleges zászlói" +msgstr "Völgyek térképgenerátor különleges zászlói" #: src/settings_translation_file.cpp msgid "Mapgen debug" -msgstr "Térkép generátor hibakereső" +msgstr "Térképgenerátor hibakereső" #: src/settings_translation_file.cpp msgid "Mapgen name" -msgstr "Térkép generátor neve" +msgstr "Térképgenerátor neve" #: src/settings_translation_file.cpp msgid "Max block generate distance" @@ -5273,11 +5221,11 @@ msgstr "Max blokk generálási távolság" #: src/settings_translation_file.cpp msgid "Max block send distance" -msgstr "Maximális blokk-küldési távolság" +msgstr "Max blokk-küldési távolság" #: src/settings_translation_file.cpp msgid "Max liquids processed per step." -msgstr "" +msgstr "Max folyadék feldolgozva lépésenként." #: src/settings_translation_file.cpp msgid "Max. clearobjects extra blocks" @@ -5374,7 +5322,7 @@ msgstr "Az egy időben csatlakozó játékosok maximális száma." #: src/settings_translation_file.cpp msgid "Maximum number of recent chat messages to show" -msgstr "A megjelenítendő chatüzenetek maximális száma." +msgstr "A megjelenítendő csevegésüzenetek maximális száma." #: src/settings_translation_file.cpp msgid "Maximum number of statically stored objects in a block." @@ -5444,15 +5392,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Minimap" -msgstr "Minitérkép" +msgstr "Kistérkép" #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "Minitérkép gomb" +msgstr "Kistérkép gomb" #: src/settings_translation_file.cpp msgid "Minimap scan height" -msgstr "Minitérkép letapogatási magasság" +msgstr "Kistérkép letapogatási magasság" #: src/settings_translation_file.cpp #, fuzzy @@ -5474,11 +5422,11 @@ msgstr "Mip-mapping" #: src/settings_translation_file.cpp msgid "Mod channels" -msgstr "" +msgstr "Mod csatornák" #: src/settings_translation_file.cpp msgid "Modifies the size of the hudbar elements." -msgstr "" +msgstr "A hudbar elemméretét módosítja" #: src/settings_translation_file.cpp msgid "Monospace font path" @@ -5514,7 +5462,7 @@ msgstr "Egér érzékenység szorzó." #: src/settings_translation_file.cpp msgid "Mud noise" -msgstr "" +msgstr "Iszap zaj" #: src/settings_translation_file.cpp msgid "" @@ -5557,7 +5505,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Near plane" -msgstr "" +msgstr "Majdnem mint a repülőgép" #: src/settings_translation_file.cpp msgid "Network" @@ -5579,7 +5527,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Noclip key" -msgstr "Szellem mód gomb" +msgstr "Noclip mód gomb" #: src/settings_translation_file.cpp msgid "Node highlighting" @@ -5632,11 +5580,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Online Content Repository" -msgstr "" +msgstr "Online tartalomtár" #: src/settings_translation_file.cpp msgid "Opaque liquids" -msgstr "folyadékok NEM átlátszók" +msgstr "Átlátszatlan folyadékok" #: src/settings_translation_file.cpp msgid "" @@ -5741,14 +5689,12 @@ msgid "Physics" msgstr "Fizika" #: src/settings_translation_file.cpp -#, fuzzy msgid "Pitch move key" -msgstr "Repülés gomb" +msgstr "Pályamozgás mód gomb" #: src/settings_translation_file.cpp -#, fuzzy msgid "Pitch move mode" -msgstr "Pályamozgás mód bekapcsolva" +msgstr "Pályamozgás mód" #: src/settings_translation_file.cpp msgid "" @@ -5756,7 +5702,7 @@ msgid "" "This requires the \"fly\" privilege on the server." msgstr "" "A játékos képes repülni, nem hat rá a gravitáció.\n" -"Szükséges hozzá a repülés jogosultság (fly) a szerveren." +"Szükséges hozzá a repülés jogosultság a szerveren." #: src/settings_translation_file.cpp msgid "Player name" @@ -5768,7 +5714,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Player versus player" -msgstr "mindenki ellen (PvP)" +msgstr "Játékos játékos ellen" #: src/settings_translation_file.cpp msgid "" @@ -5795,6 +5741,9 @@ msgid "" "Print the engine's profiling data in regular intervals (in seconds).\n" "0 = disable. Useful for developers." msgstr "" +"A játékmotor profiladatainak kiírása szabályos időközökben (másodpercekben)." +"\n" +"0 a kikapcsoláshoz. Hasznos fejlesztőknek." #: src/settings_translation_file.cpp msgid "Privileges that players with basic_privs can grant" @@ -5802,11 +5751,11 @@ msgstr "Jogosultságok, amiket a basic_privs adhat a játékosoknak" #: src/settings_translation_file.cpp msgid "Profiler" -msgstr "" +msgstr "Profiler" #: src/settings_translation_file.cpp msgid "Profiler toggle key" -msgstr "" +msgstr "Profiler váltó gomb" #: src/settings_translation_file.cpp msgid "Profiling" @@ -5826,7 +5775,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." -msgstr "" +msgstr "Nagy barlangok aránya amelyek folyadékot tartalmaznak." #: src/settings_translation_file.cpp msgid "" @@ -5841,7 +5790,7 @@ msgstr "Megemeli a terepet, hogy völgyek alakuljanak a folyók körül." #: src/settings_translation_file.cpp msgid "Random input" -msgstr "" +msgstr "Véletlenszerű bemenet" #: src/settings_translation_file.cpp msgid "Range select key" @@ -5849,7 +5798,7 @@ msgstr "Látóterület választása gomb" #: src/settings_translation_file.cpp msgid "Recent Chat Messages" -msgstr "" +msgstr "Legutóbbi csevegésüzenetek" #: src/settings_translation_file.cpp #, fuzzy @@ -5869,6 +5818,9 @@ msgid "" "Remove color codes from incoming chat messages\n" "Use this to stop players from being able to use color in their messages" msgstr "" +"Színkódok eltávolítása a bejövő csevegésüzenetekből\n" +"Használd ezt hogy megakadályozd, hogy a játékosok színeket használjanak az " +"üzeneteikben." #: src/settings_translation_file.cpp msgid "Replaces the default main menu with a custom one." @@ -5917,17 +5869,14 @@ msgid "Rightclick repetition interval" msgstr "Jobb kattintás ismétlési időköz" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel depth" -msgstr "Folyó mélység" +msgstr "Folyómeder mélysége" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel width" -msgstr "Folyó mélység" +msgstr "Folyómeder szélessége" #: src/settings_translation_file.cpp -#, fuzzy msgid "River depth" msgstr "Folyó mélység" @@ -5936,14 +5885,12 @@ msgid "River noise" msgstr "Folyó zaj" #: src/settings_translation_file.cpp -#, fuzzy msgid "River size" msgstr "Folyó méret" #: src/settings_translation_file.cpp -#, fuzzy msgid "River valley width" -msgstr "Folyó mélység" +msgstr "Folyóvölgy szélessége" #: src/settings_translation_file.cpp msgid "Rollback recording" @@ -5951,19 +5898,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Rolling hill size noise" -msgstr "" +msgstr "Dombok méret zaja" #: src/settings_translation_file.cpp msgid "Rolling hills spread noise" -msgstr "" +msgstr "Dombok kiterjedés zaja" #: src/settings_translation_file.cpp msgid "Round minimap" -msgstr "Kör alakú minitérkép" +msgstr "Kerek kistérkép" #: src/settings_translation_file.cpp msgid "Safe digging and placing" -msgstr "" +msgstr "Biztonságos ásás és elhelyezés" #: src/settings_translation_file.cpp msgid "Sandy beaches occur when np_beach exceeds this value." @@ -5975,7 +5922,7 @@ msgstr "A kliens által fogadott térkép mentése lemezre." #: src/settings_translation_file.cpp msgid "Save window size automatically when modified." -msgstr "" +msgstr "Ablakméret automatikus mentése amikor módosítva van." #: src/settings_translation_file.cpp msgid "Saving map received from server" @@ -5990,7 +5937,7 @@ msgid "" "edge pixels when images are scaled by non-integer sizes." msgstr "" "A felhasználói felület méretezése egy meghatározott értékkel.\n" -"A legközelebbi szomszédos élsimítás szűrőt használja a GUI méretezésére.\n" +"A legközelebbi-szomszéd-élsimítás szűrőt használja a GUI méretezésére.\n" "Ez elsimít néhány durva élt, és elhajlítja a pixeleket a méretezés " "csökkentésekor,\n" "de ennek az az ára, hogy elhomályosít néhány szélső pixelt, ha a képek nem\n" @@ -6028,7 +5975,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Seabed noise" -msgstr "" +msgstr "Folyómeder zaj" #: src/settings_translation_file.cpp msgid "Second of 4 2D noises that together define hill/mountain range height." @@ -6057,7 +6004,7 @@ msgstr "Kijelölő doboz színe" #: src/settings_translation_file.cpp msgid "Selection box width" -msgstr "Kijelölő doboz szélesség" +msgstr "Kijelölő doboz szélessége" #: src/settings_translation_file.cpp #, fuzzy @@ -6120,7 +6067,7 @@ msgstr "Szerver leírása" #: src/settings_translation_file.cpp msgid "Server name" -msgstr "Szerver neve" +msgstr "Szerver név" #: src/settings_translation_file.cpp msgid "Server port" @@ -6148,38 +6095,35 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Set the maximum character length of a chat message sent by clients." -msgstr "" +msgstr "A csevegés maximális szöveghossza amelyet a kliensek küldhetnek." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving leaves.\n" "Requires shaders to be enabled." msgstr "" "A \"true\" beállítás engedélyezi a levelek hullámzását.\n" -"A shaderek engedélyezése szükséges hozzá." +"Az árnyalók engedélyezése szükséges hozzá." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving liquids (like water).\n" "Requires shaders to be enabled." msgstr "" "A \"true\" beállítás engedélyezi a víz hullámzását.\n" -"A shaderek engedélyezése szükséges hozzá." +"Az árnyalók engedélyezése szükséges hozzá." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving plants.\n" "Requires shaders to be enabled." msgstr "" "A \"true\" beállítás engedélyezi a növények hullámzását.\n" -"A shaderek engedélyezése szükséges hozzá." +"Az árnyalók engedélyezése szükséges hozzá." #: src/settings_translation_file.cpp msgid "Shader path" -msgstr "Árnyalók útvonala" +msgstr "Árnyaló útvonala" #: src/settings_translation_file.cpp msgid "" @@ -6193,32 +6137,31 @@ msgstr "" "Csak OpenGL-el működnek." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the default font. If 0, then shadow will not be " "drawn." -msgstr "Betűtípus árnyék eltolás, ha 0, akkor nem lesz árnyék rajzolva." +msgstr "Betűtípus árnyékának eltolása. Ha 0, akkor nem lesz árnyék rajzolva." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " "be drawn." -msgstr "Betűtípus árnyék eltolás, ha 0, akkor nem lesz árnyék rajzolva." +msgstr "" +"Tartalék betűtípus árnyékának eltolása. Ha 0, akkor nem lesz árnyék rajzolva." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." msgstr "" -"A minitérkép alakja. Engedélyezve (enabled) = kerek, letiltva (disabled) = " +"A kistérkép alakja. Engedélyezve (enabled) = kerek, letiltva (disabled) = " "négyzet." #: src/settings_translation_file.cpp msgid "Show debug info" -msgstr "Hibakereső információ mutatása" +msgstr "Hibakereső információ megjelenítése" #: src/settings_translation_file.cpp msgid "Show entity selection boxes" -msgstr "Entitások kijelölő dobozának mutatása" +msgstr "Entitások kijelölő dobozának megjelenítése" #: src/settings_translation_file.cpp msgid "Shutdown message" @@ -6247,15 +6190,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Slope and fill work together to modify the heights." -msgstr "" +msgstr "A lejtés és a kitöltés együtt módosítja a magasságot." #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "" +msgstr "Kis barlangok maximális száma" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "" +msgstr "Kis barlangok minimális száma" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." @@ -6280,7 +6223,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Smooths rotation of camera in cinematic mode. 0 to disable." -msgstr "A kamera forgását simítja a cinematic film módban. 0 = letiltás." +msgstr "A kamera forgását simítja filmszerű módban. 0 a letiltáshoz." #: src/settings_translation_file.cpp msgid "Smooths rotation of camera. 0 to disable." @@ -6296,21 +6239,19 @@ msgstr "Lopakodás sebessége" #: src/settings_translation_file.cpp msgid "Sneaking speed, in nodes per second." -msgstr "" +msgstr "Lopakodás sebessége node/másodpercben" #: src/settings_translation_file.cpp msgid "Sound" msgstr "Hang" #: src/settings_translation_file.cpp -#, fuzzy msgid "Special key" -msgstr "Lopakodás gomb" +msgstr "Különleges gomb" #: src/settings_translation_file.cpp -#, fuzzy msgid "Special key for climbing/descending" -msgstr "Gomb használat a mászás/ereszkedéshez" +msgstr "Különleges gomb a mászáshoz/ereszkedéshez" #: src/settings_translation_file.cpp msgid "" @@ -6395,7 +6336,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Temperature variation for biomes." -msgstr "" +msgstr "Hőmérséklet-változékonyság a biomokban." #: src/settings_translation_file.cpp msgid "Terrain alternative noise" @@ -6452,7 +6393,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "The URL for the content repository" -msgstr "" +msgstr "Az URL a tartalomtárhoz" #: src/settings_translation_file.cpp msgid "" @@ -6620,13 +6561,12 @@ msgid "Tooltip delay" msgstr "Eszköztipp késleltetés" #: src/settings_translation_file.cpp -#, fuzzy msgid "Touch screen threshold" -msgstr "Tengerpart zaj határa" +msgstr "Érintőképernyő küszöbe" #: src/settings_translation_file.cpp msgid "Trees noise" -msgstr "Fa zajr" +msgstr "Fa zaj" #: src/settings_translation_file.cpp msgid "Trilinear filtering" @@ -6666,8 +6606,9 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Unlimited player transfer distance" -msgstr "" +msgstr "Korlátlan játékosátviteli távolság" #: src/settings_translation_file.cpp msgid "Unload unused server data" @@ -6738,7 +6679,7 @@ msgstr "Völgyek meredeksége" #: src/settings_translation_file.cpp msgid "Variation of biome filler depth." -msgstr "" +msgstr "A biom töltőanyag mélységének változékonysága." #: src/settings_translation_file.cpp msgid "Variation of maximum mountain height (in nodes)." @@ -6746,7 +6687,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Variation of number of caves." -msgstr "" +msgstr "A barlangok számának változása." #: src/settings_translation_file.cpp msgid "" @@ -6770,7 +6711,7 @@ msgstr "A szirtek meredekségét állítja." #: src/settings_translation_file.cpp msgid "Vertical climbing speed, in nodes per second." -msgstr "" +msgstr "Függőleges mászási sebesség node/másodpercben." #: src/settings_translation_file.cpp msgid "Vertical screen synchronization." @@ -6790,15 +6731,15 @@ msgstr "Látótávolság node-okban megadva." #: src/settings_translation_file.cpp msgid "View range decrease key" -msgstr "Látóterület csökkentés gomb" +msgstr "Látóterület csökkentése gomb" #: src/settings_translation_file.cpp msgid "View range increase key" -msgstr "Látóterület növelés gomb" +msgstr "Látóterület növelése gomb" #: src/settings_translation_file.cpp msgid "View zoom key" -msgstr "" +msgstr "Nagyítás gomb" #: src/settings_translation_file.cpp msgid "Viewing range" @@ -6832,15 +6773,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Walking and flying speed, in nodes per second." -msgstr "" +msgstr "Sétálás, repülés és mászás sebessége gyors módban node/másodpercben." #: src/settings_translation_file.cpp msgid "Walking speed" -msgstr "Járás sebessége" +msgstr "Sétálás sebessége" #: src/settings_translation_file.cpp msgid "Walking, flying and climbing speed in fast mode, in nodes per second." -msgstr "" +msgstr "Sétálás, repülés és mászás sebessége gyors módban node/másodpercben." #: src/settings_translation_file.cpp msgid "Water level" @@ -6859,24 +6800,20 @@ msgid "Waving leaves" msgstr "Hullámzó levelek" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids" msgstr "Hullámzó folyadékok" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave height" -msgstr "Hullámzó víz magassága" +msgstr "Hullámzó folyadékok hullámmagassága" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave speed" -msgstr "Hullámzó víz sebessége" +msgstr "Hullámzó folyadékok hullámsebessége" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wavelength" -msgstr "Hullámzó víz szélessége" +msgstr "Hullámzó folyadékok hullámhossza" #: src/settings_translation_file.cpp msgid "Waving plants" @@ -6932,7 +6869,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Whether to allow players to damage and kill each other." -msgstr "Engedélyezve van-e, hogy a játékosok sebezzék, ill. megöljék egymást." +msgstr "Engedélyezve van-e, hogy a játékosok sebezzék és megöljék egymást." #: src/settings_translation_file.cpp msgid "" @@ -6957,15 +6894,16 @@ msgstr "" #: src/settings_translation_file.cpp msgid "" "Whether to show the client debug info (has the same effect as hitting F5)." -msgstr "A hibakereső információ mutatása (ugyanaz a hatás, ha F5-öt nyomunk)." +msgstr "" +"A hibakereső információ megjelenítése (ugyanaz a hatás, ha F5-öt nyomunk)." #: src/settings_translation_file.cpp msgid "Width component of the initial window size." -msgstr "Kezdeti ablak méret szélessége." +msgstr "Kezdeti ablak szélessége." #: src/settings_translation_file.cpp msgid "Width of the selection box lines around nodes." -msgstr "A kijelölődoboz vonalainak szélessége a node-ok körül." +msgstr "A kijelölésdoboz vonalainak szélessége a node-ok körül." #: src/settings_translation_file.cpp msgid "" @@ -6973,6 +6911,9 @@ msgid "" "background.\n" "Contains the same information as the file debug.txt (default name)." msgstr "" +"Csak Windows rendszeren: Minetest indítása parancssorral a háttérben.\n" +"Ugyanazokat az információkat tartalmazza, mint a debug.txt fájl (" +"alapértelmezett név)." #: src/settings_translation_file.cpp msgid "" @@ -6980,12 +6921,12 @@ msgid "" "Not needed if starting from the main menu." msgstr "" "Világ mappája (minden itt tárolódik ami a világban van).\n" -"Ez nem szükséges, ha a főmenüből indítunk." +"Ez nem szükséges, ha a főmenüből indítják." #: src/settings_translation_file.cpp #, fuzzy msgid "World start time" -msgstr "Világ neve" +msgstr "Világ-kezdőidő" #: src/settings_translation_file.cpp msgid "" @@ -7003,7 +6944,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Y of flat ground." -msgstr "" +msgstr "Lapos föld Y magassága." #: src/settings_translation_file.cpp msgid "" @@ -7012,13 +6953,12 @@ msgid "" msgstr "" #: src/settings_translation_file.cpp -#, fuzzy msgid "Y of upper limit of large caves." -msgstr "A világgeneráló szálak számának abszolút határa" +msgstr "Nagy barlangok felső Y határa." #: src/settings_translation_file.cpp msgid "Y-distance over which caverns expand to full size." -msgstr "" +msgstr "Y-távolság, amelyen az üregek teljes méretre kinyúlnak." #: src/settings_translation_file.cpp msgid "" @@ -7030,27 +6970,27 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." -msgstr "" +msgstr "A terep átlagos Y szintje." #: src/settings_translation_file.cpp msgid "Y-level of cavern upper limit." -msgstr "" +msgstr "Az üregek felső Y határa." #: src/settings_translation_file.cpp msgid "Y-level of higher terrain that creates cliffs." -msgstr "Y-szintű magasabb terep, amely szirteket hoz létre." +msgstr "Magas terep Y szintje amely szirteket hoz létre." #: src/settings_translation_file.cpp msgid "Y-level of lower terrain and seabed." -msgstr "" +msgstr "Alacsony terep és tengerfenék Y szintje." #: src/settings_translation_file.cpp msgid "Y-level of seabed." -msgstr "" +msgstr "Tengerfenék Y szintje." #: src/settings_translation_file.cpp msgid "cURL file download timeout" -msgstr "cURL fájlletöltés időkorlátja" +msgstr "cURL fájlletöltés időkorlát" #: src/settings_translation_file.cpp msgid "cURL parallel limit" @@ -7058,7 +6998,7 @@ msgstr "cURL párhuzamossági korlát" #: src/settings_translation_file.cpp msgid "cURL timeout" -msgstr "cURL időkorlátja" +msgstr "cURL időkorlát" #~ msgid "Toggle Cinematic" #~ msgstr "Váltás „mozi” módba" From cbd964e572f96cdffc9ec365f042fbd25e873a4b Mon Sep 17 00:00:00 2001 From: Shuli Date: Fri, 19 Jun 2020 23:01:13 +0000 Subject: [PATCH 378/424] Translated using Weblate (Italian) Currently translated at 100.0% (1350 of 1350 strings) --- po/it/minetest.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/po/it/minetest.po b/po/it/minetest.po index 8e1563dbe..9c20a891c 100644 --- a/po/it/minetest.po +++ b/po/it/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Italian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-19 23:01+0000\n" -"Last-Translator: Jacques Lagrange \n" +"PO-Revision-Date: 2020-06-22 17:56+0000\n" +"Last-Translator: Shuli \n" "Language-Team: Italian \n" "Language: it\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1.1\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -422,7 +422,7 @@ msgstr "Non hai nessun gioco installato." #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "Sei sicuro di volere cancellare \"$1\"?" +msgstr "Siete sicuri di volere cancellare \"$1\"?" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua @@ -455,8 +455,8 @@ msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" -"Questo pacchetto di mod ha un nome esplicito datogli nel suo modpack.conf " -"che ignorerà qualsiasi rinominazione qui effettuata." +"Questa raccolta di mod esplicita un nome in modpack.conf che sovrascriverà " +"ogni modifica qui fatta." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" @@ -536,7 +536,7 @@ msgstr "Il valore deve essere almeno $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must not be larger than $1." -msgstr "Il valore non deve essere maggiore di $1." +msgstr "Il valore deve essere più piccolo di $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" @@ -773,7 +773,7 @@ msgstr "Modalità creativa" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Damage enabled" -msgstr "Ferimento abilitato" +msgstr "Danno fisico abilitato" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Del. Favorite" From 34a20b358c5e0d7374b3dd291ae85a94a288988e Mon Sep 17 00:00:00 2001 From: Hamlet Date: Fri, 19 Jun 2020 23:03:23 +0000 Subject: [PATCH 379/424] Translated using Weblate (Italian) Currently translated at 100.0% (1350 of 1350 strings) --- po/it/minetest.po | 595 +++++++++++++++++++++++++--------------------- 1 file changed, 323 insertions(+), 272 deletions(-) diff --git a/po/it/minetest.po b/po/it/minetest.po index 9c20a891c..42a0245be 100644 --- a/po/it/minetest.po +++ b/po/it/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-22 17:56+0000\n" -"Last-Translator: Shuli \n" +"Last-Translator: Hamlet \n" "Language-Team: Italian \n" "Language: it\n" @@ -208,7 +208,7 @@ msgstr "Cerca" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" -msgstr "Pacchetti di immagini" +msgstr "Raccolte di immagini" #: builtin/mainmenu/dlg_contentstore.lua msgid "Uninstall" @@ -448,7 +448,7 @@ msgstr "Accetta" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "Rinominare il pacchetto di mod:" +msgstr "Rinominare la raccolta di mod:" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" @@ -468,7 +468,7 @@ msgstr "Rumore 2D" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" -msgstr "< Torna alle impostazioni" +msgstr "< Torna a Impostazioni" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Browse" @@ -1932,9 +1932,8 @@ msgid "" "(Android) Fixes the position of virtual joystick.\n" "If disabled, virtual joystick will center to first-touch's position." msgstr "" -"(Android) Fissa la posizione del joytick virtuale.\n" -"Se disabilitato, il joystick sarà centrato alla\n" -"posizione del primo tocco." +"(Android) Fissa la posizione del joystick virtuale.\n" +"Se disabilitato, il joystick sarà centrato alla posizione del primo tocco." #: src/settings_translation_file.cpp msgid "" @@ -1957,19 +1956,17 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" -"Spostamento (X,Y,Z) del frattale dal centro del mondo in\n" -"unità di \"scala\".\n" -"Può essere usato per spostare un punto desiderato a (0,0)\n" -"per creare un\n" -"punto di comparsa adatto, o per consentire\n" -"l'ingrandimento su di un punto desiderato\n" +"Scarto (X,Y,Z) del frattale dal centro del mondo in unità di \"scala\".\n" +"Può essere usato per spostare un punto desiderato a (0,0) per creare un\n" +"punto di comparsa adatto, o per consentire l'ingrandimento su di un punto " +"desiderato\n" "per mezzo dell'aumento della \"scala\".\n" -"Il valore predefinito è regolato per un punto di comparsa\n" -"opportuno con le serie Mandelbrot\n" +"Il valore predefinito è regolato per un punto di comparsa opportuno con le " +"serie Mandelbrot\n" "che usino i parametri predefiniti, potrebbe richiedere modifiche in altre\n" "situazioni.\n" -"Varia grossomodo da -2 a 2. Si moltiplichi per \"scala\" per\n" -"lo spostamento in nodi." +"Varia grossomodo da -2 a 2. Si moltiplichi per \"scala\" per lo spostamento " +"in nodi." #: src/settings_translation_file.cpp msgid "" @@ -1982,15 +1979,14 @@ msgid "" "an island, set all 3 numbers equal for the raw shape." msgstr "" "Scala (X,Y,Z) del frattale in nodi.\n" -"La dimensione effettiva del frattale sarà due o tre volte\n" -"più grande.\n" -"Questi numeri possono essere impostati su valori molto\n" -"alti, il frattale non deve necessariamente rientrare nel\n" -"mondo.\n" +"La dimensione effettiva del frattale sarà due o tre volte più grande.\n" +"Questi numeri possono essere impostati su valori molto alti, il frattale non " +"deve\n" +"necessariamente rientrare nel mondo.\n" "Li si aumenti per \"ingrandire\" nel dettaglio del frattale.\n" -"Il valore predefinito è per una forma schiacciata\n" -"verticalmente, adatta a un'isola, si impostino tutti e tre\n" -"i numeri sullo stesso valore per la forma grezza." +"Il valore predefinito è per una forma schiacciata verticalmente, adatta\n" +"a un'isola, si impostino tutti e tre i numeri sullo stesso valore per la " +"forma grezza." #: src/settings_translation_file.cpp msgid "" @@ -2061,6 +2057,12 @@ msgid "" "to be adjusted, as floatland tapering functions best when this noise has\n" "a value range of approximately -2.0 to 2.0." msgstr "" +"Rumore 3D che stabilisce la struttura delle terre fluttuanti.\n" +"Se cambiata dal valore predefinito, la 'scala' di rumore (0.7 in modo " +"predefinito) potrebbe necessitare\n" +"d'essere aggiustata, dato che l'affusolamento delle terre fluttuanti " +"funziona meglio quando questo rumore\n" +"ha un intervallo di valori approssimativamente tra -2.0 e 2.0." #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." @@ -2186,6 +2188,13 @@ msgid "" "Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" "to be sure) creates a solid floatland layer." msgstr "" +"Aggiusta la densità dello strato della terra fluttuante.\n" +"Si aumenti il valore per aumentare la densità. Può essere positivo o " +"negativo.\n" +"Valore = 0.0: 50% del volume è terra fluttuante.\n" +"Value = 2.0 (può essere maggiore dipendentemente da 'mgv7_np_floatland', " +"provate sempre\n" +"per essere sicuri) crea uno strato solido di terre fluttuanti." #: src/settings_translation_file.cpp msgid "Advanced" @@ -2255,9 +2264,8 @@ msgid "" "Arm inertia, gives a more realistic movement of\n" "the arm when the camera moves." msgstr "" -"Inerzia del braccio, dà un movimento più\n" -"realistico al braccio quando si muove la\n" -"visuale." +"Inerzia del braccio, dà un movimento più realistico\n" +"al braccio quando si sposta la visuale." #: src/settings_translation_file.cpp msgid "Ask to reconnect after crash" @@ -2610,9 +2618,10 @@ msgid "" "Comma-separated list of trusted mods that are allowed to access insecure\n" "functions even when mod security is on (via request_insecure_environment())." msgstr "" -"Elenco separato da virgole dei mod fidati ai quali è permesso l'accesso\n" -"a funzioni non sicure anche quando è attiva la sicurezza dei moduli\n" -"(tramite request_insecure_environment()." +"Elenco separato da virgole dei mod fidati ai quali è permesso l'accesso a " +"funzioni non sicure\n" +"anche quando è attiva la sicurezza dei moduli (tramite " +"request_insecure_environment()." #: src/settings_translation_file.cpp msgid "Command key" @@ -2660,8 +2669,8 @@ msgid "" "Press the autoforward key again or the backwards movement to disable." msgstr "" "Avanzamento continuo, scelto dal tasto avanzamento automatico.\n" -"Premi nuovamente il tasto avanzamento automatico o il tasto di\n" -"arretramento per disabilitarlo." +"Premi nuovamente il tasto avanzamento automatico o il tasto di arretramento " +"per disabilitarlo." #: src/settings_translation_file.cpp msgid "Controls" @@ -2751,7 +2760,7 @@ msgstr "Tasto dim. volume" #: src/settings_translation_file.cpp msgid "Decrease this to increase liquid resistance to movement." -msgstr "Diminuisci questo per aumentare la resistenza dei liquidi al movimento." +msgstr "Decrementalo per aumentare la resistenza al movimento nel liquido." #: src/settings_translation_file.cpp msgid "Dedicated server step" @@ -2868,8 +2877,7 @@ msgid "" "down the rate of mesh updates, thus reducing jitter on slower clients." msgstr "" "Ritardo in ms tra gli aggiornamenti delle mesh sul client. Aumentandolo si\n" -"ritarderà il ritmo di aggiornamento delle mesh, riducendo così lo " -"sfarfallio\n" +"ritarderà il ritmo di aggiornamento delle mesh, riducendo così lo sfarfallio " "sui client più lenti." #: src/settings_translation_file.cpp @@ -3036,9 +3044,9 @@ msgid "" msgstr "" "Abilitare per impedire ai client obsoleti di connettersi.\n" "I client più vecchi sono compatibili nel senso che non andranno in crash " -"alla\n" -"connessione ai nuovi server, ma potrebbero non supportare tutte le nuove\n" -"caratteristiche che ti aspetti." +"alla connessione\n" +"ai nuovi server, ma potrebbero non supportare tutte le nuove caratteristiche " +"che ti aspetti." #: src/settings_translation_file.cpp msgid "" @@ -3077,7 +3085,7 @@ msgid "" msgstr "" "Abilita/Disabilita l'esecuzione di un server IPv6.\n" "Ignorata se si imposta bind_address.\n" -"Richiede enable_ipv6 per essere abilitata." +"Necessita di enable_ipv6 per essere abilitata." #: src/settings_translation_file.cpp msgid "" @@ -3141,9 +3149,10 @@ msgid "" "Changing this setting requires a restart." msgstr "" "Abilita il sistema audio.\n" -"Se disabilitato, disabilita completamente tutti i suoni ovunque rendendo i " -"controlli audio nel gioco non funzionanti.\n" -"Cambiare questa impostazione richiede un riavvio.\n" +"Se disabilitato, disabilita completamente tutti i suoni ovunque e i " +"controlli audio\n" +"nel gioco non saranno funzionanti.\n" +"Cambiare questa impostazione richiede un riavvio." #: src/settings_translation_file.cpp msgid "Engine profiling data print interval" @@ -3170,6 +3179,14 @@ msgid "" "Values < 1.0 (for example 0.25) create a more defined surface level with\n" "flatter lowlands, suitable for a solid floatland layer." msgstr "" +"Esponente dell'affusolamento delle terre fluttuanti. Cambia il comportamento " +"di affusolamento.\n" +"Valore = 1.0 crea un affusolamento uniforme, lineare.\n" +"Valori > 1.0 creano un affusolamento uniforme adatto alle\n" +"terre fluttuanti separate predefinite.\n" +"Valori < 1.0 (per esempio 0.25) creano un livello di superficie più definito " +"con\n" +"pianure più piatte, adatti a uno strato solido di terre fluttuanti." #: src/settings_translation_file.cpp msgid "FPS in pause menu" @@ -3188,9 +3205,8 @@ msgid "Fall bobbing factor" msgstr "Fattore di ondeggiamento in caduta" #: src/settings_translation_file.cpp -#, fuzzy msgid "Fallback font path" -msgstr "Carattere di ripiego" +msgstr "Percorso del carattere di ripiego" #: src/settings_translation_file.cpp msgid "Fallback font shadow" @@ -3265,13 +3281,12 @@ msgid "" "light edge to transparent textures. Apply this filter to clean that up\n" "at texture load time." msgstr "" -"Le immagini a cui si applicano i filtri possono amalgamare i valori RGB\n" -"con quelle vicine completamente trasparenti; normalmente vengono\n" -"scartati dagli ottimizzatori PNG, risultando a volte in immagini " -"trasparenti\n" -"scure o dai bordi chiari. Applicare questo filtro aiuta a ripulire tutto ciò " -"al\n" -"momento del caricamento dell'immagine." +"Le immagini a cui si applicano i filtri possono amalgamare i valori RGB con " +"quelle vicine completamente trasparenti,\n" +"che normalmente vengono scartati dagli ottimizzatori PNG, risultando a volte " +"in immagini trasparenti scure o\n" +"dai bordi chiari. Applicare questo filtro aiuta a ripulire tutto ciò\n" +"al momento del caricamento dell'immagine." #: src/settings_translation_file.cpp msgid "Filtering" @@ -3296,39 +3311,32 @@ msgid "Fixed virtual joystick" msgstr "Joystick virtuale fisso" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland density" -msgstr "Densità montuosa delle terre fluttuanti" +msgstr "Densità delle terre fluttuanti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland maximum Y" -msgstr "Y massimo dei sotterranei" +msgstr "Y massimo delle terre fluttuanti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland minimum Y" -msgstr "Y minimo dei sotterranei" +msgstr "Y minimo delle terre fluttuanti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland noise" -msgstr "Rumore base delle terre fluttuanti" +msgstr "Rumore delle terre fluttuanti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland taper exponent" -msgstr "Densità montuosa delle terre fluttuanti" +msgstr "Esponente dell'affusolamento delle terre fluttuanti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland tapering distance" -msgstr "Rumore base delle terre fluttuanti" +msgstr "Distanza di affusolamento delle terre fluttuanti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland water level" -msgstr "Livello delle terre fluttuanti" +msgstr "Livello dell'acqua delle terre fluttuanti" #: src/settings_translation_file.cpp msgid "Fly key" @@ -3352,11 +3360,11 @@ msgstr "Tasto scelta nebbia" #: src/settings_translation_file.cpp msgid "Font bold by default" -msgstr "" +msgstr "Carattere grassetto per impostazione predefinita" #: src/settings_translation_file.cpp msgid "Font italic by default" -msgstr "" +msgstr "Carattere corsivo per impostazione predefinita" #: src/settings_translation_file.cpp msgid "Font shadow" @@ -3372,21 +3380,24 @@ msgstr "Dimensione del carattere" #: src/settings_translation_file.cpp msgid "Font size of the default font in point (pt)." -msgstr "" +msgstr "Dimensione carattere del carattere predefinito, in punti (pt)." #: src/settings_translation_file.cpp msgid "Font size of the fallback font in point (pt)." -msgstr "" +msgstr "Dimensione carattere del carattere di ripiego, in punti (pt)." #: src/settings_translation_file.cpp msgid "Font size of the monospace font in point (pt)." -msgstr "" +msgstr "Dimensione carattere del carattere a spaziatura fissa, in punti (pt)." #: src/settings_translation_file.cpp msgid "" "Font size of the recent chat text and chat prompt in point (pt).\n" "Value 0 will use the default font size." msgstr "" +"Dimensione carattere del testo e del prompt dell'area di messaggistica, in " +"punti (pt).\n" +"Valore 0 userà la dimensione carattere predefinita." #: src/settings_translation_file.cpp msgid "" @@ -3485,7 +3496,7 @@ msgstr "" "\n" "Impostarla maggiore di active_block_range provocherà il mantenimento\n" "degli oggetti attivi, fino a questa distanza, da parte del server, nella\n" -"direzione in cui guarda il giocatore. (Ciò può impedire l'improvvisa\n" +"direzione in cui guarda il giocatore. (Ciò può evitare l'improvvisa " "scomparsa dei mob)" #: src/settings_translation_file.cpp @@ -3527,23 +3538,26 @@ msgid "" "and junglegrass, in all other mapgens this flag controls all decorations." msgstr "" "Attributi globali di generazione della mappa.\n" -"In Mapgen v6 il valore 'decorations' controlla tutte le decorazioni\n" -"eccetto alberi ed erba della giungla, in tutti gli altri questa opzione\n" -"controlla tutte le decorazioni." +"In Mapgen v6 il valore 'decorations' controlla tutte le decorazioni eccetto " +"alberi\n" +"ed erba della giungla, in tutti gli altri questa opzione controlla tutte le " +"decorazioni." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." -msgstr "Gradiente della curva della luce al livello massimo di luce." +msgstr "" +"Gradiente della curva della luce al livello massimo di luce.\n" +"Controlla il contrasto dei massimi livelli di luce." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." -msgstr "Gradiente della curva della luce al livello minimo di luce." +msgstr "" +"Gradiente della curva della luce al livello minimo di luce.\n" +"Controlla il contrasto dei livelli di luce più bassi." #: src/settings_translation_file.cpp msgid "Graphics" @@ -3574,7 +3588,6 @@ msgid "HUD toggle key" msgstr "Tasto di scelta del visore" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- legacy: (try to) mimic old behaviour (default for release).\n" @@ -3582,10 +3595,10 @@ msgid "" "- error: abort on usage of deprecated call (suggested for mod developers)." msgstr "" "Gestione delle chiamate deprecate alle API Lua:\n" -"- legacy (ereditaria): (prova a) simulare il vecchio comportamento " -"(predefinito per i rilasci).\n" -"- log (registro): simula e registra la traccia della chiamata deprecata " -"(predefinito per il debug).\n" +"- legacy (ereditaria): (prova a) simulare il vecchio comportamento (" +"predefinito per i rilasci).\n" +"- log (registro): simula e registra la traccia della chiamata deprecata (" +"predefinito per il debug).\n" "- error (errore): interrompere all'uso della chiamata deprecata (suggerito " "per lo sviluppo di moduli)." @@ -3825,6 +3838,9 @@ msgid "" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" +"Con quale velocità si muovono le onde dei liquidi. Più alto = più veloce.\n" +"Se negativo, le onde dei liquidi si sposteranno all'indietro.\n" +"Richiede l'abilitazione dei liquidi ondulanti." #: src/settings_translation_file.cpp msgid "" @@ -3883,11 +3899,13 @@ msgid "" "invisible\n" "so that the utility of noclip mode is reduced." msgstr "" -"Se abilitata il sever effettuerà l'occlusion culling dei blocchi mappa\n" -"basandosi sulla posizione degli occhi del giocatore. Questo può\n" -"ridurre del 50-80% il numero dei blocchi inviati al client. Il client non\n" -"riceverà più i blocchi più invisibili cosicché l'utilità della modalità\n" -"incorporea è ridotta." +"Se abilitata il server effettuerà l'occlusion culling dei blocchi mappa " +"basandosi\n" +"sulla posizione degli occhi del giocatore. Questo può ridurre del 50-80% il " +"numero dei blocchi\n" +"inviati al client. Il client non riceverà più la maggior parte degli " +"invisibili\n" +"cosicché l'utilità della modalità incorporea è ridotta." #: src/settings_translation_file.cpp msgid "" @@ -3906,7 +3924,8 @@ msgid "" "descending." msgstr "" "Se abilitata, si usa il tasto \"speciale\" invece di \"striscia\" per " -"arrampicarsi o scendere." +"arrampicarsi e\n" +"scendere." #: src/settings_translation_file.cpp msgid "" @@ -3925,8 +3944,8 @@ msgid "" "If enabled, invalid world data won't cause the server to shut down.\n" "Only enable this if you know what you are doing." msgstr "" -"Se abilitata, i dati non validi del mondo non provocheranno lo\n" -"spegnimento del server.\n" +"Se abilitata, i dati non validi del mondo non provocheranno lo spegnimento " +"del server.\n" "Attivala solo se sai cosa stai facendo." #: src/settings_translation_file.cpp @@ -4078,14 +4097,12 @@ msgid "Invert vertical mouse movement." msgstr "Inverte il movimento verticale del mouse." #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic font path" -msgstr "Percorso del carattere a spaziatura fissa" +msgstr "Percorso del carattere corsivo" #: src/settings_translation_file.cpp -#, fuzzy msgid "Italic monospace font path" -msgstr "Percorso del carattere a spaziatura fissa" +msgstr "Percorso del carattere corsivo a spaziatura fissa" #: src/settings_translation_file.cpp msgid "Item entity TTL" @@ -4102,11 +4119,11 @@ msgid "" "increases processing load.\n" "At iterations = 20 this mapgen has a similar load to mapgen V7." msgstr "" -"Iterazioni della funzione ricorrente.\n" -"Aumentarle aumenta l'ammontare del dettaglio fine, ma\n" -"aumenta anche il carico di elaborazione.\n" -"A iterazioni = 20 questo generatore di mappe ha un carico\n" -"simile al generatore di mappe v7." +"Iterazioni della funzione ricorsiva.\n" +"Aumentarle aumenta l'ammontare del dettaglio fine,\n" +"ma aumenta anche il carico di elaborazione.\n" +"A iterazioni = 20 questo generatore di mappe ha un carico simile al " +"generatore di mappe v7." #: src/settings_translation_file.cpp msgid "Joystick ID" @@ -4919,15 +4936,15 @@ msgstr "Profondità delle caverne grandi" #: src/settings_translation_file.cpp msgid "Large cave maximum number" -msgstr "" +msgstr "Numero massimo di grotte di grandi dimensioni" #: src/settings_translation_file.cpp msgid "Large cave minimum number" -msgstr "" +msgstr "Numero minimo di caverne di grandi dimensioni" #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" -msgstr "" +msgstr "Proporzione inondata della grotta grande" #: src/settings_translation_file.cpp msgid "Large chat console key" @@ -4964,13 +4981,12 @@ msgstr "" "sono aggiornati in generale sulla rete." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Length of liquid waves.\n" "Requires waving liquids to be enabled." msgstr "" -"Impostata su vero abilita le foglie ondeggianti.\n" -"Necessita l'attivazione degli shader." +"Lunghezza delle onde dei liquidi.\n" +"Richiede l'attivazione dei liquidi ondeggianti." #: src/settings_translation_file.cpp msgid "Length of time between Active Block Modifier (ABM) execution cycles" @@ -5007,34 +5023,28 @@ msgstr "" "- verbose (verboso)" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost" -msgstr "Aumento mediano della curva di luce" +msgstr "Aumento della curva di luce" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost center" -msgstr "Centro dell'aumento mediano della curva di luce" +msgstr "Centro dell'aumento della curva di luce" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost spread" -msgstr "Diffusione dell'aumento mediano della curva di luce" +msgstr "Diffusione dell'aumento della curva di luce" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve gamma" -msgstr "Aumento mediano della curva di luce" +msgstr "Gamma della curva di luce" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve high gradient" -msgstr "Aumento mediano della curva di luce" +msgstr "Gradiente alto della curva di luce" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve low gradient" -msgstr "Centro dell'aumento mediano della curva di luce" +msgstr "Gradiente basso della curva di luce" #: src/settings_translation_file.cpp msgid "" @@ -5044,8 +5054,7 @@ msgid "" msgstr "" "Limite della generazione della mappa, in nodi, in tutte e sei le direzioni " "da (0,0,0).\n" -"Sono generati solo i pezzi di mappa completamente all'interno del limite " -"del\n" +"Sono generati solo i pezzi di mappa completamente all'interno del limite del " "generatore di mappe.\n" "Il valore è immagazzinato per ciascun mondo." @@ -5116,9 +5125,8 @@ msgid "Lower Y limit of dungeons." msgstr "Limite inferiore Y dei sotterranei." #: src/settings_translation_file.cpp -#, fuzzy msgid "Lower Y limit of floatlands." -msgstr "Limite inferiore Y dei sotterranei." +msgstr "Limite inferiore Y delle terre fluttuanti." #: src/settings_translation_file.cpp msgid "Main menu script" @@ -5154,26 +5162,24 @@ msgstr "" "Carpathian." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Flat.\n" "Occasional lakes and hills can be added to the flat world." msgstr "" -"Attributi di generazione della mappa specifici del generatore di mappe " -"Flat.\n" -"Al mondo piatto si possono aggiungere laghi e colline occasionali." +"Attributi di generazione della mappa specifici del generatore di mappe Flat." +"\n" +"Al mondo piatto possono essere aggiunti laghi e colline occasionali." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Fractal.\n" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" "Attributi di generazione della mappa specifici del generatore di mappe " -"piatto.\n" +"frattale.\n" "'terrain' abilita la generazione di terreno non-frattale:\n" -"oceano, isole e sotterranei." +"oceano, isole e sottoterra." #: src/settings_translation_file.cpp msgid "" @@ -5210,15 +5216,16 @@ msgstr "" "e il valore \"jungles\" viene ignorato." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" "'ridges': Rivers.\n" "'floatlands': Floating land masses in the atmosphere.\n" "'caverns': Giant caves deep underground." msgstr "" -"Attributi di generazione della mappa specifici del generatore di mappe v7.\n" -"\"ridges\" abilita i fiumi." +"Attributi di generazione mappa specifici per il generatore di mappe v7.\n" +"'ridges': fiumi.\n" +"'floatlands': masse di terra fluttuanti nell'atmosfera.\n" +"'caverns': caverne giganti profondamente sottoterra." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5347,18 +5354,18 @@ msgstr "Larghezza massima della barra di scelta rapida" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." msgstr "" +"Limite massimo di grotte casuali di grandi dimensioni per pezzo di mappa." #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Limite massimo di piccole grotte casuali per pezzo di mappa." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum liquid resistance. Controls deceleration when entering liquid at\n" "high speed." msgstr "" -"Resistenza massima dei liquidi. Gestisce la decelerazione \n" +"Resistenza massima dei liquidi. Controlla la decelerazione \n" "quando si entra ad alta velocità in un liquido." #: src/settings_translation_file.cpp @@ -5377,24 +5384,20 @@ msgstr "" "Numero massimo di blocchi che possono essere accodati per il caricamento." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "This limit is enforced per player." msgstr "" "Numero massimo di blocchi da accodarsi che devono essere generati.\n" -"Lascia vuoto per fare in modo che venga scelto automaticamente un\n" -"ammontare adeguato." +"Questo limite viene imposto per ciascun giocatore." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "This limit is enforced per player." msgstr "" "Numero massimo di blocchi da accodarsi che devono essere caricati da file.\n" -"Lascia vuoto per fare in modo che venga scelto automaticamente un\n" -"ammontare adeguato." +"Questo limite viene imposto per ciascun giocatore." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5495,7 +5498,7 @@ msgstr "Metodo usato per evidenziare l'oggetto scelto." #: src/settings_translation_file.cpp msgid "Minimal level of logging to be written to chat." -msgstr "" +msgstr "Livello di registro minimo da scriversi nell'area di messaggistica." #: src/settings_translation_file.cpp msgid "Minimap" @@ -5510,13 +5513,13 @@ msgid "Minimap scan height" msgstr "Altezza di scansione della minimappa" #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "Rumore 3D che stabilisce il numero di segrete per blocco di mondo." +msgstr "" +"Limite minimo di grotte casuali di grandi dimensioni per pezzo di mappa." #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" +msgstr "Limite minimo di piccole grotte casuali per pezzo di mappa." #: src/settings_translation_file.cpp msgid "Minimum texture size" @@ -5605,8 +5608,8 @@ msgid "" "When starting from the main menu, this is overridden." msgstr "" "Nome del giocatore.\n" -"Quando si esegue un server, i client che si connettono con questo nome\n" -"sono amministratori.\n" +"Quando si esegue un server, i client che si connettono con questo nome sono " +"amministratori.\n" "Quando si avvia dal menu principale, questo viene scavalcato." #: src/settings_translation_file.cpp @@ -5617,9 +5620,8 @@ msgstr "" "dei server." #: src/settings_translation_file.cpp -#, fuzzy msgid "Near plane" -msgstr "Piano di ritaglio vicino" +msgstr "Piano vicino" #: src/settings_translation_file.cpp msgid "Network" @@ -5670,7 +5672,6 @@ msgid "Number of emerge threads" msgstr "Numero di thread emerge" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of emerge threads to use.\n" "Value 0:\n" @@ -5683,23 +5684,20 @@ msgid "" "processes, especially in singleplayer and/or when running Lua code in\n" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" -"Numero di emerge thread da usare.\n" -"Attenzione: Attualmente ci sono diversi bachi che possono provocare crash " -"quando\n" -"'num_emerge_threds' è maggiore di 1. Fintanto che questo avviso non viene " -"rimosso \n" -"si raccomanda vivamente di impostarlo al valore predefinito 1.\n" +"Numero di thread di comparsa da usare.\n" "Valore 0:\n" -"- Selezione automatica. Il numero di emerge thread sarà\n" -"- \"numero di processori - 2\", con un limite inferiore di 1.\n" -"Qualunque altro valore:\n" -"- Specifica il numero di emerge thread, con un limite inferiore di 1.\n" -"Avvertimento: aumentare il numero di emerge thread aumenta la\n" -"velocità del motore del generatore mappa, ma ciò potrebbe danneggiare\n" -"le prestazioni del gioco interferendo con altri processi, specialmente in\n" -"modalità giocatore singolo e/o quando si esegue codice Lua in \"on_generated" -"\".\n" -"Per molti utenti l'impostazione ottimale può essere \"1\"." +"- Selezione automatica. Il numero di thread di comparsa sarà\n" +"- 'numero di processori - 2', con un limite inferiore di 1.\n" +"Qualsiasi altro valore:\n" +"- Specifica il numero di thread di comparsa, con un limite inferiore di 1." +"\n" +"AVVISO: Aumentare il numero dei thread di comparsa aumenta la velocità del " +"motore\n" +"del generatore di mappe, ma questo potrebbe danneggiare le prestazioni del " +"gioco interferendo con\n" +"altri processi, specialmente in modalità locale e/o quando si esegue codice " +"Lua in 'on_generated'.\n" +"Per molti utenti l'impostazione ottimale può essere '1'." #: src/settings_translation_file.cpp msgid "" @@ -5727,12 +5725,12 @@ msgstr "Liquidi opachi" #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." -msgstr "" +msgstr "Opacità (alfa) dell'ombra dietro il carattere predefinito, tra 0 e 255." #: src/settings_translation_file.cpp msgid "" "Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." -msgstr "" +msgstr "Opacità (alfa) dell'ombra dietro il carattere di riserva, tra 0 e 255." #: src/settings_translation_file.cpp msgid "" @@ -5781,20 +5779,30 @@ msgid "" "This font will be used for certain languages or if the default font is " "unavailable." msgstr "" +"Percorso del carattere di riserva.\n" +"Se l'impostazione \"freetype\" è abilitata: deve essere un carattere " +"TrueType.\n" +"Se l'impostazione \"freetype\" è disabilitata: deve essere un carattere " +"bitmap o XML vettoriale.\n" +"Questo carattere verrà utilizzato per alcune lingue o se il carattere " +"predefinito non è disponibile." #: src/settings_translation_file.cpp msgid "" "Path to save screenshots at. Can be an absolute or relative path.\n" "The folder will be created if it doesn't already exist." msgstr "" +"Percorso dove salvare le schermate. Può essere un percorso assoluto o " +"relativo.\n" +"La cartella sarà create se non esiste già." #: src/settings_translation_file.cpp msgid "" "Path to shader directory. If no path is defined, default location will be " "used." msgstr "" -"Percorso della cartella degli shader. Se non se ne stabilisce nessuno,\n" -"verrà usato quello predefinito." +"Percorso della cartella degli shader. Se non se ne stabilisce nessuno, verrà " +"usato quello predefinito." #: src/settings_translation_file.cpp msgid "Path to texture directory. All textures are first searched from here." @@ -5809,6 +5817,13 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "The fallback font will be used if the font cannot be loaded." msgstr "" +"Percorso del carattere predefinito.\n" +"Se l'impostazione \"freetype\" è abilitata: deve essere un carattere " +"TrueType.\n" +"Se l'impostazione \"freetype\" è disabilitata: deve essere un carattere " +"bitmap o XML vettoriale.\n" +"Il carattere di riserva verrà utilizzato se il carattere non può essere " +"caricato." #: src/settings_translation_file.cpp msgid "" @@ -5817,6 +5832,13 @@ msgid "" "If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" "This font is used for e.g. the console and profiler screen." msgstr "" +"Percorso del carattere a spaziatura fissa.\n" +"Se l'impostazione \"freetype\" è abilitata: deve essere un carattere " +"TrueType.\n" +"Se l'impostazione \"freetype\" è disabilitata: deve essere un carattere " +"bitmap o XML vettoriale.\n" +"Questo carattere viene utilizzato ad es. per la console e lo schermo del " +"profilatore." #: src/settings_translation_file.cpp msgid "Pause on lost window focus" @@ -5824,12 +5846,11 @@ msgstr "Pausa alla perdita di fuoco della finestra" #: src/settings_translation_file.cpp msgid "Per-player limit of queued blocks load from disk" -msgstr "" +msgstr "Limite per giocatore di blocchi accodati per il caricamento dal disco" #: src/settings_translation_file.cpp -#, fuzzy msgid "Per-player limit of queued blocks to generate" -msgstr "Limite di code emerge da generare" +msgstr "Limite per giocatore di blocchi accodati da generare" #: src/settings_translation_file.cpp msgid "Physics" @@ -5877,10 +5898,9 @@ msgid "" "Prevent digging and placing from repeating when holding the mouse buttons.\n" "Enable this when you dig or place too often by accident." msgstr "" -"Impedisce la ripetizione di scavo e posizionamento quando si tengono " -"premuti\n" +"Impedisce la ripetizione di scavo e posizionamento quando si tengono premuti " "i pulsanti del mouse.\n" -"Abilitalo quando scavi o piazzi troppo spesso per caso." +"Abilitalo quando scavi o piazzi troppo spesso per sbaglio." #: src/settings_translation_file.cpp msgid "Prevent mods from doing insecure things like running shell commands." @@ -5915,7 +5935,7 @@ msgstr "Generazione di profili" #: src/settings_translation_file.cpp msgid "Prometheus listener address" -msgstr "" +msgstr "Indirizzo del listener Prometheus" #: src/settings_translation_file.cpp msgid "" @@ -5924,10 +5944,14 @@ msgid "" "enable metrics listener for Prometheus on that address.\n" "Metrics can be fetch on http://127.0.0.1:30000/metrics" msgstr "" +"Indirizzo del listener Prometheus.\n" +"Se Minetest viene compilato con l'opzione ENABLE_PROMETHEUS abilitata,\n" +"abilita il listener delle metriche per Prometheus su quell'indirizzo.\n" +"Le metriche possono essere recuperate su http://127.0.0.1:30000/metrics" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." -msgstr "" +msgstr "Proporzione delle grotte di grandi dimensioni che contiene del liquido." #: src/settings_translation_file.cpp msgid "" @@ -5937,8 +5961,7 @@ msgid "" msgstr "" "Raggio dell'area delle nuvole fissato in numero di 64 nodi quadrati nuvola.\n" "Valori maggiori di 26 cominceranno a produrre interruzioni appuntite agli " -"angoli\n" -"delle aree nuvola." +"angoli delle aree nuvola." #: src/settings_translation_file.cpp msgid "Raises terrain to make valleys around the rivers." @@ -5957,9 +5980,8 @@ msgid "Recent Chat Messages" msgstr "Messaggi di chat recenti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Regular font path" -msgstr "Percorso di rapporto" +msgstr "Percorso del carattere regolare" #: src/settings_translation_file.cpp msgid "Remote media" @@ -6177,7 +6199,6 @@ msgid "Selection box width" msgstr "Larghezza del riquadro di selezione" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Selects one of 18 fractal types.\n" "1 = 4D \"Roundy\" Mandelbrot set.\n" @@ -6199,25 +6220,25 @@ msgid "" "17 = 4D \"Mandelbulb\" Mandelbrot set.\n" "18 = 4D \"Mandelbulb\" Julia set." msgstr "" -"Seleziona uno dei 18 tipi di frattale.\n" -"1 = 4D serie Mandelbrot \"arrotondata\".\n" -"2 = 4D serie Julia \"arrotondata\".\n" -"3 = 4D serie Mandelbrot \"squadrata\".\n" -"4 = 4D serie Julia \"squadrata\".\n" -"5 = 4D serie Mandelbrot \"cugino Mandy\".\n" -"6 = 4D serie Julia \"cugino Mandy\".\n" -"7 = 4D serie Mandelbrot \"variazione\".\n" -"8 = 4D serie Julia \"variazione\".\n" -"9 = 3D serie Mandelbrot \"Mandelbrot/Mandelbar\".\n" -"10 = 3D serie Julia \"Mandelbrot/Mandelbar\".\n" -"11 = 3D serie Mandelbrot \"Albero di Natale\".\n" -"12 = 3D serie Julia \"Albero di Natale\".\n" -"13 = 3D serie Mandelbrot \"Mandelbulb\".\n" -"14 = 3D serie Julia \"Mandelbulb\".\n" -"15 = 3D serie Mandelbrot \"coseno Mandelbulb\".\n" -"16 = 3D serie Julia \"coseno Mandelbulb\".\n" -"17 = 4D serie Mandelbrot \"Mandelbulb\".\n" -"18 = 4D serie Julia \"Mandelbulb\"." +"Scegli uno dei 18 tipi di frattale.\n" +"1 = 4D Serie Mandelbrot \"arrotondata\".\n" +"2 = 4D Serie Julia \"arrotondata\".\n" +"3 = 4D Serie Mandelbrot \"squadrata\".\n" +"4 = 4D Serie Julia \"squadrata\".\n" +"5 = 4D Serie Mandelbrot \"cugino Mandy\".\n" +"6 = 4D Serie Julia \"cugino Mandy\".\n" +"7 = 4D Serie Mandelbrot \"variazione\".\n" +"8 = 4D Serie Julia \"variazione\".\n" +"9 = 3D Serie Mandelbrot \"Mandelbrot/Mandelbar\".\n" +"10 = 3D Serie Julia \"Mandelbrot/Mandelbar\".\n" +"11 = 3D Serie Mandelbrot \"Albero di Natale\".\n" +"12 = 3D Serie Julia \"Albero di Natale\".\n" +"13 = 3D Serie Mandelbrot \"Mandelbulb\".\n" +"14 = 3D Serie Julia \"Mandelbulb\".\n" +"15 = 3D Serie Mandelbrot \"Coseno Mandelbulb\".\n" +"16 = 3D Serie Julia \"Coseno Mandelbulb\".\n" +"17 = 4D Serie Mandelbrot \"Mandelbulb\".\n" +"18 = 4D Serie Julia \"Mandelbulb\"." #: src/settings_translation_file.cpp msgid "Server / Singleplayer" @@ -6270,7 +6291,6 @@ msgstr "" "dai client." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving leaves.\n" "Requires shaders to be enabled." @@ -6279,16 +6299,15 @@ msgstr "" "Necessita l'attivazione degli shader." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving liquids (like water).\n" "Requires shaders to be enabled." msgstr "" -"Impostata su vero abilita l'acqua ondeggiante.\n" +"Impostata su vero abilita i liquidi ondeggianti (come, ad esempio, l'acqua)." +"\n" "Necessita l'attivazione degli shader." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving plants.\n" "Requires shaders to be enabled." @@ -6313,20 +6332,20 @@ msgstr "" "Ciò funziona solo col supporto video OpenGL." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the default font. If 0, then shadow will not be " "drawn." msgstr "" -"Spostamento ombreggiatura carattere, se 0 allora l'ombra non sarà disegnata." +"Scarto (in pixel) dell'ombreggiatura del carattere predefinito. Se è 0, " +"allora l'ombra non sarà disegnata." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " "be drawn." msgstr "" -"Spostamento ombreggiatura carattere, se 0 allora l'ombra non sarà disegnata." +"Scarto (in pixel) dell'ombreggiatura del carattere di riserva. Se è 0, " +"allora l'ombra non sarà disegnata." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." @@ -6353,9 +6372,9 @@ msgid "" "Altering this value is for special usage, leaving it unchanged is\n" "recommended." msgstr "" -"Dimensione dei pezzi di mappa generati dal generatore mappe, fissata in\n" +"Dimensione dei pezzi di mappa generati dal generatore mappe, dichiarata in " "blocchi mappa (16 nodi).\n" -"AVVERTIMENTO!: non c'è nessun vantaggio, e ci sono diversi pericoli,\n" +"AVVISO: non c'è nessun beneficio, e ci sono diversi pericoli,\n" "nell'aumentare questo valore al di sopra di 5.\n" "Ridurre questo valore aumenta la densità di grotte e sotterranei.\n" "L'alterazione di questo valore è per uso speciale, si raccomanda di\n" @@ -6381,11 +6400,11 @@ msgstr "Pendenza e riempimento lavorano assieme per modificare le altezze." #: src/settings_translation_file.cpp msgid "Small cave maximum number" -msgstr "" +msgstr "Numero massimo di grotte piccole" #: src/settings_translation_file.cpp msgid "Small cave minimum number" -msgstr "" +msgstr "Numero minimo di grotte piccole" #: src/settings_translation_file.cpp msgid "Small-scale humidity variation for blending biomes on borders." @@ -6463,16 +6482,19 @@ msgid "" "Note that mods or games may explicitly set a stack for certain (or all) " "items." msgstr "" +"Fissa la dimensione predefinita della pila di nodi, oggetti e strumenti.\n" +"Si noti che mod o giochi possono impostare esplicitamente una pila per " +"alcuni (o tutti) gli oggetti." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Spread of light curve boost range.\n" "Controls the width of the range to be boosted.\n" "Standard deviation of the light curve boost Gaussian." msgstr "" "Diffusione dell'aumento mediano della curva di luce.\n" -"Scostamento tipo dell'aumento mediano gaussiano." +"Controlla l'ampiezza del raggio da aumentare.\n" +"Scostamento tipo dell'aumento della curva di luce gaussiano." #: src/settings_translation_file.cpp msgid "Static spawnpoint" @@ -6491,9 +6513,8 @@ msgid "Step mountain spread noise" msgstr "Rumore della diffusione del passo montano" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of 3D mode parallax." -msgstr "Intensità della parallasse." +msgstr "Intensità della parallasse della modalità 3D." #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." @@ -6505,6 +6526,9 @@ msgid "" "The 3 'boost' parameters define a range of the light\n" "curve that is boosted in brightness." msgstr "" +"Intensità dell'incremento della curva di luce.\n" +"I 3 parametri \"incremento\" definiscono un intervallo della luce\n" +"che ne potenzia la luminosità." #: src/settings_translation_file.cpp msgid "Strict protocol checking" @@ -6527,6 +6551,22 @@ msgid "" "server-intensive extreme water flow and to avoid vast flooding of the\n" "world surface below." msgstr "" +"Livello di superficie dell'aqua facoltativa posizionata su uno strato solido " +"di terra fluttuante.\n" +"L'acqua è disabilitata in modo predefinito e sarà posizionata se questo " +"valore è impostato\n" +"al di sopra di 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (l'inizio dell'" +"affusolamento\n" +"superiore).\n" +"***AVVISO, PERICOLO POTENZIALE PER MONDI E PRESTAZIONI SERVER***:\n" +"Quando si abilita il posizionamento dell'acqua, le terre fluttuanti devono " +"essere configurate e verificate\n" +"per essere uno strato solido impostando 'mgv7_floatland_density' a 2.0 (o un " +"altro\n" +"valore richiesto dipendentemente da 'mgv7_np_floatland', per evitare\n" +"flussi d'acqua estremamente intensi per il server e per evitare vasti " +"allagamenti\n" +"della superficie del mondo sottostante." #: src/settings_translation_file.cpp msgid "Synchronous SQLite" @@ -6597,10 +6637,10 @@ msgstr "" "Il primo modo si addice meglio a cose come macchine, arredamento, ecc.,\n" "mentre il secondo fa sì che scale e microblocchi si adattino meglio ai " "dintorni.\n" -"Comunque, dato che questa possibilità è nuova, automaticamente potrebbe\n" -"non essere usata dai server più vecchi, questa opzione consente di imporla\n" -"per alcuni tipi di nodo. Si noti però che questa è considerata SPERIMENTALE\n" -"e potrebbe non funzionare bene." +"Comunque, dato che questa possibilità è nuova, automaticamente potrebbe non " +"essere usata dai server più vecchi,\n" +"questa opzione consente di imporla per alcuni tipi di nodo. Si noti però\n" +"che questa è considerata SPERIMENTALE e potrebbe non funzionare bene." #: src/settings_translation_file.cpp msgid "The URL for the content repository" @@ -6641,6 +6681,11 @@ msgid "" "Default is 1.0 (1/2 node).\n" "Requires waving liquids to be enabled." msgstr "" +"L'altezza massima della superficie dei liquidi ondulanti.\n" +"4.0 = L'altezza dell'onda è di due nodi.\n" +"0.0 = L'onda non si muove affatto.\n" +"Il valore predefinito è 1.0 (1/2 nodo).\n" +"Richiede l'abilitazione dei liquidi ondulanti." #: src/settings_translation_file.cpp msgid "The network interface that the server listens on." @@ -6656,7 +6701,6 @@ msgstr "" "configurazione dei mod." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The radius of the volume of blocks around every player that is subject to " "the\n" @@ -6667,11 +6711,12 @@ msgid "" "This should be configured together with active_object_send_range_blocks." msgstr "" "Il raggio del volume di blocchi attorno ciascun giocatore che è soggetto\n" -"alle cose del blocco attivo, fissata in blocchi mappa (16 nodi).\n" +"alle cose del blocco attivo, dichiarata in blocchi mappa (16 nodi).\n" "Nei blocchi attivi vengono caricati gli oggetti ed eseguiti gli ABM.\n" -"Questo è anche la distanza minima in cui sono mantenuti gli oggetti attivi " +"Questo è anche l'intervallo minimo in cui sono mantenuti gli oggetti attivi " "(mob).\n" -"Questo dovrebbe essere configurato assieme ad active_object_range." +"Questo dovrebbe essere configurato assieme ad " +"active_object_send_range_blocks." #: src/settings_translation_file.cpp msgid "" @@ -6682,11 +6727,10 @@ msgid "" "On other platforms, OpenGL is recommended, and it’s the only driver with\n" "shader support currently." msgstr "" -"Il back-end di rendering per Irrlicht.\n" +"Il motore di resa per Irrlicht.\n" "Dopo averlo cambiato è necessario un riavvio.\n" "Nota: su Android, si resti con OGLES1 se incerti! Altrimenti l'app potrebbe " -"non\n" -"partire.\n" +"non partire.\n" "Su altre piattaforme, si raccomanda OpenGL, ed è attualmente l'unico driver\n" "con supporto degli shader." @@ -6798,10 +6842,9 @@ msgid "" "node." msgstr "" "Per ridurre il ritardo, i trasferimenti di blocchi sono rallentati quando un " -"giocatore\n" -"sta costruendo qualcosa. Ciò determina per quanto a lungo sono rallentati " -"dopo\n" -"avere posizionato o rimosso un nodo." +"giocatore sta costruendo qualcosa.\n" +"Ciò determina per quanto a lungo sono rallentati dopo avere posizionato o " +"rimosso un nodo." #: src/settings_translation_file.cpp msgid "Toggle camera mode key" @@ -6824,7 +6867,6 @@ msgid "Trilinear filtering" msgstr "Filtraggio trilineare" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "True = 256\n" "False = 128\n" @@ -6858,7 +6900,7 @@ msgstr "" "inferiore,\n" "ma è applicato solo al mondo di gioco, mantenendo intatta l'interfaccia " "utente.\n" -"Dovrebbe dare un aumento di prestazioni significativo al costo di immagini\n" +"Dovrebbe dare un aumento di prestazioni significativo al costo di immagini " "meno dettagliate.\n" "Più si aumenta il valore, meno dettagliata sarà l'immagine." @@ -6875,9 +6917,8 @@ msgid "Upper Y limit of dungeons." msgstr "Livello Y superiore dei sotterranei." #: src/settings_translation_file.cpp -#, fuzzy msgid "Upper Y limit of floatlands." -msgstr "Livello Y superiore dei sotterranei." +msgstr "Livello Y superiore delle terre fluttuanti." #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." @@ -6903,9 +6944,9 @@ msgid "" "especially when using a high resolution texture pack.\n" "Gamma correct downscaling is not supported." msgstr "" -"Usare il mip mapping per ridimensionare le immagini. Potrebbe aumentare\n" -"leggermente le prestazioni, specialmente quando si usa un pacchetto di\n" -"immagini ad alta risoluzione.\n" +"Usare il mip mapping per ridimensionare le immagini. Potrebbe aumentare " +"leggermente le prestazioni,\n" +"specialmente quando si usa una raccolta di immagini ad alta risoluzione.\n" "La correzione gamma del downscaling non è supportata." #: src/settings_translation_file.cpp @@ -7018,13 +7059,12 @@ msgid "Volume" msgstr "Volume" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Volume of all sounds.\n" "Requires the sound system to be enabled." msgstr "" -"Attiva la parallax occlusion mapping.\n" -"Necessita l'attivazione degli shader." +"Volume dei suoni.\n" +"Necessita l'attivazione dell'audio." #: src/settings_translation_file.cpp msgid "" @@ -7071,24 +7111,20 @@ msgid "Waving leaves" msgstr "Foglie ondeggianti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids" msgstr "Liquidi ondeggianti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave height" -msgstr "Altezza di ondeggiamento dei liquidi" +msgstr "Altezza dell'onda dei liquidi ondeggianti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wave speed" -msgstr "Velocità di ondeggiamento dei liquidi" +msgstr "Velocità dell'onda dei liquidi ondeggianti" #: src/settings_translation_file.cpp -#, fuzzy msgid "Waving liquids wavelength" -msgstr "Durata di ondeggiamento dei liquidi" +msgstr "Lunghezza d'onda dei liquidi ondulanti" #: src/settings_translation_file.cpp msgid "Waving plants" @@ -7114,9 +7150,8 @@ msgid "" msgstr "" "Quando gui_scaling_filter_txr2img è Vero, copia quelle immagini\n" "dall'hardware al software per il ridimensionamento. Quando è Falso,\n" -"ripiega sul vecchio metodo di ridimensionamento, per i driver video\n" -"che non supportano correttamente lo scaricamento delle immagini\n" -"dall'hardware." +"ripiega sul vecchio metodo di ridimensionamento, per i driver video che\n" +"non supportano correttamente lo scaricamento delle immagini dall'hardware." #: src/settings_translation_file.cpp msgid "" @@ -7130,28 +7165,31 @@ msgid "" "This is also used as the base node texture size for world-aligned\n" "texture autoscaling." msgstr "" -"Quando si usano i filtri bilineare/trilineare/anisotropico, le immagini a\n" -"bassa risoluzione possono essere sfocate, così si esegue l'upscaling\n" -"automatico con l'interpolazione nearest-neighbor per conservare\n" -"pixel precisi. Questo imposta la dimensione minima delle immagini\n" -"per le immagini upscaled; valori più alti hanno un aspetto più nitido,\n" -"ma richiedono più memoria. Sono raccomandate le potenze di 2.\n" -"Impostarla a un valore maggiore di 1 potrebbe non avere un effetto\n" -"visibile, a meno che il filtraggio bilineare/trilineare/anisotropico sia\n" -"abilitato.\n" +"Quando si usano i filtri bilineare/trilineare/anisotropico, le immagini a " +"bassa risoluzione\n" +"possono essere sfocate, così si esegue l'upscaling automatico con " +"l'interpolazione nearest-neighbor\n" +"per conservare pixel chiari. Questo imposta la dimensione minima delle " +"immagini\n" +"per le immagini upscaled; valori più alti hanno un aspetto più nitido, ma " +"richiedono più memoria.\n" +"Sono raccomandate le potenze di 2. Impostarla a un valore maggiore di 1 " +"potrebbe non avere\n" +"un effetto visibile, a meno che il filtraggio bilineare/trilineare/" +"anisotropico sia abilitato.\n" "Questo viene anche usato come dimensione di base per le immagini\n" "dei nodi per l'autoridimensionamento delle immagini con allineamento\n" "relativo al mondo." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Whether FreeType fonts are used, requires FreeType support to be compiled " "in.\n" "If disabled, bitmap and XML vectors fonts are used instead." msgstr "" "Se si usano caratteri FreeType, richiede la compilazione col supporto " -"FreeType." +"FreeType.\n" +"Se disabilitati, si utilizzano invece i caratteri bitmap e XML vettoriali." #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." @@ -7191,6 +7229,12 @@ msgid "" "In-game, you can toggle the mute state with the mute key or by using the\n" "pause menu." msgstr "" +"Se silenziare i suoni. È possibile de-silenziare i suoni in qualsiasi " +"momento, a meno che\n" +"il sistema audio non sia disabilitato (enable_sound=false).\n" +"Nel gioco, puoi alternare lo stato silenziato col tasto di silenzio o " +"usando\n" +"il menu di pausa." #: src/settings_translation_file.cpp msgid "" @@ -7238,14 +7282,15 @@ msgid "" "See also texture_min_size.\n" "Warning: This option is EXPERIMENTAL!" msgstr "" -"Le immagini allineate al mondo possono essere ridimensionate per\n" -"estendersi su diversi nodi. Comunque, il server potrebbe non inviare\n" -"la scala che vuoi, specialmente se usi un pacchetto di texture\n" -"progettato specialmente; con questa opzione, il client prova a\n" -"stabilire automaticamente la scala basandosi sulla dimensione\n" -"dell'immagine.\n" +"Le immagini allineate al mondo possono essere ridimensionate per estendersi " +"su diversi nodi.\n" +"Comunque, il server potrebbe non inviare la scala che vuoi, specialmente se " +"usi una raccolta di immagini\n" +"progettata specificamente; con questa opzione, il client prova a stabilire " +"automaticamente la scala\n" +"basandosi sulla dimensione dell'immagine.\n" "Si veda anche texture_min_size.\n" -"Avvertimento: questa opzione è SPERIMENTALE!" +"Avviso: questa opzione è SPERIMENTALE!" #: src/settings_translation_file.cpp msgid "World-aligned textures mode" @@ -7278,6 +7323,12 @@ msgid "" "For a solid floatland layer, this controls the height of hills/mountains.\n" "Must be less than or equal to half the distance between the Y limits." msgstr "" +"Distanza-Y sopra cui le terre fluttuanti si affusolano dalla piena densità a " +"niente.\n" +"L'affusolamento comincia a questa distanza dal limite Y.\n" +"Per uno strato solido di terra fluttuante, questo controlla l'altezza di " +"colline/montagne.\n" +"Dev'essere inferiore o uguale alla metà della distanza tra i limiti Y." #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." From 184cbaade7333e3700147edd9f246054393d95dd Mon Sep 17 00:00:00 2001 From: Giov4 Date: Sat, 20 Jun 2020 22:25:55 +0000 Subject: [PATCH 380/424] Translated using Weblate (Italian) Currently translated at 100.0% (1350 of 1350 strings) --- po/it/minetest.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/po/it/minetest.po b/po/it/minetest.po index 42a0245be..43c6d1fbb 100644 --- a/po/it/minetest.po +++ b/po/it/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-22 17:56+0000\n" -"Last-Translator: Hamlet \n" +"Last-Translator: Giov4 \n" "Language-Team: Italian \n" "Language: it\n" @@ -16,7 +16,7 @@ msgstr "" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" -msgstr "Ricomincia" +msgstr "Rinasci" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" @@ -111,7 +111,7 @@ msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" -"Impossibile abilitare il mod \"$1\" poiché contiene caratteri non ammessi. " +"Impossibile abilitare la mod \"$1\" poiché contiene caratteri non ammessi. " "Sono ammessi solo i caratteri [a-z0-9_]." #: builtin/mainmenu/dlg_config_world.lua @@ -128,7 +128,7 @@ msgstr "Nessuna dipendenza (facoltativa)" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr "Non è stata fornita nessuna descrizione del gioco." +msgstr "Non è stata fornita alcuna descrizione del gioco." #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" @@ -177,7 +177,7 @@ msgstr "Scaricamento..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" -msgstr "Impossibile scaricere $1" +msgstr "Impossibile scaricare $1" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua From 6a58fc0e3cd5ae8d0da7fccf4253f1eee6b0f1c0 Mon Sep 17 00:00:00 2001 From: Fixer Date: Sat, 20 Jun 2020 18:45:51 +0000 Subject: [PATCH 381/424] Translated using Weblate (Ukrainian) Currently translated at 42.0% (568 of 1350 strings) --- po/uk/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/uk/minetest.po b/po/uk/minetest.po index 11c8ced86..1883c9c02 100644 --- a/po/uk/minetest.po +++ b/po/uk/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Ukrainian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-18 13:41+0000\n" -"Last-Translator: Maksim Gamarnik \n" +"PO-Revision-Date: 2020-06-22 17:56+0000\n" +"Last-Translator: Fixer \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.1.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -170,7 +170,7 @@ msgstr "Назад в Головне Меню" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "ContentDB не є доступним коли Minetest не містить підтримку cURL" #: builtin/mainmenu/dlg_contentstore.lua #, fuzzy From 822fdb60bce5c804a8c8d36adf7d8372ca383213 Mon Sep 17 00:00:00 2001 From: Andrii Muliar Date: Mon, 22 Jun 2020 15:22:07 +0000 Subject: [PATCH 382/424] Translated using Weblate (Ukrainian) Currently translated at 42.0% (568 of 1350 strings) --- po/uk/minetest.po | 62 +++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/po/uk/minetest.po b/po/uk/minetest.po index 1883c9c02..2a246ebe5 100644 --- a/po/uk/minetest.po +++ b/po/uk/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Ukrainian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-22 17:56+0000\n" -"Last-Translator: Fixer \n" +"PO-Revision-Date: 2020-06-26 10:41+0000\n" +"Last-Translator: Andrii Muliar \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -173,7 +173,6 @@ msgid "ContentDB is not available when Minetest was compiled without cURL" msgstr "ContentDB не є доступним коли Minetest не містить підтримку cURL" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Downloading..." msgstr "Завантаження..." @@ -226,7 +225,7 @@ msgstr "Вид" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" -msgstr "Світ з такою назвою \"$1\" вже існує" +msgstr "Світ з такою назвою \"$1\" вже існує" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" @@ -234,15 +233,15 @@ msgstr "Додаткова місцевість" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" -msgstr "" +msgstr "Висота снігового поясу" #: builtin/mainmenu/dlg_create_world.lua msgid "Altitude dry" -msgstr "" +msgstr "Пояс посухи" #: builtin/mainmenu/dlg_create_world.lua msgid "Biome blending" -msgstr "" +msgstr "Змішування біомів" #: builtin/mainmenu/dlg_create_world.lua msgid "Biomes" @@ -253,9 +252,8 @@ msgid "Caverns" msgstr "Печери" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caves" -msgstr "Октави" +msgstr "Печери" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" @@ -264,7 +262,7 @@ msgstr "Створити" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy msgid "Decorations" -msgstr "Інформація:" +msgstr "Інформація" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" @@ -280,7 +278,7 @@ msgstr "Підземелля" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "Рівнина" #: builtin/mainmenu/dlg_create_world.lua msgid "Floating landmasses in the sky" @@ -288,7 +286,7 @@ msgstr "Плаваючі земельні масиви в небі" #: builtin/mainmenu/dlg_create_world.lua msgid "Floatlands (experimental)" -msgstr "" +msgstr "Висячі острови" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -296,7 +294,7 @@ msgstr "Гра" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "Генерувати нефрактальну місцевість: Океани та підземелля" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" @@ -317,6 +315,7 @@ msgstr "Озера" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" msgstr "" +"Низька вологість та висока спека спричиняють мілководні або пересохлі річки" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -324,12 +323,11 @@ msgstr "Генератор світу" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen flags" -msgstr "" +msgstr "Прапори Генератору світу" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mapgen-specific flags" -msgstr "Генератор світу: фрактальний" +msgstr "Властивості генератору світу" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" @@ -356,13 +354,12 @@ msgid "Reduces humidity with altitude" msgstr "Зменшує вологість з висотою" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Rivers" -msgstr "Річковий шум" +msgstr "Річки" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "Річки Рівня моря" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -1622,8 +1619,9 @@ msgid "Numpad 9" msgstr "Num 9" #: src/client/keycode.cpp +#, fuzzy msgid "OEM Clear" -msgstr "OEM Clear" +msgstr "Почистити OEM" #: src/client/keycode.cpp msgid "Page down" @@ -4728,40 +4726,46 @@ msgid "Mapgen Valleys specific flags" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Mapgen debug" -msgstr "" +msgstr "Налагодження генерації світу" #: src/settings_translation_file.cpp +#, fuzzy msgid "Mapgen name" -msgstr "" +msgstr "Назва генерації світу" #: src/settings_translation_file.cpp msgid "Max block generate distance" -msgstr "" +msgstr "Максимальна відстань генерації блоків" #: src/settings_translation_file.cpp msgid "Max block send distance" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Max liquids processed per step." -msgstr "" +msgstr "Максимальна кількість рідин, оброблених на крок." #: src/settings_translation_file.cpp msgid "Max. clearobjects extra blocks" msgstr "" #: src/settings_translation_file.cpp +#, fuzzy msgid "Max. packets per iteration" -msgstr "" +msgstr "Максимальна кількість пакетів за одну ітерацію" #: src/settings_translation_file.cpp +#, fuzzy msgid "Maximum FPS" -msgstr "" +msgstr "Максимальна кількість кадрів в секунду (FPS)" #: src/settings_translation_file.cpp +#, fuzzy msgid "Maximum FPS when game is paused." -msgstr "" +msgstr "Максимум FPS при паузі." #: src/settings_translation_file.cpp msgid "Maximum forceloaded blocks" @@ -6384,11 +6388,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Y-level of lower terrain and seabed." -msgstr "" +msgstr "Y-Рівень нижнього рельєфу та морського дна." #: src/settings_translation_file.cpp msgid "Y-level of seabed." -msgstr "" +msgstr "Y-Рівень морського дна." #: src/settings_translation_file.cpp msgid "cURL file download timeout" From b0019b876a5b7fff314def094363e28683951d38 Mon Sep 17 00:00:00 2001 From: Fontan 030 Date: Thu, 18 Jun 2020 19:45:29 +0000 Subject: [PATCH 383/424] Translated using Weblate (Kazakh) Currently translated at 2.5% (34 of 1350 strings) --- po/kk/minetest.po | 58 +++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/po/kk/minetest.po b/po/kk/minetest.po index 12c598d1c..3f68fbc97 100644 --- a/po/kk/minetest.po +++ b/po/kk/minetest.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Kazakh (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-13 21:08+0000\n" +"PO-Revision-Date: 2020-07-06 21:41+0000\n" "Last-Translator: Fontan 030 \n" "Language-Team: Kazakh \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -28,11 +28,11 @@ msgstr "" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" -msgstr "" +msgstr "Lua скриптінде қате кездесті:" #: builtin/fstk/ui.lua msgid "An error occurred:" -msgstr "" +msgstr "Қате кездесті:" #: builtin/fstk/ui.lua msgid "Main menu" @@ -48,7 +48,7 @@ msgstr "" #: builtin/mainmenu/common.lua src/client/game.cpp msgid "Loading..." -msgstr "" +msgstr "Жүктелуде..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " @@ -82,7 +82,7 @@ msgstr "" #: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp #: src/gui/guiPasswordChange.cpp msgid "Cancel" -msgstr "" +msgstr "Болдырмау" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Dependencies:" @@ -116,7 +116,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" -msgstr "" +msgstr "Мод:" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" @@ -124,7 +124,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr "" +msgstr "Ойын сипаттамасы жоқ." #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" @@ -153,7 +153,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" -msgstr "" +msgstr "қосылған" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" @@ -178,7 +178,7 @@ msgstr "" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Games" -msgstr "" +msgstr "Ойындар" #: builtin/mainmenu/dlg_contentstore.lua msgid "Install" @@ -187,7 +187,7 @@ msgstr "" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Mods" -msgstr "" +msgstr "Модтар" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" @@ -200,7 +200,7 @@ msgstr "" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua msgid "Search" -msgstr "" +msgstr "Іздеу" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" @@ -208,7 +208,7 @@ msgstr "" #: builtin/mainmenu/dlg_contentstore.lua msgid "Uninstall" -msgstr "" +msgstr "Жою" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update" @@ -304,7 +304,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Көлдер" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" @@ -421,7 +421,7 @@ msgstr "" #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua #: src/client/keycode.cpp msgid "Delete" -msgstr "" +msgstr "Жою" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" @@ -531,7 +531,7 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" -msgstr "" +msgstr "X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" @@ -539,7 +539,7 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" -msgstr "" +msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" @@ -547,7 +547,7 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" -msgstr "" +msgstr "Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" @@ -654,7 +654,7 @@ msgstr "" #: builtin/mainmenu/tab_content.lua msgid "Rename" -msgstr "" +msgstr "Атауын өзгерту" #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" @@ -795,7 +795,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "3D Clouds" -msgstr "" +msgstr "3D бұлттар" #: builtin/mainmenu/tab_settings.lua msgid "4x" @@ -855,7 +855,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "No" -msgstr "" +msgstr "Жоқ" #: builtin/mainmenu/tab_settings.lua msgid "No Filter" @@ -955,7 +955,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Yes" -msgstr "" +msgstr "Иә" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" @@ -1015,7 +1015,7 @@ msgstr "" #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr "Ойыншының аты тым ұзын." #: src/client/clientlauncher.cpp msgid "Please choose a name!" @@ -1118,7 +1118,7 @@ msgstr "" #: src/client/game.cpp msgid "Continue" -msgstr "" +msgstr "Жалғастыру" #: src/client/game.cpp #, c-format @@ -1221,7 +1221,7 @@ msgstr "" #: src/client/game.cpp msgid "Fog enabled" -msgstr "" +msgstr "Тұман қосылды" #: src/client/game.cpp msgid "Game info:" @@ -1954,7 +1954,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "3D clouds" -msgstr "" +msgstr "3D бұлттар" #: src/settings_translation_file.cpp msgid "3D mode" @@ -3202,7 +3202,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "FreeType fonts" -msgstr "" +msgstr "FreeType қаріптері" #: src/settings_translation_file.cpp msgid "" @@ -3277,11 +3277,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Graphics" -msgstr "" +msgstr "Графика" #: src/settings_translation_file.cpp msgid "Gravity" -msgstr "" +msgstr "Гравитация" #: src/settings_translation_file.cpp msgid "Ground level" From d9fe830810a17b030617cba02998d18833170400 Mon Sep 17 00:00:00 2001 From: abidin toumi Date: Sun, 21 Jun 2020 17:54:07 +0000 Subject: [PATCH 384/424] Translated using Weblate (Arabic) Currently translated at 12.8% (173 of 1350 strings) --- po/ar/minetest.po | 207 ++++++++++++++++++++++++---------------------- 1 file changed, 108 insertions(+), 99 deletions(-) diff --git a/po/ar/minetest.po b/po/ar/minetest.po index 4d6dac075..9bda5109d 100644 --- a/po/ar/minetest.po +++ b/po/ar/minetest.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-03-01 19:51+0000\n" +"PO-Revision-Date: 2020-06-27 20:41+0000\n" "Last-Translator: abidin toumi \n" "Language-Team: Arabic \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -30,11 +30,11 @@ msgstr "مِت" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "موافق" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" -msgstr "" +msgstr "حدث خطأ في برنامج Lua النصي:" #: builtin/fstk/ui.lua msgid "An error occurred:" @@ -100,7 +100,7 @@ msgstr "عطِل الكل" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "" +msgstr "عطل حزمة التعديلات" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" @@ -108,21 +108,23 @@ msgstr "فعِل الكل" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "" +msgstr "مكن حزمة التعديلات" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" +"فشل تمكين التعديل \"$1\" لإحتوائه على محارف غير مسموحة. المحارف المسموحة هي " +"[a-z0-9_] فقط." #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "جد المزيد من التعديلات" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" -msgstr "" +msgstr "التعديل:" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" @@ -138,7 +140,7 @@ msgstr "بدون إعتماديات لازمة" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "" +msgstr "وصف حزمة التعديلات غير متوفر." #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" @@ -174,7 +176,6 @@ msgid "ContentDB is not available when Minetest was compiled without cURL" msgstr "" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Downloading..." msgstr "يحمل..." @@ -194,7 +195,7 @@ msgstr "ثبت" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Mods" -msgstr "" +msgstr "التعديلات" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" @@ -223,7 +224,7 @@ msgstr "حدِث" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "إعرض" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -279,15 +280,17 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "أرض مسطحة" #: builtin/mainmenu/dlg_create_world.lua +#, fuzzy msgid "Floating landmasses in the sky" -msgstr "" +msgstr "أرض عائمة في السماء" #: builtin/mainmenu/dlg_create_world.lua +#, fuzzy msgid "Floatlands (experimental)" -msgstr "" +msgstr "أراضيٌ عائمة (تجريبية)" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -299,7 +302,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "التلال" #: builtin/mainmenu/dlg_create_world.lua msgid "Humid rivers" @@ -311,11 +314,11 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "بحيرات" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" -msgstr "" +msgstr "قلة الرطوبة وارتفاعه الحرارة تسبب جفاف او ضحالة الانهار" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -331,7 +334,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" -msgstr "" +msgstr "جبال" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" @@ -339,7 +342,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "شبكة أنفاق وكهوف" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -347,19 +350,19 @@ msgstr "لم تحدد لعبة" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "يخفض الحرارة مع ازدياد الإرتفاع" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "يخفض الرطوبة مع ازدياد الإرتفاع" #: builtin/mainmenu/dlg_create_world.lua msgid "Rivers" -msgstr "" +msgstr "أنهار" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "أنهار بمستوى البحر" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -382,11 +385,11 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "معتدل، صحراء" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "معتدل، صحراء، غابة" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" @@ -398,19 +401,19 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "أعشاب الغابة والشجر" #: builtin/mainmenu/dlg_create_world.lua msgid "Vary river depth" -msgstr "" +msgstr "تمايز عمق النهر" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "كهوف كبيرة في أعماق الأرض" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The Development Test is meant for developers." -msgstr "" +msgstr "تحذير: إختبار التطور موجه للمطورين." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -448,21 +451,22 @@ msgstr "أقبل" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "" +msgstr "أعد تسمية حزمة التعديلات:" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" +"اسم حزمة التعديلات هذه مصرح في modpack.conf لذا أي تسمية سيتم استبدالها." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" -msgstr "" +msgstr "(الإعداد بدون وصف)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "" +msgstr "ضوضاء 2D" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" @@ -494,7 +498,7 @@ msgstr "" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" -msgstr "" +msgstr "المُعادل" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" @@ -514,7 +518,7 @@ msgstr "إستعِد الإفتراضي" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" -msgstr "" +msgstr "تكبير/تصغير" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select directory" @@ -589,19 +593,19 @@ msgstr "$1 (مفعل)" #: builtin/mainmenu/pkgmgr.lua msgid "$1 mods" -msgstr "" +msgstr "$1 تعديلات" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" -msgstr "" +msgstr "فشل تثبيت $1 في $2" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "" +msgstr "تثبيت تعديل: لا يمكن ايجاد الاسم الحقيقي التعديل$1" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" -msgstr "" +msgstr "تثبيت تعديل: لا يمكن العصور على اسم مجلد مناسب لحزمة التعديلات $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" @@ -625,7 +629,7 @@ msgstr "فشل تثبيت اللعبة كـ $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a mod as a $1" -msgstr "" +msgstr "فشل تثبيت التعديل كـ $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a modpack as a $1" @@ -633,31 +637,31 @@ msgstr "" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "" +msgstr "تصفح المحتوى عبر الانترنت" #: builtin/mainmenu/tab_content.lua msgid "Content" -msgstr "" +msgstr "المحتوى" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" -msgstr "" +msgstr "عطل حزمة الإكساء" #: builtin/mainmenu/tab_content.lua msgid "Information:" -msgstr "" +msgstr "معلومات:" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" -msgstr "" +msgstr "الحومة المثبتت:" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "" +msgstr "بدون اعتماديات." #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "" +msgstr "لايتوفر وصف للحزمة" #: builtin/mainmenu/tab_content.lua msgid "Rename" @@ -665,31 +669,31 @@ msgstr "" #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" -msgstr "" +msgstr "أزل الحزمة" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" -msgstr "" +msgstr "إستعمال حزمة الإكساء" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "" +msgstr "المساهمون النشطون" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "" +msgstr "المطورون الرئيسيون" #: builtin/mainmenu/tab_credits.lua msgid "Credits" -msgstr "" +msgstr "إشادات" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "" +msgstr "المساهمون السابقون" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "" +msgstr "المطورون الرئيسيون السابقون" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" @@ -701,91 +705,93 @@ msgstr "" #: builtin/mainmenu/tab_local.lua msgid "Configure" -msgstr "" +msgstr "اضبط" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy msgid "Creative Mode" -msgstr "" +msgstr "النمط الإبداعي" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Enable Damage" -msgstr "" +msgstr "مكن الضرر" #: builtin/mainmenu/tab_local.lua msgid "Host Game" -msgstr "" +msgstr "استضف لعبة" #: builtin/mainmenu/tab_local.lua msgid "Host Server" -msgstr "" +msgstr "استضف خدوم" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "ثبت العابا من ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" -msgstr "" +msgstr "الاسم\\كلمة المرور" #: builtin/mainmenu/tab_local.lua msgid "New" -msgstr "" +msgstr "جديد" #: builtin/mainmenu/tab_local.lua msgid "No world created or selected!" -msgstr "" +msgstr "لم تنشئ او تحدد عالما!" #: builtin/mainmenu/tab_local.lua msgid "Play Game" -msgstr "" +msgstr "إلعب" #: builtin/mainmenu/tab_local.lua msgid "Port" -msgstr "" +msgstr "المنفذ" #: builtin/mainmenu/tab_local.lua msgid "Select World:" -msgstr "" +msgstr "حدد العالم:" #: builtin/mainmenu/tab_local.lua msgid "Server Port" -msgstr "" +msgstr "منفذ الخدوم" #: builtin/mainmenu/tab_local.lua msgid "Start Game" -msgstr "" +msgstr "ابدأ اللعبة" #: builtin/mainmenu/tab_online.lua msgid "Address / Port" -msgstr "" +msgstr "العنوان \\ المنفذ" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" -msgstr "" +msgstr "اتصل" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy msgid "Creative mode" -msgstr "" +msgstr "النمط الإبداعي" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Damage enabled" -msgstr "" +msgstr "الضرر ممكن" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Del. Favorite" -msgstr "" +msgstr "حذف المفضلة" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Favorite" -msgstr "" +msgstr "المفضلة" #: builtin/mainmenu/tab_online.lua msgid "Join Game" -msgstr "" +msgstr "انضم للعبة" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Name / Password" -msgstr "" +msgstr "الاسم \\ كلمة المرور" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Ping" @@ -793,8 +799,9 @@ msgstr "" #. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +#, fuzzy msgid "PvP enabled" -msgstr "" +msgstr "قتال اللاعبين ممكن" #: builtin/mainmenu/tab_settings.lua msgid "2x" @@ -802,7 +809,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "3D Clouds" -msgstr "" +msgstr "سحب 3D" #: builtin/mainmenu/tab_settings.lua msgid "4x" @@ -838,11 +845,11 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua src/client/game.cpp msgid "Change Keys" -msgstr "" +msgstr "غيِر المفاتيح" #: builtin/mainmenu/tab_settings.lua msgid "Connected Glass" -msgstr "" +msgstr "زجاج متصل" #: builtin/mainmenu/tab_settings.lua msgid "Fancy Leaves" @@ -866,7 +873,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "No Filter" -msgstr "" +msgstr "بدون مرشح" #: builtin/mainmenu/tab_settings.lua msgid "No Mipmap" @@ -874,23 +881,24 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" -msgstr "" +msgstr "إبراز العقد" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" msgstr "" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "None" -msgstr "" +msgstr "بدون" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Leaves" -msgstr "" +msgstr "اوراق معتِمة" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Water" -msgstr "" +msgstr "مياه معتمة" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Parallax Occlusion" @@ -902,7 +910,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Reset singleplayer world" -msgstr "" +msgstr "أعد تعيين عالم اللاعب المنفرد" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" @@ -914,27 +922,28 @@ msgstr "إعدادات" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Shaders" -msgstr "" +msgstr "مُظللات" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" -msgstr "" +msgstr "مظللات (غير متوفر)" #: builtin/mainmenu/tab_settings.lua +#, fuzzy msgid "Simple Leaves" -msgstr "" +msgstr "أوراق بسيطة" #: builtin/mainmenu/tab_settings.lua msgid "Smooth Lighting" -msgstr "" +msgstr "إضاءة سلسة" #: builtin/mainmenu/tab_settings.lua msgid "Texturing:" -msgstr "" +msgstr "الإكساء:" #: builtin/mainmenu/tab_settings.lua msgid "To enable shaders the OpenGL driver needs to be used." -msgstr "" +msgstr "لاستخدام المظللات يجب استخدام تعريف OpenGL." #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" @@ -950,7 +959,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Waving Leaves" -msgstr "" +msgstr "اوراق متموجة" #: builtin/mainmenu/tab_settings.lua msgid "Waving Liquids" @@ -958,7 +967,7 @@ msgstr "سوائل متموجة" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" -msgstr "" +msgstr "نباتات متموجة" #: builtin/mainmenu/tab_settings.lua msgid "Yes" @@ -966,7 +975,7 @@ msgstr "نعم" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" -msgstr "" +msgstr "اضبط التعديلات" #: builtin/mainmenu/tab_simple_main.lua #, fuzzy @@ -995,11 +1004,11 @@ msgstr "تحضير العقد..." #: src/client/client.cpp msgid "Loading textures..." -msgstr "" +msgstr "يحمل الإكساء..." #: src/client/client.cpp msgid "Rebuilding shaders..." -msgstr "" +msgstr "يعيد بناء المظلِلات..." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" @@ -1011,7 +1020,7 @@ msgstr "لا يمكن إيجاد أو تحميل لعبة \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "" +msgstr "مواصفات اللعبة غير صالحة." #: src/client/clientlauncher.cpp #, fuzzy @@ -1020,7 +1029,7 @@ msgstr "القائمة الرئيسية" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "" +msgstr "بدون عالم محدد وعنوان معطى. لاشيء لفعله." #: src/client/clientlauncher.cpp msgid "Player name too long." From 5435442ce7bd53e64df11f9eeb42ca81609e875f Mon Sep 17 00:00:00 2001 From: runs Date: Sat, 20 Jun 2020 10:47:48 +0000 Subject: [PATCH 385/424] Translated using Weblate (Galician) Currently translated at 0.4% (6 of 1350 strings) --- po/gl/minetest.po | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/po/gl/minetest.po b/po/gl/minetest.po index 43e3c8e44..3f2d2cca9 100644 --- a/po/gl/minetest.po +++ b/po/gl/minetest.po @@ -8,37 +8,40 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2020-06-22 17:56+0000\n" +"Last-Translator: runs \n" +"Language-Team: Galician \n" "Language: gl\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 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" -msgstr "" +msgstr "Morreches" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" -msgstr "" +msgstr "Reaparecer" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "Vale" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "O servidor solicitou que reconectes:" #: builtin/fstk/ui.lua msgid "Reconnect" -msgstr "" +msgstr "Reconectar" #: builtin/fstk/ui.lua msgid "Main menu" -msgstr "" +msgstr "Menu principal" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" From 387a3493c5f30d1f9441885636064861d37c522a Mon Sep 17 00:00:00 2001 From: GunChleoc Date: Sun, 21 Jun 2020 08:17:18 +0000 Subject: [PATCH 386/424] Translated using Weblate (Gaelic) Currently translated at 18.1% (245 of 1350 strings) --- po/gd/minetest.po | 658 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 484 insertions(+), 174 deletions(-) diff --git a/po/gd/minetest.po b/po/gd/minetest.po index 839161a6c..c3347ecda 100644 --- a/po/gd/minetest.po +++ b/po/gd/minetest.po @@ -8,13 +8,17 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2020-06-22 17:56+0000\n" +"Last-Translator: GunChleoc \n" +"Language-Team: Gaelic \n" "Language: gd\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : " +"(n > 2 && n < 20) ? 2 : 3;\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" @@ -38,7 +42,7 @@ msgstr "" #: builtin/fstk/ui.lua msgid "Main menu" -msgstr "" +msgstr "Prìomh chlàr-taice" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -57,12 +61,14 @@ msgid "Try reenabling public serverlist and check your internet connection." msgstr "" #: builtin/mainmenu/common.lua +#, fuzzy msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr " " #: builtin/mainmenu/common.lua +#, fuzzy msgid "Server enforces protocol version $1. " -msgstr "" +msgstr " " #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." @@ -73,8 +79,9 @@ msgid "We only support protocol version $1." msgstr "" #: builtin/mainmenu/common.lua +#, fuzzy msgid "Protocol version mismatch. " -msgstr "" +msgstr " " #: builtin/mainmenu/dlg_config_world.lua msgid "World:" @@ -98,7 +105,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" -msgstr "" +msgstr "Gun eisimeileachd chruaidh" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" @@ -230,11 +237,11 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "Aibhnean air àirde na mara" #: builtin/mainmenu/dlg_create_world.lua msgid "Rivers" -msgstr "" +msgstr "Aibhnean" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" @@ -246,7 +253,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Floating landmasses in the sky" -msgstr "" +msgstr "Tìr air fhleòd san speur" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" @@ -266,19 +273,19 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Humid rivers" -msgstr "" +msgstr "Aibhnean boga" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Nì seo an tìr nas buige faisg air aibhnean" #: builtin/mainmenu/dlg_create_world.lua msgid "Vary river depth" -msgstr "" +msgstr "Caochail doimhne nan aibhnean" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" -msgstr "" +msgstr "Adhbharaichidh saoghal tioram is teth aibhnean tana no tioram" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" @@ -372,11 +379,11 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen flags" -msgstr "" +msgstr "Brataich gineadair nam mapa" #: builtin/mainmenu/dlg_create_world.lua msgid "Mapgen-specific flags" -msgstr "" +msgstr "Brataich shònraichte do ghineadair nam mapa" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The Development Test is meant for developers." @@ -397,7 +404,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "" +msgstr "Gineadair nam mapa" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -621,6 +628,7 @@ msgstr "" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" msgstr "" +"Stàladh: Faidhle dhen t-seòrsa “$1” ris nach eil taic no tasglann bhriste" #: builtin/mainmenu/pkgmgr.lua msgid "$1 mods" @@ -628,7 +636,7 @@ msgstr "" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" -msgstr "" +msgstr "Pacaidean air an stàladh:" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" @@ -688,7 +696,7 @@ msgstr "" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "Stàlaich geamannan o ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Configure" @@ -752,7 +760,7 @@ msgstr "" #: builtin/mainmenu/tab_online.lua msgid "Address / Port" -msgstr "" +msgstr "Seòladh / Port" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Name / Password" @@ -893,7 +901,7 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" -msgstr "" +msgstr "Sgrìn:" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" @@ -954,6 +962,8 @@ msgstr "" #: builtin/mainmenu/tab_settings.lua msgid "To enable shaders the OpenGL driver needs to be used." msgstr "" +"Airson sgàileadairean a chur an comas, feumaidh tu draibhear OpenGL a " +"chleachdadh." #: builtin/mainmenu/tab_settings.lua msgid "Settings" @@ -1008,8 +1018,9 @@ msgid "Connection error (timed out?)" msgstr "" #: src/client/clientlauncher.cpp +#, fuzzy msgid "Provided password file failed to open: " -msgstr "" +msgstr " " #: src/client/clientlauncher.cpp msgid "Please choose a name!" @@ -1020,8 +1031,9 @@ msgid "No world selected and no address provided. Nothing to do." msgstr "" #: src/client/clientlauncher.cpp +#, fuzzy msgid "Provided world path doesn't exist: " -msgstr "" +msgstr " " #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" @@ -1041,7 +1053,7 @@ msgstr "" #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "no" #: src/client/game.cpp msgid "Shutting down..." @@ -1114,15 +1126,15 @@ msgstr "" #: src/client/game.cpp msgid "Fly mode enabled" -msgstr "" +msgstr "Tha am modh sgiathaidh an comas" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "" +msgstr "Tha am modh sgiathaidh an comas (an aire: gun sochair “fly”)" #: src/client/game.cpp msgid "Fly mode disabled" -msgstr "" +msgstr "Tha am modh sgiathaidh à comas" #: src/client/game.cpp msgid "Pitch move mode enabled" @@ -1138,7 +1150,7 @@ msgstr "" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "" +msgstr "Tha am modh luath an comas (an aire: gun sochair “fast”)" #: src/client/game.cpp msgid "Fast mode disabled" @@ -1146,19 +1158,19 @@ msgstr "" #: src/client/game.cpp msgid "Noclip mode enabled" -msgstr "" +msgstr "Tha am modh gun bhearradh an comas" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "" +msgstr "Tha am modh gun bhearradh an comas (an aire: gun sochair “noclip”)" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "" +msgstr "Tha am modh gun bhearradh à comas" #: src/client/game.cpp msgid "Cinematic mode enabled" -msgstr "" +msgstr "Tha am modh film an comas" #: src/client/game.cpp msgid "Cinematic mode disabled" @@ -1243,7 +1255,7 @@ msgstr "" #: src/client/game.cpp #, c-format msgid "Viewing range is at maximum: %d" -msgstr "" +msgstr "Tha astar na faicsinn cho mòr sa ghabhas: %d" #: src/client/game.cpp #, c-format @@ -1301,6 +1313,20 @@ msgid "" "- Mouse wheel: select item\n" "- %s: chat\n" msgstr "" +"Stiùireadh:\n" +"- %s: gluais an comhair a’ bheòil\n" +"- %s: gluais an comhair a’ chùil\n" +"- %s: gluais dhan taobh clì\n" +"- %s: gluais dhan taobh deas\n" +"- %s: leum/sreap\n" +"- %s: tàislich/dìrich\n" +"- %s: leig às nì\n" +"- %s: an tasgadh\n" +"- Luchag: tionndaidh/coimhead\n" +"- Putan clì na luchaige: geàrr/buail\n" +"- Putan deas na luchaige: cuir ann/cleachd\n" +"- Cuibhle na luchaige: tagh nì\n" +"- %s: cabadaich\n" #: src/client/game.cpp msgid "Continue" @@ -1328,27 +1354,30 @@ msgstr "" #: src/client/game.cpp msgid "Game info:" -msgstr "" +msgstr "Fiosrachadh mun gheama:" #: src/client/game.cpp +#, fuzzy msgid "- Mode: " -msgstr "" +msgstr " " #: src/client/game.cpp msgid "Remote server" msgstr "" #: src/client/game.cpp +#, fuzzy msgid "- Address: " -msgstr "" +msgstr " " #: src/client/game.cpp msgid "Hosting server" msgstr "" #: src/client/game.cpp +#, fuzzy msgid "- Port: " -msgstr "" +msgstr " " #: src/client/game.cpp msgid "Singleplayer" @@ -1364,24 +1393,28 @@ msgstr "" #: src/client/game.cpp msgid "- Damage: " -msgstr "" +msgstr "– Dochann: " #: src/client/game.cpp +#, fuzzy msgid "- Creative Mode: " -msgstr "" +msgstr " " #. ~ PvP = Player versus Player #: src/client/game.cpp +#, fuzzy msgid "- PvP: " -msgstr "" +msgstr " " #: src/client/game.cpp +#, fuzzy msgid "- Public: " -msgstr "" +msgstr " " #: src/client/game.cpp +#, fuzzy msgid "- Server Name: " -msgstr "" +msgstr " " #: src/client/game.cpp msgid "" @@ -1391,7 +1424,7 @@ msgstr "" #: src/client/gameui.cpp msgid "Chat shown" -msgstr "" +msgstr "Tha a’ chabadaich ’ga shealltainn" #: src/client/gameui.cpp msgid "Chat hidden" @@ -1436,7 +1469,7 @@ msgstr "" #: src/client/keycode.cpp msgid "Backspace" -msgstr "" +msgstr "Backspace" #: src/client/keycode.cpp msgid "Tab" @@ -1559,7 +1592,7 @@ msgstr "" #: src/client/keycode.cpp msgid "Numpad 4" -msgstr "" +msgstr "4 air pada nan àireamhan" #: src/client/keycode.cpp msgid "Numpad 5" @@ -1575,7 +1608,7 @@ msgstr "" #: src/client/keycode.cpp msgid "Numpad 8" -msgstr "" +msgstr "8 air pada nan àireamhan" #: src/client/keycode.cpp msgid "Numpad 9" @@ -1619,7 +1652,7 @@ msgstr "" #: src/client/keycode.cpp msgid "Left Control" -msgstr "" +msgstr "Control clì" #: src/client/keycode.cpp msgid "Right Control" @@ -1709,7 +1742,7 @@ msgstr "" #: src/gui/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" -msgstr "" +msgstr "Thoir gnogag dhùbailte air “leum” airson sgiathadh a thoglachadh" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" @@ -1721,7 +1754,7 @@ msgstr "" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" -msgstr "" +msgstr "brùth air iuchair" #: src/gui/guiKeyChangeMenu.cpp msgid "Forward" @@ -1741,7 +1774,7 @@ msgstr "" #: src/gui/guiKeyChangeMenu.cpp msgid "Sneak" -msgstr "" +msgstr "Tàislich" #: src/gui/guiKeyChangeMenu.cpp msgid "Drop" @@ -1769,7 +1802,7 @@ msgstr "" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "" +msgstr "Toglaich sgiathadh" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle pitchmove" @@ -1781,7 +1814,7 @@ msgstr "" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "" +msgstr "Toglaich am modh gun bhearradh" #: src/gui/guiKeyChangeMenu.cpp msgid "Mute" @@ -1817,7 +1850,7 @@ msgstr "" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. range" -msgstr "" +msgstr "Meudaich an t-astar" #: src/gui/guiKeyChangeMenu.cpp msgid "Console" @@ -1860,8 +1893,9 @@ msgid "Change" msgstr "" #: src/gui/guiVolumeChange.cpp +#, fuzzy msgid "Sound Volume: " -msgstr "" +msgstr " " #: src/gui/guiVolumeChange.cpp msgid "Exit" @@ -1875,14 +1909,14 @@ msgstr "" #. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " -msgstr "" +msgstr "Cuir a-steach " #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string which needs to contain the translation's #. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" -msgstr "" +msgstr "gd" #: src/settings_translation_file.cpp msgid "Controls" @@ -1898,16 +1932,22 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"Ma tha seo an comas, ’s urrainn dhut blocaichean a chur ann far a bheil thu ’" +"nad sheasamh (co chois + àirde do shùil).\n" +"Bidh seo feumail nuair a bhios tu ag obair le bogsaichean nòd ann an " +"raointean beaga." #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "Sgiathadh" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" "This requires the \"fly\" privilege on the server." msgstr "" +"’S urrainn dhan chluicheadair sgiathadh gun bhuaidh na iom-tharraing air.\n" +"Bidh feum air sochair “fly” air an fhrithealaiche." #: src/settings_translation_file.cpp msgid "Pitch move mode" @@ -1918,6 +1958,8 @@ msgid "" "If enabled, makes move directions relative to the player's pitch when flying " "or swimming." msgstr "" +"Ma tha seo an comas, bidh an gluasad a-rèir pids a’ chluicheadair rè " +"sgiathaidh no snàimh." #: src/settings_translation_file.cpp msgid "Fast movement" @@ -1928,10 +1970,12 @@ msgid "" "Fast movement (via the \"special\" key).\n" "This requires the \"fast\" privilege on the server." msgstr "" +"Gluasad luath (leis an iuchair “shònraichte”).\n" +"Bidh feum air sochair “fast” air an fhrithealaiche." #: src/settings_translation_file.cpp msgid "Noclip" -msgstr "" +msgstr "Gun bhearradh" #: src/settings_translation_file.cpp msgid "" @@ -1939,6 +1983,9 @@ msgid "" "nodes.\n" "This requires the \"noclip\" privilege on the server." msgstr "" +"Ma tha seo an comas còmhla ris a’ mhodh sgiathaidh, ’s urrainn dhan " +"chluicheadair sgiathadh tro nòdan soladach.\n" +"Bidh feum air sochair “noclip” on fhrithealaiche." #: src/settings_translation_file.cpp msgid "Cinematic mode" @@ -1992,18 +2039,21 @@ msgid "" "down and\n" "descending." msgstr "" +"Ma tha seo an comas, thèid iuchair “shònraichte” seach “tàisleachaidh” a " +"chleachdadh\n" +"airson dìreadh." #: src/settings_translation_file.cpp msgid "Double tap jump for fly" -msgstr "" +msgstr "Thoir gnogag dhùbailte airson leum no sgiathadh" #: src/settings_translation_file.cpp msgid "Double-tapping the jump key toggles fly mode." -msgstr "" +msgstr "Toglaichidh gnogag dhùbailte air iuchair an leuma am modh sgiathaidh." #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "Sgiathaich an-còmhnaidh ’s gu luath" #: src/settings_translation_file.cpp msgid "" @@ -2011,6 +2061,9 @@ msgid "" "are\n" "enabled." msgstr "" +"Ma tha seo à comas, thèid iuchair “shònraichte” a chleachdadh airson " +"sgiathadh\n" +"ma tha an dà chuid am modh sgiathaidh ’s am modh luadh an comas." #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" @@ -2157,6 +2210,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a ghluaiseas an cluicheadair dhan taobh chlì.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Right key" @@ -2168,6 +2224,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a ghluaiseas an cluicheadair dhan taobh deas.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Jump key" @@ -2182,7 +2241,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Sneak key" -msgstr "" +msgstr "Iuchair an tàisleachaidh" #: src/settings_translation_file.cpp msgid "" @@ -2192,6 +2251,11 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair airson tàisleachadh.\n" +"Tha i ‘ga cleachdadh airson dìreadh agus dìreadh san uisge ma bhios " +"aux1_descends à comas.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Inventory key" @@ -2214,6 +2278,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a ghluaiseas gu luath sa mhodh luath.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Chat key" @@ -2257,7 +2324,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fly key" -msgstr "" +msgstr "Iuchair an sgiathaidh" #: src/settings_translation_file.cpp msgid "" @@ -2265,6 +2332,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thoglaicheas an sgiathadh.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Pitch move key" @@ -2290,7 +2360,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Noclip key" -msgstr "" +msgstr "Iuchair modha gun bhearradh" #: src/settings_translation_file.cpp msgid "" @@ -2298,10 +2368,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thoglaicheas am modh gun bhearradh.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar next key" -msgstr "" +msgstr "Iuchair air adhart a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2309,10 +2382,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an ath-nì air a’ ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar previous key" -msgstr "" +msgstr "Iuchair air ais a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2320,6 +2396,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an nì roimhe air a’ ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Mute key" @@ -2418,7 +2497,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Hotbar slot 1 key" -msgstr "" +msgstr "Iuchair air slot 1 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2426,10 +2505,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas a’ chiad slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 2 key" -msgstr "" +msgstr "Iuchair air slot 2 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2437,10 +2519,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an dàrna slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 3 key" -msgstr "" +msgstr "Iuchair air slot 3 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2448,10 +2533,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an treas slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 4 key" -msgstr "" +msgstr "Iuchair air slot 4 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2459,10 +2547,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an ceathramh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 5 key" -msgstr "" +msgstr "Iuchair air slot 5 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2470,10 +2561,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an còigeamh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 6 key" -msgstr "" +msgstr "Iuchair air slot 6 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2481,10 +2575,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an siathamh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 7 key" -msgstr "" +msgstr "Iuchair air slot 7 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2492,10 +2589,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an seachdamh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 8 key" -msgstr "" +msgstr "Iuchair air slot 8 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2503,10 +2603,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an t-ochdamh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 9 key" -msgstr "" +msgstr "Iuchair air slot 9 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2514,10 +2617,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an naoidheamh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 10 key" -msgstr "" +msgstr "Iuchair air slot 10 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2525,10 +2631,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an deicheamh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 11 key" -msgstr "" +msgstr "Iuchair air slot 11 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2536,10 +2645,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an 11mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 12 key" -msgstr "" +msgstr "Iuchair air slot 12 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2547,10 +2659,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an 12mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 13 key" -msgstr "" +msgstr "Iuchair air slot 13 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2558,10 +2673,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an 13mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 14 key" -msgstr "" +msgstr "Iuchair air slot 14 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2569,10 +2687,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an 14mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 15 key" -msgstr "" +msgstr "Iuchair air slot 15 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2580,10 +2701,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an 15mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 16 key" -msgstr "" +msgstr "Iuchair air slot 16 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2591,10 +2715,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an 16mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 17 key" -msgstr "" +msgstr "Iuchair air slot 17 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2602,10 +2729,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an 17mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 18 key" -msgstr "" +msgstr "Iuchair air slot 18 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2613,10 +2743,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an 18mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 19 key" -msgstr "" +msgstr "Iuchair air slot 19 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2624,10 +2757,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas an 19mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 20 key" -msgstr "" +msgstr "Iuchair air slot 20 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2635,10 +2771,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 20mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 21 key" -msgstr "" +msgstr "Iuchair air slot 21 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2646,10 +2785,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 21mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 22 key" -msgstr "" +msgstr "Iuchair air slot 22 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2657,10 +2799,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 22mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 23 key" -msgstr "" +msgstr "Iuchair air slot 23 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2668,10 +2813,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 23mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 24 key" -msgstr "" +msgstr "Iuchair air slot 24 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2679,10 +2827,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 24mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 25 key" -msgstr "" +msgstr "Iuchair air slot 25 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2690,10 +2841,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 25mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 26 key" -msgstr "" +msgstr "Iuchair air slot 26 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2701,10 +2855,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 26mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 27 key" -msgstr "" +msgstr "Iuchair air slot 27 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2712,10 +2869,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 27mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 28 key" -msgstr "" +msgstr "Iuchair air slot 28 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2723,10 +2883,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 28mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 29 key" -msgstr "" +msgstr "Iuchair air slot 29 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2734,10 +2897,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 29mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 30 key" -msgstr "" +msgstr "Iuchair air slot 30 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2745,10 +2911,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 30mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 31 key" -msgstr "" +msgstr "Iuchair air slot 31 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2756,10 +2925,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 31mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 32 key" -msgstr "" +msgstr "Iuchair air slot 32 a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" @@ -2767,6 +2939,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"An iuchair a thaghas am 32mh slot dhen ghrad-bhàr.\n" +"Faic http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "HUD toggle key" @@ -2825,7 +3000,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Debug info toggle key" -msgstr "" +msgstr "Iuchair toglachadh an fhiosrachaidh dì-bhugachaidh" #: src/settings_translation_file.cpp msgid "" @@ -3081,7 +3256,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Filmic tone mapping" -msgstr "" +msgstr "Mapadh tòna film" #: src/settings_translation_file.cpp msgid "" @@ -3174,6 +3349,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Overall bias of parallax occlusion effect, usually scale/2." msgstr "" +"Claonadh na h-èifeachd occlusion na paraileig air fheadh, seo sgèile/2 mar " +"as àbhaist." #: src/settings_translation_file.cpp msgid "Waving Nodes" @@ -3225,7 +3402,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Waving leaves" -msgstr "" +msgstr "Crathadh duillich" #: src/settings_translation_file.cpp msgid "" @@ -3285,6 +3462,8 @@ msgid "" "formspec is\n" "open." msgstr "" +"Fosgail clàr-taice a’ chuir ’na stad nuair a chailleas an uinneag am fòcas.\n" +"Cha dèid a chur ’na stad nuair a bhios formspec fosgailte." #: src/settings_translation_file.cpp msgid "Viewing range" @@ -3374,6 +3553,11 @@ msgid "" "This only has significant effect on daylight and artificial\n" "light, it has very little effect on natural night light." msgstr "" +"Atharraichidh seo lùb an t-solais a’ cur “gamma correction” air.\n" +"Nì luachan nas àirde an solas meadhanach no fann nas soilleire.\n" +"Fàgaidh luach “1.0” lùb an t-solais mar a tha i.\n" +"Chan eil buaidh mhòr aige ach air solas an latha is na h-oidhche fuadaine,\n" +"agus cha mhòr nach bi buaidh air solas oidhche nàdarra idir." #: src/settings_translation_file.cpp msgid "Light curve low gradient" @@ -3384,6 +3568,8 @@ msgid "" "Gradient of light curve at minimum light level.\n" "Controls the contrast of the lowest light levels." msgstr "" +"Caisead lùb an t-solais aig an ìre as fainne.\n" +"Stiùirichidh seo iomsgaradh an t-solais fhainn." #: src/settings_translation_file.cpp msgid "Light curve high gradient" @@ -3394,6 +3580,8 @@ msgid "" "Gradient of light curve at maximum light level.\n" "Controls the contrast of the highest light levels." msgstr "" +"Caisead lùb an t-solais aig an ìre as soilleire.\n" +"Stiùirichidh seo iomsgaradh an t-solais shoilleir." #: src/settings_translation_file.cpp msgid "Light curve boost" @@ -3415,6 +3603,8 @@ msgid "" "Center of light curve boost range.\n" "Where 0.0 is minimum light level, 1.0 is maximum light level." msgstr "" +"Meadhan rainse meudachadh lùb an t-solais.\n" +"Is 0.0 an ìre as fhainne agus 1.0 an ìre as soilleire air an solas." #: src/settings_translation_file.cpp msgid "Light curve boost spread" @@ -3437,7 +3627,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Video driver" -msgstr "" +msgstr "Dràibhear video" #: src/settings_translation_file.cpp msgid "" @@ -3472,7 +3662,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Fall bobbing factor" -msgstr "" +msgstr "Factar bogadaich an tuiteim" #: src/settings_translation_file.cpp msgid "" @@ -3612,13 +3802,17 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum hotbar width" -msgstr "" +msgstr "Leud as motha a’ ghrad-bhàr" #: src/settings_translation_file.cpp msgid "" "Maximum proportion of current window to be used for hotbar.\n" "Useful if there's something to be displayed right or left of hotbar." msgstr "" +"A’ chuid as motha dhen uinneag làithreach a thèid a chleachdadh airson a’ " +"ghrad-bhàr.\n" +"Tha seo feumail ma dh’fheumas tu rudeigin a shealltainn taobh deas no clì " +"air a’ ghrad-bhàr." #: src/settings_translation_file.cpp msgid "HUD scale factor" @@ -3683,6 +3877,10 @@ msgid "" "False = 128\n" "Usable to make minimap smoother on slower machines." msgstr "" +"True = 256\n" +"False = 128\n" +"Gabhaidh a chleachdadh airson am meanbh-mhapa a dhèanamh nas rèidhe air " +"uidheaman slaodach." #: src/settings_translation_file.cpp msgid "Colored fog" @@ -3727,7 +3925,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Makes all liquids opaque" -msgstr "" +msgstr "Dèan gach lionn trìd-dhoilleir" #: src/settings_translation_file.cpp msgid "World-aligned textures mode" @@ -3905,7 +4103,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Monospace font path" -msgstr "" +msgstr "Slighe dhan chlò aon-leud" #: src/settings_translation_file.cpp msgid "" @@ -4235,7 +4433,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Announce server" -msgstr "" +msgstr "Ainmich am frithealaiche" #: src/settings_translation_file.cpp msgid "Automatically report to the serverlist." @@ -4436,25 +4634,28 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Default privileges" -msgstr "" +msgstr "Sochairean tùsail" #: src/settings_translation_file.cpp msgid "" "The privileges that new users automatically get.\n" "See /privs in game for a full list on your server and mod configuration." msgstr "" +"Na sochairean a gheibh cleachdaichean ùra gu fèin-obrachail.\n" +"Faic /privs sa gheama airson liosta slàn air rèiteachadh an fhrithealaiche ’" +"s nan tuilleadan agad." #: src/settings_translation_file.cpp msgid "Basic privileges" -msgstr "" +msgstr "Sochairean bunasach" #: src/settings_translation_file.cpp msgid "Privileges that players with basic_privs can grant" -msgstr "" +msgstr "Sochairean as urrainn do chluicheadairean le basic_privs a cheadachadh" #: src/settings_translation_file.cpp msgid "Unlimited player transfer distance" -msgstr "" +msgstr "Astar tar-chur nan cluicheadairean gun chuingeachadh" #: src/settings_translation_file.cpp msgid "" @@ -4469,6 +4670,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." msgstr "" +"Mìnichidh seo an t-astar as motha airson tar-chur chluicheadairean ann am " +"bloca (0 = gun chuingeachadh)." #: src/settings_translation_file.cpp msgid "Player versus player" @@ -4477,6 +4680,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Whether to allow players to damage and kill each other." msgstr "" +"Co-dhiù am faod cluicheadairean càch a chèile a leòn ’s a mharbhadh gus nach " +"fhaod." #: src/settings_translation_file.cpp msgid "Mod channels" @@ -4701,15 +4906,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Walking and flying speed, in nodes per second." -msgstr "" +msgstr "Luaths na coiseachd is sgiathaidh, ann an nòd gach diog." #: src/settings_translation_file.cpp msgid "Sneaking speed" -msgstr "" +msgstr "Luaths an tàisleachaidh" #: src/settings_translation_file.cpp msgid "Sneaking speed, in nodes per second." -msgstr "" +msgstr "Luaths an tàisleachaidh ann an nòd gach diog." #: src/settings_translation_file.cpp msgid "Fast mode speed" @@ -4718,6 +4923,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Walking, flying and climbing speed in fast mode, in nodes per second." msgstr "" +"Luaths na coiseachd, sgiathaidh is sreap sa mhodh luath, ann an nòd gach " +"diog." #: src/settings_translation_file.cpp msgid "Climbing speed" @@ -4855,7 +5062,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Ignore world errors" -msgstr "" +msgstr "Leig seachad mearachdan an t-saoghail" #: src/settings_translation_file.cpp msgid "" @@ -4888,7 +5095,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." -msgstr "" +msgstr "Eadaramh nan ùrachaidhean air an lionn ann an diog." #: src/settings_translation_file.cpp msgid "Block send optimize distance" @@ -4924,7 +5131,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Client side modding restrictions" -msgstr "" +msgstr "Cuingeachadh tuilleadain air a’ chliant" #: src/settings_translation_file.cpp msgid "" @@ -5115,7 +5322,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Debug log level" -msgstr "" +msgstr "Ìre an loga dì-bhugachaidh" #: src/settings_translation_file.cpp msgid "" @@ -5128,6 +5335,14 @@ msgid "" "- info\n" "- verbose" msgstr "" +"Ìre an loga a thèid a sgrìobhadh gu debug.txt:\n" +"- (gun logadh)\n" +"- none (teachdaireachdan gun ìre)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" #: src/settings_translation_file.cpp msgid "Debug log file size threshold" @@ -5143,11 +5358,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Chat log level" -msgstr "" +msgstr "Ìre loga na cabadaich" #: src/settings_translation_file.cpp msgid "Minimal level of logging to be written to chat." -msgstr "" +msgstr "An ìre as lugha dhen loga a thèid a sgrìobhadh dhan chabadaich." #: src/settings_translation_file.cpp msgid "IPv6" @@ -5232,7 +5447,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen name" -msgstr "" +msgstr "Ainm gineadair nam mapa" #: src/settings_translation_file.cpp msgid "" @@ -5241,14 +5456,19 @@ msgid "" "Current mapgens in a highly unstable state:\n" "- The optional floatlands of v7 (disabled by default)." msgstr "" +"Ainm air gineadair nam mapa a thèid a chleachdadh airson saoghal ùr a " +"chruthachadh.\n" +"Tar-aithnidh cruthachadh saoghail ùir sa phrìomh chlàr-taice seo.\n" +"Seo gineadairean nam mapa a tha glè neo-sheasmhach aig an àm seo:\n" +"- floatlands roghainneil aig v7 (à comas o thùs)." #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "Àirde an uisge" #: src/settings_translation_file.cpp msgid "Water surface level of the world." -msgstr "" +msgstr "Àirde uachdar an uisge air an t-saoghal." #: src/settings_translation_file.cpp msgid "Max block generate distance" @@ -5259,10 +5479,12 @@ msgid "" "From how far blocks are generated for clients, stated in mapblocks (16 " "nodes)." msgstr "" +"An t-astar on a thèid blocaichean a ghintinn dha na cliantan, ann am bloca " +"mapa (16 nòdan)." #: src/settings_translation_file.cpp msgid "Map generation limit" -msgstr "" +msgstr "Cuingeachadh gintinn mapa" #: src/settings_translation_file.cpp msgid "" @@ -5270,6 +5492,10 @@ msgid "" "Only mapchunks completely within the mapgen limit are generated.\n" "Value is stored per-world." msgstr "" +"Cuingeachadh gintinn mapa, ann an nòd, sa h-uile 6 comhair o (0, 0, 0).\n" +"Cha dèid ach cnapan mapa a tha am broinn cuingeachadh gineadair nam mapa a " +"ghintinn.\n" +"Thèid luach fa leth a stòradh air gach saoghal." #: src/settings_translation_file.cpp msgid "" @@ -5277,6 +5503,11 @@ msgid "" "In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" "and junglegrass, in all other mapgens this flag controls all decorations." msgstr "" +"Buadhan gintinn mapa uile-choitcheann.\n" +"Ann an gineadair nam mapa v6, stiùirichidh bratach “decorations” sgeadachadh " +"seach craobhan is feur dlùth-choille\n" +"agus ann an gineadairean nam mapa eile, stiùirichidh a’ bhratach seo a h-" +"uile sgeadachadh." #: src/settings_translation_file.cpp msgid "Biome API temperature and humidity noise parameters" @@ -5316,15 +5547,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen V5" -msgstr "" +msgstr "Gineadair nam mapa V5" #: src/settings_translation_file.cpp msgid "Mapgen V5 specific flags" -msgstr "" +msgstr "Brataich shònraichte do ghineadair nam mapa V5" #: src/settings_translation_file.cpp msgid "Map generation attributes specific to Mapgen v5." -msgstr "" +msgstr "Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa v5." #: src/settings_translation_file.cpp msgid "Cave width" @@ -5352,6 +5583,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Minimum limit of random number of small caves per mapchunk." msgstr "" +"An àireamh as lugha de dh’uamhan beaga air thuaiream anns gach cnap mapa." #: src/settings_translation_file.cpp msgid "Small cave maximum number" @@ -5360,6 +5592,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of small caves per mapchunk." msgstr "" +"An àireamh as motha de dh’uamhan beaga air thuaiream anns gach cnap mapa." #: src/settings_translation_file.cpp msgid "Large cave minimum number" @@ -5368,6 +5601,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Minimum limit of random number of large caves per mapchunk." msgstr "" +"An àireamh as lugha de dh’uamhan mòra air thuaiream anns gach cnap mapa." #: src/settings_translation_file.cpp msgid "Large cave maximum number" @@ -5376,6 +5610,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Maximum limit of random number of large caves per mapchunk." msgstr "" +"An àireamh as motha de dh’uamhan mòra air thuaiream anns gach cnap mapa." #: src/settings_translation_file.cpp msgid "Large cave proportion flooded" @@ -5391,7 +5626,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Y-level of cavern upper limit." -msgstr "" +msgstr "Àirde-Y aig crìoch àrd nan uamhan." #: src/settings_translation_file.cpp msgid "Cavern taper" @@ -5453,7 +5688,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Y-level of average terrain surface." -msgstr "" +msgstr "Àirde-Y aig uachdar cuibheasach a’ chrutha-thìre." #: src/settings_translation_file.cpp msgid "Cave1 noise" @@ -5494,14 +5729,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "3D noise that determines number of dungeons per mapchunk." msgstr "" +"Riasladh 3D a mhìnicheas an àireamh dhe thuill-dhubha anns gach cnap mapa." #: src/settings_translation_file.cpp msgid "Mapgen V6" -msgstr "" +msgstr "Gineadair nam mapa V6" #: src/settings_translation_file.cpp msgid "Mapgen V6 specific flags" -msgstr "" +msgstr "Brataich shònraichte do ghineadair nam mapa V6" #: src/settings_translation_file.cpp msgid "" @@ -5510,6 +5746,11 @@ msgid "" "When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" "the 'jungles' flag is ignored." msgstr "" +"Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa v6.\n" +"Cuiridh a’ bhratach “snowbiomes” siostam 5 ùr nam bitheom an comas.\n" +"Nuair a bhios a’ bhratach “snowbiomes” an comas, thèid dlùth-choilltean a " +"chur an comas gu fèin-obrachail \n" +"agus a’ bhratach “jungles” a leigeil seachad." #: src/settings_translation_file.cpp msgid "Desert noise threshold" @@ -5535,7 +5776,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Y-level of lower terrain and seabed." -msgstr "" +msgstr "Àirde-Y a’ chrutha-thìre ìosal agus grunnd na mara." #: src/settings_translation_file.cpp msgid "Terrain higher noise" @@ -5543,7 +5784,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Y-level of higher terrain that creates cliffs." -msgstr "" +msgstr "Àirde-Y a’ chrutha-thìre nas àirde a chruthaicheas creagan." #: src/settings_translation_file.cpp msgid "Steepness noise" @@ -5607,11 +5848,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen V7" -msgstr "" +msgstr "Gineadair nam mapa V7" #: src/settings_translation_file.cpp msgid "Mapgen V7 specific flags" -msgstr "" +msgstr "Brataich shònraichte do ghineadair nam mapa V7" #: src/settings_translation_file.cpp msgid "" @@ -5620,16 +5861,22 @@ msgid "" "'floatlands': Floating land masses in the atmosphere.\n" "'caverns': Giant caves deep underground." msgstr "" +"Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa v7.\n" +"“ridges”: Aibhnean.\n" +"“floatlands”: Tìr air fhleòd san àile.\n" +"“caverns”: Uamhan mòra domhainn fon talamh." #: src/settings_translation_file.cpp msgid "Mountain zero level" -msgstr "" +msgstr "Àirde neoini nam beanntan" #: src/settings_translation_file.cpp msgid "" "Y of mountain density gradient zero level. Used to shift mountains " "vertically." msgstr "" +"Y air àirde neoini air caisead dùmhlachd nam beanntan. Thèid seo a " +"chleachdadh airson beanntan a thogail gu h-inghearach." #: src/settings_translation_file.cpp msgid "Floatland minimum Y" @@ -5649,7 +5896,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Floatland tapering distance" -msgstr "" +msgstr "Astar cinn-chaoil air tìr air fhleòd" #: src/settings_translation_file.cpp msgid "" @@ -5658,10 +5905,17 @@ msgid "" "For a solid floatland layer, this controls the height of hills/mountains.\n" "Must be less than or equal to half the distance between the Y limits." msgstr "" +"Seo an t-astar-Y eadar an dùbhlachd làn ’s an òir air cinn-chaoil na tìre " +"air fhleòd.\n" +"Tòsichidh na cinn-chaoil aig an astar seo on chrìoch Y.\n" +"Airson breath tìre air fhleòd sholadach, stiùirichidh seo àirde nan cnoc/nam " +"beanntan.\n" +"Feumaidh e a bhith nas lugha na no co-ionnann ris an dàrna leth dhen astar " +"eadar na crìochan Y." #: src/settings_translation_file.cpp msgid "Floatland taper exponent" -msgstr "" +msgstr "Easponant cinn-chaoil air tìr air fhleòd" #: src/settings_translation_file.cpp msgid "" @@ -5672,10 +5926,18 @@ msgid "" "Values < 1.0 (for example 0.25) create a more defined surface level with\n" "flatter lowlands, suitable for a solid floatland layer." msgstr "" +"An t-easponant aig cinn-chaoil na tìre air fhleòd. Atharraichidh seo giùlnan " +"nan ceann-caol.\n" +"Cruthaichidh luach = 1.0 cinn-chaoil aon-fhillte loidhneach.\n" +"Cruthaichidh luachan > 1.0 cinn-chaoil rèidhe\n" +"a bhios freagarrach dha na cinn-chaoill sgaraichte thùsail.\n" +"Cruthaichidh luachan < 1.0 (can 0.25) uachdar nas mionaidiche le tìr-ìosal " +"nas rèidhe a bhios freagarrach\n" +"do bhreath tìre air fhleòd sholadach." #: src/settings_translation_file.cpp msgid "Floatland density" -msgstr "" +msgstr "Dùmhlachd na tìre air fhleòd" #: src/settings_translation_file.cpp #, c-format @@ -5689,7 +5951,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Floatland water level" -msgstr "" +msgstr "Àirde an uisge air tìr air fhleòd" #: src/settings_translation_file.cpp msgid "" @@ -5704,6 +5966,21 @@ msgid "" "server-intensive extreme water flow and to avoid vast flooding of the\n" "world surface below." msgstr "" +"Àirde uachdar an uisge roghainneil a thèid a chur air breath tìre air fhleòd " +"soladaiche.\n" +"Tha uisge à comas o thùs agus cha dèid gin a chur ach\n" +"ma tha an luach seo nas àirde na “mgv7_floatland_ymax” − " +"“mgv7_floatland_taper”\n" +"(seo toiseach a’ chinn-chaoil).\n" +"***RABHADH, CUNNART AIR SAOGHLAN IS DÈANADAS AN FHRITHEALAICHE***:\n" +"Ma chuireas tu cur ann uisge an comas, feumaidh tu an tìr air fhleòd a " +"rèiteachadh ’s a chur fo dheuchainn a dhèanamh cinnteach gu bheil e ’na " +"breath sholadach\n" +"’s tu a’ cur 2.0 air “mgv7_floatland_density”\n" +"(no luach riatanach eile a-rèir “mgv7_np_floatland”)\n" +"ach an seachnaich thu sruthadh uisge anabarrach a chuireas ealach air an " +"fhrithealaiche ’s ach an seachnaich thu tuil mhòr air uachdar na tìre " +"foidhpe." #: src/settings_translation_file.cpp msgid "Terrain alternative noise" @@ -5737,7 +6014,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Defines large-scale river channel structure." -msgstr "" +msgstr "Mìnichidh seo structar sruth nan aibhnean mòra." #: src/settings_translation_file.cpp msgid "Mountain noise" @@ -5748,6 +6025,8 @@ msgid "" "3D noise defining mountain structure and height.\n" "Also defines structure of floatland mountain terrain." msgstr "" +"Riasladh 3D a mhìnicheas structar is àirde nam beanntan.\n" +"Mìnichidh e cruth-tìre nam beanntan air tìr air fhleòd cuideachd." #: src/settings_translation_file.cpp msgid "Ridge noise" @@ -5755,11 +6034,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." -msgstr "" +msgstr "Riasladh 3D a mhìnicheas structar ballachan sgoltaidhean-aibhne." #: src/settings_translation_file.cpp msgid "Floatland noise" -msgstr "" +msgstr "Riasladh na tìre air fhleòd" #: src/settings_translation_file.cpp msgid "" @@ -5768,50 +6047,56 @@ msgid "" "to be adjusted, as floatland tapering functions best when this noise has\n" "a value range of approximately -2.0 to 2.0." msgstr "" +"Riasladh 3D a mhìnicheas structar na tìre air fhleòd.\n" +"Mura cleachd thu an luach tùsail, dh’fhaoidte gum fheàirrde thu gleus a chur " +"air “scale” an riaslaidh (0.7 o thùs)\n" +", on a dh’obraicheas foincseanan cinn-chaoil as fheàrr\n" +"nuair a bhios an riasladh seo eadar mu -2.0 agus 2.0." #: src/settings_translation_file.cpp msgid "Mapgen Carpathian" -msgstr "" +msgstr "Gineadair nam mapa Carpathian" #: src/settings_translation_file.cpp msgid "Mapgen Carpathian specific flags" -msgstr "" +msgstr "Brataich shònraichte do ghineadair nam mapa Carpathian" #: src/settings_translation_file.cpp msgid "Map generation attributes specific to Mapgen Carpathian." msgstr "" +"Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa Carpathian." #: src/settings_translation_file.cpp msgid "Base ground level" -msgstr "" +msgstr "Àirde bhunasach a’ ghrunnda" #: src/settings_translation_file.cpp msgid "Defines the base ground level." -msgstr "" +msgstr "Mìnichidh seo àirde bhunasach a’ ghrunnda." #: src/settings_translation_file.cpp msgid "River channel width" -msgstr "" +msgstr "Leud sruth nan aibhnean" #: src/settings_translation_file.cpp msgid "Defines the width of the river channel." -msgstr "" +msgstr "Mìnichidh seo leud sruth nan aibhnean." #: src/settings_translation_file.cpp msgid "River channel depth" -msgstr "" +msgstr "Doimhne sruth nan aibhnean" #: src/settings_translation_file.cpp msgid "Defines the depth of the river channel." -msgstr "" +msgstr "Mìnichidh seo doimhne sruth nan aibhnean." #: src/settings_translation_file.cpp msgid "River valley width" -msgstr "" +msgstr "Leud gleanntan aibhne" #: src/settings_translation_file.cpp msgid "Defines the width of the river valley." -msgstr "" +msgstr "Mìnichidh seo leud gleanntan nan aibhnean." #: src/settings_translation_file.cpp msgid "Hilliness1 noise" @@ -5875,7 +6160,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "2D noise that controls the shape/size of rolling hills." -msgstr "" +msgstr "Riasladh 2D a stiùiricheas cruth/meud nan cnoc." #: src/settings_translation_file.cpp msgid "Ridged mountain size noise" @@ -5895,11 +6180,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "River noise" -msgstr "" +msgstr "Riasladh aibhnean" #: src/settings_translation_file.cpp msgid "2D noise that locates the river valleys and channels." -msgstr "" +msgstr "Riasladh 2D a shuidhicheas glinn is sruthan nan aibhnean." #: src/settings_translation_file.cpp msgid "Mountain variation noise" @@ -5911,21 +6196,23 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen Flat" -msgstr "" +msgstr "Gineadair nam mapa Flat" #: src/settings_translation_file.cpp msgid "Mapgen Flat specific flags" -msgstr "" +msgstr "Brataich shònraichte do ghineadair nam mapa Flat" #: src/settings_translation_file.cpp msgid "" "Map generation attributes specific to Mapgen Flat.\n" "Occasional lakes and hills can be added to the flat world." msgstr "" +"Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa Flat.\n" +"’S urrainn dhut lochan is cnuic ghanna a chur ris an t-saoghal rèidh." #: src/settings_translation_file.cpp msgid "Ground level" -msgstr "" +msgstr "Àirde a’ ghrunnda" #: src/settings_translation_file.cpp msgid "Y of flat ground." @@ -5979,11 +6266,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Mapgen Fractal" -msgstr "" +msgstr "Gineadair nam mapa Fractal" #: src/settings_translation_file.cpp msgid "Mapgen Fractal specific flags" -msgstr "" +msgstr "Brataich shònraichte do ghineadair nam mapa Fractal" #: src/settings_translation_file.cpp msgid "" @@ -5991,6 +6278,9 @@ msgid "" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" +"Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa Fractal.\n" +"Cuiridh “terrain” gintinn crutha-tìre nach eil fractalach an comas:\n" +"cuan, eileanan is fon talamh." #: src/settings_translation_file.cpp msgid "Fractal type" @@ -6030,6 +6320,11 @@ msgid "" "increases processing load.\n" "At iterations = 20 this mapgen has a similar load to mapgen V7." msgstr "" +"Ath-thriall an fhoincsein ath-chùrsaiche.\n" +"Ma mheudaicheas tu seo, bidh barrachd mion-chruthan air\n" +"ach bi barrachd eallaich air a’ phròiseasadh cuideachd.\n" +"Ma tha ath-thriall = 20, bidh an t-eallach aig gineadair nam mapa seo " +"coltach ri eallach gineadair nam mapa V7." #: src/settings_translation_file.cpp msgid "" @@ -6122,15 +6417,15 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Y-level of seabed." -msgstr "" +msgstr "Àirde-Y aig grunnd na mara." #: src/settings_translation_file.cpp msgid "Mapgen Valleys" -msgstr "" +msgstr "Gineadair nam mapa Valleys" #: src/settings_translation_file.cpp msgid "Mapgen Valleys specific flags" -msgstr "" +msgstr "Brataich shònraichte do ghineadair nam mapa Valleys" #: src/settings_translation_file.cpp msgid "" @@ -6141,6 +6436,12 @@ msgid "" "to become shallower and occasionally dry.\n" "'altitude_dry': Reduces humidity with altitude." msgstr "" +"Buadhan gintinn mapa a tha sònraichte do ghineadair nam mapa Valleys.\n" +"“altitude_chill”: Bidh tìr àrd nas fhuaire.\n" +"“humid_rivers”: Bidh an tìr nas buige faisg air aibhnean.\n" +"“vary_river_depth”: Ma tha seo an comas, bidh aibhnean nas tana agus tioram " +"aig amannan ma tha an saoghal tioram no teth.\n" +"’“altitude_dry”: Bidh tìr àrd nas tiorma." #: src/settings_translation_file.cpp msgid "" @@ -6163,19 +6464,19 @@ msgstr "" #: src/settings_translation_file.cpp msgid "River depth" -msgstr "" +msgstr "Doimhne nan aibhnean" #: src/settings_translation_file.cpp msgid "How deep to make rivers." -msgstr "" +msgstr "Dè cho domhainn ’s a bhios aibhnean." #: src/settings_translation_file.cpp msgid "River size" -msgstr "" +msgstr "Meud nan aibhnean" #: src/settings_translation_file.cpp msgid "How wide to make rivers." -msgstr "" +msgstr "Dè cho leathann ’s a bhios aibhnean." #: src/settings_translation_file.cpp msgid "Cave noise #1" @@ -6208,6 +6509,8 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Raises terrain to make valleys around the rivers." msgstr "" +"Àrdaichidh seo an cruth-tìre airson glinn a chruthachadh timcheall air na " +"h-aibhnean." #: src/settings_translation_file.cpp msgid "Valley fill" @@ -6223,7 +6526,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Amplifies the valleys." -msgstr "" +msgstr "Meudaichidh seo na glinn." #: src/settings_translation_file.cpp msgid "Valley slope" @@ -6231,7 +6534,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Chunk size" -msgstr "" +msgstr "Meud nan cnapan" #: src/settings_translation_file.cpp msgid "" @@ -6242,14 +6545,21 @@ msgid "" "Altering this value is for special usage, leaving it unchanged is\n" "recommended." msgstr "" +"Meud nan cnapan mapa a thèid a ghintinn le gineadair nam mapa, ann am bloca " +"mapa (16 nòd).\n" +"RABHADH: Chan fhaigh thu buannachd ach cunnartan à luach nas àirde na 5.\n" +"Le luach nas lugha, gheibh thu barrachd uamhan is thuill-dubha.\n" +"Chan fhiach atharrachadh an luach seo ach air adhbhar sònraichte ’s " +"mholamaid\n" +"nach atharraich thu e." #: src/settings_translation_file.cpp msgid "Mapgen debug" -msgstr "" +msgstr "Dì-bhugachadh gineadair nam mapa" #: src/settings_translation_file.cpp msgid "Dump the mapgen debug information." -msgstr "" +msgstr "Dumpaich fiosrachadh dì-bhugachaidh aig gineadair nam mapa." #: src/settings_translation_file.cpp msgid "Absolute limit of queued blocks to emerge" @@ -6299,7 +6609,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Online Content Repository" -msgstr "" +msgstr "Ionad-tasgaidh susbaint air loidhne" #: src/settings_translation_file.cpp msgid "ContentDB URL" From dcdc6b762fe53e813faa1a1de9e0da8a192d753d Mon Sep 17 00:00:00 2001 From: Muhammad Rifqi Priyo Susanto Date: Tue, 23 Jun 2020 00:56:25 +0000 Subject: [PATCH 387/424] Translated using Weblate (Indonesian) Currently translated at 99.6% (1345 of 1350 strings) --- po/id/minetest.po | 206 +++++++++++++++++++++------------------------- 1 file changed, 96 insertions(+), 110 deletions(-) diff --git a/po/id/minetest.po b/po/id/minetest.po index 3b967ff8f..21fd705bb 100644 --- a/po/id/minetest.po +++ b/po/id/minetest.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: Indonesian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-09 12:14+0000\n" +"PO-Revision-Date: 2020-06-25 16:39+0000\n" "Last-Translator: Muhammad Rifqi Priyo Susanto " "\n" "Language-Team: Indonesian 1.0 membuat penirusan halus yang cocok untuk pemisahan\n" +"floatland bawaan.\n" +"Nilai < 1.0 (misal 0.25) membuat tingkat permukaan dengan lembah\n" +"yang rata dan cocok untuk lapisan floatland padat (penuh)." #: src/settings_translation_file.cpp msgid "FPS in pause menu" @@ -3274,39 +3269,32 @@ msgid "Fixed virtual joystick" msgstr "Joystick virtual tetap" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland density" -msgstr "Kepadatan gunung floatland" +msgstr "Kepadatan floatland" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland maximum Y" -msgstr "Y maksimum dungeon" +msgstr "Y maksimum floatland" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland minimum Y" -msgstr "Y minimum dungeon" +msgstr "Y minimum floatland" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland noise" -msgstr "Noise dasar floatland" +msgstr "Noise floatland" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland taper exponent" -msgstr "Pangkat gunung floatland" +msgstr "Pangkat penirusan floatland" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland tapering distance" -msgstr "Noise dasar floatland" +msgstr "Jarak penirusan floatland" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland water level" -msgstr "Ketinggian floatland" +msgstr "Ketinggian permukaan air floatland" #: src/settings_translation_file.cpp msgid "Fly key" @@ -3365,6 +3353,8 @@ msgid "" "Font size of the recent chat text and chat prompt in point (pt).\n" "Value 0 will use the default font size." msgstr "" +"Ukuran fon teks obrolan terkini dan prompt obrolan dalam poin (pt).\n" +"Nilai 0 akan memakai ukuran bawaan." #: src/settings_translation_file.cpp msgid "" @@ -5073,9 +5063,8 @@ msgid "Lower Y limit of dungeons." msgstr "Batas bawah Y dungeon." #: src/settings_translation_file.cpp -#, fuzzy msgid "Lower Y limit of floatlands." -msgstr "Batas bawah Y dungeon." +msgstr "Batas bawah Y floatland." #: src/settings_translation_file.cpp msgid "Main menu script" @@ -5159,7 +5148,6 @@ msgstr "" "flag \"jungle\" diabaikan." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" "'ridges': Rivers.\n" @@ -5167,7 +5155,9 @@ msgid "" "'caverns': Giant caves deep underground." msgstr "" "Atribut pembuatan peta khusus untuk pembuat peta v7.\n" -"\"ridges\" menyalakan sungai." +"\"ridges\": Sungai.\n" +"\"floatlands\": Tanah mengambang di atmosfer.\n" +"\"caverns\": Gua raksasa di kedalaman bawah tanah." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5324,22 +5314,20 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Jumlah maksimum blok yang dapat diantrekan untuk dimuat." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "This limit is enforced per player." msgstr "" -"Jumlah maksimum blok yang akan diantrekan yang akan dihasilkan.\n" -"Atur ke kosong untuk diatur secara otomatis." +"Jumlah maksimum blok yang akan diantrekan untuk dihasilkan.\n" +"Batasan ini diatur per pemain." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "This limit is enforced per player." msgstr "" -"Jumlah maksimum blok yang akan diantrekan yang akan dimuat dari berkas.\n" -"Atur ke kosong untuk diatur secara otomatis." +"Jumlah maksimum blok yang akan diantrekan untuk dimuat dari berkas.\n" +"Batasan ini diatur per pemain." #: src/settings_translation_file.cpp msgid "Maximum number of forceloaded mapblocks." @@ -5435,7 +5423,7 @@ msgstr "Metode yang digunakan untuk menyorot objek yang dipilih." #: src/settings_translation_file.cpp msgid "Minimal level of logging to be written to chat." -msgstr "" +msgstr "Tingkat minimal log untuk ditulis ke obrolan." #: src/settings_translation_file.cpp msgid "Minimap" @@ -5606,7 +5594,6 @@ msgid "Number of emerge threads" msgstr "Jumlah utas kemunculan" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of emerge threads to use.\n" "Value 0:\n" @@ -5620,9 +5607,6 @@ msgid "" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" "Jumlah utas kemunculan yang dipakai.\n" -"PERINGATAN: Saat ini, terdapat beberapa kutu yang menyebabkan crash\n" -"ketika \"num_emerge_threads\" lebih dari 1. Sampai peringatan ini dicabut,\n" -"sangat disarankan untuk mengatur nilai ini ke bawaan, yaitu \"1\".\n" "Nilai 0:\n" "- Pemilihan otomatis. Utas kemunculan akan berjumlah\n" "- 'jumlah prosesor - 2', dengan batas bawah 1.\n" @@ -5631,8 +5615,8 @@ msgstr "" "PERINGATAN: Penambahan jumlah utas kemunculan mempercepat mesin pembuat\n" "peta, tetapi dapat merusak kinerja permainan dengan mengganggu proses lain,\n" "terutama dalam pemain tunggal dan/atau saat menjalankan kode Lua dalam\n" -"\"on_generated\". Untuk kebanyakan pengguna, pengaturan yang cocok adalah " -"\"1\"." +"\"on_generated\". Untuk kebanyakan pengguna, pengaturan yang cocok adalah \"1" +"\"." #: src/settings_translation_file.cpp msgid "" @@ -5722,6 +5706,8 @@ msgid "" "Path to save screenshots at. Can be an absolute or relative path.\n" "The folder will be created if it doesn't already exist." msgstr "" +"Jalur penyimpanan tangkapan layar. Dapat berupa jalur absolut atau relatif.\n" +"Folder akan dibuat jika belum ada." #: src/settings_translation_file.cpp msgid "" @@ -5764,12 +5750,11 @@ msgstr "Jeda saat jendela hilang fokus" #: src/settings_translation_file.cpp msgid "Per-player limit of queued blocks load from disk" -msgstr "" +msgstr "Batasan antrean blok yang dimuat dari diska per pemain" #: src/settings_translation_file.cpp -#, fuzzy msgid "Per-player limit of queued blocks to generate" -msgstr "Batas antrean kemunculan (emerge queue) untuk dibuat" +msgstr "Batasan antrean blok yang dibuat per pemain" #: src/settings_translation_file.cpp msgid "Physics" @@ -6381,6 +6366,9 @@ msgid "" "Note that mods or games may explicitly set a stack for certain (or all) " "items." msgstr "" +"Mengatur ukuran tumpukan bawaan untuk nodus, barang, dan alat.\n" +"Catat bahwa mod dan permainan dapat mengatur tumpukan untuk sebagian (atau " +"semua) barang." #: src/settings_translation_file.cpp msgid "" @@ -6409,9 +6397,8 @@ msgid "Step mountain spread noise" msgstr "Noise persebaran teras gunung" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of 3D mode parallax." -msgstr "Kekuatan dari parallax." +msgstr "Kekuatan mode paralaks 3D." #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." @@ -6783,9 +6770,8 @@ msgid "Upper Y limit of dungeons." msgstr "Batas atas Y dungeon." #: src/settings_translation_file.cpp -#, fuzzy msgid "Upper Y limit of floatlands." -msgstr "Batas atas Y dungeon." +msgstr "Batas atas Y floatland." #: src/settings_translation_file.cpp msgid "Use 3D cloud look instead of flat." From 6da65f1ba9675a8b4c9730a8a01002fd4755e0e3 Mon Sep 17 00:00:00 2001 From: Hamlet Date: Wed, 24 Jun 2020 12:19:00 +0000 Subject: [PATCH 388/424] Translated using Weblate (Italian) Currently translated at 100.0% (1350 of 1350 strings) --- po/it/minetest.po | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/po/it/minetest.po b/po/it/minetest.po index 43c6d1fbb..c7ce03705 100644 --- a/po/it/minetest.po +++ b/po/it/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Italian (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-22 17:56+0000\n" -"Last-Translator: Giov4 \n" +"PO-Revision-Date: 2020-06-26 10:41+0000\n" +"Last-Translator: Hamlet \n" "Language-Team: Italian \n" "Language: it\n" @@ -96,7 +96,7 @@ msgstr "Disattiva tutto" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "Disattiva raccolta di mod" +msgstr "Disattiva la raccolta di mod" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" @@ -104,7 +104,7 @@ msgstr "Attiva tutto" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "Attiva raccolta di mod" +msgstr "Attiva la raccolta di mod" #: builtin/mainmenu/dlg_config_world.lua msgid "" @@ -136,7 +136,7 @@ msgstr "Nessuna dipendenza" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "Non è stata fornita nessuna descrizione del pacchetto mod." +msgstr "Non è stata fornita nessuna descrizione per la raccolta di mod." #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" @@ -448,7 +448,7 @@ msgstr "Accetta" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "Rinominare la raccolta di mod:" +msgstr "Rinomina la raccolta di mod:" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" @@ -604,8 +604,8 @@ msgstr "Installa mod: Impossibile trovare il vero nome del mod per: $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" msgstr "" -"Installa mod: Impossibile trovare un nome cartella corretto per il pacchetto " -"mod $1" +"Installa mod: Impossibile trovare un nome cartella corretto per la raccolta " +"di mod $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" @@ -617,11 +617,11 @@ msgstr "Install: File: \"$1\"" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to find a valid mod or modpack" -msgstr "Impossibile trovare un mod o un pacchetto mod valido" +msgstr "Impossibile trovare un mod o una raccolta di mod validi" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "Impossibile installare un $1 come un pacchetto di immagini" +msgstr "Impossibile installare un $1 come una raccolta di immagini" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" @@ -633,7 +633,7 @@ msgstr "Impossibile installare un mod come un $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a modpack as a $1" -msgstr "Impossibile installare un pacchetto mod come un $1" +msgstr "Impossibile installare una raccolta di mod come un $1" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" @@ -645,7 +645,7 @@ msgstr "Contenuti" #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" -msgstr "Disabilita pacchetto di immagini" +msgstr "Disattiva raccolta immagini" #: builtin/mainmenu/tab_content.lua msgid "Information:" @@ -661,7 +661,7 @@ msgstr "Nessuna dipendenza." #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "Nessuna descrizione disponibile per il pacchetto" +msgstr "Nessuna descrizione disponibile per la raccolta" #: builtin/mainmenu/tab_content.lua msgid "Rename" @@ -669,11 +669,11 @@ msgstr "Rinomina" #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" -msgstr "Disinstalla pacchetto" +msgstr "Disinstalla la raccolta" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" -msgstr "Utilizza pacchetto di immagini" +msgstr "Usa la raccolta di immagini" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" @@ -1965,8 +1965,8 @@ msgstr "" "serie Mandelbrot\n" "che usino i parametri predefiniti, potrebbe richiedere modifiche in altre\n" "situazioni.\n" -"Varia grossomodo da -2 a 2. Si moltiplichi per \"scala\" per lo spostamento " -"in nodi." +"Varia grossomodo da -2 a 2. Si moltiplichi per \"scala\" per lo scarto in " +"nodi." #: src/settings_translation_file.cpp msgid "" @@ -3112,9 +3112,8 @@ msgid "" "or need to be auto-generated.\n" "Requires shaders to be enabled." msgstr "" -"Attiva il bumpmapping per le immagini. È necessario fornire le normalmap con " -"il\n" -"pacchetto di immagini, o devono essere generate automaticamente.\n" +"Attiva il bumpmapping per le immagini. È necessario fornire le normalmap\n" +"con la raccolta di immagini, o devono essere generate automaticamente.\n" "Necessita l'attivazione degli shader." #: src/settings_translation_file.cpp @@ -5946,8 +5945,8 @@ msgid "" msgstr "" "Indirizzo del listener Prometheus.\n" "Se Minetest viene compilato con l'opzione ENABLE_PROMETHEUS abilitata,\n" -"abilita il listener delle metriche per Prometheus su quell'indirizzo.\n" -"Le metriche possono essere recuperate su http://127.0.0.1:30000/metrics" +"abilita il listener delle statistiche per Prometheus su quell'indirizzo.\n" +"Le statistiche possono essere recuperate su http://127.0.0.1:30000/metrics" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." From e2878567ca5083cd7baef67b10f6e81e09a3b080 Mon Sep 17 00:00:00 2001 From: Maksim Gamarnik Date: Thu, 25 Jun 2020 09:24:24 +0000 Subject: [PATCH 389/424] Translated using Weblate (Ukrainian) Currently translated at 42.6% (576 of 1350 strings) --- po/uk/minetest.po | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/po/uk/minetest.po b/po/uk/minetest.po index 2a246ebe5..a87362951 100644 --- a/po/uk/minetest.po +++ b/po/uk/minetest.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-06-26 10:41+0000\n" -"Last-Translator: Andrii Muliar \n" +"Last-Translator: Maksim Gamarnik \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -314,8 +314,7 @@ msgstr "Озера" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" -msgstr "" -"Низька вологість та висока спека спричиняють мілководні або пересохлі річки" +msgstr "Низька вологість і велика спека спричиняють мілководні або сухі річки" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" From f30331af397d3a853be72ef485bcb1113e5ced32 Mon Sep 17 00:00:00 2001 From: "Yaya - Nurul Azeera Hidayah @ Muhammad Nur Hidayat Yasuyoshi" Date: Sat, 27 Jun 2020 12:50:55 +0000 Subject: [PATCH 390/424] Added translation using Weblate (Malay (Jawi)) --- po/ms_Arab/minetest.po | 6325 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 6325 insertions(+) create mode 100644 po/ms_Arab/minetest.po diff --git a/po/ms_Arab/minetest.po b/po/ms_Arab/minetest.po new file mode 100644 index 000000000..edbef7eb4 --- /dev/null +++ b/po/ms_Arab/minetest.po @@ -0,0 +1,6325 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the minetest package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: minetest\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ms_Arab\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "You died" +msgstr "" + +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "Respawn" +msgstr "" + +#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp +msgid "OK" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "The server has requested a reconnect:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Reconnect" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Main menu" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occurred in a Lua script:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occurred:" +msgstr "" + +#: builtin/mainmenu/common.lua src/client/game.cpp +msgid "Loading..." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Try reenabling public serverlist and check your internet connection." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server supports protocol versions between $1 and $2. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server enforces protocol version $1. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We support protocol versions between version $1 and $2." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We only support protocol version $1." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Protocol version mismatch. " +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "World:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No modpack description provided." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No game description provided." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Mod:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No (optional) dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No hard dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Optional dependencies:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Dependencies:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No optional dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp +msgid "Save" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_delete_content.lua +#: builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp +#: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp +#: src/gui/guiPasswordChange.cpp +msgid "Cancel" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Find More Mods" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable modpack" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable modpack" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable all" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable all" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "" +"Failed to enable mod \"$1\" as it contains disallowed characters. Only " +"characters [a-z0-9_] are allowed." +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "ContentDB is not available when Minetest was compiled without cURL" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "All packages" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Texture packs" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Failed to download $1" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua +msgid "Search" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Back to Main Menu" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No results" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No packages could be retrieved" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Downloading..." +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Install" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Update" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Uninstall" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "View" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Caverns" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Very large caverns deep in the underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Sea level rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mountains" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Floatlands (experimental)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Floating landmasses in the sky" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Altitude chill" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces heat with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Altitude dry" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces humidity with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Humid rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Increases humidity around rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Vary river depth" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Low humidity and high heat causes shallow or dry rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Hills" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Lakes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Additional terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Generate non-fractal terrain: Oceans and underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Trees and jungle grass" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Flat terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mud flow" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Terrain surface erosion" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle, Tundra, Taiga" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "You have no games installed." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download one from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Caves" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Dungeons" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Decorations" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "" +"Structures appearing on the terrain (no effect on trees and jungle grass " +"created by v6)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Structures appearing on the terrain, typically trees and plants" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Network of tunnels and caves" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Biome blending" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Smooth transition between biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mapgen-specific flags" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Warning: The Development Test is meant for developers." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download a game, such as Minetest Game, from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "World name" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Seed" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Game" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Create" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "A world named \"$1\" already exists" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "No game selected" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "Are you sure you want to delete \"$1\"?" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua +#: src/client/keycode.cpp +msgid "Delete" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "pkgmgr: failed to delete \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "pkgmgr: invalid path \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_world.lua +msgid "Delete World \"$1\"?" +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Accept" +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "" +"This modpack has an explicit name given in its modpack.conf which will " +"override any renaming here." +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Rename Modpack:" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Offset" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Scale" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "2D Noise" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Octaves" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Persistance" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Lacunarity" +msgstr "" + +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "defaults" +msgstr "" + +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "eased" +msgstr "" + +#. ~ "absvalue" is a noise parameter flag. +#. It is short for "absolute value". +#. It can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "absvalue" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be at least $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must not be larger than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select directory" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select file" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "$1 (Enabled)" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a $1 as a texture pack" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Failed to install $1 to $2" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to find a valid mod or modpack" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a modpack as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install Mod: Unable to find suitable folder name for modpack $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a mod as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install Mod: Unable to find real mod name for: $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a game as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install: file: \"$1\"" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install: Unsupported file type \"$1\" or broken archive" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "$1 mods" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Installed Packages:" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Browse online content" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "No package description available" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Rename" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "No dependencies." +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Disable Texture Pack" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Use Texture Pack" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Information:" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Uninstall Package" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Credits" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Active Contributors" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Contributors" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Configure" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "New" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Select World:" +msgstr "" + +#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative Mode" +msgstr "" + +#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +msgid "Enable Damage" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Host Server" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Host Game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Announce Server" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Name/Password" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Bind Address" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Port" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Server Port" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Play Game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "No world created or selected!" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Start Game" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Address / Port" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Connect" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Ping" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative mode" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Damage enabled" +msgstr "" + +#. ~ PvP = Player versus Player +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "PvP enabled" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Join Game" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Simple Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Fancy Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Outlining" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "None" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "2x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "3D Clouds" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Connected Glass" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Screen:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Autosave Screen Size" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Shaders (unavailable)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Reset singleplayer world" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/client/game.cpp +msgid "Change Keys" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "All Settings" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold: (px)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Generate Normal Maps" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Liquids" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Settings" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Start Singleplayer" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Config mods" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Main" +msgstr "" + +#: src/client/client.cpp +msgid "Connection timed out." +msgstr "" + +#: src/client/client.cpp +msgid "Loading textures..." +msgstr "" + +#: src/client/client.cpp +msgid "Rebuilding shaders..." +msgstr "" + +#: src/client/client.cpp +msgid "Initializing nodes..." +msgstr "" + +#: src/client/client.cpp +msgid "Initializing nodes" +msgstr "" + +#: src/client/client.cpp +msgid "Done!" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Main Menu" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Player name too long." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Connection error (timed out?)" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided password file failed to open: " +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Please choose a name!" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "No world selected and no address provided. Nothing to do." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided world path doesn't exist: " +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Could not find or load game \"" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Invalid gamespec." +msgstr "" + +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. +#: src/client/fontengine.cpp +msgid "needs_fallback_font" +msgstr "" + +#: src/client/game.cpp +msgid "Shutting down..." +msgstr "" + +#: src/client/game.cpp +msgid "Creating server..." +msgstr "" + +#: src/client/game.cpp +msgid "Creating client..." +msgstr "" + +#: src/client/game.cpp +msgid "Resolving address..." +msgstr "" + +#: src/client/game.cpp +msgid "Connecting to server..." +msgstr "" + +#: src/client/game.cpp +msgid "Item definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "Node definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "Media..." +msgstr "" + +#: src/client/game.cpp +msgid "KiB/s" +msgstr "" + +#: src/client/game.cpp +msgid "MiB/s" +msgstr "" + +#: src/client/game.cpp +msgid "Client side scripting is disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Sound muted" +msgstr "" + +#: src/client/game.cpp +msgid "Sound unmuted" +msgstr "" + +#: src/client/game.cpp +msgid "Sound system is disabled" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Volume changed to %d%%" +msgstr "" + +#: src/client/game.cpp +msgid "Sound system is not supported on this build" +msgstr "" + +#: src/client/game.cpp +msgid "ok" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode enabled (note: no 'fly' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Pitch move mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Pitch move mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode enabled (note: no 'fast' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode enabled (note: no 'noclip' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Cinematic mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Cinematic mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Automatic forward enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Automatic forward disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x1" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x2" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x4" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x1" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x2" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x4" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap currently disabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "Fog disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fog enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info shown" +msgstr "" + +#: src/client/game.cpp +msgid "Profiler graph shown" +msgstr "" + +#: src/client/game.cpp +msgid "Wireframe shown" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info, profiler graph, and wireframe hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info and profiler graph hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Camera update disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Camera update enabled" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at maximum: %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at minimum: %d" +msgstr "" + +#: src/client/game.cpp +msgid "Enabled unlimited viewing range" +msgstr "" + +#: src/client/game.cpp +msgid "Disabled unlimited viewing range" +msgstr "" + +#: src/client/game.cpp +msgid "Zoom currently disabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "" +"Default Controls:\n" +"No menu visible:\n" +"- single tap: button activate\n" +"- double tap: place/use\n" +"- slide finger: look around\n" +"Menu/Inventory visible:\n" +"- double tap (outside):\n" +" -->close\n" +"- touch stack, touch slot:\n" +" --> move stack\n" +"- touch&drag, tap 2nd finger\n" +" --> place single item to slot\n" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "" +"Controls:\n" +"- %s: move forwards\n" +"- %s: move backwards\n" +"- %s: move left\n" +"- %s: move right\n" +"- %s: jump/climb\n" +"- %s: sneak/go down\n" +"- %s: drop item\n" +"- %s: inventory\n" +"- Mouse: turn/look\n" +"- Mouse left: dig/punch\n" +"- Mouse right: place/use\n" +"- Mouse wheel: select item\n" +"- %s: chat\n" +msgstr "" + +#: src/client/game.cpp +msgid "Continue" +msgstr "" + +#: src/client/game.cpp +msgid "Change Password" +msgstr "" + +#: src/client/game.cpp +msgid "Game paused" +msgstr "" + +#: src/client/game.cpp +msgid "Sound Volume" +msgstr "" + +#: src/client/game.cpp +msgid "Exit to Menu" +msgstr "" + +#: src/client/game.cpp +msgid "Exit to OS" +msgstr "" + +#: src/client/game.cpp +msgid "Game info:" +msgstr "" + +#: src/client/game.cpp +msgid "- Mode: " +msgstr "" + +#: src/client/game.cpp +msgid "Remote server" +msgstr "" + +#: src/client/game.cpp +msgid "- Address: " +msgstr "" + +#: src/client/game.cpp +msgid "Hosting server" +msgstr "" + +#: src/client/game.cpp +msgid "- Port: " +msgstr "" + +#: src/client/game.cpp +msgid "Singleplayer" +msgstr "" + +#: src/client/game.cpp +msgid "On" +msgstr "" + +#: src/client/game.cpp +msgid "Off" +msgstr "" + +#: src/client/game.cpp +msgid "- Damage: " +msgstr "" + +#: src/client/game.cpp +msgid "- Creative Mode: " +msgstr "" + +#. ~ PvP = Player versus Player +#: src/client/game.cpp +msgid "- PvP: " +msgstr "" + +#: src/client/game.cpp +msgid "- Public: " +msgstr "" + +#: src/client/game.cpp +msgid "- Server Name: " +msgstr "" + +#: src/client/game.cpp +msgid "" +"\n" +"Check debug.txt for details." +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat shown" +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat hidden" +msgstr "" + +#: src/client/gameui.cpp +msgid "HUD shown" +msgstr "" + +#: src/client/gameui.cpp +msgid "HUD hidden" +msgstr "" + +#: src/client/gameui.cpp +#, c-format +msgid "Profiler shown (page %d of %d)" +msgstr "" + +#: src/client/gameui.cpp +msgid "Profiler hidden" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "Middle Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "X Button 1" +msgstr "" + +#: src/client/keycode.cpp +msgid "X Button 2" +msgstr "" + +#: src/client/keycode.cpp +msgid "Backspace" +msgstr "" + +#: src/client/keycode.cpp +msgid "Tab" +msgstr "" + +#: src/client/keycode.cpp +msgid "Clear" +msgstr "" + +#: src/client/keycode.cpp +msgid "Return" +msgstr "" + +#: src/client/keycode.cpp +msgid "Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Control" +msgstr "" + +#. ~ Key name, common on Windows keyboards +#: src/client/keycode.cpp +msgid "Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "Pause" +msgstr "" + +#: src/client/keycode.cpp +msgid "Caps Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Space" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page up" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page down" +msgstr "" + +#: src/client/keycode.cpp +msgid "End" +msgstr "" + +#: src/client/keycode.cpp +msgid "Home" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Left" +msgstr "" + +#: src/client/keycode.cpp +msgid "Up" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Right" +msgstr "" + +#: src/client/keycode.cpp +msgid "Down" +msgstr "" + +#. ~ Key name +#: src/client/keycode.cpp +msgid "Select" +msgstr "" + +#. ~ "Print screen" key +#: src/client/keycode.cpp +msgid "Print" +msgstr "" + +#: src/client/keycode.cpp +msgid "Execute" +msgstr "" + +#: src/client/keycode.cpp +msgid "Snapshot" +msgstr "" + +#: src/client/keycode.cpp +msgid "Insert" +msgstr "" + +#: src/client/keycode.cpp +msgid "Help" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 0" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 2" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 3" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 4" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 5" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 6" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 7" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 8" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 9" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad *" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad +" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad ." +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad -" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad /" +msgstr "" + +#: src/client/keycode.cpp +msgid "Num Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Scroll Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Control" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Control" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Escape" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Convert" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Nonconvert" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Accept" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Mode Change" +msgstr "" + +#: src/client/keycode.cpp +msgid "Apps" +msgstr "" + +#: src/client/keycode.cpp +msgid "Sleep" +msgstr "" + +#: src/client/keycode.cpp +msgid "Erase EOF" +msgstr "" + +#: src/client/keycode.cpp +msgid "Play" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Zoom" +msgstr "" + +#: src/client/keycode.cpp +msgid "OEM Clear" +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp +#, c-format +msgid "" +"You are about to join this server with the name \"%s\" for the first time.\n" +"If you proceed, a new account using your credentials will be created on this " +"server.\n" +"Please retype your password and click 'Register and Join' to confirm account " +"creation, or click 'Cancel' to abort." +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp +msgid "Register and Join" +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp +msgid "Passwords do not match!" +msgstr "" + +#: src/gui/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "\"Special\" = climb down" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Double tap \"jump\" to toggle fly" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Automatic jumping" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Key already in use" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "press key" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Forward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Backward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Special" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Jump" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Sneak" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Drop" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inventory" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Prev. item" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Next item" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Change camera" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle minimap" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fly" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle pitchmove" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fast" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle noclip" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Mute" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. volume" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. volume" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Autoforward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Chat" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Screenshot" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Range select" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. range" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. range" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Console" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Command" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Local command" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle HUD" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle chat log" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fog" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Old Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "New Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Confirm Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Change" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Sound Volume: " +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Exit" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Muted" +msgstr "" + +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. +#: src/gui/modalMenu.cpp +msgid "Enter " +msgstr "" + +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). +#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp +msgid "LANG_CODE" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Build inside player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place blocks at the position (feet + eye level) where " +"you stand.\n" +"This is helpful when working with nodeboxes in small areas." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Flying" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Player is able to fly without being affected by gravity.\n" +"This requires the \"fly\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, makes move directions relative to the player's pitch when flying " +"or swimming." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast movement" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Fast movement (via the \"special\" key).\n" +"This requires the \"fast\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled together with fly mode, player is able to fly through solid " +"nodes.\n" +"This requires the \"noclip\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths camera when looking around. Also called look or mouse smoothing.\n" +"Useful for recording videos." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera in cinematic mode. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert vertical mouse movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity multiplier." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key for climbing/descending" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, \"special\" key instead of \"sneak\" key is used for climbing " +"down and\n" +"descending." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double tap jump for fly" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double-tapping the jump key toggles fly mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Always fly and fast" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If disabled, \"special\" key is used to fly fast if both fly and fast mode " +"are\n" +"enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rightclick repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated right clicks when holding the " +"right\n" +"mouse button." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically jump up single-node obstacles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Safe digging and placing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prevent digging and placing from repeating when holding the mouse buttons.\n" +"Enable this when you dig or place too often by accident." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Random input" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random user input (only used for testing)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Continuous forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Continuous forward movement, toggled by autoforward key.\n" +"Press the autoforward key again or the backwards movement to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touch screen threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The length in pixels it takes for touch screen interaction to start." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed virtual joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(Android) Fixes the position of virtual joystick.\n" +"If disabled, virtual joystick will center to first-touch's position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Virtual joystick triggers aux button" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(Android) Use virtual joystick to trigger \"aux\" button.\n" +"If enabled, virtual joystick will also tap \"aux\" button when out of main " +"circle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable joysticks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick ID" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The identifier of the joystick to use" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The type of joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick button repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated events\n" +"when holding down a joystick button combination." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick frustum sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The sensitivity of the joystick axes for moving the\n" +"ingame view frustum around." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player forward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Backward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player backward.\n" +"Will also disable autoforward, when active.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Left key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player left.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Right key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player right.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for jumping.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneak key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for sneaking.\n" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the inventory.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving fast in fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Command key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type local commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Range select key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling unlimited view range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fly key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling flying.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling pitch move mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling noclip mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar next key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the next item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar previous key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the previous item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for muting the game.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inc. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dec. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatic forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling autoforward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling cinematic mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling display of minimap.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for taking screenshots.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Drop item key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for dropping the currently selected item.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View zoom key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key to use view zoom when possible.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 1 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the first hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 2 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the second hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 3 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the third hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 4 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fourth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 5 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fifth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 6 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the sixth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 7 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the seventh hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 8 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the eighth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 9 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the ninth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 10 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the tenth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 11 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 11th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 12 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 12th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 13 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 13th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 14 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 14th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 15 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 15th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 16 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 16th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 17 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 17th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 18 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 18th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 19 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 19th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 20 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 20th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 21 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 21st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 22 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 22nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 23 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 23rd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 24 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 24th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 25 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 25th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 26 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 26th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 27 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 27th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 28 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 28th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 29 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 29th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 30 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 30th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 31 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 31st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 32 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 32nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the HUD.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of chat.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large chat console key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the large chat console.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of fog.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera update toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the camera update. Only used for development\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug info toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of debug info.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the profiler. Used for development.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for switching between first- and third-person camera.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range increase key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range decrease key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Graphics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-Game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable vertex buffer objects.\n" +"This should greatly improve graphics performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to fog out the end of the visible area." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces, if defined special_tiles are used\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect glass" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connects glass if supported by node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooth lighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable smooth lighting with simple ambient occlusion.\n" +"Disable for speed or for different looks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds are a client side effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use 3D cloud look instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Digging particles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Adds particles when digging a node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use mip mapping to scale textures. May slightly increase performance,\n" +"especially when using a high resolution texture pack.\n" +"Gamma correct downscaling is not supported." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anisotropic filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use anisotropic filtering when viewing at textures from an angle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use trilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clean transparent textures" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Filtered textures can blend RGB values with fully-transparent neighbors,\n" +"which PNG optimizers usually discard, sometimes resulting in a dark or\n" +"light edge to transparent textures. Apply this filter to clean that up\n" +"at texture load time." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum texture size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" +"can be blurred, so automatically upscale them with nearest-neighbor\n" +"interpolation to preserve crisp pixels. This sets the minimum texture size\n" +"for the upscaled textures; higher values look sharper, but require more\n" +"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n" +"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" +"enabled.\n" +"This is also used as the base node texture size for world-aligned\n" +"texture autoscaling." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FSAA" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Experimental option, might cause visible spaces between blocks\n" +"when set to higher number than 0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Undersampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Undersampling is similar to using a lower screen resolution, but it applies\n" +"to the game world only, keeping the GUI intact.\n" +"It should give a significant performance boost at the cost of less detailed " +"image.\n" +"Higher values result in a less detailed image." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shaders allow advanced visual effects and may increase performance on some " +"video\n" +"cards.\n" +"This only works with the OpenGL video backend." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shader path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to shader directory. If no path is defined, default location will be " +"used." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables Hable's 'Uncharted 2' filmic tone mapping.\n" +"Simulates the tone curve of photographic film and how this approximates the\n" +"appearance of high dynamic range images. Mid-range contrast is slightly\n" +"enhanced, highlights and shadows are gradually compressed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bumpmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables bumpmapping for textures. Normalmaps need to be supplied by the " +"texture pack\n" +"or need to be auto-generated.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Generate normalmaps" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables on the fly normalmap generation (Emboss effect).\n" +"Requires bumpmapping to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of generated normalmaps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps sampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Defines sampling step of texture.\n" +"A higher value results in smoother normal maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables parallax occlusion mapping.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of parallax occlusion iterations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall scale of parallax occlusion effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion bias" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall bias of parallax occlusion effect, usually scale/2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving Nodes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving liquids (like water).\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The maximum height of the surface of waving liquids.\n" +"4.0 = Wave height is two nodes.\n" +"0.0 = Wave doesn't move at all.\n" +"Default is 1.0 (1/2 node).\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wavelength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of liquid waves.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How fast liquid waves will move. Higher = faster.\n" +"If negative, liquid waves will move backwards.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving leaves" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving leaves.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving plants" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving plants.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Advanced" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Arm inertia" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Arm inertia, gives a more realistic movement of\n" +"the arm when the camera moves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If FPS would go higher than this, limit it by sleeping\n" +"to not waste CPU power for no benefit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS in pause menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS when game is paused." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pause on lost window focus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Open the pause menu when the window's focus is lost. Does not pause if a " +"formspec is\n" +"open." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Viewing range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View distance in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Near plane" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" +"Increasing can reduce artifacting on weaker GPUs.\n" +"0.1 = Default, 0.25 = Good value for weaker tablets." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autosave screen size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save window size automatically when modified." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen BPP" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bits per pixel (aka color depth) in fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VSync" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical screen synchronization." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view in degrees." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Alters the light curve by applying 'gamma correction' to it.\n" +"Higher values make middle and lower light levels brighter.\n" +"Value '1.0' leaves the light curve unaltered.\n" +"This only has significant effect on daylight and artificial\n" +"light, it has very little effect on natural night light." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve low gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at minimum light level.\n" +"Controls the contrast of the lowest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve high gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at maximum light level.\n" +"Controls the contrast of the highest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Strength of light curve boost.\n" +"The 3 'boost' parameters define a range of the light\n" +"curve that is boosted in brightness." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost center" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Center of light curve boost range.\n" +"Where 0.0 is minimum light level, 1.0 is maximum light level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost spread" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Spread of light curve boost range.\n" +"Controls the width of the range to be boosted.\n" +"Standard deviation of the light curve boost Gaussian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to texture directory. All textures are first searched from here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Video driver" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The rendering back-end for Irrlicht.\n" +"A restart is required after changing this.\n" +"Note: On Android, stick with OGLES1 if unsure! App may fail to start " +"otherwise.\n" +"On other platforms, OpenGL is recommended, and it’s the only driver with\n" +"shader support currently." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cloud radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Radius of cloud area stated in number of 64 node cloud squares.\n" +"Values larger than 26 will start to produce sharp cutoffs at cloud area " +"corners." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable view bobbing and amount of view bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fall bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Multiplier for fall bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D support.\n" +"Currently supported:\n" +"- none: no 3d output.\n" +"- anaglyph: cyan/magenta color 3d.\n" +"- interlaced: odd/even line based polarisation screen support.\n" +"- topbottom: split screen top/bottom.\n" +"- sidebyside: split screen side by side.\n" +"- crossview: Cross-eyed 3d\n" +"- pageflip: quadbuffer based 3d.\n" +"Note that the interlaced mode requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D mode parallax strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box border color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selection box lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Recent Chat Messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of recent chat messages to show" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desynchronize block animation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether node texture animations should be desynchronized per mapblock." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum hotbar width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum proportion of current window to be used for hotbar.\n" +"Useful if there's something to be displayed right or left of hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD scale factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modifies the size of the hudbar elements." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mesh cache" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables caching of facedir rotated meshes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generation delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Delay between mesh updates on the client in ms. Increasing this will slow\n" +"down the rate of mesh updates, thus reducing jitter on slower clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generator's MapBlock cache size in MB" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of the MapBlock cache of the mesh generator. Increasing this will\n" +"increase the cache hit %, reducing the data being copied from the main\n" +"thread, thus reducing jitter." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables minimap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Round minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shape of the minimap. Enabled = round, disabled = square." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"True = 256\n" +"False = 128\n" +"Usable to make minimap smoother on slower machines." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Colored fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ambient occlusion gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The strength (darkness) of node ambient-occlusion shading.\n" +"Lower is darker, Higher is lighter. The valid range of values for this\n" +"setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" +"set to the nearest valid value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog start" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fraction of the visible distance at which fog starts to be rendered" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Opaque liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes all liquids opaque" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World-aligned textures mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Textures on a node may be aligned either to the node or to the world.\n" +"The former mode suits better things like machines, furniture, etc., while\n" +"the latter makes stairs and microblocks fit surroundings better.\n" +"However, as this possibility is new, thus may not be used by older servers,\n" +"this option allows enforcing it for certain node types. Note though that\n" +"that is considered EXPERIMENTAL and may not work properly." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autoscaling mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World-aligned textures may be scaled to span several nodes. However,\n" +"the server may not send the scale you want, especially if you use\n" +"a specially-designed texture pack; with this option, the client tries\n" +"to determine the scale automatically basing on the texture size.\n" +"See also texture_min_size.\n" +"Warning: This option is EXPERIMENTAL!" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Menus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Scale GUI by a user specified value.\n" +"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" +"This will smooth over some of the rough edges, and blend\n" +"pixels when scaling down, at the cost of blurring some\n" +"edge pixels when images are scaled by non-integer sizes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter is true, all GUI images need to be\n" +"filtered in software, but some images are generated directly\n" +"to hardware (e.g. render-to-texture for nodes in inventory)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter txr2img" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter_txr2img is true, copy those images\n" +"from hardware to software for scaling. When false, fall back\n" +"to the old scaling method, for video drivers that don't\n" +"properly support downloading textures back from hardware." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay showing tooltips, stated in milliseconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Append item name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Append item name to tooltip." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FreeType fonts" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether FreeType fonts are used, requires FreeType support to be compiled " +"in.\n" +"If disabled, bitmap and XML vectors fonts are used instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font bold by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font italic by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shadow offset (in pixels) of the default font. If 0, then shadow will not be " +"drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the default font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Regular font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the default font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"The fallback font will be used if the font cannot be loaded." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the monospace font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the monospace font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font is used for e.g. the console and profiler screen." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the fallback font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " +"be drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path of the fallback font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font will be used for certain languages or if the default font is " +"unavailable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot folder" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "DPI" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " +"screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable console window" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Windows systems only: Start Minetest with the command line window in the " +"background.\n" +"Contains the same information as the file debug.txt (default name)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables the sound system.\n" +"If disabled, this completely disables all sounds everywhere and the in-game\n" +"sound controls will be non-functional.\n" +"Changing this setting requires a restart." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volume" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Volume of all sounds.\n" +"Requires the sound system to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to mute sounds. You can unmute sounds at any time, unless the\n" +"sound system is disabled (enable_sound=false).\n" +"In-game, you can toggle the mute state with the mute key or by using the\n" +"pause menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Network" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Address to connect to.\n" +"Leave this blank to start a local server.\n" +"Note that the address field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Port to connect to (UDP).\n" +"Note that the port field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Saving map received from server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save the map received by the client on disk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect to external media server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable usage of remote media server (if provided by server).\n" +"Remote servers offer a significantly faster way to download media (e.g. " +"textures)\n" +"when connecting to the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client modding" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable Lua modding support on client.\n" +"This support is experimental and API can change." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "URL to the server list displayed in the Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist file" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"File in client/serverlist/ that contains your favorite servers displayed in " +"the\n" +"Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum size of the out chat queue" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum size of the out chat queue.\n" +"0 to disable queueing and -1 to make the queue size unlimited." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable register confirmation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable register confirmation when connecting to server.\n" +"If disabled, new account will be registered automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock unload timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Timeout for client to remove unused map data from memory." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of mapblocks for client to be kept in memory.\n" +"Set to -1 for unlimited amount." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show debug info" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server / Singleplayer" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the server, to be displayed when players join and in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server description" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Description of server, to be displayed when players join and in the " +"serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Domain name of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Homepage of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically report to the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce to this serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strip color codes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Remove color codes from incoming chat messages\n" +"Use this to stop players from being able to use color in their messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Network port to listen (UDP).\n" +"This value will be overridden when starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bind address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The network interface that the server listens on." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strict protocol checking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable to disallow old clients from connecting.\n" +"Older clients are compatible in the sense that they will not crash when " +"connecting\n" +"to new servers, but they may not support all new features that you are " +"expecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies URL from which client fetches media instead of using UDP.\n" +"$filename should be accessible from $remote_media$filename via cURL\n" +"(obviously, remote_media should end with a slash).\n" +"Files that are not present will be fetched the usual way." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6 server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable/disable running an IPv6 server.\n" +"Ignored if bind_address is set.\n" +"Needs enable_ipv6 to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum simultaneous block sends per client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks that are simultaneously sent per client.\n" +"The maximum total count is calculated dynamically:\n" +"max_total = ceil((#clients + max_users) * per_client / 4)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay in sending blocks after building" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"To reduce lag, block transfers are slowed down when a player is building " +"something.\n" +"This determines how long they are slowed down after placing or removing a " +"node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. packets per iteration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step, if you have a slow connection\n" +"try reducing it, but don't reduce it to a number below double of targeted\n" +"client number." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default game when creating a new world.\n" +"This will be overridden when creating a world from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day displayed to players connecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum users" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of players that can be connected simultaneously." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map directory" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World directory (everything in the world is stored here).\n" +"Not needed if starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Item entity TTL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Time in seconds for item entity (dropped items) to live.\n" +"Setting it to -1 disables the feature." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default stack size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Damage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable players getting damage and dying." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Creative" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable creative mode for new created maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed map seed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"A chosen map seed for a new map, leave empty for random.\n" +"Will be overridden when creating a new world in the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default password" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "New users need to input this password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The privileges that new users automatically get.\n" +"See /privs in game for a full list on your server and mod configuration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unlimited player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether players are shown to clients without any range limit.\n" +"Deprecated, use the setting player_transfer_distance instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player versus player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to allow players to damage and kill each other." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mod channels" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod channels support." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Static spawnpoint" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If this is set, players will always (re)spawn at the given position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disallow empty passwords" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, new players cannot join with an empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable anticheat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, disable cheat prevention in multiplayer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rollback recording" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, actions are recorded for rollback.\n" +"This option is only read when server starts." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Format of player chat messages. The following strings are valid " +"placeholders:\n" +"@name, @message, @timestamp (optional)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shutdown message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server shuts down." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crash message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server crashes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ask to reconnect after crash" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to ask clients to reconnect after a (Lua) crash.\n" +"Set this to true if your server is set up to restart automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active object send range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far clients know about objects, stated in mapblocks (16 nodes).\n" +"\n" +"Setting this larger than active_block_range will also cause the server\n" +"to maintain active objects up to this distance in the direction the\n" +"player is looking. (This can avoid mobs suddenly disappearing from view)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The radius of the volume of blocks around every player that is subject to " +"the\n" +"active block stuff, stated in mapblocks (16 nodes).\n" +"In active blocks objects are loaded and ABMs run.\n" +"This is also the minimum range in which active objects (mobs) are " +"maintained.\n" +"This should be configured together with active_object_send_range_blocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block send distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are sent to clients, stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum forceloaded blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of forceloaded mapblocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time send interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of sending time of day to clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls length of day/night cycle.\n" +"Examples:\n" +"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World start time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time of day when a new world is started, in millihours (0-23999)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map save interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of saving important changes in the world, stated in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message max length" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set the maximum character length of a chat message sent by clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message count limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amount of messages a player may send per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message kick threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Kick players who sent more than X messages per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Physics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration on ground or when climbing,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration in air" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal acceleration in air when jumping or falling,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration in fast mode,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking and flying speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking, flying and climbing speed in fast mode, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Climbing speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical climbing speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Initial vertical speed when jumping, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease this to increase liquid resistance to movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum liquid resistance. Controls deceleration when entering liquid at\n" +"high speed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid sinking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls sinking speed in liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gravity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration of gravity, in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Deprecated Lua API handling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Handling for deprecated Lua API calls:\n" +"- legacy: (try to) mimic old behaviour (default for release).\n" +"- log: mimic and log backtrace of deprecated call (default for debug).\n" +"- error: abort on usage of deprecated call (suggested for mod developers)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. clearobjects extra blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of extra blocks that can be loaded by /clearobjects at once.\n" +"This is a trade-off between sqlite transaction overhead and\n" +"memory consumption (4096=100MB, as a rule of thumb)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unload unused server data" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How much the server will wait before unloading unused mapblocks.\n" +"Higher value is smoother, but will use more RAM." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum objects per block" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of statically stored objects in a block." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Synchronous SQLite" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dedicated server step" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick and the interval at which objects are generally " +"updated over\n" +"network." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between active block management cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ABM interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between Active Block Modifier (ABM) execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ignore world errors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, invalid world data won't cause the server to shut down.\n" +"Only enable this if you know what you are doing." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid loop max" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max liquids processed per step." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid queue purge time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time (in seconds) that the liquids queue may grow beyond processing\n" +"capacity until an attempt is made to decrease its size by dumping old queue\n" +"items. A value of 0 disables the functionality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update tick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update interval in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block send optimize distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"At this distance the server will aggressively optimize which blocks are sent " +"to\n" +"clients.\n" +"Small values potentially improve performance a lot, at the expense of " +"visible\n" +"rendering glitches (some blocks will not be rendered under water and in " +"caves,\n" +"as well as sometimes on land).\n" +"Setting this to a value greater than max_block_send_distance disables this\n" +"optimization.\n" +"Stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server side occlusion culling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled the server will perform map block occlusion culling based on\n" +"on the eye position of the player. This can reduce the number of blocks\n" +"sent to the client 50-80%. The client will not longer receive most " +"invisible\n" +"so that the utility of noclip mode is reduced." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side modding restrictions" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Restricts the access of certain client-side functions on servers.\n" +"Combine the byteflags below to restrict client-side features, or set to 0\n" +"for no restrictions:\n" +"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n" +"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n" +"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n" +"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n" +"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n" +"csm_restriction_noderange)\n" +"READ_PLAYERINFO: 32 (disable get_player_names call client-side)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side node lookup range restriction" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the CSM restriction for node range is enabled, get_node calls are " +"limited\n" +"to this distance from the player to the node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prevent mods from doing insecure things like running shell commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trusted mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of trusted mods that are allowed to access insecure\n" +"functions even when mod security is on (via request_insecure_environment())." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HTTP mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Load the game profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Load the game profiler to collect game profiling data.\n" +"Provides a /profiler command to access the compiled profile.\n" +"Useful for mod developers and server operators." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default report format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The default format in which profiles are being saved,\n" +"when calling `/profiler save [format]` without format." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Report path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The file path relative to your worldpath in which profiles will be saved to." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrumentation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Entity methods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument the methods of entities on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Active Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Loading Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Loading Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chatcommands" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument chatcommands on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Global callbacks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument global callback functions on registration.\n" +"(anything you pass to a minetest.register_*() function)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Builtin" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument builtin.\n" +"This is usually only needed by core/builtin contributors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Have the profiler instrument itself:\n" +"* Instrument an empty function.\n" +"This estimates the overhead, that instrumentation is adding (+1 function " +"call).\n" +"* Instrument the sampler being used to update the statistics." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client and Server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the player.\n" +"When running a server, clients connecting with this name are admins.\n" +"When starting from the main menu, this is overridden." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Language" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the language. Leave empty to use the system language.\n" +"A restart is required after changing this." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Level of logging to be written to debug.txt:\n" +"- (no logging)\n" +"- none (messages with no level)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log file size threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the file size of debug.txt exceeds the number of megabytes specified in\n" +"this setting when it is opened, the file is moved to debug.txt.1,\n" +"deleting an older debug.txt.1 if it exists.\n" +"debug.txt is only moved if this setting is positive." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable IPv6 support (for both client and server).\n" +"Required for IPv6 connections to work at all." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default timeout for cURL, stated in milliseconds.\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL parallel limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limits number of parallel HTTP requests. Affects:\n" +"- Media fetch if server uses remote_media setting.\n" +"- Serverlist download and server announcement.\n" +"- Downloads performed by main menu (e.g. mod manager).\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum time in ms a file download (e.g. a mod download) may take." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "High-precision FPU" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Changes the main menu UI:\n" +"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, " +"etc.\n" +"- Simple: One singleplayer world, no game or texture pack choosers. May " +"be\n" +"necessary for smaller screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu script" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Replaces the default main menu with a custom one." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Engine profiling data print interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Print the engine's profiling data in regular intervals (in seconds).\n" +"0 = disable. Useful for developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of map generator to be used when creating a new world.\n" +"Creating a world in the main menu will override this.\n" +"Current mapgens in a highly unstable state:\n" +"- The optional floatlands of v7 (disabled by default)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water surface level of the world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block generate distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are generated for clients, stated in mapblocks (16 " +"nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" +"Only mapchunks completely within the mapgen limit are generated.\n" +"Value is stored per-world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome API temperature and humidity noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Temperature variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale temperature variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale humidity variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen v5." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls width of tunnels, a smaller value creates wider tunnels.\n" +"Value >= 10.0 completely disables generation of tunnels and avoids the\n" +"intensive noise calculations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave proportion flooded" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Proportion of large caves that contain liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of cavern upper limit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern taper" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-distance over which caverns expand to full size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines full size of caverns, smaller values create larger caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of biome filler depth." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Factor noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Variation of terrain vertical scale.\n" +"When noise is < -0.55 terrain is near-flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of average terrain surface." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Second of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise that determines number of dungeons per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"The 'snowbiomes' flag enables the new 5 biome system.\n" +"When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" +"the 'jungles' flag is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desert noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Deserts occur when np_biome exceeds this value.\n" +"When the 'snowbiomes' flag is enabled, this is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sandy beaches occur when np_beach exceeds this value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain base noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of lower terrain and seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain higher noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of higher terrain that creates cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Steepness noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height select noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mud noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies depth of biome surface nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas with sandy beaches." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of number of caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines tree areas and tree density." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Apple trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas where trees have apples." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain zero level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y of mountain density gradient zero level. Used to shift mountains " +"vertically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Exponent of the floatland tapering. Alters the tapering behaviour.\n" +"Value = 1.0 creates a uniform, linear tapering.\n" +"Values > 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +#, c-format +msgid "" +"Adjusts the density of the floatland layer.\n" +"Increase value to increase density. Can be positive or negative.\n" +"Value = 0.0: 50% of volume is floatland.\n" +"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" +"to be sure) creates a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain alternative noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain persistence noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Varies roughness of terrain.\n" +"Defines the 'persistence' value for terrain_base and terrain_alt noises." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain and steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of maximum mountain height (in nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge underwater noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines large-scale river channel structure." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining mountain structure and height.\n" +"Also defines structure of floatland mountain terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining structure of river canyon walls." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining structure of floatlands.\n" +"If altered from the default, the noise 'scale' (0.7 by default) may need\n" +"to be adjusted, as floatland tapering functions best when this noise has\n" +"a value range of approximately -2.0 to 2.0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen Carpathian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the base ground level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the depth of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River valley width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river valley." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Second of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness3 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Third of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness4 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fourth of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rolling hills spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of rolling hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of ridged mountain ranges." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of step mountain ranges." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rolling hill size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of rolling hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridged mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of ridged mountains." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of step mountains." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that locates the river valleys and channels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain variation noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Flat.\n" +"Occasional lakes and hills can be added to the flat world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines location and terrain of optional hills and lakes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Fractal.\n" +"'terrain' enables the generation of non-fractal terrain:\n" +"ocean, islands and underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fractal type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Selects one of 18 fractal types.\n" +"1 = 4D \"Roundy\" Mandelbrot set.\n" +"2 = 4D \"Roundy\" Julia set.\n" +"3 = 4D \"Squarry\" Mandelbrot set.\n" +"4 = 4D \"Squarry\" Julia set.\n" +"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" Julia set.\n" +"7 = 4D \"Variation\" Mandelbrot set.\n" +"8 = 4D \"Variation\" Julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n" +"11 = 3D \"Christmas Tree\" Mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" Julia set.\n" +"13 = 3D \"Mandelbulb\" Mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" Julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" Julia set.\n" +"17 = 4D \"Mandelbulb\" Mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" Julia set." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Increasing this increases the amount of fine detail, but also\n" +"increases processing load.\n" +"At iterations = 20 this mapgen has a similar load to mapgen V7." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) scale of fractal in nodes.\n" +"Actual fractal size will be 2 to 3 times larger.\n" +"These numbers can be made very large, the fractal does\n" +"not have to fit inside the world.\n" +"Increase these to 'zoom' into the detail of the fractal.\n" +"Default is for a vertically-squashed shape suitable for\n" +"an island, set all 3 numbers equal for the raw shape." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" +"Can be used to move a desired point to (0, 0) to create a\n" +"suitable spawn point, or to allow 'zooming in' on a desired\n" +"point by increasing 'scale'.\n" +"The default is tuned for a suitable spawn point for Mandelbrot\n" +"sets with default parameters, it may need altering in other\n" +"situations.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slice w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"W coordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"X component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Y component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Z component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"W component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Seabed noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill': Reduces heat with altitude.\n" +"'humid_rivers': Increases humidity around rivers.\n" +"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n" +"to become shallower and occasionally dry.\n" +"'altitude_dry': Reduces humidity with altitude." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n" +"enabled. Also the vertical distance over which humidity drops by 10 if\n" +"'altitude_dry' is enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern upper limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How deep to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other biome filler node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base terrain height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n" +"WARNING!: There is no benefit, and there are several dangers, in\n" +"increasing this value above 5.\n" +"Reducing this value increases cave and dungeon density.\n" +"Altering this value is for special usage, leaving it unchanged is\n" +"recommended." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dump the mapgen debug information." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Absolute limit of queued blocks to emerge" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of blocks that can be queued for loading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be loaded from file.\n" +"This limit is enforced per player." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be generated.\n" +"This limit is enforced per player." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of emerge threads" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of emerge threads to use.\n" +"Value 0:\n" +"- Automatic selection. The number of emerge threads will be\n" +"- 'number of processors - 2', with a lower limit of 1.\n" +"Any other value:\n" +"- Specifies the number of emerge threads, with a lower limit of 1.\n" +"WARNING: Increasing the number of emerge threads increases engine mapgen\n" +"speed, but this may harm game performance by interfering with other\n" +"processes, especially in singleplayer and/or when running Lua code in\n" +"'on_generated'. For many users the optimum setting may be '1'." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Online Content Repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The URL for the content repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB Flag Blacklist" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of flags to hide in the content repository.\n" +"\"nonfree\" can be used to hide packages which do not qualify as 'free " +"software',\n" +"as defined by the Free Software Foundation.\n" +"You can also specify content ratings.\n" +"These flags are independent from Minetest versions,\n" +"so see a full list at https://content.minetest.net/help/content_flags/" +msgstr "" From b3867a4b4cbc88e9ca3a9772ea206dfe88e7b3b9 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 26 Jun 2020 15:57:52 +0000 Subject: [PATCH 391/424] Translated using Weblate (Czech) Currently translated at 55.7% (752 of 1350 strings) --- po/cs/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/cs/minetest.po b/po/cs/minetest.po index 6b6247b43..1f539fa1b 100644 --- a/po/cs/minetest.po +++ b/po/cs/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Czech (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-04-29 12:38+0000\n" -"Last-Translator: Roman Ondráček \n" +"PO-Revision-Date: 2020-06-27 20:41+0000\n" +"Last-Translator: Wuzzy \n" "Language-Team: Czech \n" "Language: cs\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.0.2\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1064,7 +1064,7 @@ msgstr "Uvedená cesta ke světu neexistuje: " #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "vyzaduje_fallback_font" +msgstr "" #: src/client/game.cpp msgid "" From fd9e7abf0e5c2ed39e08e9f44d198c49817f6c9b Mon Sep 17 00:00:00 2001 From: Agustin Calderon Date: Fri, 26 Jun 2020 19:45:56 +0000 Subject: [PATCH 392/424] Translated using Weblate (Spanish) Currently translated at 69.9% (944 of 1350 strings) --- po/es/minetest.po | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/po/es/minetest.po b/po/es/minetest.po index 33c55d55a..f0a5e38dd 100644 --- a/po/es/minetest.po +++ b/po/es/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Spanish (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-22 17:56+0000\n" -"Last-Translator: runs \n" +"PO-Revision-Date: 2020-07-06 21:41+0000\n" +"Last-Translator: Agustin Calderon \n" "Language-Team: Spanish \n" "Language: es\n" @@ -375,6 +375,8 @@ msgid "" "Structures appearing on the terrain (no effect on trees and jungle grass " "created by v6)" msgstr "" +"Estructuras generadas en el terreno (sin efecto en arboles y césped de " +"jungla creado por v6)" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" @@ -537,7 +539,7 @@ msgstr "El valor debe ser mayor o igual que $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must not be larger than $1." -msgstr "El valor no debe ser mayor que $1." +msgstr "El valor debe ser menor o igual que $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" @@ -4941,6 +4943,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"Tecla para hacer zoom cuando sea posible.\n" +"Ver http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Kick players who sent more than X messages per 10 seconds." @@ -4990,6 +4995,10 @@ msgid "" "- Simple: only outer faces, if defined special_tiles are used\n" "- Opaque: disable transparency" msgstr "" +"Estilo de hojas:\n" +"- Fabuloso: Todas las caras son visibles\n" +"- Simple: Solo caras externas, si se utilizan special_tiles definidos\n" +"- Opaco: Transparencia desactivada" #: src/settings_translation_file.cpp msgid "Left key" From e07090cd7e244eb989685738e84a2f5911ba09e6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 26 Jun 2020 15:57:16 +0000 Subject: [PATCH 393/424] Translated using Weblate (Dutch) Currently translated at 78.3% (1058 of 1350 strings) --- po/nl/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/nl/minetest.po b/po/nl/minetest.po index 7dd5096a8..e664d7260 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Dutch (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-18 13:41+0000\n" -"Last-Translator: Guus Seldenthuis \n" +"PO-Revision-Date: 2020-06-27 20:41+0000\n" +"Last-Translator: Wuzzy \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1066,7 +1066,7 @@ msgstr "Het gespecificeerde wereld-pad bestaat niet: " #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "needs_fallback_font" +msgstr "" #: src/client/game.cpp msgid "" From 63800fe843a38bd9a2fdeabf97cb542eb0866cad Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Fri, 26 Jun 2020 16:00:09 +0000 Subject: [PATCH 394/424] Translated using Weblate (Galician) Currently translated at 0.5% (7 of 1350 strings) --- po/gl/minetest.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/gl/minetest.po b/po/gl/minetest.po index 3f2d2cca9..5a7bd5785 100644 --- a/po/gl/minetest.po +++ b/po/gl/minetest.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-22 17:56+0000\n" -"Last-Translator: runs \n" +"PO-Revision-Date: 2020-06-27 20:41+0000\n" +"Last-Translator: Wuzzy \n" "Language-Team: Galician \n" "Language: gl\n" @@ -1885,7 +1885,7 @@ msgstr "" #. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" -msgstr "" +msgstr "gl" #: src/settings_translation_file.cpp msgid "Controls" From 38d0253b7e0472698499a87a461008231c1bd924 Mon Sep 17 00:00:00 2001 From: Agastya Date: Sun, 28 Jun 2020 20:52:10 +0000 Subject: [PATCH 395/424] Translated using Weblate (Hindi) Currently translated at 33.1% (448 of 1350 strings) --- po/hi/minetest.po | 51 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/po/hi/minetest.po b/po/hi/minetest.po index b83db4629..a45a5ae89 100644 --- a/po/hi/minetest.po +++ b/po/hi/minetest.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-05-02 07:11+0000\n" -"Last-Translator: Eyekay49 \n" +"PO-Revision-Date: 2020-06-29 07:53+0000\n" +"Last-Translator: Agastya \n" "Language-Team: Hindi \n" "Language: hi\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -29,7 +29,7 @@ msgstr "आपकी मौत हो गयी" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "Okay" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -119,7 +119,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "और मोड खोजें" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -224,7 +224,7 @@ msgstr "नया संस्करण इन्स्टाल करें" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "दृश्य" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -264,9 +264,8 @@ msgid "Create" msgstr "बनाइए" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Decorations" -msgstr "जानकारी :" +msgstr "सजावट" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" @@ -306,19 +305,19 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Humid rivers" -msgstr "" +msgstr "नम नदियाँ" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "नदियों के आसपास नमी बढ़ाता है" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "झीलें" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" -msgstr "" +msgstr "कम आर्द्रता और उच्च गर्मी की वजह से नदियाँ उथली या सूखी हो जाती है" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -334,15 +333,15 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" -msgstr "" +msgstr "पहाड़ों" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "कीचड़ का बहाव" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "सुरंगों और गुफाओं का नेटवर्क" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -350,24 +349,24 @@ msgstr "कोई खेल चूना नहीं गया है" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "ऊंचाई के साथ गर्मी कम करता है" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "ऊंचाई के साथ नमी कम करता है" #: builtin/mainmenu/dlg_create_world.lua msgid "Rivers" -msgstr "" +msgstr "नदियाँ" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "समुद्र तल की नदियाँ" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Seed" -msgstr "स्रोत" +msgstr "बीज" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" @@ -381,27 +380,27 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" -msgstr "" +msgstr "इलाके में दिखने वाली संरचनाएं, आमतौर पर पेड़-पौधे" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "शीतोष्ण, रेगिस्तान" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "शीतोष्ण, रेगिस्तान, जंगल" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "शीतोष्ण, रेगिस्तान, जंगल, टुंड्रा, तायगा" #: builtin/mainmenu/dlg_create_world.lua msgid "Terrain surface erosion" -msgstr "" +msgstr "इलाके की सतह का कटाव" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "पेड़ और जंगल की घास" #: builtin/mainmenu/dlg_create_world.lua msgid "Vary river depth" From 1e05ef180379082250bf68ecd3a49155e152089c Mon Sep 17 00:00:00 2001 From: "Yaya - Nurul Azeera Hidayah @ Muhammad Nur Hidayat Yasuyoshi" Date: Mon, 29 Jun 2020 03:26:12 +0000 Subject: [PATCH 396/424] Translated using Weblate (Malay (Jawi)) Currently translated at 7.4% (100 of 1350 strings) --- po/ms_Arab/minetest.po | 1330 ++++++++++++++++++++++++---------------- 1 file changed, 795 insertions(+), 535 deletions(-) diff --git a/po/ms_Arab/minetest.po b/po/ms_Arab/minetest.po index edbef7eb4..e7e4c7167 100644 --- a/po/ms_Arab/minetest.po +++ b/po/ms_Arab/minetest.po @@ -8,114 +8,118 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2020-07-08 20:47+0000\n" +"Last-Translator: Yaya - Nurul Azeera Hidayah @ Muhammad Nur Hidayat " +"Yasuyoshi \n" +"Language-Team: Malay (Jawi) \n" "Language: ms_Arab\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 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" -msgstr "" +msgstr "اندا تله منيڠݢل" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" -msgstr "" +msgstr "لاهير سمولا" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "OK" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "ڤلاين ڤرماءينن ممينت اندا اونتوق مڽمبوڠ سمولا:" #: builtin/fstk/ui.lua msgid "Reconnect" -msgstr "" +msgstr "سمبوڠ سمولا" #: builtin/fstk/ui.lua msgid "Main menu" -msgstr "" +msgstr "مينو اوتام" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" -msgstr "" +msgstr "برلاکوڽ رالت دالم سکريڤ Lua:" #: builtin/fstk/ui.lua msgid "An error occurred:" -msgstr "" +msgstr "تله برلاکوڽ رالت:" #: builtin/mainmenu/common.lua src/client/game.cpp msgid "Loading..." -msgstr "" +msgstr "سدڠ ممواتکن..." #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." -msgstr "" +msgstr "چوب اکتيفکن سمولا سناراي ڤلاين عوام فان ڤريقسا سمبوڠن اينترنيت اندا." #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "ڤلاين ڤرماءينن مڽوکوڠ ڤروتوکول ۏرسي $1 هيڠݢ $2. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "ڤلاين ڤرماءينن مڠواتکواساکن ڤروتوکول ۏرسي $1. " #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "کامي مڽوکوڠ ڤروتوکول ۏرسي $1 هيڠݢ $2." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "کامي هاڽ مڽوکوڠ ڤروتوکول ۏرسي $1." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "ۏرسي ڤروتوکول تيدق سراسي. " #: builtin/mainmenu/dlg_config_world.lua msgid "World:" -msgstr "" +msgstr "دنيا:" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "" +msgstr "تيادا ڤريهل ڤيک مودس ترسديا." #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr "" +msgstr "تيادا ڤريهل ڤرماءينن ترسديا." #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" -msgstr "" +msgstr "مودس:" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" -msgstr "" +msgstr "تيادا کبرݢنتوڠن (ڤيليهن)" #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" -msgstr "" +msgstr "تيادا کبرݢنتوڠن واجب" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "" +msgstr "کبرݢنتوڠن ڤيليهن:" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Dependencies:" -msgstr "" +msgstr "کبرݢنتوڠن:" #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" -msgstr "" +msgstr "تيادا کبرݢنتوڠن ڤيليهن" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp msgid "Save" -msgstr "" +msgstr "سيمڤن" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_delete_content.lua @@ -125,386 +129,392 @@ msgstr "" #: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp #: src/gui/guiPasswordChange.cpp msgid "Cancel" -msgstr "" +msgstr "باتل" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "چاري مودس لاءين" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "" +msgstr "لومڤوهکن ڤيک مودس" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "" +msgstr "بوليهکن ڤيک مودس" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" -msgstr "" +msgstr "دبوليهکن" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" -msgstr "" +msgstr "لومڤوهکن سموا" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "" +msgstr "ممبوليهکن سموا" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" +"ݢاݢل اونتوق ممبوليهکن مودس \"$1\" کران اي مڠندوڠي اکسارا يڠ تيدق دبنرکن. هاڽ " +"اکسارا [a-z0-9_] سهاج يڠ دبنرکن." #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "سيستم ContentDB تيدق ترسديا اڤابيلا Minetest دکومڤيل تنڤ cURL" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" -msgstr "" +msgstr "سموا ڤاکيج" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Games" -msgstr "" +msgstr "ڤرماءينن" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Mods" -msgstr "" +msgstr "مودس" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" -msgstr "" +msgstr "ڤيک تيکستور" #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" -msgstr "" +msgstr "ݢاݢل مموات تورون $1" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua msgid "Search" -msgstr "" +msgstr "چاري" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" -msgstr "" +msgstr "کمبالي کمينو اوتام" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" -msgstr "" +msgstr "تيادا حاصيل" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "" +msgstr "تيادا ڤاکيج يڠ بوليه دامبيل" #: builtin/mainmenu/dlg_contentstore.lua msgid "Downloading..." -msgstr "" +msgstr "مموات تورون..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Install" -msgstr "" +msgstr "ڤاسڠ" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update" -msgstr "" +msgstr "کمس کيني" #: builtin/mainmenu/dlg_contentstore.lua msgid "Uninstall" -msgstr "" +msgstr "ڽهڤاسڠ" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "ليهت" #: builtin/mainmenu/dlg_create_world.lua msgid "Caverns" -msgstr "" +msgstr "ݢوا بسر" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "ݢوا ݢرݢاسي يڠ ساڠت مندالم باواه تانه" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "سوڠاي ارس لاءوت" #: builtin/mainmenu/dlg_create_world.lua msgid "Rivers" -msgstr "" +msgstr "سوڠاي" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" -msgstr "" +msgstr "ݢونوڠ" #: builtin/mainmenu/dlg_create_world.lua msgid "Floatlands (experimental)" -msgstr "" +msgstr "تانه تراڤوڠ (دالم اوجيکاجي)" #: builtin/mainmenu/dlg_create_world.lua msgid "Floating landmasses in the sky" -msgstr "" +msgstr "جيسيم بومي تراڤوڠ اتس لاڠيت" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" -msgstr "" +msgstr "کديڠينن التيتود" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "کورڠکن هاب مڠيکوت التيتود" #: builtin/mainmenu/dlg_create_world.lua msgid "Altitude dry" -msgstr "" +msgstr "ککريڠن التيتود" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "کورڠکن کلمبڤن مڠيکوت التيتود" #: builtin/mainmenu/dlg_create_world.lua msgid "Humid rivers" -msgstr "" +msgstr "سوڠاي لمبڤ" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "تيڠکتکن کلمبڤن سکيتر سوڠاي" #: builtin/mainmenu/dlg_create_world.lua msgid "Vary river depth" -msgstr "" +msgstr "کدالمن سوڠاي برباݢاي" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" -msgstr "" +msgstr "کلمبڤن رنده دان هاب تيڠݢي مڽببکن سوڠاي چيتيق اتاو کريڠ" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "بوکيت" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "تاسيق" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "روڤ بومي تمبهن" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "جان روڤ بومي بوکن-فراکتل: لاءوتن دان باواه تانه" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "ڤوکوق دان رومڤوت هوتن" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "روڤ بومي رات" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "اليرن لومڤور" #: builtin/mainmenu/dlg_create_world.lua msgid "Terrain surface erosion" -msgstr "" +msgstr "هاکيسن ڤرموکاءن روڤ بومي" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "اقليم سدرهان⹁ ݢورون⹁ هوتن⹁ توندرا⹁ تايݢ" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "اقليم سدرهان⹁ ݢورون⹁ هوتن" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "اقليم سدرهان⹁ ݢورون" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no games installed." -msgstr "" +msgstr "اندا تيدق مماسڠ سبارڠ ڤرماءينن." #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "" +msgstr "موات تورون ساتو دري minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Caves" -msgstr "" +msgstr "ݢوا" #: builtin/mainmenu/dlg_create_world.lua msgid "Dungeons" -msgstr "" +msgstr "کوروڠن باواه تانه" #: builtin/mainmenu/dlg_create_world.lua msgid "Decorations" -msgstr "" +msgstr "هياسن" #: builtin/mainmenu/dlg_create_world.lua msgid "" "Structures appearing on the terrain (no effect on trees and jungle grass " "created by v6)" msgstr "" +"ستروکتور يڠ مونچول اتس روڤ بومي (تيادا کسن ڤد ڤوکوق دان رومڤوت هوتن دچيڤت " +"اوليه v6)" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" -msgstr "" +msgstr "ستروکتور يڠ مونچول اتس روڤ بومي⹁ بياساڽ ڤوکوق دان تومبوهن" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "جاريڠن تروووڠ دان ݢوا" #: builtin/mainmenu/dlg_create_world.lua msgid "Biomes" -msgstr "" +msgstr "بيوم" #: builtin/mainmenu/dlg_create_world.lua msgid "Biome blending" -msgstr "" +msgstr "ڤڽباتين بيوم" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "ڤراليهن لمبوت دانتارا بيوم" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen flags" -msgstr "" +msgstr "بنديرا جان ڤتا" #: builtin/mainmenu/dlg_create_world.lua msgid "Mapgen-specific flags" -msgstr "" +msgstr "بنديرا خصوص جان ڤتا" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The Development Test is meant for developers." -msgstr "" +msgstr "امرن: The Development Test هاڽله اونتوق کݢوناءن ڤمباڠون." #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "" +msgstr "موات تورون ڤرماءينن⹁ چونتوهڽ Minetest Game⹁ دري minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "World name" -msgstr "" +msgstr "نام دنيا" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Seed" -msgstr "" +msgstr "بنيه" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "" +msgstr "جاناءن ڤتا" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" -msgstr "" +msgstr "ڤرماءينن" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" -msgstr "" +msgstr "چيڤت" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" -msgstr "" +msgstr "دنيا برنام \"$1\" تله وجود" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" -msgstr "" +msgstr "تيادا ڤرماءينن دڤيليه" #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "" +msgstr "ادکه امدا ڤستي اندا ايڠين ممادم \"$1\"؟" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua #: src/client/keycode.cpp msgid "Delete" -msgstr "" +msgstr "ڤادم" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" -msgstr "" +msgstr "pkgmgr: ݢاݢل ممادم \"$1\"" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" -msgstr "" +msgstr "pkgmgr: لالوان تيدق صح \"$1\"" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" -msgstr "" +msgstr "ڤادم دنيا \"$1\"؟" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" -msgstr "" +msgstr "تريما" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" +"ڤيک مودس اين ممڤوڽاءي نام خصوص دبريکن دالم فايل modpack.conf ميليقڽ يڠ اکن " +"مڠاتسي سبارڠ ڤناماءن سمولا دسين." #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "" +msgstr "نامکن سمولا ڤيک مودس:" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Disabled" -msgstr "" +msgstr "دلومڤوهکن" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Enabled" -msgstr "" +msgstr "دبوليهکن" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Browse" -msgstr "" +msgstr "لاير" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" -msgstr "" +msgstr "اوفسيت" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" -msgstr "" +msgstr "سکال" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" -msgstr "" +msgstr "سيبرن X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" -msgstr "" +msgstr "سيبرن Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "" +msgstr "هيڠر 2D" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" -msgstr "" +msgstr "سيبرن Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Octaves" -msgstr "" +msgstr "اوکتف" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" -msgstr "" +msgstr "ڤنروسن" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Lacunarity" -msgstr "" +msgstr "لاکوناريتي" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options #. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" -msgstr "" +msgstr "لالاي" #. ~ "eased" is a noise parameter flag. #. It is used to make the map smoother and @@ -512,7 +522,7 @@ msgstr "" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" -msgstr "" +msgstr "تومڤول" #. ~ "absvalue" is a noise parameter flag. #. It is short for "absolute value". @@ -520,516 +530,516 @@ msgstr "" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" -msgstr "" +msgstr "نيلاي مطلق" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" -msgstr "" +msgstr "X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" -msgstr "" +msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" -msgstr "" +msgstr "Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" -msgstr "" +msgstr "(تيادا ڤريهل اونتوق تتڤن يڠ دبري)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." -msgstr "" +msgstr "سيلا ماسوقکن اينتيݢر يڠ صح." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must be at least $1." -msgstr "" +msgstr "نيلاي مستيله سکورڠ-کورڠڽ $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must not be larger than $1." -msgstr "" +msgstr "نيلاي مستيله تيدق لبيه درڤد $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid number." -msgstr "" +msgstr "سيلا ماسوقکن نومبور يڠ صح." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select directory" -msgstr "" +msgstr "ڤيليه ديريکتوري" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select file" -msgstr "" +msgstr "ڤيليه فايل" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" -msgstr "" +msgstr "< کمبالي کهلامن تتڤن" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Edit" -msgstr "" +msgstr "ايديت" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Restore Default" -msgstr "" +msgstr "ڤوليهکن تتڤن اصل" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Show technical names" -msgstr "" +msgstr "تونجوقکن نام تيکنيکل" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" -msgstr "" +msgstr "$1 (دبوليهکن)" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "" +msgstr "ݢاݢل مماسڠ $1 سباݢاي ڤيک تيکستور" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" -msgstr "" +msgstr "ݢاݢل مماسڠ $1 ڤد $2" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to find a valid mod or modpack" -msgstr "" +msgstr "تيدق جومڤ مودس اتاو ڤيک مودس يڠ صح" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a modpack as a $1" -msgstr "" +msgstr "ݢاݢل مماسڠ ڤيک مودس سباݢاي $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" -msgstr "" +msgstr "ڤاسڠ مودس: تيدق جومڤ نام فولدر يڠ سسواي اونتوق ڤيک مودس $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a mod as a $1" -msgstr "" +msgstr "ݢاݢل مماسڠ مودس سباݢاي $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" -msgstr "" +msgstr "ڤاسڠ مودس: ݢاݢل منچاري نام مودس سبنر اونتوق: $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" -msgstr "" +msgstr "ݢاݢل مماسڠ ڤرماءينن سباݢاي $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" -msgstr "" +msgstr "ڤاسڠ: فايل: \"$1\"" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" -msgstr "" +msgstr "ڤاسڠ: جنيس فايل \"$1\" تيدق دسوکوڠ اتاو ارکيب روسق" #: builtin/mainmenu/pkgmgr.lua msgid "$1 mods" -msgstr "" +msgstr "$1 مودس" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" -msgstr "" +msgstr "ڤاکيج دڤاسڠ:" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "" +msgstr "لايري کندوڠن دالم تالين" #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "" +msgstr "تيادا ڤريهل ڤاکيج ترسديا" #: builtin/mainmenu/tab_content.lua msgid "Rename" -msgstr "" +msgstr "نامکن سمولا" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "" +msgstr "تيادا کبرݢنتوڠن." #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" -msgstr "" +msgstr "لومڤوهکن ڤيک تيکستور" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" -msgstr "" +msgstr "ݢونا ڤيک تيکستور" #: builtin/mainmenu/tab_content.lua msgid "Information:" -msgstr "" +msgstr "معلومت:" #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" -msgstr "" +msgstr "ڽهڤاسڠ ڤاکيج" #: builtin/mainmenu/tab_content.lua msgid "Content" -msgstr "" +msgstr "کندوڠن" #: builtin/mainmenu/tab_credits.lua msgid "Credits" -msgstr "" +msgstr "ڤڠهرݢاءن" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "" +msgstr "ڤمباڠون تراس" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "" +msgstr "ڤڽومبڠ اکتيف" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "" +msgstr "ڤمباڠون تراس تردهولو" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "" +msgstr "ڤڽومبڠ تردهولو" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "ڤاسڠکن ڤرماءينن درڤد ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Configure" -msgstr "" +msgstr "کونفيݢوراسي" #: builtin/mainmenu/tab_local.lua msgid "New" -msgstr "" +msgstr "بوات بارو" #: builtin/mainmenu/tab_local.lua msgid "Select World:" -msgstr "" +msgstr "ڤيليه دنيا:" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative Mode" -msgstr "" +msgstr "مود کرياتيف" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Enable Damage" -msgstr "" +msgstr "بوليه چدرا" #: builtin/mainmenu/tab_local.lua msgid "Host Server" -msgstr "" +msgstr "هوس ڤلاين" #: builtin/mainmenu/tab_local.lua msgid "Host Game" -msgstr "" +msgstr "هوس ڤرماءينن" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" -msgstr "" +msgstr "اومومکن ڤلاين" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" -msgstr "" +msgstr "نام\\کات لالوان" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" -msgstr "" +msgstr "علامت ايکتن" #: builtin/mainmenu/tab_local.lua msgid "Port" -msgstr "" +msgstr "ڤورت" #: builtin/mainmenu/tab_local.lua msgid "Server Port" -msgstr "" +msgstr "ڤورت ڤلاين" #: builtin/mainmenu/tab_local.lua msgid "Play Game" -msgstr "" +msgstr "مولا ماءين" #: builtin/mainmenu/tab_local.lua msgid "No world created or selected!" -msgstr "" +msgstr "تيادا دنيا دچيڤت اتاو دڤيليه!" #: builtin/mainmenu/tab_local.lua msgid "Start Game" -msgstr "" +msgstr "مولاکن ڤرماءينن" #: builtin/mainmenu/tab_online.lua msgid "Address / Port" -msgstr "" +msgstr "علامت \\ ڤورت" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Name / Password" -msgstr "" +msgstr "نام \\ کات لالوان" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Connect" -msgstr "" +msgstr "سمبوڠ" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Del. Favorite" -msgstr "" +msgstr "ڤادم کݢمرن" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Favorite" -msgstr "" +msgstr "کݢمرن" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Ping" -msgstr "" +msgstr "ڤيڠ" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative mode" -msgstr "" +msgstr "مود کرياتيف" #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "Damage enabled" -msgstr "" +msgstr "بوليه چدرا" #. ~ PvP = Player versus Player #: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua msgid "PvP enabled" -msgstr "" +msgstr "بوليه برلاوان PvP" #: builtin/mainmenu/tab_online.lua msgid "Join Game" -msgstr "" +msgstr "سرتاءي ڤرماءينن" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Leaves" -msgstr "" +msgstr "داون لݢڤ" #: builtin/mainmenu/tab_settings.lua msgid "Simple Leaves" -msgstr "" +msgstr "داون ريڠکس" #: builtin/mainmenu/tab_settings.lua msgid "Fancy Leaves" -msgstr "" +msgstr "داون براݢم" #: builtin/mainmenu/tab_settings.lua msgid "Node Outlining" -msgstr "" +msgstr "کرڠک نود" #: builtin/mainmenu/tab_settings.lua msgid "Node Highlighting" -msgstr "" +msgstr "تونجولن نود" #: builtin/mainmenu/tab_settings.lua msgid "None" -msgstr "" +msgstr "تيادا" #: builtin/mainmenu/tab_settings.lua msgid "No Filter" -msgstr "" +msgstr "تيادا تاڤيسن" #: builtin/mainmenu/tab_settings.lua msgid "Bilinear Filter" -msgstr "" +msgstr "ڤناڤيسن بيلينيار" #: builtin/mainmenu/tab_settings.lua msgid "Trilinear Filter" -msgstr "" +msgstr "ڤناڤيسن تريلينيار" #: builtin/mainmenu/tab_settings.lua msgid "No Mipmap" -msgstr "" +msgstr "تيادا ڤتا ميڤ" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap" -msgstr "" +msgstr "ڤتا ميڤ" #: builtin/mainmenu/tab_settings.lua msgid "Mipmap + Aniso. Filter" -msgstr "" +msgstr "ڤتا ميڤ + ڤناڤيسن انيسو" #: builtin/mainmenu/tab_settings.lua msgid "2x" -msgstr "" +msgstr "2x" #: builtin/mainmenu/tab_settings.lua msgid "4x" -msgstr "" +msgstr "4x" #: builtin/mainmenu/tab_settings.lua msgid "8x" -msgstr "" +msgstr "8x" #: builtin/mainmenu/tab_settings.lua msgid "Are you sure to reset your singleplayer world?" -msgstr "" +msgstr "اداکه اندا ماهو سيت سمولا دنيا ڤماءين ڤرساورڠن؟" #: builtin/mainmenu/tab_settings.lua msgid "Yes" -msgstr "" +msgstr "ياء" #: builtin/mainmenu/tab_settings.lua msgid "No" -msgstr "" +msgstr "تيدق" #: builtin/mainmenu/tab_settings.lua msgid "Smooth Lighting" -msgstr "" +msgstr "ڤنچهاياءن لمبوت" #: builtin/mainmenu/tab_settings.lua msgid "Particles" -msgstr "" +msgstr "ڤرتيکل" #: builtin/mainmenu/tab_settings.lua msgid "3D Clouds" -msgstr "" +msgstr "اوان 3D" #: builtin/mainmenu/tab_settings.lua msgid "Opaque Water" -msgstr "" +msgstr "اءير لݢڤ" #: builtin/mainmenu/tab_settings.lua msgid "Connected Glass" -msgstr "" +msgstr "کاچ برسمبوڠن" #: builtin/mainmenu/tab_settings.lua msgid "Texturing:" -msgstr "" +msgstr "جالينن:" #: builtin/mainmenu/tab_settings.lua msgid "Antialiasing:" -msgstr "" +msgstr "انتيالياس:" #: builtin/mainmenu/tab_settings.lua msgid "Screen:" -msgstr "" +msgstr "سکرين:" #: builtin/mainmenu/tab_settings.lua msgid "Autosave Screen Size" -msgstr "" +msgstr "اءوتوسيمڤن سايز سکرين" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Shaders" -msgstr "" +msgstr "ڤمبايڠ" #: builtin/mainmenu/tab_settings.lua msgid "Shaders (unavailable)" -msgstr "" +msgstr "ڤمبايڠ (تيدق ترسديا)" #: builtin/mainmenu/tab_settings.lua msgid "Reset singleplayer world" -msgstr "" +msgstr "سيت سمولا دنيا ڤماءين ڤرساورڠن" #: builtin/mainmenu/tab_settings.lua src/client/game.cpp msgid "Change Keys" -msgstr "" +msgstr "توکر ککونچي" #: builtin/mainmenu/tab_settings.lua msgid "All Settings" -msgstr "" +msgstr "سموا تتڤن" #: builtin/mainmenu/tab_settings.lua msgid "Touchthreshold: (px)" -msgstr "" +msgstr "نيلاي امبڠ سنتوهن: (px)" #: builtin/mainmenu/tab_settings.lua msgid "Bump Mapping" -msgstr "" +msgstr "ڤمتاءن بيڠݢول" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Tone Mapping" -msgstr "" +msgstr "ڤمتاءن تونا" #: builtin/mainmenu/tab_settings.lua msgid "Generate Normal Maps" -msgstr "" +msgstr "جان ڤتا نورمل" #: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp msgid "Parallax Occlusion" -msgstr "" +msgstr "اوکلوسي ڤارالکس" #: builtin/mainmenu/tab_settings.lua msgid "Waving Liquids" -msgstr "" +msgstr "چچاءير برݢلورا" #: builtin/mainmenu/tab_settings.lua msgid "Waving Leaves" -msgstr "" +msgstr "داءون برݢويڠ" #: builtin/mainmenu/tab_settings.lua msgid "Waving Plants" -msgstr "" +msgstr "تومبوهن برݢويڠ" #: builtin/mainmenu/tab_settings.lua msgid "To enable shaders the OpenGL driver needs to be used." -msgstr "" +msgstr "اونتوق ممبوليهکن ڤمبايڠ⹁ ڤماچو OpenGL مستي دݢوناکن." #: builtin/mainmenu/tab_settings.lua msgid "Settings" -msgstr "" +msgstr "تتڤن" #: builtin/mainmenu/tab_simple_main.lua msgid "Start Singleplayer" -msgstr "" +msgstr "مولا ماءين ساورڠ" #: builtin/mainmenu/tab_simple_main.lua msgid "Config mods" -msgstr "" +msgstr "کونفيݢوراسي مودس" #: builtin/mainmenu/tab_simple_main.lua msgid "Main" -msgstr "" +msgstr "اوتام" #: src/client/client.cpp msgid "Connection timed out." -msgstr "" +msgstr "سمبوڠن تامت تيمڤوه." #: src/client/client.cpp msgid "Loading textures..." -msgstr "" +msgstr "سدڠ ممواتکن تيکستور..." #: src/client/client.cpp msgid "Rebuilding shaders..." -msgstr "" +msgstr "سدڠ ممبينا سمولا ڤمبايڠ..." #: src/client/client.cpp msgid "Initializing nodes..." -msgstr "" +msgstr "سدڠ مڠاولکن نود..." #: src/client/client.cpp msgid "Initializing nodes" -msgstr "" +msgstr "مڠاولکن نود" #: src/client/client.cpp msgid "Done!" -msgstr "" +msgstr "سلساي!" #: src/client/clientlauncher.cpp msgid "Main Menu" -msgstr "" +msgstr "مينو اوتام" #: src/client/clientlauncher.cpp msgid "Player name too long." -msgstr "" +msgstr "نام ڤماءين ترلالو ڤنجڠ." #: src/client/clientlauncher.cpp msgid "Connection error (timed out?)" -msgstr "" +msgstr "رالت دالم ڤڽمبوڠن (تامت تيمڤوه؟)" #: src/client/clientlauncher.cpp msgid "Provided password file failed to open: " -msgstr "" +msgstr "فايل کات لالوان يڠ دسدياکن ݢاݢل دبوک: " #: src/client/clientlauncher.cpp msgid "Please choose a name!" -msgstr "" +msgstr "سيلا ڤيليه سواتو نام!" #: src/client/clientlauncher.cpp msgid "No world selected and no address provided. Nothing to do." -msgstr "" +msgstr "تيادا دنيا دڤيليه اتاو تيادا علامت دبري. تيادا اڤ بوليه دلاکوکن." #: src/client/clientlauncher.cpp msgid "Provided world path doesn't exist: " -msgstr "" +msgstr "لالوان دنيا دبري تيدق وجود: " #: src/client/clientlauncher.cpp msgid "Could not find or load game \"" -msgstr "" +msgstr "تيدق جومڤ اتاو تيدق بوليه مواتکن ڤرماءينن \"" #: src/client/clientlauncher.cpp msgid "Invalid gamespec." -msgstr "" +msgstr "سڤيسيفيکاسي ڤرماءينن تيدق صح." #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string. Put either "no" or "yes" @@ -1041,231 +1051,231 @@ msgstr "" #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "yes" #: src/client/game.cpp msgid "Shutting down..." -msgstr "" +msgstr "سدڠ منوتوڤ..." #: src/client/game.cpp msgid "Creating server..." -msgstr "" +msgstr "سدڠ منچيڤت ڤلاين..." #: src/client/game.cpp msgid "Creating client..." -msgstr "" +msgstr "سدڠ منچيڤت کليئن..." #: src/client/game.cpp msgid "Resolving address..." -msgstr "" +msgstr "سدڠ مڽلسايکن علامت..." #: src/client/game.cpp msgid "Connecting to server..." -msgstr "" +msgstr "سدڠ مڽمبوڠ کڤد ڤلاين..." #: src/client/game.cpp msgid "Item definitions..." -msgstr "" +msgstr "سدڠ منتعريفکن ايتم..." #: src/client/game.cpp msgid "Node definitions..." -msgstr "" +msgstr "سدڠ منتعريفکن نود..." #: src/client/game.cpp msgid "Media..." -msgstr "" +msgstr "سدڠ ممواتکن ميديا..." #: src/client/game.cpp msgid "KiB/s" -msgstr "" +msgstr "KiB/s" #: src/client/game.cpp msgid "MiB/s" -msgstr "" +msgstr "MiB/s" #: src/client/game.cpp msgid "Client side scripting is disabled" -msgstr "" +msgstr "سکريڤ ڤيهق کليئن دلومڤوهکن" #: src/client/game.cpp msgid "Sound muted" -msgstr "" +msgstr "بوڽي دبيسوکن" #: src/client/game.cpp msgid "Sound unmuted" -msgstr "" +msgstr "بوڽي دڽهبيسوکن" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "سيستم بوڽي دلومڤوهکن" #: src/client/game.cpp #, c-format msgid "Volume changed to %d%%" -msgstr "" +msgstr "ککواتن بوڽي داوبه کڤد %d%%" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "" +msgstr "سيستم بوڽي تيدق دسوکوڠ دبيناءن اين" #: src/client/game.cpp msgid "ok" -msgstr "" +msgstr "اوکي" #: src/client/game.cpp msgid "Fly mode enabled" -msgstr "" +msgstr "مود تربڠ دبوليهکن" #: src/client/game.cpp msgid "Fly mode enabled (note: no 'fly' privilege)" -msgstr "" +msgstr "مود تربڠ دبوليهکن (نوت: تيادا کأيستيميواءن 'تربڠ')" #: src/client/game.cpp msgid "Fly mode disabled" -msgstr "" +msgstr "مود تربڠ دلومڤوهکن" #: src/client/game.cpp msgid "Pitch move mode enabled" -msgstr "" +msgstr "مود ڤرݢرقن ڤيچ دبوليهکن" #: src/client/game.cpp msgid "Pitch move mode disabled" -msgstr "" +msgstr "مود ڤرݢرقن ڤيچ دلومڤوهکن" #: src/client/game.cpp msgid "Fast mode enabled" -msgstr "" +msgstr "مود ڤرݢرقن ڤنتس دبوليهکن" #: src/client/game.cpp msgid "Fast mode enabled (note: no 'fast' privilege)" -msgstr "" +msgstr "مود ڤرݢرقن ڤنتس دبوليهکن (نوت: تيادا کأيستيميواءن 'ڤرݢرقن ڤنتس')" #: src/client/game.cpp msgid "Fast mode disabled" -msgstr "" +msgstr "مود ڤرݢرقن ڤنتس دلومڤوهکن" #: src/client/game.cpp msgid "Noclip mode enabled" -msgstr "" +msgstr "مود تمبوس بلوک دبوليهکن" #: src/client/game.cpp msgid "Noclip mode enabled (note: no 'noclip' privilege)" -msgstr "" +msgstr "مود تمبوس بلوک دبوليهکن (نوت: تيادا کأيستيميواءن 'تمبوس بلوک')" #: src/client/game.cpp msgid "Noclip mode disabled" -msgstr "" +msgstr "مود تمبوس بلوک دلومڤوهکن" #: src/client/game.cpp msgid "Cinematic mode enabled" -msgstr "" +msgstr "مود سينماتيک دبوليهکن" #: src/client/game.cpp msgid "Cinematic mode disabled" -msgstr "" +msgstr "مود سينماتيک دلومڤوهکن" #: src/client/game.cpp msgid "Automatic forward enabled" -msgstr "" +msgstr "ڤرݢرقن اءوتوماتيک دبوليهکن" #: src/client/game.cpp msgid "Automatic forward disabled" -msgstr "" +msgstr "ڤرݢرقن اءوتوماتيک دلومڤوهکن" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x1" -msgstr "" +msgstr "ڤتا ميني دالم مود ڤرموکاءن⹁ زوم 1x" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x2" -msgstr "" +msgstr "ڤتا ميني دالم مود ڤرموکاءن⹁ زوم 2x" #: src/client/game.cpp msgid "Minimap in surface mode, Zoom x4" -msgstr "" +msgstr "ڤتا ميني دالم مود ڤرموکاءن⹁ زوم 4x" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x1" -msgstr "" +msgstr "ڤتا ميني دالم مود رادر⹁ زوم 1x" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x2" -msgstr "" +msgstr "ڤتا ميني دالم مود رادر⹁ زوم 2x" #: src/client/game.cpp msgid "Minimap in radar mode, Zoom x4" -msgstr "" +msgstr "ڤتا ميني دالم مود رادر⹁ زوم 4x" #: src/client/game.cpp msgid "Minimap hidden" -msgstr "" +msgstr "ڤتا ميني دسمبوڽيکن" #: src/client/game.cpp msgid "Minimap currently disabled by game or mod" -msgstr "" +msgstr "ڤتا ميني دلومڤوهکن اوليه ڤرماءينن اتاو مودس" #: src/client/game.cpp msgid "Fog disabled" -msgstr "" +msgstr "کابوت دلومڤوهکن" #: src/client/game.cpp msgid "Fog enabled" -msgstr "" +msgstr "کابوت دبوليهکن" #: src/client/game.cpp msgid "Debug info shown" -msgstr "" +msgstr "معلومت ڽهڤڤيجت دتونجوقکن" #: src/client/game.cpp msgid "Profiler graph shown" -msgstr "" +msgstr "ݢراف ڤمبوکه دتونجوقکن" #: src/client/game.cpp msgid "Wireframe shown" -msgstr "" +msgstr "رڠک داواي دتونجوقکن" #: src/client/game.cpp msgid "Debug info, profiler graph, and wireframe hidden" -msgstr "" +msgstr "معلومت ڽهڤڤيجت⹁ ݢراف ڤمبوکه⹁ دان رڠک داواي دسمبوڽيکن" #: src/client/game.cpp msgid "Debug info and profiler graph hidden" -msgstr "" +msgstr "معلومت ڽهڤڤيجت دان ݢراف ڤمبوکه دسمبوڽيکن" #: src/client/game.cpp msgid "Camera update disabled" -msgstr "" +msgstr "کمس کيني کاميرا دلومڤوهکن" #: src/client/game.cpp msgid "Camera update enabled" -msgstr "" +msgstr "کمس کيني کاميرا دبوليهکن" #: src/client/game.cpp #, c-format msgid "Viewing range is at maximum: %d" -msgstr "" +msgstr "جارق ڤندڠ براد دتاهڤ مکسيموم: %d" #: src/client/game.cpp #, c-format msgid "Viewing range changed to %d" -msgstr "" +msgstr "جارق ڤندڠ دتوکر ک%d" #: src/client/game.cpp #, c-format msgid "Viewing range is at minimum: %d" -msgstr "" +msgstr "جارق ڤندڠ براد دتاهڤ مينيموم: %d" #: src/client/game.cpp msgid "Enabled unlimited viewing range" -msgstr "" +msgstr "جارق ڤندڠ تنڤ حد دبوليهکن" #: src/client/game.cpp msgid "Disabled unlimited viewing range" -msgstr "" +msgstr "جارق ڤندڠ تنڤ حد دلومڤوهکن" #: src/client/game.cpp msgid "Zoom currently disabled by game or mod" -msgstr "" +msgstr "زوم سدڠ دلومڤوهکن اوليه ڤرماءينن اتاو مودس" #: src/client/game.cpp msgid "" @@ -1282,6 +1292,18 @@ msgid "" "- touch&drag, tap 2nd finger\n" " --> place single item to slot\n" msgstr "" +"کاولن اصل:\n" +"تيادا مينو کليهتن:\n" +"- تکن سکالي: اکتيفکن بوتڠ\n" +"- تکن دوا کالي: لتق بارڠ\\ݢونا سسواتو\n" +"- تاريق دڠن جاري: ليهت سکليليڠ\n" +"مينو\\اينۏينتوري کليهتن:\n" +"- تکن برݢندا (لوار کاوسن اينۏينتوري):\n" +" -->توتوڤ\n" +"- تکن تيندنن⹁ تکن سلوت:\n" +" --> ڤينده تيندنن\n" +"- سنتوه دان تاريق⹁ تکن سکرين ڤاکاي جاري کدوا\n" +" --> لتق ساتو ايتم دري تيندنن کدالم سلوت\n" #: src/client/game.cpp #, c-format @@ -1301,381 +1323,397 @@ msgid "" "- Mouse wheel: select item\n" "- %s: chat\n" msgstr "" +"کاولن:\n" +"- %s: برݢرق کدڤن\n" +"- %s: برݢرق کبلاکڠ\n" +"- %s: برݢرق ککيري\n" +"- %s: برݢرق ککانن\n" +"- %s: لومڤت\\ناءيق اتس\n" +"- %s: سلينڤ\\تورون باواه\n" +"- %s: جاتوهکن ايتم\n" +"- %s: اينۏينتوري\n" +"- تتيکوس: ڤوسيڠ\\ليهت سکليليڠ\n" +"- تتيکوس کيري: ݢالي\\کتوق\n" +"- تتيکوس کانن: لتق\\ݢونا\n" +"- رودا تتيکوس: ڤيليه ايتم\n" +"- %s: سيمبڠ\n" #: src/client/game.cpp msgid "Continue" -msgstr "" +msgstr "تروسکن" #: src/client/game.cpp msgid "Change Password" -msgstr "" +msgstr "توکر کات لالوان" #: src/client/game.cpp msgid "Game paused" -msgstr "" +msgstr "ڤرماءينن دجيداکن" #: src/client/game.cpp msgid "Sound Volume" -msgstr "" +msgstr "ککواتن بوڽي" #: src/client/game.cpp msgid "Exit to Menu" -msgstr "" +msgstr "کلوار کمينو" #: src/client/game.cpp msgid "Exit to OS" -msgstr "" +msgstr "کلوار تروس ڤرماءينن" #: src/client/game.cpp msgid "Game info:" -msgstr "" +msgstr "معلومت ڤرماءينن:" #: src/client/game.cpp msgid "- Mode: " -msgstr "" +msgstr "- مود: " #: src/client/game.cpp msgid "Remote server" -msgstr "" +msgstr "ڤلاين جارق جاءوه" #: src/client/game.cpp msgid "- Address: " -msgstr "" +msgstr "- علامت: " #: src/client/game.cpp msgid "Hosting server" -msgstr "" +msgstr "مڠهوس ڤلاين" #: src/client/game.cpp msgid "- Port: " -msgstr "" +msgstr "- ڤورت: " #: src/client/game.cpp msgid "Singleplayer" -msgstr "" +msgstr "ڤماءين ڤرسأورڠن" #: src/client/game.cpp msgid "On" -msgstr "" +msgstr "بوک" #: src/client/game.cpp msgid "Off" -msgstr "" +msgstr "توتوڤ" #: src/client/game.cpp msgid "- Damage: " -msgstr "" +msgstr "- بوليه چدرا " #: src/client/game.cpp msgid "- Creative Mode: " -msgstr "" +msgstr "- مود کرياتيف: " #. ~ PvP = Player versus Player #: src/client/game.cpp msgid "- PvP: " -msgstr "" +msgstr "- PvP: " #: src/client/game.cpp msgid "- Public: " -msgstr "" +msgstr "- عوام: " #: src/client/game.cpp msgid "- Server Name: " -msgstr "" +msgstr "- نام ڤلاين: " #: src/client/game.cpp msgid "" "\n" "Check debug.txt for details." msgstr "" +"\n" +"ڤريقسا فايل debug.txt اونتوق معلومت لنجوت." #: src/client/gameui.cpp msgid "Chat shown" -msgstr "" +msgstr "سيمبڠ دتونجوقکن" #: src/client/gameui.cpp msgid "Chat hidden" -msgstr "" +msgstr "سيمبڠ دسمبوڽيکن" #: src/client/gameui.cpp msgid "HUD shown" -msgstr "" +msgstr "ڤاڤر ڤندو (HUD) دتونجوقکن" #: src/client/gameui.cpp msgid "HUD hidden" -msgstr "" +msgstr "ڤاڤر ڤندو (HUD) دسمبوڽيکن" #: src/client/gameui.cpp #, c-format msgid "Profiler shown (page %d of %d)" -msgstr "" +msgstr "ڤمبوکه دتونجوقکن (هلامن %d دري %d)" #: src/client/gameui.cpp msgid "Profiler hidden" -msgstr "" +msgstr "ڤمبوکه دسمبوڽيکن" #: src/client/keycode.cpp msgid "Left Button" -msgstr "" +msgstr "بوتڠ کيري" #: src/client/keycode.cpp msgid "Right Button" -msgstr "" +msgstr "بوتڠ کانن" #: src/client/keycode.cpp msgid "Middle Button" -msgstr "" +msgstr "بوتڠ تڠه" #: src/client/keycode.cpp msgid "X Button 1" -msgstr "" +msgstr "بوتڠ X نومبور 1" #: src/client/keycode.cpp msgid "X Button 2" -msgstr "" +msgstr "بوتڠ X نومبور 2" #: src/client/keycode.cpp msgid "Backspace" -msgstr "" +msgstr "Backspace" #: src/client/keycode.cpp msgid "Tab" -msgstr "" +msgstr "Tab" #: src/client/keycode.cpp msgid "Clear" -msgstr "" +msgstr "ڤادم" #: src/client/keycode.cpp msgid "Return" -msgstr "" +msgstr "Enter" #: src/client/keycode.cpp msgid "Shift" -msgstr "" +msgstr "Shift" #: src/client/keycode.cpp msgid "Control" -msgstr "" +msgstr "Ctrl" #. ~ Key name, common on Windows keyboards #: src/client/keycode.cpp msgid "Menu" -msgstr "" +msgstr "Menu" #: src/client/keycode.cpp msgid "Pause" -msgstr "" +msgstr "Pause" #: src/client/keycode.cpp msgid "Caps Lock" -msgstr "" +msgstr "کونچي حروف بسر" #: src/client/keycode.cpp msgid "Space" -msgstr "" +msgstr "سلاڠ" #: src/client/keycode.cpp msgid "Page up" -msgstr "" +msgstr "Page up" #: src/client/keycode.cpp msgid "Page down" -msgstr "" +msgstr "Page down" #: src/client/keycode.cpp msgid "End" -msgstr "" +msgstr "End" #: src/client/keycode.cpp msgid "Home" -msgstr "" +msgstr "Home" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Left" -msgstr "" +msgstr "ککيري" #: src/client/keycode.cpp msgid "Up" -msgstr "" +msgstr "اتس" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Right" -msgstr "" +msgstr "ککانن" #: src/client/keycode.cpp msgid "Down" -msgstr "" +msgstr "باواه" #. ~ Key name #: src/client/keycode.cpp msgid "Select" -msgstr "" +msgstr "Select" #. ~ "Print screen" key #: src/client/keycode.cpp msgid "Print" -msgstr "" +msgstr "Print Screen" #: src/client/keycode.cpp msgid "Execute" -msgstr "" +msgstr "لاکوکن" #: src/client/keycode.cpp msgid "Snapshot" -msgstr "" +msgstr "تڠکڤ ݢمبر سکرين" #: src/client/keycode.cpp msgid "Insert" -msgstr "" +msgstr "Insert" #: src/client/keycode.cpp msgid "Help" -msgstr "" +msgstr "بنتوان" #: src/client/keycode.cpp msgid "Left Windows" -msgstr "" +msgstr "Windows کيري" #: src/client/keycode.cpp msgid "Right Windows" -msgstr "" +msgstr "Windows کانن" #: src/client/keycode.cpp msgid "Numpad 0" -msgstr "" +msgstr "ڤد اڠک 0" #: src/client/keycode.cpp msgid "Numpad 1" -msgstr "" +msgstr "ڤد اڠک 1" #: src/client/keycode.cpp msgid "Numpad 2" -msgstr "" +msgstr "ڤد اڠک 2" #: src/client/keycode.cpp msgid "Numpad 3" -msgstr "" +msgstr "ڤد اڠک 3" #: src/client/keycode.cpp msgid "Numpad 4" -msgstr "" +msgstr "ڤد اڠک 4" #: src/client/keycode.cpp msgid "Numpad 5" -msgstr "" +msgstr "ڤد اڠک 5" #: src/client/keycode.cpp msgid "Numpad 6" -msgstr "" +msgstr "ڤد اڠک 6" #: src/client/keycode.cpp msgid "Numpad 7" -msgstr "" +msgstr "ڤد اڠک 7" #: src/client/keycode.cpp msgid "Numpad 8" -msgstr "" +msgstr "ڤد اڠک 8" #: src/client/keycode.cpp msgid "Numpad 9" -msgstr "" +msgstr "ڤد اڠک 9" #: src/client/keycode.cpp msgid "Numpad *" -msgstr "" +msgstr "ڤد اڠک *" #: src/client/keycode.cpp msgid "Numpad +" -msgstr "" +msgstr "ڤد اڠک +" #: src/client/keycode.cpp msgid "Numpad ." -msgstr "" +msgstr "ڤد اڠک ." #: src/client/keycode.cpp msgid "Numpad -" -msgstr "" +msgstr "ڤد اڠک -" #: src/client/keycode.cpp msgid "Numpad /" -msgstr "" +msgstr "ڤد اڠک /" #: src/client/keycode.cpp msgid "Num Lock" -msgstr "" +msgstr "کونچي اڠک" #: src/client/keycode.cpp msgid "Scroll Lock" -msgstr "" +msgstr "کونچي تاتل" #: src/client/keycode.cpp msgid "Left Shift" -msgstr "" +msgstr "Shift کيري" #: src/client/keycode.cpp msgid "Right Shift" -msgstr "" +msgstr "Shift کانن" #: src/client/keycode.cpp msgid "Left Control" -msgstr "" +msgstr "Ctrl کيري" #: src/client/keycode.cpp msgid "Right Control" -msgstr "" +msgstr "Ctrl کانن" #: src/client/keycode.cpp msgid "Left Menu" -msgstr "" +msgstr "مينو کيري" #: src/client/keycode.cpp msgid "Right Menu" -msgstr "" +msgstr "مينو کانن" #: src/client/keycode.cpp msgid "IME Escape" -msgstr "" +msgstr "IME - کلوار" #: src/client/keycode.cpp msgid "IME Convert" -msgstr "" +msgstr "IME - توکر" #: src/client/keycode.cpp msgid "IME Nonconvert" -msgstr "" +msgstr "IME - تيدقتوکر" #: src/client/keycode.cpp msgid "IME Accept" -msgstr "" +msgstr "IME - تريما" #: src/client/keycode.cpp msgid "IME Mode Change" -msgstr "" +msgstr "IME - توکر مود" #: src/client/keycode.cpp msgid "Apps" -msgstr "" +msgstr "اڤليکاسي" #: src/client/keycode.cpp msgid "Sleep" -msgstr "" +msgstr "تيدور" #: src/client/keycode.cpp msgid "Erase EOF" -msgstr "" +msgstr "ڤادم EOF" #: src/client/keycode.cpp msgid "Play" -msgstr "" +msgstr "مولا ماءين" #: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp msgid "Zoom" -msgstr "" +msgstr "زوم" #: src/client/keycode.cpp msgid "OEM Clear" -msgstr "" +msgstr "ڤادم OEM" #: src/gui/guiConfirmRegistration.cpp #, c-format @@ -1686,211 +1724,216 @@ msgid "" "Please retype your password and click 'Register and Join' to confirm account " "creation, or click 'Cancel' to abort." msgstr "" +"اندا اکن سرتاءي ڤلاين دڠن نام \"%s\" اونتوق کالي ڤرتام.\n" +"جيک اندا تروسکن⹁ اکاءون بهارو دڠن معلومت اندا اکن دچيڤت دڤلاين اين.\n" +"سيلا تايڤ سمولا کات لالوان اندا دان کليک 'دفتر دان سرتاءي' اونتوق صحکن " +"ڤنچيڤتاءن اکاءون⹁ اتاو کليک 'باتل' اونتوق ممباتلکن." #: src/gui/guiConfirmRegistration.cpp msgid "Register and Join" -msgstr "" +msgstr "دفتر دان سرتاءي" #: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp msgid "Passwords do not match!" -msgstr "" +msgstr "کات لالوان تيدق ڤادن!" #: src/gui/guiFormSpecMenu.cpp msgid "Proceed" -msgstr "" +msgstr "تروسکن" #: src/gui/guiKeyChangeMenu.cpp msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" msgstr "" +"ايکتن ککونچي. (جيک مينو اين برسليرق⹁ ڤادم سستڠه بندا دري فايل minetest.conf)" #: src/gui/guiKeyChangeMenu.cpp msgid "\"Special\" = climb down" -msgstr "" +msgstr "\"ايستيميوا\" = ڤنجت تورون" #: src/gui/guiKeyChangeMenu.cpp msgid "Double tap \"jump\" to toggle fly" -msgstr "" +msgstr "تکن دوا کالي \"لومڤت\" اونتوق منوݢول تربڠ" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Automatic jumping" -msgstr "" +msgstr "لومڤت أوتوماتيک" #: src/gui/guiKeyChangeMenu.cpp msgid "Key already in use" -msgstr "" +msgstr "ککونچي تله دݢوناکن اونتوق فوڠسي لاءين" #: src/gui/guiKeyChangeMenu.cpp msgid "press key" -msgstr "" +msgstr "تکن ککونچي" #: src/gui/guiKeyChangeMenu.cpp msgid "Forward" -msgstr "" +msgstr "کدڤن" #: src/gui/guiKeyChangeMenu.cpp msgid "Backward" -msgstr "" +msgstr "کبلاکڠ" #: src/gui/guiKeyChangeMenu.cpp msgid "Special" -msgstr "" +msgstr "ايستيميوا" #: src/gui/guiKeyChangeMenu.cpp msgid "Jump" -msgstr "" +msgstr "لومڤت" #: src/gui/guiKeyChangeMenu.cpp msgid "Sneak" -msgstr "" +msgstr "سلينڤ" #: src/gui/guiKeyChangeMenu.cpp msgid "Drop" -msgstr "" +msgstr "جاتوهکن" #: src/gui/guiKeyChangeMenu.cpp msgid "Inventory" -msgstr "" +msgstr "اينۏينتوري" #: src/gui/guiKeyChangeMenu.cpp msgid "Prev. item" -msgstr "" +msgstr "ايتم سبلومڽ" #: src/gui/guiKeyChangeMenu.cpp msgid "Next item" -msgstr "" +msgstr "ايتم ستروسڽ" #: src/gui/guiKeyChangeMenu.cpp msgid "Change camera" -msgstr "" +msgstr "توکر کاميرا" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle minimap" -msgstr "" +msgstr "توݢول ڤتا ميني" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fly" -msgstr "" +msgstr "توݢول تربڠ" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle pitchmove" -msgstr "" +msgstr "توݢول ڤرݢرقن منچورم" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fast" -msgstr "" +msgstr "توݢول ڤرݢرقن ڤنتس" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle noclip" -msgstr "" +msgstr "توݢول تمبوس بلوک" #: src/gui/guiKeyChangeMenu.cpp msgid "Mute" -msgstr "" +msgstr "بيسو" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. volume" -msgstr "" +msgstr "ڤرلاهنکن بوڽي" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. volume" -msgstr "" +msgstr "کواتکن بوڽي" #: src/gui/guiKeyChangeMenu.cpp msgid "Autoforward" -msgstr "" +msgstr "أوتوڤرݢرقن" #: src/gui/guiKeyChangeMenu.cpp msgid "Chat" -msgstr "" +msgstr "سيمبڠ" #: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp msgid "Screenshot" -msgstr "" +msgstr "تڠکڤ لاير" #: src/gui/guiKeyChangeMenu.cpp msgid "Range select" -msgstr "" +msgstr "جارق ڤميليهن" #: src/gui/guiKeyChangeMenu.cpp msgid "Dec. range" -msgstr "" +msgstr "کورڠکن جارق" #: src/gui/guiKeyChangeMenu.cpp msgid "Inc. range" -msgstr "" +msgstr "ناءيقکن جارق" #: src/gui/guiKeyChangeMenu.cpp msgid "Console" -msgstr "" +msgstr "کونسول" #: src/gui/guiKeyChangeMenu.cpp msgid "Command" -msgstr "" +msgstr "ارهن" #: src/gui/guiKeyChangeMenu.cpp msgid "Local command" -msgstr "" +msgstr "ارهن تمڤتن" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle HUD" -msgstr "" +msgstr "توݢول ڤاڤر ڤندو (HUD)" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle chat log" -msgstr "" +msgstr "توݢول لوݢ سيمبڠ" #: src/gui/guiKeyChangeMenu.cpp msgid "Toggle fog" -msgstr "" +msgstr "توݢول کابوت" #: src/gui/guiPasswordChange.cpp msgid "Old Password" -msgstr "" +msgstr "کات لالوان لام" #: src/gui/guiPasswordChange.cpp msgid "New Password" -msgstr "" +msgstr "کات لالوان بارو" #: src/gui/guiPasswordChange.cpp msgid "Confirm Password" -msgstr "" +msgstr "صحکن کات لالوان" #: src/gui/guiPasswordChange.cpp msgid "Change" -msgstr "" +msgstr "توکر" #: src/gui/guiVolumeChange.cpp msgid "Sound Volume: " -msgstr "" +msgstr "ککواتن بوڽي: " #: src/gui/guiVolumeChange.cpp msgid "Exit" -msgstr "" +msgstr "کلوار" #: src/gui/guiVolumeChange.cpp msgid "Muted" -msgstr "" +msgstr "دبيسوکن" #. ~ Imperative, as in "Enter/type in text". #. Don't forget the space. #: src/gui/modalMenu.cpp msgid "Enter " -msgstr "" +msgstr "ماسوقکن " #. ~ DO NOT TRANSLATE THIS LITERALLY! #. This is a special string which needs to contain the translation's #. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" -msgstr "" +msgstr "ms_Arab" #: src/settings_translation_file.cpp msgid "Controls" -msgstr "" +msgstr "کاولن" #: src/settings_translation_file.cpp msgid "Build inside player" -msgstr "" +msgstr "بينا دالم ڤماءين" #: src/settings_translation_file.cpp msgid "" @@ -1898,40 +1941,48 @@ msgid "" "you stand.\n" "This is helpful when working with nodeboxes in small areas." msgstr "" +"جيک دبوليهکن⹁ اندا بوليه ملتق بلوک دکدودوقن برديري (کاکي + ارس مات).\n" +"اين ساڠت برݢونا اڤابيلا بکرجا دڠن کوتق نود دکاوسن يڠ کچيل." #: src/settings_translation_file.cpp msgid "Flying" -msgstr "" +msgstr "تربڠ" #: src/settings_translation_file.cpp msgid "" "Player is able to fly without being affected by gravity.\n" "This requires the \"fly\" privilege on the server." msgstr "" +"ڤماءين بوليه تربڠ تنڤ ترکسن دڠن ݢراۏيتي.\n" +"اين ممرلوکن کأيستيميواءن \"تربڠ\" دالم ڤلاين ڤرماءينن ترسبوت." #: src/settings_translation_file.cpp msgid "Pitch move mode" -msgstr "" +msgstr "مود ڤرݢرقن ڤيچ" #: src/settings_translation_file.cpp msgid "" "If enabled, makes move directions relative to the player's pitch when flying " "or swimming." msgstr "" +"جيک دبوليهکن⹁ اي ممبواتکن اره ڤرݢرقن ريلاتيف دڠن ڤيچ ڤماءين اڤابيلا تربڠ " +"اتاو برنڠ." #: src/settings_translation_file.cpp msgid "Fast movement" -msgstr "" +msgstr "ڤرݢرقن ڤنتس" #: src/settings_translation_file.cpp msgid "" "Fast movement (via the \"special\" key).\n" "This requires the \"fast\" privilege on the server." msgstr "" +"برݢرق ڤنتس (دڠن ککونچي \"ايستيميوا\").\n" +"اين ممرلوکن کأيستيميواءن \"ڤرݢرقن ڤنتس\" دالم ڤلاين ڤرماءينن ترسبوت." #: src/settings_translation_file.cpp msgid "Noclip" -msgstr "" +msgstr "تمبوس بلوک" #: src/settings_translation_file.cpp msgid "" @@ -1939,52 +1990,58 @@ msgid "" "nodes.\n" "This requires the \"noclip\" privilege on the server." msgstr "" +"جيک دبوليهکن برسام مود تربڠ⹁ ڤماءين بوليه تربڠ منروسي نود ڤڤجل.\n" +"اين ممرلوکن کأيستيميواءن \"تمبوس بلوک\" دالم ڤلاين ڤرماءينن ترسبوت." #: src/settings_translation_file.cpp msgid "Cinematic mode" -msgstr "" +msgstr "مود سينماتيک" #: src/settings_translation_file.cpp msgid "" "Smooths camera when looking around. Also called look or mouse smoothing.\n" "Useful for recording videos." msgstr "" +"ملمبوتکن کاميرا اڤابيلا مليهت سکليليڠ. جوݢ دکنلي سباݢاي ڤلمبوتن ڤڠليهتن اتاو " +"ڤلمبوتن تتيکوس.\n" +"برݢونا اونتوق مراکم ۏيديو." #: src/settings_translation_file.cpp msgid "Camera smoothing" -msgstr "" +msgstr "ڤلمبوتن کاميرا" #: src/settings_translation_file.cpp msgid "Smooths rotation of camera. 0 to disable." -msgstr "" +msgstr "ملمبوتکن ڤموترن کاميرا. سيت سباݢاي 0 اونتوق ملومڤوهکنڽ." #: src/settings_translation_file.cpp msgid "Camera smoothing in cinematic mode" -msgstr "" +msgstr "ڤلمبوتن کاميرا دالم مود سينماتيک" #: src/settings_translation_file.cpp msgid "Smooths rotation of camera in cinematic mode. 0 to disable." msgstr "" +"ملمبوتکن ڤموترن کاميرا دالم مود سينماتيک. سيت سباݢاي 0 اونتوق ملومڤوهکنڽ." #: src/settings_translation_file.cpp msgid "Invert mouse" -msgstr "" +msgstr "تتيکوس سوڠسڠ" #: src/settings_translation_file.cpp msgid "Invert vertical mouse movement." -msgstr "" +msgstr "مڽوڠسڠکن ڤرݢرقن تتيکوس منݢق." #: src/settings_translation_file.cpp msgid "Mouse sensitivity" -msgstr "" +msgstr "کڤيکاءن تتيکوس" #: src/settings_translation_file.cpp msgid "Mouse sensitivity multiplier." -msgstr "" +msgstr "ڤندارب کڤيکاءن تتيکوس." #: src/settings_translation_file.cpp msgid "Special key for climbing/descending" -msgstr "" +msgstr "ککونچي اونتوق ممنجت\\منورون" #: src/settings_translation_file.cpp msgid "" @@ -1992,18 +2049,20 @@ msgid "" "down and\n" "descending." msgstr "" +"جيک دبوليهکن⹁ ککونچي \"ايستيميوا\" اکن دݢوناکن اونتوق ڤنجت کباوه دان\n" +"تورون دالم مود تربڠ⹁ مڠݢنتيکن ککونچي \"سلينڤ\"." #: src/settings_translation_file.cpp msgid "Double tap jump for fly" -msgstr "" +msgstr "تکن \"لومڤت\" دوا کالي اونتوق تربڠ" #: src/settings_translation_file.cpp msgid "Double-tapping the jump key toggles fly mode." -msgstr "" +msgstr "تکن بوتڠ \"لومڤت\" سچارا چڤت دوا کالي اونتوق منوݢول مود تربڠ." #: src/settings_translation_file.cpp msgid "Always fly and fast" -msgstr "" +msgstr "سنتياس تربڠ دان برݢرق ڤنتس" #: src/settings_translation_file.cpp msgid "" @@ -2011,10 +2070,12 @@ msgid "" "are\n" "enabled." msgstr "" +"جيک دلومڤوهکن⹁ ککونچي \"ايستيميوا\" اکن دݢوناکن اونتوق تربڠ لاجو\n" +"سکيراڽ کدوا-دوا مود تربڠ دان مود ڤرݢرقن ڤنتس دبوليهکن." #: src/settings_translation_file.cpp msgid "Rightclick repetition interval" -msgstr "" +msgstr "سلڠ ڤڠاولڠن کليک کانن" #: src/settings_translation_file.cpp msgid "" @@ -2022,60 +2083,69 @@ msgid "" "right\n" "mouse button." msgstr "" +"جومله ماس دالم ساءت دامبيل اونتوق ملاکوکن کليک کانن يڠ براولڠ اڤابيلا\n" +"ڤماءين منکن بوتڠ تتيکوس کانن تنڤ ملڤسکنڽ." #: src/settings_translation_file.cpp msgid "Automatically jump up single-node obstacles." -msgstr "" +msgstr "لومڤت هالڠن ساتو-نود سچارا أوروماتيک." #: src/settings_translation_file.cpp msgid "Safe digging and placing" -msgstr "" +msgstr "ڤڠݢالين دان ڤلتقن سلامت" #: src/settings_translation_file.cpp msgid "" "Prevent digging and placing from repeating when holding the mouse buttons.\n" "Enable this when you dig or place too often by accident." msgstr "" +"منچݢه ݢالي دان ڤلتقن درڤد براولڠ کتيک تروس منکن بوتڠ تتيکوس.\n" +"بوليهکن تتڤن اين اڤابيلا اندا ݢالي اتاو لتق سچارا تيدق سڠاج ترلالو کرڤ." #: src/settings_translation_file.cpp msgid "Random input" -msgstr "" +msgstr "اينڤوت راوق" #: src/settings_translation_file.cpp msgid "Enable random user input (only used for testing)." -msgstr "" +msgstr "ممبوليهکن اينڤوت ڤڠݢونا سچارا راوق (هاڽ اونتوق ڤرچوباءن)." #: src/settings_translation_file.cpp msgid "Continuous forward" -msgstr "" +msgstr "کدڤن برتروسن" #: src/settings_translation_file.cpp msgid "" "Continuous forward movement, toggled by autoforward key.\n" "Press the autoforward key again or the backwards movement to disable." msgstr "" +"ڤرݢرقن کدڤن برتروسن⹁ دتوݢول اوليه ککونچي أوتوڤرݢرقن.\n" +"تکن ککونچي أوتوڤرݢرقن لاݢي اتاو ڤرݢرقن کبلاکڠ اونتوق ملومڤوهکنڽ." #: src/settings_translation_file.cpp msgid "Touch screen threshold" -msgstr "" +msgstr "نيلاي امبڠ سکرين سنتوه" #: src/settings_translation_file.cpp msgid "The length in pixels it takes for touch screen interaction to start." -msgstr "" +msgstr "ڤنجڠ دالم ڤيکسيل اونتوق ممولاکن اينتراکسي سکرين سنتوه." #: src/settings_translation_file.cpp msgid "Fixed virtual joystick" -msgstr "" +msgstr "کايو بديق ماي تتڤ" #: src/settings_translation_file.cpp msgid "" "(Android) Fixes the position of virtual joystick.\n" "If disabled, virtual joystick will center to first-touch's position." msgstr "" +"(Android) منتڤکن کدودوقن کايو بديق ماي.\n" +"جيک دلومڤوهکن⹁ کدودوقن تڠه اونتوق کايو بديق ماي اکن دتنتوکن برداسرکن کدودوقن " +"سنتوهن ڤرتام." #: src/settings_translation_file.cpp msgid "Virtual joystick triggers aux button" -msgstr "" +msgstr "کايو بديق ماي مميچو بوتڠ aux" #: src/settings_translation_file.cpp msgid "" @@ -2083,50 +2153,57 @@ msgid "" "If enabled, virtual joystick will also tap \"aux\" button when out of main " "circle." msgstr "" +"(Android) ݢوناکن کايو بديق ماي اونتوق ڤيچو بوتڠ \"aux\".\n" +"جيک دبوليهکن⹁ کايو بديق ماي جوݢ اکن منکن بوتڠ \"aux\" اڤابيلا براد دلوار " +"بولتن اوتام." #: src/settings_translation_file.cpp msgid "Enable joysticks" -msgstr "" +msgstr "ممبوليهکن کايو بديق" #: src/settings_translation_file.cpp msgid "Joystick ID" -msgstr "" +msgstr "ID کايو بديق" #: src/settings_translation_file.cpp msgid "The identifier of the joystick to use" -msgstr "" +msgstr "ڤڠنل ڤستي کايو بديق يڠ دݢوناکن" #: src/settings_translation_file.cpp msgid "Joystick type" -msgstr "" +msgstr "جنيس کايو بديق" #: src/settings_translation_file.cpp msgid "The type of joystick" -msgstr "" +msgstr "جنيس کايو بديق" #: src/settings_translation_file.cpp msgid "Joystick button repetition interval" -msgstr "" +msgstr "سلڠ ماس ڤڠاولڠن بوتڠ کايو بديق" #: src/settings_translation_file.cpp msgid "" "The time in seconds it takes between repeated events\n" "when holding down a joystick button combination." msgstr "" +"سلڠ ماس دالم ساءت⹁ دامبيل انتارا ڤريستيوا يڠ براولڠن\n" +"اڤابيلا منکن کومبيناسي بوتڠ کايو بديق." #: src/settings_translation_file.cpp msgid "Joystick frustum sensitivity" -msgstr "" +msgstr "کڤيکاءن فروستوم کايو بديق" #: src/settings_translation_file.cpp msgid "" "The sensitivity of the joystick axes for moving the\n" "ingame view frustum around." msgstr "" +"کڤيکاءن ڤکسي کايو بديق اونتوق مڠݢرقکن\n" +"فروستوم ڤڠليهتن دالم ڤرماءينن." #: src/settings_translation_file.cpp msgid "Forward key" -msgstr "" +msgstr "ککونچي کدڤن" #: src/settings_translation_file.cpp msgid "" @@ -2134,10 +2211,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مڠݢرقکن ڤماءين کدڤن.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Backward key" -msgstr "" +msgstr "ککونچي کبلاکڠ" #: src/settings_translation_file.cpp msgid "" @@ -2146,10 +2226,14 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مڠݢرقکن ڤماءين کبلاکڠ.\n" +"جوݢ اکن ملومڤوهکن أوتوڤرݢرقن⹁ اڤابيلا اکتيف.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Left key" -msgstr "" +msgstr "ککونچي ککيري" #: src/settings_translation_file.cpp msgid "" @@ -2157,10 +2241,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مڠݢرقکن ڤماءين ککيري.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Right key" -msgstr "" +msgstr "ککومچي ککانن" #: src/settings_translation_file.cpp msgid "" @@ -2168,10 +2255,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مڠݢرقکن ڤماءين ککانن.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Jump key" -msgstr "" +msgstr "ککونچي لومڤت" #: src/settings_translation_file.cpp msgid "" @@ -2179,10 +2269,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق ملومڤت.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Sneak key" -msgstr "" +msgstr "ککونچي سلينڤ" #: src/settings_translation_file.cpp msgid "" @@ -2192,10 +2285,15 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مڽلينڤ.\n" +"جوݢ دݢوناکن اونتوق تورون باواه کتيک ممنجت دان دالم اءير جيک تتڤن " +"aux1_descends دلومڤوهکن.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Inventory key" -msgstr "" +msgstr "ککونچي اينۏينتوري" #: src/settings_translation_file.cpp msgid "" @@ -2203,10 +2301,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق ممبوک اينۏينتوري.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Special key" -msgstr "" +msgstr "ککونچي ايستيميوا" #: src/settings_translation_file.cpp msgid "" @@ -2214,10 +2315,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق برݢرق ڤنتس دالم مود ڤرݢرقن ڤنتس.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Chat key" -msgstr "" +msgstr "ککونچي سيمبڠ" #: src/settings_translation_file.cpp msgid "" @@ -2225,10 +2329,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق ممبوک تتيڠکڤ سيمبڠ.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Command key" -msgstr "" +msgstr "ککونچي ارهن" #: src/settings_translation_file.cpp msgid "" @@ -2236,6 +2343,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق ممبوک تتيڠکڤ سيمبڠ اونتوق مناءيڤ ارهن.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2243,10 +2353,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق ممبوک تتيڠکڤ سيمبڠ اونتوق مناءيڤ ارهن تمڤتن.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Range select key" -msgstr "" +msgstr "ککونچي جارق ڤميليهن" #: src/settings_translation_file.cpp msgid "" @@ -2254,10 +2367,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق منوݢول جارق ڤندڠن تيادا حد.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Fly key" -msgstr "" +msgstr "ککونچي تربڠ" #: src/settings_translation_file.cpp msgid "" @@ -2265,10 +2381,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق منوݢول مود تربڠ.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Pitch move key" -msgstr "" +msgstr "ککونچي ڤرݢرقن ڤيچ" #: src/settings_translation_file.cpp msgid "" @@ -2276,10 +2395,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق منوݢول مود ڤرݢرقن ڤيچ.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Fast key" -msgstr "" +msgstr "ککونچي ڤرݢرقن ڤنتس" #: src/settings_translation_file.cpp msgid "" @@ -2287,10 +2409,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق منوݢول مود ڤرݢرقن ڤنتس.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Noclip key" -msgstr "" +msgstr "ککونچي تمبوس بلوک" #: src/settings_translation_file.cpp msgid "" @@ -2298,10 +2423,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق منوݢول مود تمبوس بلوک.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar next key" -msgstr "" +msgstr "ککونچي ايتم ستروسڽ دالم هوتبر" #: src/settings_translation_file.cpp msgid "" @@ -2309,10 +2437,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه ايتم ستروسڽ ددالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar previous key" -msgstr "" +msgstr "ککونچي ايتم سبلومڽ دالم هوتبر" #: src/settings_translation_file.cpp msgid "" @@ -2320,10 +2451,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه بارڠ سبلومڽ دهوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Mute key" -msgstr "" +msgstr "ککونچي بيسو" #: src/settings_translation_file.cpp msgid "" @@ -2331,10 +2465,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق ممبيسوکن ڤرماءينن.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Inc. volume key" -msgstr "" +msgstr "ککونچي کواتکن بوڽي" #: src/settings_translation_file.cpp msgid "" @@ -2342,10 +2479,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مڠواتکن بوڽي.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Dec. volume key" -msgstr "" +msgstr "ککونچي ڤرلاهنکن بوڽي" #: src/settings_translation_file.cpp msgid "" @@ -2353,10 +2493,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق ممڤرلاهنکن بوڽي.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Automatic forward key" -msgstr "" +msgstr "ککونچي أوتوڤرݢرقن" #: src/settings_translation_file.cpp msgid "" @@ -2364,10 +2507,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق منوݢول أوتوڤرݢرقن.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Cinematic mode key" -msgstr "" +msgstr "ککونچي مود سينماتيک" #: src/settings_translation_file.cpp msgid "" @@ -2375,10 +2521,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق منوݢول مود سينماتيک.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Minimap key" -msgstr "" +msgstr "ککونچي ڤتا ميني" #: src/settings_translation_file.cpp msgid "" @@ -2386,6 +2535,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق منوݢول ڤاڤرن ڤتا ميني.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "" @@ -2393,10 +2545,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق منڠکڤ ݢمبر لاير.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Drop item key" -msgstr "" +msgstr "ککونچي جاتوهکن ايتم" #: src/settings_translation_file.cpp msgid "" @@ -2404,10 +2559,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق منجاتوهکن ايتم يڠ سدڠ دڤيليه.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "View zoom key" -msgstr "" +msgstr "ککونچي زوم ڤندڠن" #: src/settings_translation_file.cpp msgid "" @@ -2415,10 +2573,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مڠݢوناکن ڤندڠن زوم اڤابيلا دبنرکن.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 1 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 1" #: src/settings_translation_file.cpp msgid "" @@ -2426,10 +2587,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ڤرتام دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 2 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 2" #: src/settings_translation_file.cpp msgid "" @@ -2437,10 +2601,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-2 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 3 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 3" #: src/settings_translation_file.cpp msgid "" @@ -2448,10 +2615,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-3 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 4 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 4" #: src/settings_translation_file.cpp msgid "" @@ -2459,10 +2629,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-4 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 5 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 5" #: src/settings_translation_file.cpp msgid "" @@ -2470,10 +2643,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-5 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 6 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 6" #: src/settings_translation_file.cpp msgid "" @@ -2481,10 +2657,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-6 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 7 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 7" #: src/settings_translation_file.cpp msgid "" @@ -2492,10 +2671,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-7 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 8 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 8" #: src/settings_translation_file.cpp msgid "" @@ -2503,10 +2685,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-8 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 9 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 9" #: src/settings_translation_file.cpp msgid "" @@ -2514,10 +2699,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-9 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 10 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 10" #: src/settings_translation_file.cpp msgid "" @@ -2525,10 +2713,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-10 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 11 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 11" #: src/settings_translation_file.cpp msgid "" @@ -2536,10 +2727,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-11 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 12 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 12" #: src/settings_translation_file.cpp msgid "" @@ -2547,10 +2741,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-12 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 13 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 13" #: src/settings_translation_file.cpp msgid "" @@ -2558,10 +2755,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-13 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 14 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 14" #: src/settings_translation_file.cpp msgid "" @@ -2569,10 +2769,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-14 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 15 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 15" #: src/settings_translation_file.cpp msgid "" @@ -2580,10 +2783,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-15 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 16 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 16" #: src/settings_translation_file.cpp msgid "" @@ -2591,10 +2797,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-16 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 17 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 17" #: src/settings_translation_file.cpp msgid "" @@ -2602,10 +2811,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-17 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 18 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 18" #: src/settings_translation_file.cpp msgid "" @@ -2613,10 +2825,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-18 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 19 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 19" #: src/settings_translation_file.cpp msgid "" @@ -2624,10 +2839,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-19 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 20 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 20" #: src/settings_translation_file.cpp msgid "" @@ -2635,10 +2853,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-20 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 21 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 21" #: src/settings_translation_file.cpp msgid "" @@ -2646,10 +2867,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-21 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 22 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 22" #: src/settings_translation_file.cpp msgid "" @@ -2657,10 +2881,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-22 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 23 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 23" #: src/settings_translation_file.cpp msgid "" @@ -2668,10 +2895,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-23 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 24 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 24" #: src/settings_translation_file.cpp msgid "" @@ -2679,10 +2909,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-24 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 25 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 25" #: src/settings_translation_file.cpp msgid "" @@ -2690,10 +2923,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-25 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 26 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 26" #: src/settings_translation_file.cpp msgid "" @@ -2701,10 +2937,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-26 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 27 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 27" #: src/settings_translation_file.cpp msgid "" @@ -2712,10 +2951,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-27 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 28 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 28" #: src/settings_translation_file.cpp msgid "" @@ -2723,10 +2965,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-28 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 29 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 29" #: src/settings_translation_file.cpp msgid "" @@ -2734,10 +2979,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-29 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 30 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 30" #: src/settings_translation_file.cpp msgid "" @@ -2745,10 +2993,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-30 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 31 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 31" #: src/settings_translation_file.cpp msgid "" @@ -2756,10 +3007,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-31 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Hotbar slot 32 key" -msgstr "" +msgstr "ککونچي سلوت هوتبر 32" #: src/settings_translation_file.cpp msgid "" @@ -2767,10 +3021,13 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق مميليه سلوت ک-32 دالم هوتبر.\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "HUD toggle key" -msgstr "" +msgstr "ککونچي منوݢول ڤاڤر ڤندو (HUD)" #: src/settings_translation_file.cpp msgid "" @@ -2778,6 +3035,9 @@ msgid "" "See http://irrlicht.sourceforge.net/docu/namespaceirr." "html#a54da2a0e231901735e3da1b0edf72eb3" msgstr "" +"ککونچي اونتوق منوݢول ڤاڤر ڤندو (HUD).\n" +"ليهت http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" #: src/settings_translation_file.cpp msgid "Chat toggle key" @@ -3622,11 +3882,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "HUD scale factor" -msgstr "" +msgstr "فکتور سکالا ڤاڤر ڤندو (HUD)" #: src/settings_translation_file.cpp msgid "Modifies the size of the hudbar elements." -msgstr "" +msgstr "مڠاوبه سايز ايليمن ڤالڠ ڤاڤر ڤندو (hudbar)." #: src/settings_translation_file.cpp msgid "Mesh cache" From 4f59bebd3776ad8f55fe37784a1b0d9751418274 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9bastien=20Robespi?= Date: Sun, 5 Jul 2020 21:00:02 +0000 Subject: [PATCH 397/424] Translated using Weblate (French) Currently translated at 98.9% (1336 of 1350 strings) --- po/fr/minetest.po | 388 +++++++++++++++++++++------------------------- 1 file changed, 176 insertions(+), 212 deletions(-) diff --git a/po/fr/minetest.po b/po/fr/minetest.po index f17b5721f..34fcda843 100644 --- a/po/fr/minetest.po +++ b/po/fr/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: French (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-05-24 13:41+0000\n" -"Last-Translator: NicHan \n" +"PO-Revision-Date: 2020-07-06 21:41+0000\n" +"Last-Translator: Estébastien Robespi \n" "Language-Team: French \n" "Language: fr\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -24,7 +24,7 @@ msgstr "Vous êtes mort" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "OK" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -117,7 +117,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Rechercher des mods" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -170,10 +170,9 @@ msgstr "Retour au menu principal" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "ContentDB n'est pas disponible quand Minetest est compilé sans cURL" #: builtin/mainmenu/dlg_contentstore.lua -#, fuzzy msgid "Downloading..." msgstr "Chargement..." @@ -222,7 +221,7 @@ msgstr "Mise à jour" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "Affichage" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -230,45 +229,39 @@ msgstr "Le monde \"$1\" existe déjà" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "Terrain supplémentaire" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" msgstr "Refroidissement en altitude" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Altitude dry" -msgstr "Refroidissement en altitude" +msgstr "Faible humidité d'altitude" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biome blending" -msgstr "Bruit des biomes" +msgstr "Mélange de biomes" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biomes" -msgstr "Bruit des biomes" +msgstr "Biomes" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caverns" -msgstr "Bruit des caves" +msgstr "Cavernes" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caves" -msgstr "Octaves" +msgstr "Grottes" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "Créer" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Decorations" -msgstr "Itérations" +msgstr "Décorations" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" @@ -279,23 +272,20 @@ msgid "Download one from minetest.net" msgstr "Téléchargez-en un depuis minetest.net" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Dungeons" -msgstr "Bruit de donjon" +msgstr "Donjons" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "Terrain plat" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floating landmasses in the sky" -msgstr "Densité des montagnes flottantes" +msgstr "Îles volantes" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floatlands (experimental)" -msgstr "Hauteur des terrains flottants" +msgstr "Îles volantes (expérimental)" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -303,28 +293,27 @@ msgstr "Jeu" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "Générer un terrain non fractal : océans et sous-sol" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Collines" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Humid rivers" -msgstr "Pilote vidéo" +msgstr "Rivières irrigantes" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Augmente l'humidité autour des rivières" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Lacs" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" -msgstr "" +msgstr "L'air sec et chaud réduit le niveau d'eau ou assèche les rivières" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -335,22 +324,20 @@ msgid "Mapgen flags" msgstr "Drapeaux de génération de terrain" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mapgen-specific flags" -msgstr "Drapeaux spécifiques au générateur v5" +msgstr "Drapeaux indicateurs du générateur de carte" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mountains" -msgstr "Bruit pour les montagnes" +msgstr "Montagnes" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "Coulée de boue" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "Réseau souterrain" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -358,20 +345,19 @@ msgstr "Aucun jeu sélectionné" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "Réduire la température avec l'altitude" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "Réduire l'humidité avec l'altitude" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Rivers" -msgstr "Taille des rivières" +msgstr "Rivières" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "Rivière au niveau de mer" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -380,50 +366,51 @@ msgstr "Graine" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "Transition progressive entre les biomes" #: builtin/mainmenu/dlg_create_world.lua msgid "" "Structures appearing on the terrain (no effect on trees and jungle grass " "created by v6)" msgstr "" +"Structures apparaissantes sur le sol (sans effets sur la création d'arbre et " +"de jungle par v6)" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" msgstr "" +"Structures apparaissant sur le terrain, généralement des arbres et des " +"plantes" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "Tempéré, désertique" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "Tempéré, désertique, tropical" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "Tempéré, désertique, tropical, de toundra, de taïga" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Terrain surface erosion" -msgstr "Bruit pour le terrain de base" +msgstr "Érosion du sol" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "Arbres et végétation de jungle" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Vary river depth" -msgstr "Profondeur des rivières" +msgstr "Varier la profondeur fluviale" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "Très grande cavernes profondes" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Warning: The Development Test is meant for developers." msgstr "Avertissement : le jeu minimal est fait pour les développeurs." @@ -597,9 +584,8 @@ msgstr "par défaut" #. can be enabled in noise settings in #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua -#, fuzzy msgid "eased" -msgstr "l'aisance" +msgstr "lissé" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" @@ -744,7 +730,7 @@ msgstr "Héberger un serveur" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "Installer à partir de ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" @@ -1401,11 +1387,11 @@ msgstr "Son coupé" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "L'audio système est désactivé" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "" +msgstr "Cette compilation ne gère pas l'audio du système" #: src/client/game.cpp msgid "Sound unmuted" @@ -1965,7 +1951,6 @@ msgstr "" "lorsqu'en dehors du cercle principal." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" "Can be used to move a desired point to (0, 0) to create a\n" @@ -1976,17 +1961,17 @@ msgid "" "situations.\n" "Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." msgstr "" -"(X,Y,Z) de décalage fractal à partir du centre du monde en unités " -"« échelle ».\n" -"Peut être utilisé pour déplacer un point désiré en (0;0) pour créer une\n" -"zone d'apparition convenable, ou pour autoriser à « zoomer » sur un\n" -"point désiré en augmentant l'« échelle ».\n" -"La valeur par défaut est réglée pour créer une zone d'apparition convenable " -"pour les ensembles\n" -"de Mandelbrot avec des paramètres par défaut, elle peut nécessité une " -"modification dans\n" -"d'autres situations.\n" -"Portée environ -2 à 2. Multiplier par « échelle » pour le décalage des nœuds." +"(X ; Y ; Z) de décalage fractal à partir du centre du monde en \n" +"unités « échelle ». Peut être utilisé pour déplacer un point\n" +"désiré en (0 ; 0) pour créer un point d'apparition convenable,\n" +"ou pour « zoomer » sur un point désiré en augmentant\n" +"« l'échelle ».\n" +"La valeur par défaut est réglée pour créer une zone\n" +"d'apparition convenable pour les ensembles de Mandelbrot\n" +"avec les paramètres par défaut, elle peut nécessité une \n" +"modification dans d'autres situations.\n" +"Interval environ de -2 à 2. Multiplier par « échelle » convertir\n" +"le décalage en nœuds." #: src/settings_translation_file.cpp msgid "" @@ -2052,9 +2037,8 @@ msgid "3D mode" msgstr "Mode écran 3D" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode parallax strength" -msgstr "Force des normalmaps" +msgstr "Paralaxe en mode 3D" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." @@ -2075,6 +2059,11 @@ msgid "" "to be adjusted, as floatland tapering functions best when this noise has\n" "a value range of approximately -2.0 to 2.0." msgstr "" +"Bruit 3D pour la structures des îles volantes.\n" +"Si la valeur par défaut est changée, le bruit « d'échelle » (0,7 par défaut)" +"\n" +"doit peut-être être ajustée, parce que l'effilage des îles volantes\n" +"fonctionne le mieux quand ce bruit est environ entre -2 et 2." #: src/settings_translation_file.cpp msgid "3D noise defining structure of river canyon walls." @@ -2141,9 +2130,8 @@ msgid "ABM interval" msgstr "Intervalle des ABM" #: src/settings_translation_file.cpp -#, fuzzy msgid "Absolute limit of queued blocks to emerge" -msgstr "Limite absolue des files émergentes" +msgstr "Limite stricte de la file de blocs émergents" #: src/settings_translation_file.cpp msgid "Acceleration in air" @@ -2201,6 +2189,12 @@ msgid "" "Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" "to be sure) creates a solid floatland layer." msgstr "" +"Règle la densité de la couche de massifs volants.\n" +"La densité augmente avec cette valeur. Peut être positive ou négative.\n" +"Valeur égale à 0,0 implique 50 % du volume est du massif volant.\n" +"Valeur égale à 2,0 implique une couche de massifs volants solide\n" +"(peut dépendre de « mgv7_np_floatland », toujours vérifier pour\n" +"être sûr)." #: src/settings_translation_file.cpp msgid "Advanced" @@ -2404,17 +2398,17 @@ msgid "Bumpmapping" msgstr "Bump mapping" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" -"Caméra 'près de la coupure de distance' dans les nœuds, entre 0 et 0,5.\n" +"Caméra « près de la coupure de distance » dans les nœuds, entre 0 et 0,25.\n" +"Fonctionne uniquement sur plateformes GLES.\n" "La plupart des utilisateurs n’auront pas besoin de changer cela.\n" -"L’augmentation peut réduire l’artifacting sur des GPU plus faibles.\n" -"0.1 - Par défaut, 0,25 - Bonne valeur pour les comprimés plus faibles." +"L’augmentation peut réduire les anomalies sur des petites cartes graphique.\n" +"0,1 par défaut, 0,25 bonne valeur pour des composants faibles." #: src/settings_translation_file.cpp msgid "Camera smoothing" @@ -2499,18 +2493,16 @@ msgstr "" "- Auto : Simple sur Android, complet pour le reste." #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat font size" -msgstr "Taille de la police" +msgstr "Taille de police du chat" #: src/settings_translation_file.cpp msgid "Chat key" msgstr "Tchatter" #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat log level" -msgstr "Niveau de détails des infos de débogage" +msgstr "Verbosité logicielle" #: src/settings_translation_file.cpp msgid "Chat message count limit" @@ -2806,9 +2798,8 @@ msgid "Default report format" msgstr "Format de rapport par défaut" #: src/settings_translation_file.cpp -#, fuzzy msgid "Default stack size" -msgstr "Jeu par défaut" +msgstr "Taille d’empilement par défaut" #: src/settings_translation_file.cpp msgid "" @@ -3190,6 +3181,12 @@ msgid "" "Values < 1.0 (for example 0.25) create a more defined surface level with\n" "flatter lowlands, suitable for a solid floatland layer." msgstr "" +"Exposant contrôlant la forme du bas des massifs volants.\n" +"Une valeur égale à 1 donne une forme conique.\n" +"Une valeur supérieure à 1 donne une longue base éfilée (concave),\n" +"plus pour des îles volantes comme celles par défaut.\n" +"Une valeur inférieure à 1 (disons 0,25) donne une surface bien\n" +"définie en bas, plus pour une couche solide de massif volant." #: src/settings_translation_file.cpp msgid "FPS in pause menu" @@ -3313,39 +3310,32 @@ msgid "Fixed virtual joystick" msgstr "Fixer le joystick virtuel" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland density" -msgstr "Densité des montagnes flottantes" +msgstr "Densité des massifs volants" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland maximum Y" -msgstr "Maximum Y des donjons" +msgstr "Maximum Y de massifs volants" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland minimum Y" -msgstr "Minimum Y des donjons" +msgstr "Minimum Y des massifs volants" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland noise" -msgstr "Le bruit de base des terres flottantes" +msgstr "Bruit des massifs volants" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland taper exponent" -msgstr "Densité des montagnes flottantes" +msgstr "Paramètre de forme des massifs volants" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland tapering distance" -msgstr "Le bruit de base des terres flottantes" +msgstr "Hauteur des bases des massifs volants" #: src/settings_translation_file.cpp -#, fuzzy msgid "Floatland water level" -msgstr "Hauteur des terrains flottants" +msgstr "Niveau d'eau des massifs volants" #: src/settings_translation_file.cpp msgid "Fly key" @@ -3404,6 +3394,8 @@ msgid "" "Font size of the recent chat text and chat prompt in point (pt).\n" "Value 0 will use the default font size." msgstr "" +"Taille de police (en pt) des messages récents et du curseur.\n" +"Une valeur nulle correspond à la taille par défaut." #: src/settings_translation_file.cpp msgid "" @@ -3593,7 +3585,6 @@ msgid "HUD toggle key" msgstr "HUD" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Handling for deprecated Lua API calls:\n" "- legacy: (try to) mimic old behaviour (default for release).\n" @@ -3602,8 +3593,8 @@ msgid "" msgstr "" "Traitement des appels d'API Lua obsolètes :\n" "- legacy : imite l'ancien comportement (par défaut en mode release).\n" -"- log : imite et enregistre les appels obsolètes (par défaut en mode " -"debug).\n" +"- log : imite et enregistre les appels obsolètes (par défaut en mode debug)." +"\n" "- error : interruption à l'usage d'un appel obsolète (recommandé pour les " "développeurs de mods)." @@ -3839,16 +3830,14 @@ msgid "How deep to make rivers." msgstr "Quelle profondeur pour faire des rivières." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "How fast liquid waves will move. Higher = faster.\n" "If negative, liquid waves will move backwards.\n" "Requires waving liquids to be enabled." msgstr "" -"La vitesse à laquelle les ondes liquides se déplaceront. Plus haut = plus " -"rapide.\n" -"Si la valeur est négative, les ondes liquides seront inversées.\n" -"Nécessite l'activation de liquides ondulants." +"La vitesse des vagues augmente avec cette valeur.\n" +"Une valeur négative inverse leur mouvement.\n" +"Nécessite que l'ondulation des liquides soit active." #: src/settings_translation_file.cpp msgid "" @@ -4988,13 +4977,12 @@ msgstr "" "réseau." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Length of liquid waves.\n" "Requires waving liquids to be enabled." msgstr "" -"Mettre sur \"true\" active les feuilles d'arbres mouvantes.\n" -"Nécessite les shaders pour être activé." +"Longueur des vagues.\n" +"Nécessite que l'ondulation des liquides soit active." #: src/settings_translation_file.cpp msgid "Length of time between Active Block Modifier (ABM) execution cycles" @@ -5037,23 +5025,20 @@ msgid "Light curve boost center" msgstr "Centre de boost de courbe de lumière" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve boost spread" -msgstr "Étalement du boost intermédiaire de la courbe de lumière" +msgstr "Étalement du boost de la courbe de lumière" #: src/settings_translation_file.cpp msgid "Light curve gamma" msgstr "Courbe de lumière gamma" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve high gradient" -msgstr "Boost intermédiaire de la courbe de lumière" +msgstr "Fort gradient de la courbe de lumière" #: src/settings_translation_file.cpp -#, fuzzy msgid "Light curve low gradient" -msgstr "Centre du boost intermédiaire de la courbe de lumière" +msgstr "Faible gradient de la courbe de lumière" #: src/settings_translation_file.cpp msgid "" @@ -5097,9 +5082,8 @@ msgid "Liquid queue purge time" msgstr "Délais de nettoyage d'une file de liquide" #: src/settings_translation_file.cpp -#, fuzzy msgid "Liquid sinking" -msgstr "Vitesse d'écoulement du liquide" +msgstr "Écoulement du liquide" #: src/settings_translation_file.cpp msgid "Liquid update interval in seconds." @@ -5132,9 +5116,8 @@ msgid "Lower Y limit of dungeons." msgstr "Limite basse Y des donjons." #: src/settings_translation_file.cpp -#, fuzzy msgid "Lower Y limit of floatlands." -msgstr "Limite basse Y des donjons." +msgstr "Borne inférieure Y des massifs volants." #: src/settings_translation_file.cpp msgid "Main menu script" @@ -5170,23 +5153,22 @@ msgid "Map generation attributes specific to Mapgen Carpathian." msgstr "Attributs spécifiques au Mapgen Carpathian." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Flat.\n" "Occasional lakes and hills can be added to the flat world." msgstr "" -"Attributs de terrain spécifiques au générateur plat.\n" +"Attributs de terrain spécifiques au générateur de monde plat.\n" "Des lacs et des collines occasionnels peuvent être ajoutés au monde plat." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen Fractal.\n" "'terrain' enables the generation of non-fractal terrain:\n" "ocean, islands and underground." msgstr "" -"Attributs spécifiques au Mapgen v7.\n" -"'crêtes' activent les rivières." +"Attributs de terrain spécifiques au générateur de monde fractal.\n" +"'terrain' active la création de terrain non fractal,\n" +"c-à-d un océan, des îles et du souterrain." #: src/settings_translation_file.cpp msgid "" @@ -5210,7 +5192,6 @@ msgid "Map generation attributes specific to Mapgen v5." msgstr "Attributs spécifiques au Mapgen v5." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen v6.\n" "The 'snowbiomes' flag enables the new 5 biome system.\n" @@ -5218,13 +5199,11 @@ msgid "" "the 'jungles' flag is ignored." msgstr "" "Attributs de génération du monde spécifiques au générateur v6.\n" -"Le signal ‹snowbiomes› active le nouveau système de 5 biomes.\n" -"Quand le nouveau système est activé les jungles sont automatiquement " -"activées et\n" -"le signal ‹jungles› est ignoré." +"Le paramètre ‹snowbiomes› active le nouveau système à 5 biomes.\n" +"Sous ce nouveau système, la création de jungles est automatique\n" +"et le paramètre ‹jungles› est ignoré." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Map generation attributes specific to Mapgen v7.\n" "'ridges': Rivers.\n" @@ -5232,7 +5211,9 @@ msgid "" "'caverns': Giant caves deep underground." msgstr "" "Attributs spécifiques au Mapgen v7.\n" -"'crêtes' activent les rivières." +"- 'ridges', « crêtes » pour des rivières.\n" +"- 'floatlands', « massifs volant » massifs de terres atmosphèrique.\n" +"- 'caverns', « cavernes » pour des grottes immenses et profondes." #: src/settings_translation_file.cpp msgid "Map generation limit" @@ -5391,7 +5372,6 @@ msgid "Maximum number of blocks that can be queued for loading." msgstr "Nombre maximum de mapblocks qui peuvent être listés pour chargement." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be generated.\n" "This limit is enforced per player." @@ -5400,7 +5380,6 @@ msgstr "" "Laisser ce champ vide pour un montant approprié défini automatiquement." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Maximum number of blocks to be queued that are to be loaded from file.\n" "This limit is enforced per player." @@ -5505,7 +5484,7 @@ msgstr "Méthodes utilisées pour l'éclairage des objets." #: src/settings_translation_file.cpp msgid "Minimal level of logging to be written to chat." -msgstr "" +msgstr "Verbosité minimale du log dans le chat." #: src/settings_translation_file.cpp msgid "Minimap" @@ -5520,16 +5499,12 @@ msgid "Minimap scan height" msgstr "Hauteur de scannage de la mini-carte" #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimum limit of random number of large caves per mapchunk." -msgstr "" -"Limite minimale pour le nombre aléatoire de grandes grottes par mapchunk." +msgstr "Minimum pour le nombre de grandes grottes par mapchunk tiré au hasard." #: src/settings_translation_file.cpp -#, fuzzy msgid "Minimum limit of random number of small caves per mapchunk." -msgstr "" -"Limite minimale pour le nombre aléatoire de petites grottes par mapchunk." +msgstr "Minimum pour le nombre de petites grottes par mapchunk tiré au hasard." #: src/settings_translation_file.cpp msgid "Minimum texture size" @@ -5600,7 +5575,6 @@ msgid "Mute sound" msgstr "Couper le son" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Name of map generator to be used when creating a new world.\n" "Creating a world in the main menu will override this.\n" @@ -5609,13 +5583,9 @@ msgid "" msgstr "" "Nom du générateur de terrain qui sera utilisé à la création d’un nouveau " "monde.\n" -"Créer un nouveau monde depuis le menu principal ignorera ceci.\n" -"Les générateurs actuellement stables sont :\n" -"v5, v6, v7 (sauf îles flottantes), bloc unique.\n" -"‹stable› signifie que la génération d’un monde préexistant ne sera pas " -"changée\n" -"dans le futur. Notez cependant que les biomes sont définis par les jeux et " -"peuvent être sujets à changement." +"Cela sera perdu à la création d'un monde depuis le menu principal.\n" +"Les générateurs actuellement très instables sont :\n" +"- Les massifs volants du générateur v7 (option inactive par défaut)." #: src/settings_translation_file.cpp msgid "" @@ -5635,7 +5605,6 @@ msgstr "" "joueurs se connectent." #: src/settings_translation_file.cpp -#, fuzzy msgid "Near plane" msgstr "Plan à proximité" @@ -5688,7 +5657,6 @@ msgid "Number of emerge threads" msgstr "Nombre de tâches en cours" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Number of emerge threads to use.\n" "Value 0:\n" @@ -5701,19 +5669,17 @@ msgid "" "processes, especially in singleplayer and/or when running Lua code in\n" "'on_generated'. For many users the optimum setting may be '1'." msgstr "" -"Nombre de threads à utiliser.\n" -"Rien ou 0 :\n" -"— Sélection automatique. Le nombre de threads sera\n" -"« nombre de processeurs − 2 », avec une limite inférieure de 1.\n" +"Nombre de threads « emerge » à utiliser.\n" +"Valeur nulle :\n" +"— Sélection automatique. Le nombre de threads sera le\n" +"« nombre de processeurs moins 2 », avec un minimum de 1.\n" "Toute autre valeur :\n" -"— Spécifie le nombre de threads, avec une limite inférieure de 1.\n" -"Avertissement : Augmenter le nombre de threads augmente la génération du " -"terrain du moteur\n" -"mais cela peut nuire à la performance du jeu en interférant avec d’autres.\n" -"processus, en particulier en mode solo ou lors de l’exécution du code Lua en " -"mode\n" -"« on_generated ».\n" -"Pour de nombreux utilisateurs, le réglage optimal peut être « 1 »." +"— Spécifie le nombre de threads, avec un minimum de 1.\n" +"ATTENTION : augmenter le nombre de threads accélère bien la création\n" +"de terrain, mais cela peut nuire à la performance du jeu en interférant\n" +"avec d’autres processus, en particulier en mode solo ou lors de \n" +"l’exécution du code Lua en mode « on_generated ».\n" +"Pour beaucoup, le réglage optimal peut être « 1 »." #: src/settings_translation_file.cpp msgid "" @@ -5808,6 +5774,8 @@ msgid "" "Path to save screenshots at. Can be an absolute or relative path.\n" "The folder will be created if it doesn't already exist." msgstr "" +"Chemin d'accès pour les captures d'écran (absolu ou relatif).\n" +"La création du dossier sera faite si besoin." #: src/settings_translation_file.cpp msgid "" @@ -5837,7 +5805,6 @@ msgstr "" "La police de rentrée sera utilisée si la police ne peut pas être chargée." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Path to the monospace font.\n" "If “freetype” setting is enabled: Must be a TrueType font.\n" @@ -5845,10 +5812,10 @@ msgid "" "This font is used for e.g. the console and profiler screen." msgstr "" "Chemin vers la police monospace.\n" -"Si le paramètre \"freetype\" est activé : doit être une police TrueType.\n" -"Si le paramètre \"freetype\" est désactivé : doit être une police de " -"vecteurs bitmap ou XML.\n" -"Cette police est utilisée pour par exemple la console et l’écran du " +"Si \"freetype\" est activé : doit être une police TrueType.\n" +"Si \"freetype\" est désactivé : doit être une police de vecteurs bitmap ou " +"XML.\n" +"Cette police est utilisée par exemple pour la console et l’écran du " "profileur." #: src/settings_translation_file.cpp @@ -5857,12 +5824,11 @@ msgstr "Mettre en pause sur perte du focus de la fenêtre" #: src/settings_translation_file.cpp msgid "Per-player limit of queued blocks load from disk" -msgstr "" +msgstr "Limite par joueur de blocs en attente à charger depuis le disque" #: src/settings_translation_file.cpp -#, fuzzy msgid "Per-player limit of queued blocks to generate" -msgstr "Limite des files émergentes à générer" +msgstr "Limite par joueur des blocs émergents à créer" #: src/settings_translation_file.cpp msgid "Physics" @@ -5948,7 +5914,7 @@ msgstr "Profilage" #: src/settings_translation_file.cpp msgid "Prometheus listener address" -msgstr "" +msgstr "Adresse d'écoute pour Prometheus" #: src/settings_translation_file.cpp msgid "" @@ -5957,6 +5923,10 @@ msgid "" "enable metrics listener for Prometheus on that address.\n" "Metrics can be fetch on http://127.0.0.1:30000/metrics" msgstr "" +"Adresse d'écoute pour Prometheus.\n" +"Lorsque Minetest est compilé avec l'option ENABLE_PROMETHEUS,\n" +"cette adresse est utilisée pour l'écoute de données pour Prometheus.\n" +"Les données sont sur http://127.0.0.1:30000/metrics" #: src/settings_translation_file.cpp msgid "Proportion of large caves that contain liquid." @@ -5989,9 +5959,8 @@ msgid "Recent Chat Messages" msgstr "Messages de discussion récents" #: src/settings_translation_file.cpp -#, fuzzy msgid "Regular font path" -msgstr "Chemin du rapport" +msgstr "Chemin d'accès pour la police normale" #: src/settings_translation_file.cpp msgid "Remote media" @@ -6019,7 +5988,6 @@ msgid "Report path" msgstr "Chemin du rapport" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Restricts the access of certain client-side functions on servers.\n" "Combine the byteflags below to restrict client-side features, or set to 0\n" @@ -6033,12 +6001,13 @@ msgid "" "READ_PLAYERINFO: 32 (disable get_player_names call client-side)" msgstr "" "Limite l'accès de certaines fonctions côté client sur les serveurs\n" -"Combine these byteflags below to restrict client-side features:\n" -"LOAD_CLIENT_MODS: 1 (désactive le chargement des mods du client)\n" -"CHAT_MESSAGES: 2 (désactivez l'appel send_chat_message côté client)\n" -"READ_ITEMDEFS: 4 (désactivez l'appel get_item_def côté client)\n" -"READ_NODEDEFS: 8 (désactiver l'appel côté client de get_node_def)\n" -"LOOKUP_NODES_LIMIT: 16 (limite les appels get_node côté client à\n" +"Combiner les byteflags si dessous pour restraindre ou mettre 0\n" +"pour laisser sans restriction.\n" +"LOAD_CLIENT_MODS : 1 (désactive le chargement des mods du client)\n" +"CHAT_MESSAGES : 2 (désactivez l'appel send_chat_message côté client)\n" +"READ_ITEMDEFS : 4 (désactivez l'appel get_item_def côté client)\n" +"READ_NODEDEFS : 8 (désactiver l'appel côté client de get_node_def)\n" +"LOOKUP_NODES_LIMIT : 16 (limite les appels get_node côté client à\n" "csm_restriction_noderange)" #: src/settings_translation_file.cpp @@ -6066,14 +6035,12 @@ msgid "Rightclick repetition interval" msgstr "Intervalle de répétition du clic droit" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel depth" msgstr "Profondeur des rivières" #: src/settings_translation_file.cpp -#, fuzzy msgid "River channel width" -msgstr "Profondeur des rivières" +msgstr "Largeur des rivières" #: src/settings_translation_file.cpp msgid "River depth" @@ -6088,9 +6055,8 @@ msgid "River size" msgstr "Taille des rivières" #: src/settings_translation_file.cpp -#, fuzzy msgid "River valley width" -msgstr "Profondeur des rivières" +msgstr "Largeur des vallées fluviales" #: src/settings_translation_file.cpp msgid "Rollback recording" @@ -6211,7 +6177,6 @@ msgid "Selection box width" msgstr "Epaisseur des bords de sélection" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Selects one of 18 fractal types.\n" "1 = 4D \"Roundy\" Mandelbrot set.\n" @@ -6304,30 +6269,29 @@ msgstr "" "par les clients." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving leaves.\n" "Requires shaders to be enabled." msgstr "" -"Mettre sur \"true\" active les feuilles d'arbres mouvantes.\n" -"Nécessite les shaders pour être activé." +"Mettre sur « true » active le mouvement des\n" +"feuilles d'arbres mouvantes. Nécessite les\n" +"shaders pour être activé." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving liquids (like water).\n" "Requires shaders to be enabled." msgstr "" -"Mettre sur \"true\" active les vagues.\n" +"Mettre sur « true » active les vagues.\n" "Nécessite les shaders pour être activé." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Set to true to enable waving plants.\n" "Requires shaders to be enabled." msgstr "" -"Mettre sur \"true\" active les plantes mouvantes.\n" +"Mettre sur « true » active le mouvement\n" +"des végétaux.\n" "Nécessite les shaders pour être activé." #: src/settings_translation_file.cpp @@ -6346,22 +6310,20 @@ msgstr "" "Fonctionne seulement avec OpenGL." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the default font. If 0, then shadow will not be " "drawn." msgstr "" -"Décalage de l'ombre de la police, si 0 est choisi alors l'ombre ne " -"s'affichera pas." +"Décalage de l'ombre de la police par défaut (en pixel). Aucune ombre si la " +"valeur est 0." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " "be drawn." msgstr "" -"Décalage de l'ombre de la police, si 0 est choisi alors l'ombre ne " -"s'affichera pas." +"Décalage de l'ombre de la police de secours (en pixel). Aucune ombre si la " +"valeur est 0." #: src/settings_translation_file.cpp msgid "Shape of the minimap. Enabled = round, disabled = square." @@ -6500,16 +6462,20 @@ msgid "" "Note that mods or games may explicitly set a stack for certain (or all) " "items." msgstr "" +"Donne les valeurs par défaut de la taille des piles de nœuds, d'items et " +"d'outils.\n" +"Les mods ou les parties peuvent fixer explicitement une pile pour certains " +"items." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Spread of light curve boost range.\n" "Controls the width of the range to be boosted.\n" "Standard deviation of the light curve boost Gaussian." msgstr "" -"Propagation de la courbe de lumière mi-boost.\n" -"Écart-type du gaussien moyennement boosté." +"Longueur d'intervalle de l'amplification de la courbe de lumière.\n" +"Contrôle la largeur de l'intervalle d'amplification.\n" +"Écart type de la gaussienne d'amplification de courbe de lumière." #: src/settings_translation_file.cpp msgid "Static spawnpoint" @@ -6528,24 +6494,22 @@ msgid "Step mountain spread noise" msgstr "Bruit pour l’étalement des montagnes en escalier" #: src/settings_translation_file.cpp -#, fuzzy msgid "Strength of 3D mode parallax." -msgstr "Force de l'occlusion parallaxe." +msgstr "Intensité de parallaxe en mode 3D." #: src/settings_translation_file.cpp msgid "Strength of generated normalmaps." msgstr "Force des normalmaps autogénérés." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Strength of light curve boost.\n" "The 3 'boost' parameters define a range of the light\n" "curve that is boosted in brightness." msgstr "" -"Force de la courbe de lumière boost.\n" -"Les 3 paramètres 'boost' définissent une gamme de la lumière\n" -"courbe qui est stimulée dans la luminosité." +"Niveau d'amplification de la courbure de la lumière.\n" +"Les trois paramètres « d'amplification » définissent un intervalle\n" +"de la courbe de lumière pour lequel la luminosité est amplifiée." #: src/settings_translation_file.cpp msgid "Strict protocol checking" From 55c30596e319784aeaf3967887ef8a42c30572da Mon Sep 17 00:00:00 2001 From: Miniontoby Date: Thu, 2 Jul 2020 13:35:30 +0000 Subject: [PATCH 398/424] Translated using Weblate (Dutch) Currently translated at 78.8% (1065 of 1350 strings) --- po/nl/minetest.po | 51 +++++++++++++++++++---------------------------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/po/nl/minetest.po b/po/nl/minetest.po index e664d7260..8f6912457 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Dutch (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-27 20:41+0000\n" -"Last-Translator: Wuzzy \n" +"PO-Revision-Date: 2020-07-06 21:41+0000\n" +"Last-Translator: Miniontoby \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -24,7 +24,7 @@ msgstr "Je bent gestorven" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "Oke" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -174,7 +174,7 @@ msgstr "" #: builtin/mainmenu/dlg_contentstore.lua msgid "Downloading..." -msgstr "Downloading..." +msgstr "Downloaden..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" @@ -1228,7 +1228,7 @@ msgstr "" "- aanraken stapel of vak:\n" " --> stapel verplaatsen\n" "- aanraken & slepen, tik met tweede vinger\n" -" --> plaats enkel object in vak\n" +" --> plaats enkel object in vak\n" #: src/client/game.cpp msgid "Disabled unlimited viewing range" @@ -2122,10 +2122,8 @@ msgid "" "A chosen map seed for a new map, leave empty for random.\n" "Will be overridden when creating a new world in the main menu." msgstr "" -"Vooringesteld kiemgetal voor de wereld. Indien leeg, wordt een willekeurige\n" -"waarde gekozen.\n" -"Wanneer vanuit het hoofdmenu een nieuwe wereld gecreëerd wordt, kan een\n" -"ander kiemgetal gekozen worden." +"Een gekozen kaartzaad voor een nieuwe kaart, laat leeg voor willekeurig. \n" +"Wordt overschreven bij het creëren van een nieuwe wereld in het hoofdmenu." #: src/settings_translation_file.cpp msgid "A message to be displayed to all clients when the server crashes." @@ -2192,8 +2190,8 @@ msgid "" "Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " "screens." msgstr "" -"Aangepaste DPI (dots per inch) instelling voor het scherm.\n" -"Bijv. voor 4k schermen (niet voor X11 of Android)." +"Pas de dpi-configuratie aan op uw scherm (alleen niet X11 / Android), b.v. " +"voor 4k-schermen." #: src/settings_translation_file.cpp #, c-format @@ -2624,9 +2622,9 @@ msgid "" "Comma-separated list of mods that are allowed to access HTTP APIs, which\n" "allow them to upload and download data to/from the internet." msgstr "" -"Lijst van mods die HTTP mogen gebruiken. Deze mods kunnen gegevens uploaden\n" -"naar en downloaden van het internet.\n" -"Gescheiden door komma's." +"Door komma's gescheiden lijst met mods die toegang hebben tot HTTP API's, " +"die \n" +"sta hen toe om gegevens van / naar internet te uploaden en te downloaden." #: src/settings_translation_file.cpp msgid "" @@ -3639,9 +3637,8 @@ msgid "" msgstr "" "Laat de profiler zichzelf profileren:\n" "* Profileer een lege functie.\n" -" Dit geeft een schatting van de CPU-tijd die door de profiler zelf " -"gebruikt wordt,\n" -" ten koste van één extra functie-aanroep.\n" +" Dit geeft een schatting van de CPU-tijd die door de profiler zelf gebruikt " +"wordt (+1 functie-aanroep).\n" "* Profileer de code die de statistieken ververst." #: src/settings_translation_file.cpp @@ -3902,9 +3899,8 @@ msgid "Hotbar slot 9 key" msgstr "Toets voor volgend gebruikte tool" #: src/settings_translation_file.cpp -#, fuzzy msgid "How deep to make rivers." -msgstr "Diepte van de rivieren" +msgstr "Diepte van de rivieren." #: src/settings_translation_file.cpp msgid "" @@ -3926,9 +3922,8 @@ msgstr "" "geheugen." #: src/settings_translation_file.cpp -#, fuzzy msgid "How wide to make rivers." -msgstr "Breedte van rivieren" +msgstr "Breedte van rivieren." #: src/settings_translation_file.cpp msgid "Humidity blend noise" @@ -6125,9 +6120,8 @@ msgstr "" "Waarden groter dan 26 hebben scherpe wolkenranden tot gevolg." #: src/settings_translation_file.cpp -#, fuzzy msgid "Raises terrain to make valleys around the rivers." -msgstr "Verhoogt het terrein om rond de rivieren valleien te maken" +msgstr "Verhoogt het terrein om rond de rivieren valleien te maken." #: src/settings_translation_file.cpp msgid "Random input" @@ -6566,9 +6560,8 @@ msgid "Slice w" msgstr "Slice w" #: src/settings_translation_file.cpp -#, fuzzy msgid "Slope and fill work together to modify the heights." -msgstr "Helling en vulling bepalen in combinatie de hoogte" +msgstr "Helling en vulling bepalen in combinatie de hoogte." #: src/settings_translation_file.cpp msgid "Small cave maximum number" @@ -6817,17 +6810,15 @@ msgstr "" " als '/profiler save' wordt aangeroepen zonder expliciet formaat." #: src/settings_translation_file.cpp -#, fuzzy msgid "The depth of dirt or other biome filler node." -msgstr "De diepte van aarde of andersoortige toplaag" +msgstr "De diepte van aarde of andersoortige toplaag." #: src/settings_translation_file.cpp -#, fuzzy msgid "" "The file path relative to your worldpath in which profiles will be saved to." msgstr "" -"Het pad, ten opzichte van het wereld-pad, waar profilerings-gegevens worden " -"opgeslagen.\n" +"Het bestand pad ten opzichte van de wereldfolder waar profilerings-gegevens " +"worden opgeslagen." #: src/settings_translation_file.cpp msgid "The identifier of the joystick to use" From 4324b936159834a8feaea9094e41e3544757f828 Mon Sep 17 00:00:00 2001 From: Tirifto Date: Sat, 4 Jul 2020 18:30:38 +0000 Subject: [PATCH 399/424] Translated using Weblate (Esperanto) Currently translated at 96.5% (1304 of 1350 strings) --- po/eo/minetest.po | 108 ++++++++++++++++++++-------------------------- 1 file changed, 47 insertions(+), 61 deletions(-) diff --git a/po/eo/minetest.po b/po/eo/minetest.po index 8c21667df..752538f5e 100644 --- a/po/eo/minetest.po +++ b/po/eo/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Esperanto (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-03-31 10:14+0000\n" -"Last-Translator: sfan5 \n" +"PO-Revision-Date: 2020-07-06 21:41+0000\n" +"Last-Translator: Tirifto \n" "Language-Team: Esperanto \n" "Language: eo\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -24,7 +24,7 @@ msgstr "Vi mortis" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "Bone" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" @@ -115,7 +115,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Trovu pliajn modifaĵojn" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" @@ -220,7 +220,7 @@ msgstr "Ĝisdatigi" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "Vido" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" @@ -228,7 +228,7 @@ msgstr "Mondo kun nomo «$1» jam ekzistas" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "Aldona tereno" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" @@ -240,33 +240,28 @@ msgid "Altitude dry" msgstr "Alteca malvarmiĝo" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biome blending" -msgstr "Klimata bruo" +msgstr "Klimata miksado" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Biomes" -msgstr "Klimata bruo" +msgstr "Klimatoj" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caverns" -msgstr "Bruo de kavernoj" +msgstr "Kavernegoj" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Caves" -msgstr "Oktavoj" +msgstr "Kavernoj" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" msgstr "Krei" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Decorations" -msgstr "Ripetoj" +msgstr "Ornamoj" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" @@ -277,23 +272,20 @@ msgid "Download one from minetest.net" msgstr "Elŝutu ludon el minetest.net" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Dungeons" -msgstr "Bruo de forgeskeloj" +msgstr "Forgeskeloj" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "Plata tereno" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floating landmasses in the sky" -msgstr "Denseco de fluginsulaj montoj" +msgstr "Flugantaj teramasoj en la ĉielo" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Floatlands (experimental)" -msgstr "Alteco de fluginsuloj" +msgstr "Fluginsuloj (eksperimentaj)" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" @@ -301,28 +293,28 @@ msgstr "Ludo" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "Estigi nefraktalan terenon: oceano kaj subtero" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Montetoj" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Humid rivers" -msgstr "Videa pelilo" +msgstr "Malsekaj riveroj" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Plialtigas malsekecon ĉirkaŭ riveroj" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Lagoj" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" msgstr "" +"Malalta malsekeco kaj alta varmeco kaŭzas malprofundajn aŭ sekajn riverojn" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" @@ -333,14 +325,12 @@ msgid "Mapgen flags" msgstr "Parametroj de mondestigilo" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mapgen-specific flags" -msgstr "Parametroj specialaj por Mondestigilo v5" +msgstr "Parametroj specialaj por Mondestigilo" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Mountains" -msgstr "Bruo de montoj" +msgstr "Montoj" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" @@ -348,7 +338,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "Reto de tuneloj kaj kavernoj" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" @@ -356,20 +346,19 @@ msgstr "Neniu ludo estas elektita" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "Malpliigas varmecon kun alteco" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "Malpliigas malsekecon kun alteco" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Rivers" -msgstr "Grandeco de riveroj" +msgstr "Riveroj" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "Marnivelaj riveroj" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua @@ -378,29 +367,31 @@ msgstr "Fontnombro" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "Glatigi transiron inter klimatoj" #: builtin/mainmenu/dlg_create_world.lua msgid "" "Structures appearing on the terrain (no effect on trees and jungle grass " "created by v6)" msgstr "" +"Konstruaĵoj aperantaj sur la tereno (neniu efiko sur arboj kaj ĝangala herbo " +"kreitaj de v6)" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" -msgstr "" +msgstr "Konstruaĵoj aperantaj sur la tereno, ofte arboj kaj kreskaĵoj" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "Milda, Dezerto" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "Milda, Dezerto, Ĝangalo" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "Milda, Dezerto, Ĝangalo, Tundro, Tajgo" #: builtin/mainmenu/dlg_create_world.lua #, fuzzy @@ -409,22 +400,19 @@ msgstr "Bruo de terena bazo" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "Arboj kaj ĝangala herbo" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Vary river depth" -msgstr "Rivera profundo" +msgstr "Variigi profundecon de riveroj" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "Tre grandaj kavernoj profunde subtere" #: builtin/mainmenu/dlg_create_world.lua -#, fuzzy msgid "Warning: The Development Test is meant for developers." -msgstr "" -"Averto: La minimuma programista testo estas intencita por programistoj." +msgstr "Averto: La programista testo estas intencita por programistoj." #: builtin/mainmenu/dlg_create_world.lua msgid "World name" @@ -1397,11 +1385,11 @@ msgstr "Silentigite" #: src/client/game.cpp msgid "Sound system is disabled" -msgstr "" +msgstr "Sonsistemo estas malŝaltita" #: src/client/game.cpp msgid "Sound system is not supported on this build" -msgstr "" +msgstr "Sonsistemo ne estas subtenata de ĉi tiu muntaĵo" #: src/client/game.cpp msgid "Sound unmuted" @@ -2041,9 +2029,8 @@ msgid "3D mode" msgstr "3d-a reĝimo" #: src/settings_translation_file.cpp -#, fuzzy msgid "3D mode parallax strength" -msgstr "Normalmapa potenco" +msgstr "Forteco de 3D-reĝima paralakso" #: src/settings_translation_file.cpp msgid "3D noise defining giant caverns." @@ -2386,15 +2373,15 @@ msgid "Bumpmapping" msgstr "Mapado de elstaraĵoj" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" "Only works on GLES platforms. Most users will not need to change this.\n" "Increasing can reduce artifacting on weaker GPUs.\n" "0.1 = Default, 0.25 = Good value for weaker tablets." msgstr "" -"Distanco de vidpunkto «proksime tonda ebeno» en monderoj, inter 0 kaj 0.5.\n" -"Plejparto de uzantoj ne bezonos ĉi tion ŝanĝi.\n" +"Distanco de vidpunkto «proksime tonda ebeno» en monderoj, inter 0 kaj 0.25.\n" +"Funkcias nur sur GLES-platformoj. Plejparto de uzantoj ne bezonos ĉi tion " +"ŝanĝi.\n" "Plialtigo povas malpliigi misbildojn por malfortaj grafiktraktiloj.\n" "0.1 = Norma, 0.25 = Bona valoro por malfortaj tabulkomputiloj." @@ -2479,9 +2466,8 @@ msgstr "" "Povus esti bezona por malgrandaj ekranoj." #: src/settings_translation_file.cpp -#, fuzzy msgid "Chat font size" -msgstr "Tipara grandeco" +msgstr "Grandeco de babiluja tiparo" #: src/settings_translation_file.cpp msgid "Chat key" From 6ca7d429695e6ddac98224ac674b4724edc7dc3f Mon Sep 17 00:00:00 2001 From: TZTarzan Date: Tue, 7 Jul 2020 08:16:45 +0000 Subject: [PATCH 400/424] Translated using Weblate (Thai) Currently translated at 60.8% (822 of 1350 strings) --- po/th/minetest.po | 128 ++++++++++++++++++++++++---------------------- 1 file changed, 67 insertions(+), 61 deletions(-) diff --git a/po/th/minetest.po b/po/th/minetest.po index 21166877b..72490f111 100644 --- a/po/th/minetest.po +++ b/po/th/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Thai (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-01-11 18:26+0000\n" -"Last-Translator: rubenwardy \n" +"PO-Revision-Date: 2020-07-08 08:41+0000\n" +"Last-Translator: TZTarzan \n" "Language-Team: Thai \n" "Language: th\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.10.1\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -20,7 +20,7 @@ msgstr "เกิดใหม่" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" -msgstr "คุณชนม์" +msgstr "คุณตายแล้ว" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" @@ -33,7 +33,7 @@ msgstr "เกิดข้อผิดพลาดในสคริปต์ Lu #: builtin/fstk/ui.lua msgid "An error occurred:" -msgstr "เกิดข้อผิดพลาด:" +msgstr "เกิดข้อผิดพลาดขึ้น:" #: builtin/fstk/ui.lua msgid "Main menu" @@ -41,39 +41,41 @@ msgstr "เมนูหลัก" #: builtin/fstk/ui.lua msgid "Reconnect" -msgstr "เชื่อมต่อ" +msgstr "เชื่อมต่อใหม่" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "เซิร์ฟเวอร์ ร้องขอ เชื่อมต่อ:" +msgstr "เซิร์ฟเวอร์ได้ร้องขอการเชื่อมต่อใหม่:" #: builtin/mainmenu/common.lua src/client/game.cpp msgid "Loading..." -msgstr "โหลด ..." +msgstr "กำลังโหลด..." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "โพรโทคอลรุ่นไม่ตรงกัน. " +msgstr "เวอร์ชันโปรโทคอลไม่ตรงกัน " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "เซิร์ฟเวอร์บังคับใช้โพรโทคอลรุ่น $1 " +msgstr "เซิร์ฟเวอร์บังคับใช้โปรโตคอลเวอร์ชัน $1 " #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "เซิร์ฟเวอร์ที่สนับสนุนโพรโทคอลการระหว่าง $1 และ $2. " +msgstr "เซิร์ฟเวอร์ที่สนับสนุนเวอร์ชันโพรโทคอลระหว่าง $1 และ $2 " #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." -msgstr "ลอง reenabling serverlist สาธารณะ และตรวจสอบการเชื่อมต่ออินเทอร์เน็ต." +msgstr "" +"ลองเปิดใช้งานเซิร์ฟเวอร์ลิสต์สาธารณะอีกครั้งและตรวจสอบการเชื่อมต่ออินเทอร์เน็" +"ต" #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "เราสนับสนุนโพรโทคอลรุ่น $1 เท่านั้น." +msgstr "เราสนับสนุนโพรโทคอลเวอร์ชัน $1 เท่านั้น" #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "เราสนับสนุนโพรโทคอลการระหว่างรุ่น $1 และ $2." +msgstr "เราสนับสนุนโพรโทคอลระหว่างเวอร์ชัน $1 และ $2" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_delete_content.lua @@ -87,7 +89,7 @@ msgstr "ยกเลิก" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Dependencies:" -msgstr "อ้างอิง:" +msgstr "ไฟล์อ้างอิง:" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" @@ -95,7 +97,7 @@ msgstr "ปิดใช้งานทั้งหมด" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "ปิดการใช้งาน modpack" +msgstr "ปิดใช้งานม็อดแพ็ค" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" @@ -103,15 +105,15 @@ msgstr "เปิดใช้งานทั้งหมด" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "เปิดใช้งาน modpack" +msgstr "เปิดใช้งานม็อดแพ็ค" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" -"ไม่สามารถเปิดใช้งาน mod (วัยรุ่น) '$1' ประกอบด้วยอักขระที่ไม่ได้รับอนุญาต " -"อนุญาตให้มีอักขระเท่านั้น [a-z0-9_]." +"ไม่สามารถเปิดใช้งานม็อด '$1' ซึ่งประกอบด้วยตัวอักษรที่ไม่ได้รับอนุญาต ตัวอั" +"กษร [a-z0-9_] เท่านั้นที่ได้รับอนุญาต" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" @@ -119,7 +121,7 @@ msgstr "" #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" -msgstr "ปรับเปลี่ยน:" +msgstr "ม็อด:" #: builtin/mainmenu/dlg_config_world.lua #, fuzzy @@ -128,7 +130,7 @@ msgstr "เสริม อ้างอิง:" #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr "ไม่มีคำอธิบายเกี่ยวกับเกมให้." +msgstr "ไม่มีคำอธิบายของเกมที่ให้มา" #: builtin/mainmenu/dlg_config_world.lua #, fuzzy @@ -137,7 +139,7 @@ msgstr "ไม่มีการอ้างอิง." #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "ไม่ modpack มีคำอธิบาย" +msgstr "ไม่มีคำอธิบายของม็อดแพ็คที่ให้มา" #: builtin/mainmenu/dlg_config_world.lua #, fuzzy @@ -146,7 +148,7 @@ msgstr "เสริม อ้างอิง:" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "เสริม อ้างอิง:" +msgstr "ไฟล์อ้างอิงที่เลือกใช้ได้:" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp @@ -159,7 +161,7 @@ msgstr "โลก:" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" -msgstr "เปิดใช้งาน" +msgstr "เปิดใช้งานแล้ว" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" @@ -167,7 +169,7 @@ msgstr "แพคเกจทั้งหมด" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" -msgstr "กลับไปเมนูหลัก" +msgstr "กลับไปยังเมนูหลัก" #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" @@ -185,7 +187,7 @@ msgstr "ไม่สามารถดาวน์โหลด $1" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Games" -msgstr "เกมส์" +msgstr "เกม" #: builtin/mainmenu/dlg_contentstore.lua msgid "Install" @@ -194,11 +196,11 @@ msgstr "ติดตั้ง" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Mods" -msgstr "วัยรุ่น" +msgstr "ม็อด" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "ไม่อาจจะเรียก" +msgstr "ไม่สามารถเรียกแพคเกจได้" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" @@ -211,7 +213,7 @@ msgstr "ค้นหา" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" -msgstr "แพ็คเนื้อ" +msgstr "เทกซ์เจอร์แพ็ค" #: builtin/mainmenu/dlg_contentstore.lua msgid "Uninstall" @@ -219,7 +221,7 @@ msgstr "ถอนการติดตั้ง" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update" -msgstr "ปรับปรุง" +msgstr "อัปเดต" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" @@ -227,7 +229,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" -msgstr "โลกชื่อว่า '$1' อยู่แล้วมีอยู่" +msgstr "โลกที่ชื่อว่า '$1' มีอยู่แล้ว" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" @@ -269,7 +271,7 @@ msgstr "ข้อมูล:" #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "ดาวน์โหลดเกม เกม Minetest เช่นจาก minetest.net" +msgstr "ดาวน์โหลดเกม อย่างเช่น ไมน์เทสต์เกม ได้จาก minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" @@ -347,7 +349,7 @@ msgstr "" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" -msgstr "ไม่มีเกมที่เลือก" +msgstr "ไม่มีเกมที่ถูกเลือก" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" @@ -423,11 +425,11 @@ msgstr "ชื่อโลก" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no games installed." -msgstr "ไม่มีเกมส์ที่ติดตั้งคุณได้" +msgstr "คุณไม่มีเกมที่ติดตั้ง" #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "คุณต้องการลบ '$1' แน่ใจหรือไม่ ?" +msgstr "คุณแน่ใจหรือไม่ที่จะต้องการลบ '$1'" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua @@ -437,37 +439,39 @@ msgstr "ลบ" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" -msgstr "pkgmgr: ไม่สามารถลบ \"$1\"" +msgstr "pkgmgr: ไม่สามารถลบ \"$1\" ได้" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" -msgstr "pkgmgr: พาธไม่ถูกต้อง \"$1\"" +msgstr "pkgmgr: พาธของ \"$1\" ไม่ถูกต้อง" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" -msgstr "ลบโลก \"$1\"?" +msgstr "ลบโลก \"$1\" หรือไม่" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" -msgstr "รับ" +msgstr "ยอมรับ" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "เปลี่ยนชื่อ Modpack:" +msgstr "เปลี่ยนชื่อม็อดแพ็ค:" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." -msgstr "สามารถเปลี่ยนชื่อ modpack ได้ใน modpack.conf" +msgstr "" +"ม็อดแพ็คมีชื่อชื่อที่ถูกตั้งในไฟล์ modpack.conf " +"ซึ่งจะแทนที่ชื่อที่เปลี่ยนตรงนี้" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" -msgstr "(ไม่มีคำอธิบายของการตั้งค่าให้)" +msgstr "(ไม่มีคำอธิบายของการตั้งค่าที่ให้มา)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "2D เสียง" +msgstr "2D นอยส์" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" @@ -479,7 +483,7 @@ msgstr "เรียกดู" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Disabled" -msgstr "ปิดการใช้งาน" +msgstr "ปิดการใช้งานแล้ว" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Edit" @@ -487,7 +491,7 @@ msgstr "แก้ไข" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Enabled" -msgstr "เปิดใช้งาน" +msgstr "เปิดใช้งานแล้ว" #: builtin/mainmenu/dlg_settings_advanced.lua #, fuzzy @@ -501,15 +505,15 @@ msgstr "ความละเอียดของการสุ่ม" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" -msgstr "ตรงข้าม" +msgstr "ค่าชดเชย" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" -msgstr "มีอยู่" +msgstr "ความมีอยู่" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." -msgstr "โปรดใส่ค่าเป็นตัวเลขในรูปแบบที่ถูกต้อง." +msgstr "โปรดใส่ค่าเป็นตัวเลขในรูปแบบที่ถูกต้อง" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid number." @@ -537,11 +541,11 @@ msgstr "แสดงชื่อทางเทคนิค" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must be at least $1." -msgstr "ต้องมีค่าไม่น้อยกว่า $1." +msgstr "ต้องมีค่าอย่างน้อย $1" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must not be larger than $1." -msgstr "ค่าต้องไม่มากกว่า $1." +msgstr "ค่าต้องไม่มากกว่า $1" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" @@ -6428,7 +6432,7 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Trusted mods" -msgstr "" +msgstr "ม็อดที่เชื่อถือได้" #: src/settings_translation_file.cpp msgid "URL to the server list displayed in the Multiplayer Tab." @@ -6632,11 +6636,11 @@ msgstr "" #: src/settings_translation_file.cpp msgid "Water level" -msgstr "" +msgstr "ระดับน้ำ" #: src/settings_translation_file.cpp msgid "Water surface level of the world." -msgstr "" +msgstr "ระดับผิวน้ำของโลก" #: src/settings_translation_file.cpp msgid "Waving Nodes" @@ -6715,16 +6719,18 @@ msgstr "" "การหมุนอัตโนมัติของพื้นผิว" #: src/settings_translation_file.cpp -#, fuzzy msgid "" "Whether FreeType fonts are used, requires FreeType support to be compiled " "in.\n" "If disabled, bitmap and XML vectors fonts are used instead." -msgstr "ไม่ว่าจะใช้ฟอนต์ FreeType ต้องมีการสนับสนุน FreeType เพื่อรวบรวม." +msgstr "" +"ไม่ว่าจะใช้ฟอนต์ FreeType ต้องมีการสนับสนุน FreeType เพื่อรวบรวม\n" +"หากปิดใช้งาน ฟอนต์บิตแมปและเอ็กซ์เอ็มแอลเวกเตอร์จะใช้แทน" #: src/settings_translation_file.cpp msgid "Whether node texture animations should be desynchronized per mapblock." -msgstr "ระบุว่าควรสร้างการซิงโครไนซ์ภาพเคลื่อนไหวพื้นผิวของโหนดต่อ Mapblock หรือไม่." +msgstr "" +"ระบุว่าควรสร้างการซิงโครไนซ์ภาพเคลื่อนไหวพื้นผิวของโหนดต่อแม็ปบล็อกหรือไม่" #: src/settings_translation_file.cpp msgid "" @@ -6801,12 +6807,12 @@ msgid "" "See also texture_min_size.\n" "Warning: This option is EXPERIMENTAL!" msgstr "" -"พื้นผิวที่จัดแนวโลกอาจถูกปรับสัดส่วนเพื่อขยายหลายโหนด อย่างไรก็ตาม\n" +"เทกซ์เจอร์ที่จัดแนวโลกอาจถูกปรับสัดส่วนเพื่อขยายหลายโหนด อย่างไรก็ตาม\n" "เซิร์ฟเวอร์อาจไม่ส่งสเกลที่คุณต้องการโดยเฉพาะถ้าคุณใช้\n" -"แพ็คพื้นผิวที่ออกแบบเป็นพิเศษ ด้วยตัวเลือกนี้ลูกค้าพยายาม\n" -"เพื่อกำหนดขนาดโดยอัตโนมัติตามขนาดพื้นผิว\n" -"ดูเพิ่มเติม texture_min_size\n" -"คำเตือน: ตัวเลือกนี้คือค่าประสบการณ์!" +"เทกซ์เจอร์แพ็คที่ออกแบบเป็นพิเศษ ด้วยตัวเลือกนี้ไคลเอนต์พยายาม\n" +"เพื่อกำหนดขนาดโดยอัตโนมัติตามขนาดเทกซ์เจอร์\n" +"ดูเพิ่มเติมที่ texture_min_size\n" +"คำเตือน: ตัวเลือกนี้เป็นการทดลอง" #: src/settings_translation_file.cpp msgid "World-aligned textures mode" From 550549d56b9f81c7a8b6cc19db7c49867c789ffd Mon Sep 17 00:00:00 2001 From: daretmavi Date: Wed, 8 Jul 2020 18:45:28 +0000 Subject: [PATCH 401/424] Added translation using Weblate (Slovak) --- po/sk/minetest.po | 6325 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 6325 insertions(+) create mode 100644 po/sk/minetest.po diff --git a/po/sk/minetest.po b/po/sk/minetest.po new file mode 100644 index 000000000..367115c57 --- /dev/null +++ b/po/sk/minetest.po @@ -0,0 +1,6325 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the minetest package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: minetest\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-06-13 23:17+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "You died" +msgstr "" + +#: builtin/client/death_formspec.lua src/client/game.cpp +msgid "Respawn" +msgstr "" + +#: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp +msgid "OK" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "The server has requested a reconnect:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Reconnect" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "Main menu" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occurred in a Lua script:" +msgstr "" + +#: builtin/fstk/ui.lua +msgid "An error occurred:" +msgstr "" + +#: builtin/mainmenu/common.lua src/client/game.cpp +msgid "Loading..." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Try reenabling public serverlist and check your internet connection." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server supports protocol versions between $1 and $2. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Server enforces protocol version $1. " +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We support protocol versions between version $1 and $2." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "We only support protocol version $1." +msgstr "" + +#: builtin/mainmenu/common.lua +msgid "Protocol version mismatch. " +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "World:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No modpack description provided." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No game description provided." +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Mod:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No (optional) dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No hard dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Optional dependencies:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua +msgid "Dependencies:" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "No optional dependencies" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp +msgid "Save" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_delete_content.lua +#: builtin/mainmenu/dlg_delete_world.lua +#: builtin/mainmenu/dlg_rename_modpack.lua +#: builtin/mainmenu/dlg_settings_advanced.lua src/client/keycode.cpp +#: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp +#: src/gui/guiPasswordChange.cpp +msgid "Cancel" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Find More Mods" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable modpack" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable modpack" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "enabled" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Disable all" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "Enable all" +msgstr "" + +#: builtin/mainmenu/dlg_config_world.lua +msgid "" +"Failed to enable mod \"$1\" as it contains disallowed characters. Only " +"characters [a-z0-9_] are allowed." +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "ContentDB is not available when Minetest was compiled without cURL" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "All packages" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Games" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Mods" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Texture packs" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Failed to download $1" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +#: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua +msgid "Search" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Back to Main Menu" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No results" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "No packages could be retrieved" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Downloading..." +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Install" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Update" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "Uninstall" +msgstr "" + +#: builtin/mainmenu/dlg_contentstore.lua +msgid "View" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Caverns" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Very large caverns deep in the underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Sea level rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mountains" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Floatlands (experimental)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Floating landmasses in the sky" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Altitude chill" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces heat with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Altitude dry" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Reduces humidity with altitude" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Humid rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Increases humidity around rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Vary river depth" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Low humidity and high heat causes shallow or dry rivers" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Hills" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Lakes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Additional terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Generate non-fractal terrain: Oceans and underground" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Trees and jungle grass" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Flat terrain" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mud flow" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Terrain surface erosion" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle, Tundra, Taiga" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert, Jungle" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Temperate, Desert" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "You have no games installed." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download one from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Caves" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Dungeons" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Decorations" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "" +"Structures appearing on the terrain (no effect on trees and jungle grass " +"created by v6)" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Structures appearing on the terrain, typically trees and plants" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Network of tunnels and caves" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Biome blending" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Smooth transition between biomes" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen flags" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Mapgen-specific flags" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Warning: The Development Test is meant for developers." +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Download a game, such as Minetest Game, from minetest.net" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "World name" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Seed" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Mapgen" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp +msgid "Game" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "Create" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "A world named \"$1\" already exists" +msgstr "" + +#: builtin/mainmenu/dlg_create_world.lua +msgid "No game selected" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "Are you sure you want to delete \"$1\"?" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +#: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua +#: src/client/keycode.cpp +msgid "Delete" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "pkgmgr: failed to delete \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_content.lua +msgid "pkgmgr: invalid path \"$1\"" +msgstr "" + +#: builtin/mainmenu/dlg_delete_world.lua +msgid "Delete World \"$1\"?" +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Accept" +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "" +"This modpack has an explicit name given in its modpack.conf which will " +"override any renaming here." +msgstr "" + +#: builtin/mainmenu/dlg_rename_modpack.lua +msgid "Rename Modpack:" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Disabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Enabled" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Browse" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Offset" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp +msgid "Scale" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "2D Noise" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z spread" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Octaves" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Persistance" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Lacunarity" +msgstr "" + +#. ~ "defaults" is a noise parameter flag. +#. It describes the default processing options +#. for noise settings in main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "defaults" +msgstr "" + +#. ~ "eased" is a noise parameter flag. +#. It is used to make the map smoother and +#. can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "eased" +msgstr "" + +#. ~ "absvalue" is a noise parameter flag. +#. It is short for "absolute value". +#. It can be enabled in noise settings in +#. main menu -> "All Settings". +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "absvalue" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "X" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Y" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Z" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "(No description of setting given)" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid integer." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must be at least $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "The value must not be larger than $1." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Please enter a valid number." +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select directory" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Select file" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "< Back to Settings page" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Edit" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Restore Default" +msgstr "" + +#: builtin/mainmenu/dlg_settings_advanced.lua +msgid "Show technical names" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "$1 (Enabled)" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a $1 as a texture pack" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Failed to install $1 to $2" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to find a valid mod or modpack" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a modpack as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install Mod: Unable to find suitable folder name for modpack $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a mod as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install Mod: Unable to find real mod name for: $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Unable to install a game as a $1" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install: file: \"$1\"" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "Install: Unsupported file type \"$1\" or broken archive" +msgstr "" + +#: builtin/mainmenu/pkgmgr.lua +msgid "$1 mods" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Installed Packages:" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Browse online content" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "No package description available" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Rename" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "No dependencies." +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Disable Texture Pack" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Use Texture Pack" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Information:" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Uninstall Package" +msgstr "" + +#: builtin/mainmenu/tab_content.lua +msgid "Content" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Credits" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Active Contributors" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Core Developers" +msgstr "" + +#: builtin/mainmenu/tab_credits.lua +msgid "Previous Contributors" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Install games from ContentDB" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Configure" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "New" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Select World:" +msgstr "" + +#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative Mode" +msgstr "" + +#: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua +msgid "Enable Damage" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Host Server" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Host Game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Announce Server" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Name/Password" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Bind Address" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Port" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Server Port" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Play Game" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "No world created or selected!" +msgstr "" + +#: builtin/mainmenu/tab_local.lua +msgid "Start Game" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Address / Port" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Name / Password" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Connect" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Del. Favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Favorite" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Ping" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Creative mode" +msgstr "" + +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "Damage enabled" +msgstr "" + +#. ~ PvP = Player versus Player +#: builtin/mainmenu/tab_online.lua builtin/mainmenu/tab_simple_main.lua +msgid "PvP enabled" +msgstr "" + +#: builtin/mainmenu/tab_online.lua +msgid "Join Game" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Simple Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Fancy Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Outlining" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Node Highlighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "None" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Trilinear Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Mipmap + Aniso. Filter" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "2x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "4x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "8x" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Are you sure to reset your singleplayer world?" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Yes" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "No" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Smooth Lighting" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Particles" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "3D Clouds" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Opaque Water" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Connected Glass" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Texturing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Antialiasing:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Screen:" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Autosave Screen Size" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Shaders" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Shaders (unavailable)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Reset singleplayer world" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/client/game.cpp +msgid "Change Keys" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "All Settings" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Touchthreshold: (px)" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Bump Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Tone Mapping" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Generate Normal Maps" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua src/settings_translation_file.cpp +msgid "Parallax Occlusion" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Liquids" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Leaves" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Waving Plants" +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "To enable shaders the OpenGL driver needs to be used." +msgstr "" + +#: builtin/mainmenu/tab_settings.lua +msgid "Settings" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Start Singleplayer" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Config mods" +msgstr "" + +#: builtin/mainmenu/tab_simple_main.lua +msgid "Main" +msgstr "" + +#: src/client/client.cpp +msgid "Connection timed out." +msgstr "" + +#: src/client/client.cpp +msgid "Loading textures..." +msgstr "" + +#: src/client/client.cpp +msgid "Rebuilding shaders..." +msgstr "" + +#: src/client/client.cpp +msgid "Initializing nodes..." +msgstr "" + +#: src/client/client.cpp +msgid "Initializing nodes" +msgstr "" + +#: src/client/client.cpp +msgid "Done!" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Main Menu" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Player name too long." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Connection error (timed out?)" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided password file failed to open: " +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Please choose a name!" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "No world selected and no address provided. Nothing to do." +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Provided world path doesn't exist: " +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Could not find or load game \"" +msgstr "" + +#: src/client/clientlauncher.cpp +msgid "Invalid gamespec." +msgstr "" + +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string. Put either "no" or "yes" +#. into the translation field (literally). +#. Choose "yes" if the language requires use of the fallback +#. font, "no" otherwise. +#. The fallback font is (normally) required for languages with +#. non-Latin script, like Chinese. +#. When in doubt, test your translation. +#: src/client/fontengine.cpp +msgid "needs_fallback_font" +msgstr "" + +#: src/client/game.cpp +msgid "Shutting down..." +msgstr "" + +#: src/client/game.cpp +msgid "Creating server..." +msgstr "" + +#: src/client/game.cpp +msgid "Creating client..." +msgstr "" + +#: src/client/game.cpp +msgid "Resolving address..." +msgstr "" + +#: src/client/game.cpp +msgid "Connecting to server..." +msgstr "" + +#: src/client/game.cpp +msgid "Item definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "Node definitions..." +msgstr "" + +#: src/client/game.cpp +msgid "Media..." +msgstr "" + +#: src/client/game.cpp +msgid "KiB/s" +msgstr "" + +#: src/client/game.cpp +msgid "MiB/s" +msgstr "" + +#: src/client/game.cpp +msgid "Client side scripting is disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Sound muted" +msgstr "" + +#: src/client/game.cpp +msgid "Sound unmuted" +msgstr "" + +#: src/client/game.cpp +msgid "Sound system is disabled" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Volume changed to %d%%" +msgstr "" + +#: src/client/game.cpp +msgid "Sound system is not supported on this build" +msgstr "" + +#: src/client/game.cpp +msgid "ok" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode enabled (note: no 'fly' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Fly mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Pitch move mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Pitch move mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode enabled (note: no 'fast' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Fast mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode enabled (note: no 'noclip' privilege)" +msgstr "" + +#: src/client/game.cpp +msgid "Noclip mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Cinematic mode enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Cinematic mode disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Automatic forward enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Automatic forward disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x1" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x2" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in surface mode, Zoom x4" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x1" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x2" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap in radar mode, Zoom x4" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Minimap currently disabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "Fog disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Fog enabled" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info shown" +msgstr "" + +#: src/client/game.cpp +msgid "Profiler graph shown" +msgstr "" + +#: src/client/game.cpp +msgid "Wireframe shown" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info, profiler graph, and wireframe hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Debug info and profiler graph hidden" +msgstr "" + +#: src/client/game.cpp +msgid "Camera update disabled" +msgstr "" + +#: src/client/game.cpp +msgid "Camera update enabled" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at maximum: %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range changed to %d" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "Viewing range is at minimum: %d" +msgstr "" + +#: src/client/game.cpp +msgid "Enabled unlimited viewing range" +msgstr "" + +#: src/client/game.cpp +msgid "Disabled unlimited viewing range" +msgstr "" + +#: src/client/game.cpp +msgid "Zoom currently disabled by game or mod" +msgstr "" + +#: src/client/game.cpp +msgid "" +"Default Controls:\n" +"No menu visible:\n" +"- single tap: button activate\n" +"- double tap: place/use\n" +"- slide finger: look around\n" +"Menu/Inventory visible:\n" +"- double tap (outside):\n" +" -->close\n" +"- touch stack, touch slot:\n" +" --> move stack\n" +"- touch&drag, tap 2nd finger\n" +" --> place single item to slot\n" +msgstr "" + +#: src/client/game.cpp +#, c-format +msgid "" +"Controls:\n" +"- %s: move forwards\n" +"- %s: move backwards\n" +"- %s: move left\n" +"- %s: move right\n" +"- %s: jump/climb\n" +"- %s: sneak/go down\n" +"- %s: drop item\n" +"- %s: inventory\n" +"- Mouse: turn/look\n" +"- Mouse left: dig/punch\n" +"- Mouse right: place/use\n" +"- Mouse wheel: select item\n" +"- %s: chat\n" +msgstr "" + +#: src/client/game.cpp +msgid "Continue" +msgstr "" + +#: src/client/game.cpp +msgid "Change Password" +msgstr "" + +#: src/client/game.cpp +msgid "Game paused" +msgstr "" + +#: src/client/game.cpp +msgid "Sound Volume" +msgstr "" + +#: src/client/game.cpp +msgid "Exit to Menu" +msgstr "" + +#: src/client/game.cpp +msgid "Exit to OS" +msgstr "" + +#: src/client/game.cpp +msgid "Game info:" +msgstr "" + +#: src/client/game.cpp +msgid "- Mode: " +msgstr "" + +#: src/client/game.cpp +msgid "Remote server" +msgstr "" + +#: src/client/game.cpp +msgid "- Address: " +msgstr "" + +#: src/client/game.cpp +msgid "Hosting server" +msgstr "" + +#: src/client/game.cpp +msgid "- Port: " +msgstr "" + +#: src/client/game.cpp +msgid "Singleplayer" +msgstr "" + +#: src/client/game.cpp +msgid "On" +msgstr "" + +#: src/client/game.cpp +msgid "Off" +msgstr "" + +#: src/client/game.cpp +msgid "- Damage: " +msgstr "" + +#: src/client/game.cpp +msgid "- Creative Mode: " +msgstr "" + +#. ~ PvP = Player versus Player +#: src/client/game.cpp +msgid "- PvP: " +msgstr "" + +#: src/client/game.cpp +msgid "- Public: " +msgstr "" + +#: src/client/game.cpp +msgid "- Server Name: " +msgstr "" + +#: src/client/game.cpp +msgid "" +"\n" +"Check debug.txt for details." +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat shown" +msgstr "" + +#: src/client/gameui.cpp +msgid "Chat hidden" +msgstr "" + +#: src/client/gameui.cpp +msgid "HUD shown" +msgstr "" + +#: src/client/gameui.cpp +msgid "HUD hidden" +msgstr "" + +#: src/client/gameui.cpp +#, c-format +msgid "Profiler shown (page %d of %d)" +msgstr "" + +#: src/client/gameui.cpp +msgid "Profiler hidden" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "Middle Button" +msgstr "" + +#: src/client/keycode.cpp +msgid "X Button 1" +msgstr "" + +#: src/client/keycode.cpp +msgid "X Button 2" +msgstr "" + +#: src/client/keycode.cpp +msgid "Backspace" +msgstr "" + +#: src/client/keycode.cpp +msgid "Tab" +msgstr "" + +#: src/client/keycode.cpp +msgid "Clear" +msgstr "" + +#: src/client/keycode.cpp +msgid "Return" +msgstr "" + +#: src/client/keycode.cpp +msgid "Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Control" +msgstr "" + +#. ~ Key name, common on Windows keyboards +#: src/client/keycode.cpp +msgid "Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "Pause" +msgstr "" + +#: src/client/keycode.cpp +msgid "Caps Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Space" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page up" +msgstr "" + +#: src/client/keycode.cpp +msgid "Page down" +msgstr "" + +#: src/client/keycode.cpp +msgid "End" +msgstr "" + +#: src/client/keycode.cpp +msgid "Home" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Left" +msgstr "" + +#: src/client/keycode.cpp +msgid "Up" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Right" +msgstr "" + +#: src/client/keycode.cpp +msgid "Down" +msgstr "" + +#. ~ Key name +#: src/client/keycode.cpp +msgid "Select" +msgstr "" + +#. ~ "Print screen" key +#: src/client/keycode.cpp +msgid "Print" +msgstr "" + +#: src/client/keycode.cpp +msgid "Execute" +msgstr "" + +#: src/client/keycode.cpp +msgid "Snapshot" +msgstr "" + +#: src/client/keycode.cpp +msgid "Insert" +msgstr "" + +#: src/client/keycode.cpp +msgid "Help" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Windows" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 0" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 1" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 2" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 3" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 4" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 5" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 6" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 7" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 8" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad 9" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad *" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad +" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad ." +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad -" +msgstr "" + +#: src/client/keycode.cpp +msgid "Numpad /" +msgstr "" + +#: src/client/keycode.cpp +msgid "Num Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Scroll Lock" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Shift" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Control" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Control" +msgstr "" + +#: src/client/keycode.cpp +msgid "Left Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "Right Menu" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Escape" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Convert" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Nonconvert" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Accept" +msgstr "" + +#: src/client/keycode.cpp +msgid "IME Mode Change" +msgstr "" + +#: src/client/keycode.cpp +msgid "Apps" +msgstr "" + +#: src/client/keycode.cpp +msgid "Sleep" +msgstr "" + +#: src/client/keycode.cpp +msgid "Erase EOF" +msgstr "" + +#: src/client/keycode.cpp +msgid "Play" +msgstr "" + +#: src/client/keycode.cpp src/gui/guiKeyChangeMenu.cpp +msgid "Zoom" +msgstr "" + +#: src/client/keycode.cpp +msgid "OEM Clear" +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp +#, c-format +msgid "" +"You are about to join this server with the name \"%s\" for the first time.\n" +"If you proceed, a new account using your credentials will be created on this " +"server.\n" +"Please retype your password and click 'Register and Join' to confirm account " +"creation, or click 'Cancel' to abort." +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp +msgid "Register and Join" +msgstr "" + +#: src/gui/guiConfirmRegistration.cpp src/gui/guiPasswordChange.cpp +msgid "Passwords do not match!" +msgstr "" + +#: src/gui/guiFormSpecMenu.cpp +msgid "Proceed" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "\"Special\" = climb down" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Double tap \"jump\" to toggle fly" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Automatic jumping" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Key already in use" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "press key" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Forward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Backward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Special" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Jump" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Sneak" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Drop" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inventory" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Prev. item" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Next item" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Change camera" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle minimap" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fly" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle pitchmove" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fast" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle noclip" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Mute" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. volume" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. volume" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Autoforward" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Chat" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp src/settings_translation_file.cpp +msgid "Screenshot" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Range select" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Dec. range" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Inc. range" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Console" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Command" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Local command" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle HUD" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle chat log" +msgstr "" + +#: src/gui/guiKeyChangeMenu.cpp +msgid "Toggle fog" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Old Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "New Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Confirm Password" +msgstr "" + +#: src/gui/guiPasswordChange.cpp +msgid "Change" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Sound Volume: " +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Exit" +msgstr "" + +#: src/gui/guiVolumeChange.cpp +msgid "Muted" +msgstr "" + +#. ~ Imperative, as in "Enter/type in text". +#. Don't forget the space. +#: src/gui/modalMenu.cpp +msgid "Enter " +msgstr "" + +#. ~ DO NOT TRANSLATE THIS LITERALLY! +#. This is a special string which needs to contain the translation's +#. language code (e.g. "de" for German). +#: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp +msgid "LANG_CODE" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Build inside player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, you can place blocks at the position (feet + eye level) where " +"you stand.\n" +"This is helpful when working with nodeboxes in small areas." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Flying" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Player is able to fly without being affected by gravity.\n" +"This requires the \"fly\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, makes move directions relative to the player's pitch when flying " +"or swimming." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast movement" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Fast movement (via the \"special\" key).\n" +"This requires the \"fast\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled together with fly mode, player is able to fly through solid " +"nodes.\n" +"This requires the \"noclip\" privilege on the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Smooths camera when looking around. Also called look or mouse smoothing.\n" +"Useful for recording videos." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera smoothing in cinematic mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooths rotation of camera in cinematic mode. 0 to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert mouse" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Invert vertical mouse movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mouse sensitivity multiplier." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key for climbing/descending" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, \"special\" key instead of \"sneak\" key is used for climbing " +"down and\n" +"descending." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double tap jump for fly" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Double-tapping the jump key toggles fly mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Always fly and fast" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If disabled, \"special\" key is used to fly fast if both fly and fast mode " +"are\n" +"enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rightclick repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated right clicks when holding the " +"right\n" +"mouse button." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically jump up single-node obstacles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Safe digging and placing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prevent digging and placing from repeating when holding the mouse buttons.\n" +"Enable this when you dig or place too often by accident." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Random input" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable random user input (only used for testing)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Continuous forward" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Continuous forward movement, toggled by autoforward key.\n" +"Press the autoforward key again or the backwards movement to disable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Touch screen threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The length in pixels it takes for touch screen interaction to start." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed virtual joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(Android) Fixes the position of virtual joystick.\n" +"If disabled, virtual joystick will center to first-touch's position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Virtual joystick triggers aux button" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(Android) Use virtual joystick to trigger \"aux\" button.\n" +"If enabled, virtual joystick will also tap \"aux\" button when out of main " +"circle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable joysticks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick ID" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The identifier of the joystick to use" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The type of joystick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick button repetition interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time in seconds it takes between repeated events\n" +"when holding down a joystick button combination." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Joystick frustum sensitivity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The sensitivity of the joystick axes for moving the\n" +"ingame view frustum around." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player forward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Backward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player backward.\n" +"Will also disable autoforward, when active.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Left key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player left.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Right key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving the player right.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jump key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for jumping.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneak key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for sneaking.\n" +"Also used for climbing down and descending in water if aux1_descends is " +"disabled.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the inventory.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Special key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for moving fast in fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Command key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for opening the chat window to type local commands.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Range select key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling unlimited view range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fly key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling flying.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pitch move key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling pitch move mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling fast mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noclip key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling noclip mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar next key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the next item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar previous key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the previous item in the hotbar.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for muting the game.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inc. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dec. volume key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the volume.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatic forward key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling autoforward.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cinematic mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling cinematic mode.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling display of minimap.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for taking screenshots.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Drop item key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for dropping the currently selected item.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View zoom key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key to use view zoom when possible.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 1 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the first hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 2 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the second hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 3 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the third hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 4 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fourth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 5 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the fifth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 6 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the sixth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 7 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the seventh hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 8 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the eighth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 9 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the ninth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 10 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the tenth hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 11 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 11th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 12 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 12th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 13 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 13th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 14 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 14th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 15 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 15th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 16 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 16th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 17 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 17th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 18 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 18th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 19 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 19th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 20 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 20th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 21 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 21st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 22 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 22nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 23 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 23rd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 24 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 24th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 25 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 25th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 26 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 26th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 27 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 27th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 28 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 28th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 29 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 29th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 30 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 30th hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 31 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 31st hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hotbar slot 32 key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for selecting the 32nd hotbar slot.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the HUD.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of chat.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large chat console key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the large chat console.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of fog.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Camera update toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the camera update. Only used for development\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug info toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of debug info.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler toggle key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for toggling the display of the profiler. Used for development.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Toggle camera mode key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for switching between first- and third-person camera.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range increase key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for increasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View range decrease key" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Key for decreasing the viewing range.\n" +"See http://irrlicht.sourceforge.net/docu/namespaceirr." +"html#a54da2a0e231901735e3da1b0edf72eb3" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Graphics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-Game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VBO" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable vertex buffer objects.\n" +"This should greatly improve graphics performance." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to fog out the end of the visible area." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Leaves style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Leaves style:\n" +"- Fancy: all faces visible\n" +"- Simple: only outer faces, if defined special_tiles are used\n" +"- Opaque: disable transparency" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect glass" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connects glass if supported by node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Smooth lighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable smooth lighting with simple ambient occlusion.\n" +"Disable for speed or for different looks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds are a client side effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D clouds" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use 3D cloud look instead of flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Node highlighting" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Method used to highlight selected object." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Digging particles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Adds particles when digging a node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mipmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Use mip mapping to scale textures. May slightly increase performance,\n" +"especially when using a high resolution texture pack.\n" +"Gamma correct downscaling is not supported." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Anisotropic filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use anisotropic filtering when viewing at textures from an angle." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use bilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trilinear filtering" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use trilinear filtering when scaling textures." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clean transparent textures" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Filtered textures can blend RGB values with fully-transparent neighbors,\n" +"which PNG optimizers usually discard, sometimes resulting in a dark or\n" +"light edge to transparent textures. Apply this filter to clean that up\n" +"at texture load time." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum texture size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When using bilinear/trilinear/anisotropic filters, low-resolution textures\n" +"can be blurred, so automatically upscale them with nearest-neighbor\n" +"interpolation to preserve crisp pixels. This sets the minimum texture size\n" +"for the upscaled textures; higher values look sharper, but require more\n" +"memory. Powers of 2 are recommended. Setting this higher than 1 may not\n" +"have a visible effect unless bilinear/trilinear/anisotropic filtering is\n" +"enabled.\n" +"This is also used as the base node texture size for world-aligned\n" +"texture autoscaling." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FSAA" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Experimental option, might cause visible spaces between blocks\n" +"when set to higher number than 0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Undersampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Undersampling is similar to using a lower screen resolution, but it applies\n" +"to the game world only, keeping the GUI intact.\n" +"It should give a significant performance boost at the cost of less detailed " +"image.\n" +"Higher values result in a less detailed image." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shaders allow advanced visual effects and may increase performance on some " +"video\n" +"cards.\n" +"This only works with the OpenGL video backend." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shader path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to shader directory. If no path is defined, default location will be " +"used." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filmic tone mapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables Hable's 'Uncharted 2' filmic tone mapping.\n" +"Simulates the tone curve of photographic film and how this approximates the\n" +"appearance of high dynamic range images. Mid-range contrast is slightly\n" +"enhanced, highlights and shadows are gradually compressed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bumpmapping" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables bumpmapping for textures. Normalmaps need to be supplied by the " +"texture pack\n" +"or need to be auto-generated.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Generate normalmaps" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables on the fly normalmap generation (Emboss effect).\n" +"Requires bumpmapping to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of generated normalmaps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Normalmaps sampling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Defines sampling step of texture.\n" +"A higher value results in smoother normal maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables parallax occlusion mapping.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"0 = parallax occlusion with slope information (faster).\n" +"1 = relief mapping (slower, more accurate)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of parallax occlusion iterations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion scale" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall scale of parallax occlusion effect." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Parallax occlusion bias" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Overall bias of parallax occlusion effect, usually scale/2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving Nodes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving liquids (like water).\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The maximum height of the surface of waving liquids.\n" +"4.0 = Wave height is two nodes.\n" +"0.0 = Wave doesn't move at all.\n" +"Default is 1.0 (1/2 node).\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wavelength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of liquid waves.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving liquids wave speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How fast liquid waves will move. Higher = faster.\n" +"If negative, liquid waves will move backwards.\n" +"Requires waving liquids to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving leaves" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving leaves.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Waving plants" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set to true to enable waving plants.\n" +"Requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Advanced" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Arm inertia" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Arm inertia, gives a more realistic movement of\n" +"the arm when the camera moves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If FPS would go higher than this, limit it by sleeping\n" +"to not waste CPU power for no benefit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FPS in pause menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum FPS when game is paused." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Pause on lost window focus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Open the pause menu when the window's focus is lost. Does not pause if a " +"formspec is\n" +"open." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Viewing range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View distance in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Near plane" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Camera 'near clipping plane' distance in nodes, between 0 and 0.25\n" +"Only works on GLES platforms. Most users will not need to change this.\n" +"Increasing can reduce artifacting on weaker GPUs.\n" +"0.1 = Default, 0.25 = Good value for weaker tablets." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screen height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height component of the initial window size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autosave screen size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save window size automatically when modified." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Full screen BPP" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bits per pixel (aka color depth) in fullscreen mode." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "VSync" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical screen synchronization." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Field of view in degrees." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Alters the light curve by applying 'gamma correction' to it.\n" +"Higher values make middle and lower light levels brighter.\n" +"Value '1.0' leaves the light curve unaltered.\n" +"This only has significant effect on daylight and artificial\n" +"light, it has very little effect on natural night light." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve low gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at minimum light level.\n" +"Controls the contrast of the lowest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve high gradient" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Gradient of light curve at maximum light level.\n" +"Controls the contrast of the highest light levels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Strength of light curve boost.\n" +"The 3 'boost' parameters define a range of the light\n" +"curve that is boosted in brightness." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost center" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Center of light curve boost range.\n" +"Where 0.0 is minimum light level, 1.0 is maximum light level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Light curve boost spread" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Spread of light curve boost range.\n" +"Controls the width of the range to be boosted.\n" +"Standard deviation of the light curve boost Gaussian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Texture path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Path to texture directory. All textures are first searched from here." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Video driver" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The rendering back-end for Irrlicht.\n" +"A restart is required after changing this.\n" +"Note: On Android, stick with OGLES1 if unsure! App may fail to start " +"otherwise.\n" +"On other platforms, OpenGL is recommended, and it’s the only driver with\n" +"shader support currently." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cloud radius" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Radius of cloud area stated in number of 64 node cloud squares.\n" +"Values larger than 26 will start to produce sharp cutoffs at cloud area " +"corners." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "View bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable view bobbing and amount of view bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fall bobbing factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Multiplier for fall bobbing.\n" +"For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D support.\n" +"Currently supported:\n" +"- none: no 3d output.\n" +"- anaglyph: cyan/magenta color 3d.\n" +"- interlaced: odd/even line based polarisation screen support.\n" +"- topbottom: split screen top/bottom.\n" +"- sidebyside: split screen side by side.\n" +"- crossview: Cross-eyed 3d\n" +"- pageflip: quadbuffer based 3d.\n" +"Note that the interlaced mode requires shaders to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D mode parallax strength" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strength of 3D mode parallax." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console height, between 0.1 (10%) and 1.0 (100%)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Console alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "In-game chat console background alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Full-Screen Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec full-screen background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Opacity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background opacity (between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec Default Background Color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Formspec default background color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box border color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Selection box width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Width of the selection box lines around nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair color (R,G,B)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crosshair alpha (opaqueness, between 0 and 255)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Recent Chat Messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of recent chat messages to show" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desynchronize block animation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether node texture animations should be desynchronized per mapblock." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum hotbar width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum proportion of current window to be used for hotbar.\n" +"Useful if there's something to be displayed right or left of hotbar." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HUD scale factor" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Modifies the size of the hudbar elements." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mesh cache" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables caching of facedir rotated meshes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generation delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Delay between mesh updates on the client in ms. Increasing this will slow\n" +"down the rate of mesh updates, thus reducing jitter on slower clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock mesh generator's MapBlock cache size in MB" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of the MapBlock cache of the mesh generator. Increasing this will\n" +"increase the cache hit %, reducing the data being copied from the main\n" +"thread, thus reducing jitter." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables minimap." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Round minimap" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shape of the minimap. Enabled = round, disabled = square." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimap scan height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"True = 256\n" +"False = 128\n" +"Usable to make minimap smoother on slower machines." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Colored fog" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Make fog and sky colors depend on daytime (dawn/sunset) and view direction." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ambient occlusion gamma" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The strength (darkness) of node ambient-occlusion shading.\n" +"Lower is darker, Higher is lighter. The valid range of values for this\n" +"setting is 0.25 to 4.0 inclusive. If the value is out of range it will be\n" +"set to the nearest valid value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Inventory items animations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enables animation of inventory items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fog start" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fraction of the visible distance at which fog starts to be rendered" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Opaque liquids" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes all liquids opaque" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World-aligned textures mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Textures on a node may be aligned either to the node or to the world.\n" +"The former mode suits better things like machines, furniture, etc., while\n" +"the latter makes stairs and microblocks fit surroundings better.\n" +"However, as this possibility is new, thus may not be used by older servers,\n" +"this option allows enforcing it for certain node types. Note though that\n" +"that is considered EXPERIMENTAL and may not work properly." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Autoscaling mode" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World-aligned textures may be scaled to span several nodes. However,\n" +"the server may not send the scale you want, especially if you use\n" +"a specially-designed texture pack; with this option, the client tries\n" +"to determine the scale automatically basing on the texture size.\n" +"See also texture_min_size.\n" +"Warning: This option is EXPERIMENTAL!" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show entity selection boxes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Menus" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Clouds in menu" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Use a cloud animation for the main menu background." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Scale GUI by a user specified value.\n" +"Use a nearest-neighbor-anti-alias filter to scale the GUI.\n" +"This will smooth over some of the rough edges, and blend\n" +"pixels when scaling down, at the cost of blurring some\n" +"edge pixels when images are scaled by non-integer sizes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter is true, all GUI images need to be\n" +"filtered in software, but some images are generated directly\n" +"to hardware (e.g. render-to-texture for nodes in inventory)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "GUI scaling filter txr2img" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"When gui_scaling_filter_txr2img is true, copy those images\n" +"from hardware to software for scaling. When false, fall back\n" +"to the old scaling method, for video drivers that don't\n" +"properly support downloading textures back from hardware." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Tooltip delay" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay showing tooltips, stated in milliseconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Append item name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Append item name to tooltip." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "FreeType fonts" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether FreeType fonts are used, requires FreeType support to be compiled " +"in.\n" +"If disabled, bitmap and XML vectors fonts are used instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font bold by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font italic by default" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shadow offset (in pixels) of the default font. If 0, then shadow will not be " +"drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the default font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the default font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Regular font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the default font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"The fallback font will be used if the font cannot be loaded." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the monospace font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to the monospace font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font is used for e.g. the console and profiler screen." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bold and italic monospace font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Font size of the fallback font in point (pt)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Shadow offset (in pixels) of the fallback font. If 0, then shadow will not " +"be drawn." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font shadow alpha" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Opaqueness (alpha) of the shadow behind the fallback font, between 0 and 255." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fallback font path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path of the fallback font.\n" +"If “freetype” setting is enabled: Must be a TrueType font.\n" +"If “freetype” setting is disabled: Must be a bitmap or XML vectors font.\n" +"This font will be used for certain languages or if the default font is " +"unavailable." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat font size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Font size of the recent chat text and chat prompt in point (pt).\n" +"Value 0 will use the default font size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot folder" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Path to save screenshots at. Can be an absolute or relative path.\n" +"The folder will be created if it doesn't already exist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Format of screenshots." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Screenshot quality" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Screenshot quality. Only used for JPEG format.\n" +"1 means worst quality; 100 means best quality.\n" +"Use 0 for default quality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "DPI" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k " +"screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable console window" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Windows systems only: Start Minetest with the command line window in the " +"background.\n" +"Contains the same information as the file debug.txt (default name)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enables the sound system.\n" +"If disabled, this completely disables all sounds everywhere and the in-game\n" +"sound controls will be non-functional.\n" +"Changing this setting requires a restart." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Volume" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Volume of all sounds.\n" +"Requires the sound system to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mute sound" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to mute sounds. You can unmute sounds at any time, unless the\n" +"sound system is disabled (enable_sound=false).\n" +"In-game, you can toggle the mute state with the mute key or by using the\n" +"pause menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Network" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Address to connect to.\n" +"Leave this blank to start a local server.\n" +"Note that the address field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Port to connect to (UDP).\n" +"Note that the port field in the main menu overrides this setting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prometheus listener address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Prometheus listener address.\n" +"If minetest is compiled with ENABLE_PROMETHEUS option enabled,\n" +"enable metrics listener for Prometheus on that address.\n" +"Metrics can be fetch on http://127.0.0.1:30000/metrics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Saving map received from server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Save the map received by the client on disk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Connect to external media server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable usage of remote media server (if provided by server).\n" +"Remote servers offer a significantly faster way to download media (e.g. " +"textures)\n" +"when connecting to the server." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client modding" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable Lua modding support on client.\n" +"This support is experimental and API can change." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "URL to the server list displayed in the Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Serverlist file" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"File in client/serverlist/ that contains your favorite servers displayed in " +"the\n" +"Multiplayer Tab." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum size of the out chat queue" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum size of the out chat queue.\n" +"0 to disable queueing and -1 to make the queue size unlimited." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable register confirmation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable register confirmation when connecting to server.\n" +"If disabled, new account will be registered automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock unload timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Timeout for client to remove unused map data from memory." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapblock limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of mapblocks for client to be kept in memory.\n" +"Set to -1 for unlimited amount." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Show debug info" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to show the client debug info (has the same effect as hitting F5)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server / Singleplayer" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the server, to be displayed when players join and in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server description" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Description of server, to be displayed when players join and in the " +"serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Domain name of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Homepage of server, to be displayed in the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Automatically report to the serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Announce to this serverlist." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strip color codes" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Remove color codes from incoming chat messages\n" +"Use this to stop players from being able to use color in their messages" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server port" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Network port to listen (UDP).\n" +"This value will be overridden when starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Bind address" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The network interface that the server listens on." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Strict protocol checking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable to disallow old clients from connecting.\n" +"Older clients are compatible in the sense that they will not crash when " +"connecting\n" +"to new servers, but they may not support all new features that you are " +"expecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Remote media" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies URL from which client fetches media instead of using UDP.\n" +"$filename should be accessible from $remote_media$filename via cURL\n" +"(obviously, remote_media should end with a slash).\n" +"Files that are not present will be fetched the usual way." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6 server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable/disable running an IPv6 server.\n" +"Ignored if bind_address is set.\n" +"Needs enable_ipv6 to be enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum simultaneous block sends per client" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks that are simultaneously sent per client.\n" +"The maximum total count is calculated dynamically:\n" +"max_total = ceil((#clients + max_users) * per_client / 4)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Delay in sending blocks after building" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"To reduce lag, block transfers are slowed down when a player is building " +"something.\n" +"This determines how long they are slowed down after placing or removing a " +"node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. packets per iteration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of packets sent per send step, if you have a slow connection\n" +"try reducing it, but don't reduce it to a number below double of targeted\n" +"client number." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default game" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default game when creating a new world.\n" +"This will be overridden when creating a world from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Message of the day displayed to players connecting." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum users" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of players that can be connected simultaneously." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map directory" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"World directory (everything in the world is stored here).\n" +"Not needed if starting from the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Item entity TTL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Time in seconds for item entity (dropped items) to live.\n" +"Setting it to -1 disables the feature." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default stack size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Specifies the default stack size of nodes, items and tools.\n" +"Note that mods or games may explicitly set a stack for certain (or all) " +"items." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Damage" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable players getting damage and dying." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Creative" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable creative mode for new created maps." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fixed map seed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"A chosen map seed for a new map, leave empty for random.\n" +"Will be overridden when creating a new world in the main menu." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default password" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "New users need to input this password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The privileges that new users automatically get.\n" +"See /privs in game for a full list on your server and mod configuration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Basic privileges" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Privileges that players with basic_privs can grant" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unlimited player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether players are shown to clients without any range limit.\n" +"Deprecated, use the setting player_transfer_distance instead." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player transfer distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the maximal player transfer distance in blocks (0 = unlimited)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player versus player" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Whether to allow players to damage and kill each other." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mod channels" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod channels support." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Static spawnpoint" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If this is set, players will always (re)spawn at the given position." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disallow empty passwords" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, new players cannot join with an empty password." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Disable anticheat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "If enabled, disable cheat prevention in multiplayer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rollback recording" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, actions are recorded for rollback.\n" +"This option is only read when server starts." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Format of player chat messages. The following strings are valid " +"placeholders:\n" +"@name, @message, @timestamp (optional)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Shutdown message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server shuts down." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Crash message" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "A message to be displayed to all clients when the server crashes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ask to reconnect after crash" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Whether to ask clients to reconnect after a (Lua) crash.\n" +"Set this to true if your server is set up to restart automatically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active object send range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far clients know about objects, stated in mapblocks (16 nodes).\n" +"\n" +"Setting this larger than active_block_range will also cause the server\n" +"to maintain active objects up to this distance in the direction the\n" +"player is looking. (This can avoid mobs suddenly disappearing from view)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block range" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The radius of the volume of blocks around every player that is subject to " +"the\n" +"active block stuff, stated in mapblocks (16 nodes).\n" +"In active blocks objects are loaded and ABMs run.\n" +"This is also the minimum range in which active objects (mobs) are " +"maintained.\n" +"This should be configured together with active_object_send_range_blocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block send distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are sent to clients, stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum forceloaded blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of forceloaded mapblocks." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time send interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of sending time of day to clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls length of day/night cycle.\n" +"Examples:\n" +"72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "World start time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Time of day when a new world is started, in millihours (0-23999)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map save interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Interval of saving important changes in the world, stated in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message max length" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Set the maximum character length of a chat message sent by clients." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message count limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amount of messages a player may send per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat message kick threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Kick players who sent more than X messages per 10 seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Physics" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration on ground or when climbing,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration in air" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal acceleration in air when jumping or falling,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode acceleration" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Horizontal and vertical acceleration in fast mode,\n" +"in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking and flying speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sneaking speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fast mode speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Walking, flying and climbing speed in fast mode, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Climbing speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Vertical climbing speed, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Jumping speed" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Initial vertical speed when jumping, in nodes per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Decrease this to increase liquid resistance to movement." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid fluidity smoothing" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum liquid resistance. Controls deceleration when entering liquid at\n" +"high speed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid sinking" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls sinking speed in liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Gravity" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Acceleration of gravity, in nodes per second per second." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Deprecated Lua API handling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Handling for deprecated Lua API calls:\n" +"- legacy: (try to) mimic old behaviour (default for release).\n" +"- log: mimic and log backtrace of deprecated call (default for debug).\n" +"- error: abort on usage of deprecated call (suggested for mod developers)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max. clearobjects extra blocks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of extra blocks that can be loaded by /clearobjects at once.\n" +"This is a trade-off between sqlite transaction overhead and\n" +"memory consumption (4096=100MB, as a rule of thumb)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Unload unused server data" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"How much the server will wait before unloading unused mapblocks.\n" +"Higher value is smoother, but will use more RAM." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum objects per block" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of statically stored objects in a block." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Synchronous SQLite" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "See https://www.sqlite.org/pragma.html#pragma_synchronous" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dedicated server step" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Length of a server tick and the interval at which objects are generally " +"updated over\n" +"network." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active block management interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between active block management cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ABM interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between Active Block Modifier (ABM) execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "NodeTimer interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Length of time between NodeTimer execution cycles" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ignore world errors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled, invalid world data won't cause the server to shut down.\n" +"Only enable this if you know what you are doing." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid loop max" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max liquids processed per step." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid queue purge time" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The time (in seconds) that the liquids queue may grow beyond processing\n" +"capacity until an attempt is made to decrease its size by dumping old queue\n" +"items. A value of 0 disables the functionality." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update tick" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Liquid update interval in seconds." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Block send optimize distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"At this distance the server will aggressively optimize which blocks are sent " +"to\n" +"clients.\n" +"Small values potentially improve performance a lot, at the expense of " +"visible\n" +"rendering glitches (some blocks will not be rendered under water and in " +"caves,\n" +"as well as sometimes on land).\n" +"Setting this to a value greater than max_block_send_distance disables this\n" +"optimization.\n" +"Stated in mapblocks (16 nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Server side occlusion culling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If enabled the server will perform map block occlusion culling based on\n" +"on the eye position of the player. This can reduce the number of blocks\n" +"sent to the client 50-80%. The client will not longer receive most " +"invisible\n" +"so that the utility of noclip mode is reduced." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side modding restrictions" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Restricts the access of certain client-side functions on servers.\n" +"Combine the byteflags below to restrict client-side features, or set to 0\n" +"for no restrictions:\n" +"LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)\n" +"CHAT_MESSAGES: 2 (disable send_chat_message call client-side)\n" +"READ_ITEMDEFS: 4 (disable get_item_def call client-side)\n" +"READ_NODEDEFS: 8 (disable get_node_def call client-side)\n" +"LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to\n" +"csm_restriction_noderange)\n" +"READ_PLAYERINFO: 32 (disable get_player_names call client-side)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client side node lookup range restriction" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the CSM restriction for node range is enabled, get_node calls are " +"limited\n" +"to this distance from the player to the node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Enable mod security" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Prevent mods from doing insecure things like running shell commands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trusted mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of trusted mods that are allowed to access insecure\n" +"functions even when mod security is on (via request_insecure_environment())." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "HTTP mods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of mods that are allowed to access HTTP APIs, which\n" +"allow them to upload and download data to/from the internet." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiling" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Load the game profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Load the game profiler to collect game profiling data.\n" +"Provides a /profiler command to access the compiled profile.\n" +"Useful for mod developers and server operators." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Default report format" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The default format in which profiles are being saved,\n" +"when calling `/profiler save [format]` without format." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Report path" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The file path relative to your worldpath in which profiles will be saved to." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrumentation" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Entity methods" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument the methods of entities on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Active Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Active Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Loading Block Modifiers" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument the action function of Loading Block Modifiers on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chatcommands" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Instrument chatcommands on registration." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Global callbacks" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument global callback functions on registration.\n" +"(anything you pass to a minetest.register_*() function)" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Builtin" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Instrument builtin.\n" +"This is usually only needed by core/builtin contributors" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Profiler" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Have the profiler instrument itself:\n" +"* Instrument an empty function.\n" +"This estimates the overhead, that instrumentation is adding (+1 function " +"call).\n" +"* Instrument the sampler being used to update the statistics." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Client and Server" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Player name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of the player.\n" +"When running a server, clients connecting with this name are admins.\n" +"When starting from the main menu, this is overridden." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Language" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Set the language. Leave empty to use the system language.\n" +"A restart is required after changing this." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Level of logging to be written to debug.txt:\n" +"- (no logging)\n" +"- none (messages with no level)\n" +"- error\n" +"- warning\n" +"- action\n" +"- info\n" +"- verbose" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Debug log file size threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"If the file size of debug.txt exceeds the number of megabytes specified in\n" +"this setting when it is opened, the file is moved to debug.txt.1,\n" +"deleting an older debug.txt.1 if it exists.\n" +"debug.txt is only moved if this setting is positive." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chat log level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimal level of logging to be written to chat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "IPv6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Enable IPv6 support (for both client and server).\n" +"Required for IPv6 connections to work at all." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Default timeout for cURL, stated in milliseconds.\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL parallel limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limits number of parallel HTTP requests. Affects:\n" +"- Media fetch if server uses remote_media setting.\n" +"- Serverlist download and server announcement.\n" +"- Downloads performed by main menu (e.g. mod manager).\n" +"Only has an effect if compiled with cURL." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "cURL file download timeout" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum time in ms a file download (e.g. a mod download) may take." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "High-precision FPU" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Makes DirectX work with LuaJIT. Disable if it causes troubles." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu style" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Changes the main menu UI:\n" +"- Full: Multiple singleplayer worlds, game choice, texture pack chooser, " +"etc.\n" +"- Simple: One singleplayer world, no game or texture pack choosers. May " +"be\n" +"necessary for smaller screens." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Main menu script" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Replaces the default main menu with a custom one." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Engine profiling data print interval" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Print the engine's profiling data in regular intervals (in seconds).\n" +"0 = disable. Useful for developers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen name" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Name of map generator to be used when creating a new world.\n" +"Creating a world in the main menu will override this.\n" +"Current mapgens in a highly unstable state:\n" +"- The optional floatlands of v7 (disabled by default)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Water surface level of the world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Max block generate distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"From how far blocks are generated for clients, stated in mapblocks (16 " +"nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).\n" +"Only mapchunks completely within the mapgen limit are generated.\n" +"Value is stored per-world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Global map generation attributes.\n" +"In Mapgen v6 the 'decorations' flag controls all decorations except trees\n" +"and junglegrass, in all other mapgens this flag controls all decorations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome API temperature and humidity noise parameters" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Temperature variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Heat blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale temperature variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity variation for biomes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Humidity blend noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small-scale humidity variation for blending biomes on borders." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V5 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen v5." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Controls width of tunnels, a smaller value creates wider tunnels.\n" +"Value >= 10.0 completely disables generation of tunnels and avoids the\n" +"intensive noise calculations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of upper limit of large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Small cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of small caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave minimum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Minimum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave maximum number" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum limit of random number of large caves per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Large cave proportion flooded" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Proportion of large caves that contain liquid." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of cavern upper limit." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern taper" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-distance over which caverns expand to full size." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines full size of caverns, smaller values create larger caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of dungeons." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Noises" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of biome filler depth." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Factor noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Variation of terrain vertical scale.\n" +"When noise is < -0.55 terrain is near-flat." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of average terrain surface." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Second of two 3D noises that together define tunnels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dungeon noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise that determines number of dungeons per mapchunk." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V6 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v6.\n" +"The 'snowbiomes' flag enables the new 5 biome system.\n" +"When the 'snowbiomes' flag is enabled jungles are automatically enabled and\n" +"the 'jungles' flag is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Desert noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Deserts occur when np_biome exceeds this value.\n" +"When the 'snowbiomes' flag is enabled, this is ignored." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Sandy beaches occur when np_beach exceeds this value." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain base noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of lower terrain and seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain higher noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of higher terrain that creates cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Steepness noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Height select noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mud noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Varies depth of biome surface nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Beach noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas with sandy beaches." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Biome noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of number of caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines tree areas and tree density." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Apple trees noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines areas where trees have apples." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen V7 specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen v7.\n" +"'ridges': Rivers.\n" +"'floatlands': Floating land masses in the atmosphere.\n" +"'caverns': Giant caves deep underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain zero level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y of mountain density gradient zero level. Used to shift mountains " +"vertically." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland minimum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lower Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland maximum Y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Upper Y limit of floatlands." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland tapering distance" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Y-distance over which floatlands taper from full density to nothing.\n" +"Tapering starts at this distance from the Y limit.\n" +"For a solid floatland layer, this controls the height of hills/mountains.\n" +"Must be less than or equal to half the distance between the Y limits." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland taper exponent" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Exponent of the floatland tapering. Alters the tapering behaviour.\n" +"Value = 1.0 creates a uniform, linear tapering.\n" +"Values > 1.0 create a smooth tapering suitable for the default separated\n" +"floatlands.\n" +"Values < 1.0 (for example 0.25) create a more defined surface level with\n" +"flatter lowlands, suitable for a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland density" +msgstr "" + +#: src/settings_translation_file.cpp +#, c-format +msgid "" +"Adjusts the density of the floatland layer.\n" +"Increase value to increase density. Can be positive or negative.\n" +"Value = 0.0: 50% of volume is floatland.\n" +"Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test\n" +"to be sure) creates a solid floatland layer." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland water level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Surface level of optional water placed on a solid floatland layer.\n" +"Water is disabled by default and will only be placed if this value is set\n" +"to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the\n" +"upper tapering).\n" +"***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:\n" +"When enabling water placement the floatlands must be configured and tested\n" +"to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other\n" +"required value depending on 'mgv7_np_floatland'), to avoid\n" +"server-intensive extreme water flow and to avoid vast flooding of the\n" +"world surface below." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain alternative noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain persistence noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Varies roughness of terrain.\n" +"Defines the 'persistence' value for terrain_base and terrain_alt noises." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines distribution of higher terrain and steepness of cliffs." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain height noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Variation of maximum mountain height (in nodes)." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge underwater noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines large-scale river channel structure." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining mountain structure and height.\n" +"Also defines structure of floatland mountain terrain." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise defining structure of river canyon walls." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Floatland noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"3D noise defining structure of floatlands.\n" +"If altered from the default, the noise 'scale' (0.7 by default) may need\n" +"to be adjusted, as floatland tapering functions best when this noise has\n" +"a value range of approximately -2.0 to 2.0." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Carpathian specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Map generation attributes specific to Mapgen Carpathian." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the base ground level." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River channel depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the depth of the river channel." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River valley width" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines the width of the river valley." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness1 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "First of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness2 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Second of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness3 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Third of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hilliness4 noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fourth of 4 2D noises that together define hill/mountain range height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rolling hills spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of rolling hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridge mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of ridged mountain ranges." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain spread noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the size/occurrence of step mountain ranges." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Rolling hill size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of rolling hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ridged mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of ridged mountains." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Step mountain size noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that controls the shape/size of step mountains." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "2D noise that locates the river valleys and channels." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mountain variation noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "3D noise for mountain overhangs, cliffs, etc. Usually small variations." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Flat specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Flat.\n" +"Occasional lakes and hills can be added to the flat world." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Ground level" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y of flat ground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for lakes.\n" +"Controls proportion of world area covered by lakes.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Lake steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/depth of lake depressions." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill threshold" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Terrain noise threshold for hills.\n" +"Controls proportion of world area covered by hills.\n" +"Adjust towards 0.0 for a larger proportion." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Hill steepness" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Controls steepness/height of hills." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Defines location and terrain of optional hills and lakes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Fractal specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Fractal.\n" +"'terrain' enables the generation of non-fractal terrain:\n" +"ocean, islands and underground." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Fractal type" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Selects one of 18 fractal types.\n" +"1 = 4D \"Roundy\" Mandelbrot set.\n" +"2 = 4D \"Roundy\" Julia set.\n" +"3 = 4D \"Squarry\" Mandelbrot set.\n" +"4 = 4D \"Squarry\" Julia set.\n" +"5 = 4D \"Mandy Cousin\" Mandelbrot set.\n" +"6 = 4D \"Mandy Cousin\" Julia set.\n" +"7 = 4D \"Variation\" Mandelbrot set.\n" +"8 = 4D \"Variation\" Julia set.\n" +"9 = 3D \"Mandelbrot/Mandelbar\" Mandelbrot set.\n" +"10 = 3D \"Mandelbrot/Mandelbar\" Julia set.\n" +"11 = 3D \"Christmas Tree\" Mandelbrot set.\n" +"12 = 3D \"Christmas Tree\" Julia set.\n" +"13 = 3D \"Mandelbulb\" Mandelbrot set.\n" +"14 = 3D \"Mandelbulb\" Julia set.\n" +"15 = 3D \"Cosine Mandelbulb\" Mandelbrot set.\n" +"16 = 3D \"Cosine Mandelbulb\" Julia set.\n" +"17 = 4D \"Mandelbulb\" Mandelbrot set.\n" +"18 = 4D \"Mandelbulb\" Julia set." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Iterations" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Iterations of the recursive function.\n" +"Increasing this increases the amount of fine detail, but also\n" +"increases processing load.\n" +"At iterations = 20 this mapgen has a similar load to mapgen V7." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) scale of fractal in nodes.\n" +"Actual fractal size will be 2 to 3 times larger.\n" +"These numbers can be made very large, the fractal does\n" +"not have to fit inside the world.\n" +"Increase these to 'zoom' into the detail of the fractal.\n" +"Default is for a vertically-squashed shape suitable for\n" +"an island, set all 3 numbers equal for the raw shape." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"(X,Y,Z) offset of fractal from world center in units of 'scale'.\n" +"Can be used to move a desired point to (0, 0) to create a\n" +"suitable spawn point, or to allow 'zooming in' on a desired\n" +"point by increasing 'scale'.\n" +"The default is tuned for a suitable spawn point for Mandelbrot\n" +"sets with default parameters, it may need altering in other\n" +"situations.\n" +"Range roughly -2 to 2. Multiply by 'scale' for offset in nodes." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slice w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"W coordinate of the generated 3D slice of a 4D fractal.\n" +"Determines which 3D slice of the 4D shape is generated.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia x" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"X component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia y" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Y component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia z" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"Z component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Julia w" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Julia set only.\n" +"W component of hypercomplex constant.\n" +"Alters the shape of the fractal.\n" +"Has no effect on 3D fractals.\n" +"Range roughly -2 to 2." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Seabed noise" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Y-level of seabed." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen Valleys specific flags" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Map generation attributes specific to Mapgen Valleys.\n" +"'altitude_chill': Reduces heat with altitude.\n" +"'humid_rivers': Increases humidity around rivers.\n" +"'vary_river_depth': If enabled, low humidity and high heat causes rivers\n" +"to become shallower and occasionally dry.\n" +"'altitude_dry': Reduces humidity with altitude." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"The vertical distance over which heat drops by 20 if 'altitude_chill' is\n" +"enabled. Also the vertical distance over which humidity drops by 10 if\n" +"'altitude_dry' is enabled." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find large caves." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cavern upper limit" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Depth below which you'll find giant caverns." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How deep to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "River size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "How wide to make rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #1" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Cave noise #2" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Filler depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The depth of dirt or other biome filler node." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Terrain height" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Base terrain height." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley depth" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Raises terrain to make valleys around the rivers." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley fill" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Slope and fill work together to modify the heights." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley profile" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Amplifies the valleys." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Valley slope" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Chunk size" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).\n" +"WARNING!: There is no benefit, and there are several dangers, in\n" +"increasing this value above 5.\n" +"Reducing this value increases cave and dungeon density.\n" +"Altering this value is for special usage, leaving it unchanged is\n" +"recommended." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Mapgen debug" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Dump the mapgen debug information." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Absolute limit of queued blocks to emerge" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Maximum number of blocks that can be queued for loading." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks load from disk" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be loaded from file.\n" +"This limit is enforced per player." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Per-player limit of queued blocks to generate" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Maximum number of blocks to be queued that are to be generated.\n" +"This limit is enforced per player." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Number of emerge threads" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Number of emerge threads to use.\n" +"Value 0:\n" +"- Automatic selection. The number of emerge threads will be\n" +"- 'number of processors - 2', with a lower limit of 1.\n" +"Any other value:\n" +"- Specifies the number of emerge threads, with a lower limit of 1.\n" +"WARNING: Increasing the number of emerge threads increases engine mapgen\n" +"speed, but this may harm game performance by interfering with other\n" +"processes, especially in singleplayer and/or when running Lua code in\n" +"'on_generated'. For many users the optimum setting may be '1'." +msgstr "" + +#: src/settings_translation_file.cpp +msgid "Online Content Repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB URL" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "The URL for the content repository" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "ContentDB Flag Blacklist" +msgstr "" + +#: src/settings_translation_file.cpp +msgid "" +"Comma-separated list of flags to hide in the content repository.\n" +"\"nonfree\" can be used to hide packages which do not qualify as 'free " +"software',\n" +"as defined by the Free Software Foundation.\n" +"You can also specify content ratings.\n" +"These flags are independent from Minetest versions,\n" +"so see a full list at https://content.minetest.net/help/content_flags/" +msgstr "" From 9889f57cbc9f6de87e37815916858c9601e99183 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 8 Jul 2020 20:31:21 +0000 Subject: [PATCH 402/424] Translated using Weblate (Czech) Currently translated at 55.7% (753 of 1350 strings) --- po/cs/minetest.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/cs/minetest.po b/po/cs/minetest.po index 1f539fa1b..f710ac43f 100644 --- a/po/cs/minetest.po +++ b/po/cs/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Czech (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-27 20:41+0000\n" -"Last-Translator: Wuzzy \n" +"PO-Revision-Date: 2020-07-08 20:47+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: Czech \n" "Language: cs\n" @@ -1064,7 +1064,7 @@ msgstr "Uvedená cesta ke světu neexistuje: " #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "no" #: src/client/game.cpp msgid "" From ab175e259ecd00ddc5df51526659b4b105bd73c6 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 8 Jul 2020 20:33:16 +0000 Subject: [PATCH 403/424] Translated using Weblate (Dutch) Currently translated at 78.9% (1066 of 1350 strings) --- po/nl/minetest.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/nl/minetest.po b/po/nl/minetest.po index 8f6912457..c4d3da53a 100644 --- a/po/nl/minetest.po +++ b/po/nl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Dutch (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-07-06 21:41+0000\n" -"Last-Translator: Miniontoby \n" +"PO-Revision-Date: 2020-07-08 20:47+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -1066,7 +1066,7 @@ msgstr "Het gespecificeerde wereld-pad bestaat niet: " #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "no" #: src/client/game.cpp msgid "" From 3547c47ee70bbf34242c6f10f8ff404944614a5f Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 8 Jul 2020 20:40:59 +0000 Subject: [PATCH 404/424] Translated using Weblate (Serbian (cyrillic)) Currently translated at 26.2% (354 of 1350 strings) --- po/sr_Cyrl/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/sr_Cyrl/minetest.po b/po/sr_Cyrl/minetest.po index 4ba5e13b5..67ee37bd0 100644 --- a/po/sr_Cyrl/minetest.po +++ b/po/sr_Cyrl/minetest.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: Serbian (cyrillic) (Minetest)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-07-08 20:47+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: Serbian (cyrillic) \n" "Language: sr_Cyrl\n" @@ -13,7 +13,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.9-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1111,7 +1111,7 @@ msgstr "Дата локација света не постоји: " #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "no" #: src/client/game.cpp msgid "" From b7129f63c47eaacf9ad712efed4533982b68beb7 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 8 Jul 2020 20:31:55 +0000 Subject: [PATCH 405/424] Translated using Weblate (Basque) Currently translated at 17.5% (237 of 1350 strings) --- po/eu/minetest.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/eu/minetest.po b/po/eu/minetest.po index 7c3398569..17c4325df 100644 --- a/po/eu/minetest.po +++ b/po/eu/minetest.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-05-16 17:41+0000\n" -"Last-Translator: aitzol berasategi \n" +"PO-Revision-Date: 2020-07-08 20:47+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: Basque \n" "Language: eu\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" @@ -1057,7 +1057,7 @@ msgstr "" #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "no" #: src/client/game.cpp msgid "" From 3c175707eba2165f54dec66526cf8e77c0d7c473 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 8 Jul 2020 20:34:13 +0000 Subject: [PATCH 406/424] Translated using Weblate (Galician) Currently translated at 0.5% (8 of 1350 strings) --- po/gl/minetest.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/po/gl/minetest.po b/po/gl/minetest.po index 5a7bd5785..115597bf8 100644 --- a/po/gl/minetest.po +++ b/po/gl/minetest.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: 2020-06-27 20:41+0000\n" -"Last-Translator: Wuzzy \n" +"PO-Revision-Date: 2020-07-08 20:47+0000\n" +"Last-Translator: sfan5 \n" "Language-Team: Galician \n" "Language: gl\n" @@ -1044,7 +1044,7 @@ msgstr "" #. When in doubt, test your translation. #: src/client/fontengine.cpp msgid "needs_fallback_font" -msgstr "" +msgstr "no" #: src/client/game.cpp msgid "Shutting down..." From 352529e7490c9e0bd12bdb984f090318b2d4ecbe Mon Sep 17 00:00:00 2001 From: daretmavi Date: Wed, 8 Jul 2020 20:47:28 +0000 Subject: [PATCH 407/424] Translated using Weblate (Slovak) Currently translated at 12.8% (174 of 1350 strings) --- po/sk/minetest.po | 354 ++++++++++++++++++++++++---------------------- 1 file changed, 185 insertions(+), 169 deletions(-) diff --git a/po/sk/minetest.po b/po/sk/minetest.po index 367115c57..d8f3a3122 100644 --- a/po/sk/minetest.po +++ b/po/sk/minetest.po @@ -8,114 +8,119 @@ msgstr "" "Project-Id-Version: minetest\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2020-07-08 20:47+0000\n" +"Last-Translator: daretmavi \n" +"Language-Team: Slovak \n" "Language: sk\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>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 4.2-dev\n" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "You died" -msgstr "" +msgstr "Zomrel si" #: builtin/client/death_formspec.lua src/client/game.cpp msgid "Respawn" -msgstr "" +msgstr "Oživiť" #: builtin/fstk/dialog.lua builtin/fstk/ui.lua src/gui/modalMenu.cpp msgid "OK" -msgstr "" +msgstr "OK" #: builtin/fstk/ui.lua msgid "The server has requested a reconnect:" -msgstr "" +msgstr "Server požadoval obnovu spojenia:" #: builtin/fstk/ui.lua msgid "Reconnect" -msgstr "" +msgstr "Znova pripojiť" #: builtin/fstk/ui.lua msgid "Main menu" -msgstr "" +msgstr "Hlavné menu" #: builtin/fstk/ui.lua msgid "An error occurred in a Lua script:" -msgstr "" +msgstr "Chyba v lua skripte:" #: builtin/fstk/ui.lua msgid "An error occurred:" -msgstr "" +msgstr "Chyba:" #: builtin/mainmenu/common.lua src/client/game.cpp msgid "Loading..." -msgstr "" +msgstr "Nahrávam..." #: builtin/mainmenu/common.lua msgid "Try reenabling public serverlist and check your internet connection." msgstr "" +"Skús znova povoliť verejný zoznam serverov a skontroluj internetové " +"pripojenie." #: builtin/mainmenu/common.lua msgid "Server supports protocol versions between $1 and $2. " -msgstr "" +msgstr "Server podporuje verzie protokolov: $1 - $2. " #: builtin/mainmenu/common.lua msgid "Server enforces protocol version $1. " -msgstr "" +msgstr "Server vyžaduje protokol verzie $1. " #: builtin/mainmenu/common.lua msgid "We support protocol versions between version $1 and $2." -msgstr "" +msgstr "Podporujeme verzie protokolov: $1 - $2." #: builtin/mainmenu/common.lua msgid "We only support protocol version $1." -msgstr "" +msgstr "Podporujeme len protokol verzie $1." #: builtin/mainmenu/common.lua msgid "Protocol version mismatch. " -msgstr "" +msgstr "Nesúhlas verzií protokolov. " #: builtin/mainmenu/dlg_config_world.lua msgid "World:" -msgstr "" +msgstr "Svet:" #: builtin/mainmenu/dlg_config_world.lua msgid "No modpack description provided." -msgstr "" +msgstr "Popis balíka rozšírení nie je k dispozícií." #: builtin/mainmenu/dlg_config_world.lua msgid "No game description provided." -msgstr "" +msgstr "Popis hry nie je k dispozícií." #: builtin/mainmenu/dlg_config_world.lua msgid "Mod:" -msgstr "" +msgstr "Rozšírenie:" #: builtin/mainmenu/dlg_config_world.lua msgid "No (optional) dependencies" -msgstr "" +msgstr "Bez (voliteľných) závislostí" #: builtin/mainmenu/dlg_config_world.lua msgid "No hard dependencies" -msgstr "" +msgstr "Bez povinných závislostí" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Optional dependencies:" -msgstr "" +msgstr "Voliteľné závislosti:" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/tab_content.lua msgid "Dependencies:" -msgstr "" +msgstr "Závislosti:" #: builtin/mainmenu/dlg_config_world.lua msgid "No optional dependencies" -msgstr "" +msgstr "Bez voliteľných závislostí" #: builtin/mainmenu/dlg_config_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua src/gui/guiKeyChangeMenu.cpp msgid "Save" -msgstr "" +msgstr "Ulož" #: builtin/mainmenu/dlg_config_world.lua builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_delete_content.lua @@ -125,386 +130,394 @@ msgstr "" #: src/gui/guiConfirmRegistration.cpp src/gui/guiKeyChangeMenu.cpp #: src/gui/guiPasswordChange.cpp msgid "Cancel" -msgstr "" +msgstr "Zruš" #: builtin/mainmenu/dlg_config_world.lua msgid "Find More Mods" -msgstr "" +msgstr "Nájdi viac rozšírení" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable modpack" -msgstr "" +msgstr "Deaktivuj rozšírenie" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable modpack" -msgstr "" +msgstr "Povoľ rozšírenie" #: builtin/mainmenu/dlg_config_world.lua msgid "enabled" -msgstr "" +msgstr "povolené" #: builtin/mainmenu/dlg_config_world.lua msgid "Disable all" -msgstr "" +msgstr "Deaktivuj všetko" #: builtin/mainmenu/dlg_config_world.lua msgid "Enable all" -msgstr "" +msgstr "Povoľ všetko" #: builtin/mainmenu/dlg_config_world.lua msgid "" "Failed to enable mod \"$1\" as it contains disallowed characters. Only " "characters [a-z0-9_] are allowed." msgstr "" +"Nepodarilo sa aktivovať rozšírenie \"$1\" lebo obsahuje nepovolené znaky. " +"Povolené sú len znaky [a-z0-9_]." #: builtin/mainmenu/dlg_contentstore.lua msgid "ContentDB is not available when Minetest was compiled without cURL" -msgstr "" +msgstr "ContentDB nie je k dispozícií ak bol Minetest skompilovaný bez cURL" #: builtin/mainmenu/dlg_contentstore.lua msgid "All packages" -msgstr "" +msgstr "Všetky balíčky" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Games" -msgstr "" +msgstr "Hry" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Mods" -msgstr "" +msgstr "Rozšírenia" #: builtin/mainmenu/dlg_contentstore.lua msgid "Texture packs" -msgstr "" +msgstr "Balíčky textúr" #: builtin/mainmenu/dlg_contentstore.lua msgid "Failed to download $1" -msgstr "" +msgstr "Nepodarilo sa stiahnuť $1" #: builtin/mainmenu/dlg_contentstore.lua #: builtin/mainmenu/dlg_settings_advanced.lua builtin/mainmenu/tab_online.lua msgid "Search" -msgstr "" +msgstr "Hľadaj" #: builtin/mainmenu/dlg_contentstore.lua msgid "Back to Main Menu" -msgstr "" +msgstr "Naspäť do hlavného menu" #: builtin/mainmenu/dlg_contentstore.lua msgid "No results" -msgstr "" +msgstr "Bez výsledku" #: builtin/mainmenu/dlg_contentstore.lua msgid "No packages could be retrieved" -msgstr "" +msgstr "Nepodarilo sa stiahnuť žiadne balíčky" #: builtin/mainmenu/dlg_contentstore.lua msgid "Downloading..." -msgstr "" +msgstr "Sťahujem..." #: builtin/mainmenu/dlg_contentstore.lua msgid "Install" -msgstr "" +msgstr "Inštaluj" #: builtin/mainmenu/dlg_contentstore.lua msgid "Update" -msgstr "" +msgstr "Aktualizuj" #: builtin/mainmenu/dlg_contentstore.lua msgid "Uninstall" -msgstr "" +msgstr "Odinštaluj" #: builtin/mainmenu/dlg_contentstore.lua msgid "View" -msgstr "" +msgstr "Zobraziť" #: builtin/mainmenu/dlg_create_world.lua msgid "Caverns" -msgstr "" +msgstr "Jaskyne" #: builtin/mainmenu/dlg_create_world.lua msgid "Very large caverns deep in the underground" -msgstr "" +msgstr "Obrovské jaskyne hlboko v podzemí" #: builtin/mainmenu/dlg_create_world.lua msgid "Sea level rivers" -msgstr "" +msgstr "Rieky na úrovni hladiny mora" #: builtin/mainmenu/dlg_create_world.lua msgid "Rivers" -msgstr "" +msgstr "Rieky" #: builtin/mainmenu/dlg_create_world.lua msgid "Mountains" -msgstr "" +msgstr "Hory" #: builtin/mainmenu/dlg_create_world.lua msgid "Floatlands (experimental)" -msgstr "" +msgstr "Lietajúce krajiny (experimentálne)" #: builtin/mainmenu/dlg_create_world.lua msgid "Floating landmasses in the sky" -msgstr "" +msgstr "Poletujúce pevniny na oblohe" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Altitude chill" -msgstr "" +msgstr "Ochladenie s nadmorskou výškou" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces heat with altitude" -msgstr "" +msgstr "Znižuje teplotu s nadmorskou výškou" #: builtin/mainmenu/dlg_create_world.lua msgid "Altitude dry" -msgstr "" +msgstr "Sucho v nadmorskej výške" #: builtin/mainmenu/dlg_create_world.lua msgid "Reduces humidity with altitude" -msgstr "" +msgstr "Znižuje vlhkosť s nadmorskou výškou" #: builtin/mainmenu/dlg_create_world.lua msgid "Humid rivers" -msgstr "" +msgstr "Vlhkosť riek" #: builtin/mainmenu/dlg_create_world.lua msgid "Increases humidity around rivers" -msgstr "" +msgstr "Zvyšuje vlhkosť v okolí riek" #: builtin/mainmenu/dlg_create_world.lua msgid "Vary river depth" -msgstr "" +msgstr "Premenlivá hĺbka riek" #: builtin/mainmenu/dlg_create_world.lua msgid "Low humidity and high heat causes shallow or dry rivers" msgstr "" +"Nízka vlhkosť a vysoké teploty spôsobujú znižovanie hladín, alebo vysychanie " +"riek" #: builtin/mainmenu/dlg_create_world.lua msgid "Hills" -msgstr "" +msgstr "Kopce" #: builtin/mainmenu/dlg_create_world.lua msgid "Lakes" -msgstr "" +msgstr "Jazerá" #: builtin/mainmenu/dlg_create_world.lua msgid "Additional terrain" -msgstr "" +msgstr "Dodatočný terén" #: builtin/mainmenu/dlg_create_world.lua msgid "Generate non-fractal terrain: Oceans and underground" -msgstr "" +msgstr "Generuj nefragmentovaný terén: oceány a podzemie" #: builtin/mainmenu/dlg_create_world.lua msgid "Trees and jungle grass" -msgstr "" +msgstr "Stromy a vysoká tráva" #: builtin/mainmenu/dlg_create_world.lua msgid "Flat terrain" -msgstr "" +msgstr "Rovný terén" #: builtin/mainmenu/dlg_create_world.lua msgid "Mud flow" -msgstr "" +msgstr "Prúd bahna" #: builtin/mainmenu/dlg_create_world.lua msgid "Terrain surface erosion" -msgstr "" +msgstr "Erózia terénu" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle, Tundra, Taiga" -msgstr "" +msgstr "Mierne pásmo, Púšť, Džungľa, Tundra, Tajga" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert, Jungle" -msgstr "" +msgstr "Mierne pásmo, Púšť, Džungľa" #: builtin/mainmenu/dlg_create_world.lua msgid "Temperate, Desert" -msgstr "" +msgstr "Mierne pásmo, Púšť" #: builtin/mainmenu/dlg_create_world.lua msgid "You have no games installed." -msgstr "" +msgstr "Nie je nainštalovaná žiadna hra." #: builtin/mainmenu/dlg_create_world.lua msgid "Download one from minetest.net" -msgstr "" +msgstr "Stiahni jednu z minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "Caves" -msgstr "" +msgstr "Jaskyne" #: builtin/mainmenu/dlg_create_world.lua msgid "Dungeons" -msgstr "" +msgstr "Kobky" #: builtin/mainmenu/dlg_create_world.lua msgid "Decorations" -msgstr "" +msgstr "Dekorácie" #: builtin/mainmenu/dlg_create_world.lua msgid "" "Structures appearing on the terrain (no effect on trees and jungle grass " "created by v6)" msgstr "" +"Štruktúry objavujúce sa na povrchu (nemá vplyv na stromy a vysokú trávu " +"vytvorenú verziou v6)" #: builtin/mainmenu/dlg_create_world.lua msgid "Structures appearing on the terrain, typically trees and plants" -msgstr "" +msgstr "Štruktúry objavujúce sa na povrchu, typicky stromy a rastliny" #: builtin/mainmenu/dlg_create_world.lua msgid "Network of tunnels and caves" -msgstr "" +msgstr "Sieť tunelov a jaskýň" #: builtin/mainmenu/dlg_create_world.lua msgid "Biomes" -msgstr "" +msgstr "Ekosystémy" #: builtin/mainmenu/dlg_create_world.lua msgid "Biome blending" -msgstr "" +msgstr "Miešanie ekosystémov" #: builtin/mainmenu/dlg_create_world.lua msgid "Smooth transition between biomes" -msgstr "" +msgstr "Plynulý prechod medzi ekosystémami" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen flags" -msgstr "" +msgstr "Príznaky generátora máp" #: builtin/mainmenu/dlg_create_world.lua msgid "Mapgen-specific flags" -msgstr "" +msgstr "Špecifické príznaky generátora máp" #: builtin/mainmenu/dlg_create_world.lua msgid "Warning: The Development Test is meant for developers." -msgstr "" +msgstr "Varovanie: Vývojarský Test je určený vývojárom." #: builtin/mainmenu/dlg_create_world.lua msgid "Download a game, such as Minetest Game, from minetest.net" -msgstr "" +msgstr "Stiahni si hru, ako napr. Minetest Game z minetest.net" #: builtin/mainmenu/dlg_create_world.lua msgid "World name" -msgstr "" +msgstr "Meno sveta" #: builtin/mainmenu/dlg_create_world.lua #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Seed" -msgstr "" +msgstr "Semienko" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Mapgen" -msgstr "" +msgstr "Generátor mapy" #: builtin/mainmenu/dlg_create_world.lua src/settings_translation_file.cpp msgid "Game" -msgstr "" +msgstr "Hra" #: builtin/mainmenu/dlg_create_world.lua msgid "Create" -msgstr "" +msgstr "Vytvor" #: builtin/mainmenu/dlg_create_world.lua msgid "A world named \"$1\" already exists" -msgstr "" +msgstr "Svet menom \"$1\" už existuje" #: builtin/mainmenu/dlg_create_world.lua msgid "No game selected" -msgstr "" +msgstr "Nie je zvolená hra" #: builtin/mainmenu/dlg_delete_content.lua msgid "Are you sure you want to delete \"$1\"?" -msgstr "" +msgstr "Si si istý, že chceš zmazať \"$1\"?" #: builtin/mainmenu/dlg_delete_content.lua #: builtin/mainmenu/dlg_delete_world.lua builtin/mainmenu/tab_local.lua #: src/client/keycode.cpp msgid "Delete" -msgstr "" +msgstr "Zmaž" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: failed to delete \"$1\"" -msgstr "" +msgstr "pkgmgr: neúspech pri mazaní \"$1\"" #: builtin/mainmenu/dlg_delete_content.lua msgid "pkgmgr: invalid path \"$1\"" -msgstr "" +msgstr "pkgmgr: nesprávna cesta \"$1\"" #: builtin/mainmenu/dlg_delete_world.lua msgid "Delete World \"$1\"?" -msgstr "" +msgstr "Zmazať svet \"$1\"?" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Accept" -msgstr "" +msgstr "Prijať" #: builtin/mainmenu/dlg_rename_modpack.lua msgid "" "This modpack has an explicit name given in its modpack.conf which will " "override any renaming here." msgstr "" +"Tento balíček rozšírení má vo svojom modpack.conf explicitne zadané meno, " +"ktoré prepíše akékoľvek tunajšie premenovanie." #: builtin/mainmenu/dlg_rename_modpack.lua msgid "Rename Modpack:" -msgstr "" +msgstr "Premenuj balíček rozšírení:" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Disabled" -msgstr "" +msgstr "Zablokované" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Enabled" -msgstr "" +msgstr "Povolené" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Browse" -msgstr "" +msgstr "Prehliadaj" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Offset" -msgstr "" +msgstr "Ofset" #: builtin/mainmenu/dlg_settings_advanced.lua src/settings_translation_file.cpp msgid "Scale" -msgstr "" +msgstr "Mierka" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X spread" -msgstr "" +msgstr "Rozptyl X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y spread" -msgstr "" +msgstr "Rozptyl Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "2D Noise" -msgstr "" +msgstr "2D šum" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z spread" -msgstr "" +msgstr "Rozptyl Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Octaves" -msgstr "" +msgstr "Oktávy" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Persistance" -msgstr "" +msgstr "Vytrvalosť" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Lacunarity" -msgstr "" +msgstr "Lakunarita" #. ~ "defaults" is a noise parameter flag. #. It describes the default processing options #. for noise settings in main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "defaults" -msgstr "" +msgstr "štandardné hodnoty (defaults)" #. ~ "eased" is a noise parameter flag. #. It is used to make the map smoother and @@ -512,7 +525,7 @@ msgstr "" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "eased" -msgstr "" +msgstr "zjemnené (eased)" #. ~ "absvalue" is a noise parameter flag. #. It is short for "absolute value". @@ -520,223 +533,226 @@ msgstr "" #. main menu -> "All Settings". #: builtin/mainmenu/dlg_settings_advanced.lua msgid "absvalue" -msgstr "" +msgstr "Absolútna hodnota (absvalue)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "X" -msgstr "" +msgstr "X" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Y" -msgstr "" +msgstr "Y" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Z" -msgstr "" +msgstr "Z" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "(No description of setting given)" -msgstr "" +msgstr "(Nie je zadaný popis nastavenia)" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid integer." -msgstr "" +msgstr "Prosím zadaj platné celé číslo." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must be at least $1." -msgstr "" +msgstr "Hodnota musí byť najmenej $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "The value must not be larger than $1." -msgstr "" +msgstr "Hodnota nesmie byť vyššia ako $1." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Please enter a valid number." -msgstr "" +msgstr "Prosím vlož platné číslo." #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select directory" -msgstr "" +msgstr "Zvoľ adresár" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Select file" -msgstr "" +msgstr "Zvoľ súbor" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "< Back to Settings page" -msgstr "" +msgstr "< Späť na nastavenia" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Edit" -msgstr "" +msgstr "Upraviť" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Restore Default" -msgstr "" +msgstr "Obnov štandardné hodnoty" #: builtin/mainmenu/dlg_settings_advanced.lua msgid "Show technical names" -msgstr "" +msgstr "Zobraz technické názvy" #: builtin/mainmenu/pkgmgr.lua msgid "$1 (Enabled)" -msgstr "" +msgstr "$1 (povolený)" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a $1 as a texture pack" -msgstr "" +msgstr "Nie je možné nainštalovať $1 ako balíček textúr" #: builtin/mainmenu/pkgmgr.lua msgid "Failed to install $1 to $2" -msgstr "" +msgstr "Zlyhala inštalácia $1 na $2" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to find a valid mod or modpack" -msgstr "" +msgstr "Nie je možné nájsť platné rozšírenie, alebo balíček rozšírení" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a modpack as a $1" -msgstr "" +msgstr "Nie je možné nainštalovať balíček rozšírení $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find suitable folder name for modpack $1" msgstr "" +"Inštalácia rozšírenia: Nie je možné nájsť vhodný adresár pre balíček " +"rozšírení $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a mod as a $1" -msgstr "" +msgstr "Nie je možné nainštalovať rozšírenie $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install Mod: Unable to find real mod name for: $1" msgstr "" +"Inštalácia rozšírenia: Nie je možné nájsť skutočné meno rozšírenia pre: $1" #: builtin/mainmenu/pkgmgr.lua msgid "Unable to install a game as a $1" -msgstr "" +msgstr "Nie je možné nainštalovať hru $1" #: builtin/mainmenu/pkgmgr.lua msgid "Install: file: \"$1\"" -msgstr "" +msgstr "Inštalácia: súbor: \"$1\"" #: builtin/mainmenu/pkgmgr.lua msgid "Install: Unsupported file type \"$1\" or broken archive" -msgstr "" +msgstr "Inštalácia: Nepodporovaný typ súboru \"$1\", alebo poškodený archív" #: builtin/mainmenu/pkgmgr.lua msgid "$1 mods" -msgstr "" +msgstr "$1 rozšírenia" #: builtin/mainmenu/tab_content.lua msgid "Installed Packages:" -msgstr "" +msgstr "Nainštalované balíčky:" #: builtin/mainmenu/tab_content.lua msgid "Browse online content" -msgstr "" +msgstr "Prehliadaj online obsah" #: builtin/mainmenu/tab_content.lua msgid "No package description available" -msgstr "" +msgstr "Nie je k dispozícií popis balíčka" #: builtin/mainmenu/tab_content.lua msgid "Rename" -msgstr "" +msgstr "Premenuj" #: builtin/mainmenu/tab_content.lua msgid "No dependencies." -msgstr "" +msgstr "Bez závislostí." #: builtin/mainmenu/tab_content.lua msgid "Disable Texture Pack" -msgstr "" +msgstr "Deaktivuj balíček textúr" #: builtin/mainmenu/tab_content.lua msgid "Use Texture Pack" -msgstr "" +msgstr "Použi balíček textúr" #: builtin/mainmenu/tab_content.lua msgid "Information:" -msgstr "" +msgstr "Informácie:" #: builtin/mainmenu/tab_content.lua msgid "Uninstall Package" -msgstr "" +msgstr "Odinštaluj balíček" #: builtin/mainmenu/tab_content.lua msgid "Content" -msgstr "" +msgstr "Obsah" #: builtin/mainmenu/tab_credits.lua msgid "Credits" -msgstr "" +msgstr "Uznanie" #: builtin/mainmenu/tab_credits.lua msgid "Core Developers" -msgstr "" +msgstr "Hlavný vývojari" #: builtin/mainmenu/tab_credits.lua msgid "Active Contributors" -msgstr "" +msgstr "Aktívny prispievatelia" #: builtin/mainmenu/tab_credits.lua msgid "Previous Core Developers" -msgstr "" +msgstr "Predchádzajúci hlavný vývojári" #: builtin/mainmenu/tab_credits.lua msgid "Previous Contributors" -msgstr "" +msgstr "Predchádzajúci prispievatelia" #: builtin/mainmenu/tab_local.lua msgid "Install games from ContentDB" -msgstr "" +msgstr "Inštaluj hru z ContentDB" #: builtin/mainmenu/tab_local.lua msgid "Configure" -msgstr "" +msgstr "Konfigurácia" #: builtin/mainmenu/tab_local.lua msgid "New" -msgstr "" +msgstr "Nový" #: builtin/mainmenu/tab_local.lua msgid "Select World:" -msgstr "" +msgstr "Zvoľ si svet:" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Creative Mode" -msgstr "" +msgstr "Kreatívny mód" #: builtin/mainmenu/tab_local.lua builtin/mainmenu/tab_simple_main.lua msgid "Enable Damage" -msgstr "" +msgstr "Povoľ poškodenie" #: builtin/mainmenu/tab_local.lua msgid "Host Server" -msgstr "" +msgstr "Hosťuj server" #: builtin/mainmenu/tab_local.lua msgid "Host Game" -msgstr "" +msgstr "Hosťuj hru" #: builtin/mainmenu/tab_local.lua msgid "Announce Server" -msgstr "" +msgstr "Zverejni server" #: builtin/mainmenu/tab_local.lua msgid "Name/Password" -msgstr "" +msgstr "Meno/Heslo" #: builtin/mainmenu/tab_local.lua msgid "Bind Address" -msgstr "" +msgstr "Priraď adresu" #: builtin/mainmenu/tab_local.lua msgid "Port" -msgstr "" +msgstr "Port" #: builtin/mainmenu/tab_local.lua msgid "Server Port" -msgstr "" +msgstr "Port servera" #: builtin/mainmenu/tab_local.lua msgid "Play Game" From 5f3f806d674d4deb7501145a683b574455d13953 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Wed, 8 Jul 2020 20:37:26 +0000 Subject: [PATCH 408/424] Translated using Weblate (Slovak) Currently translated at 12.8% (174 of 1350 strings) --- po/sk/minetest.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/po/sk/minetest.po b/po/sk/minetest.po index d8f3a3122..843c924e3 100644 --- a/po/sk/minetest.po +++ b/po/sk/minetest.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-13 23:17+0200\n" "PO-Revision-Date: 2020-07-08 20:47+0000\n" -"Last-Translator: daretmavi \n" +"Last-Translator: rubenwardy \n" "Language-Team: Slovak \n" "Language: sk\n" @@ -1898,7 +1898,7 @@ msgstr "" #. language code (e.g. "de" for German). #: src/network/clientpackethandler.cpp src/script/lua_api/l_client.cpp msgid "LANG_CODE" -msgstr "" +msgstr "sk" #: src/settings_translation_file.cpp msgid "Controls" From b4c25872f181ccd87199aeed0a26e68d03d3089b Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 8 Jul 2020 23:09:39 +0200 Subject: [PATCH 409/424] Make util/bump_version.sh work again --- util/bump_version.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/util/bump_version.sh b/util/bump_version.sh index 58509198a..996962199 100755 --- a/util/bump_version.sh +++ b/util/bump_version.sh @@ -23,7 +23,7 @@ prompt_for_number() { perform_release() { sed -i -re "s/^set\(DEVELOPMENT_BUILD TRUE\)$/set(DEVELOPMENT_BUILD FALSE)/" CMakeLists.txt - sed -i -re "s/versionCode [0-9]+$/versionCode $NEW_ANDROID_VERSION_CODE/" build/android/build.gradle + sed -i -re "s/\"versionCode\", [0-9]+/\"versionCode\", $NEW_ANDROID_VERSION_CODE/" build/android/build.gradle sed -i '/\ Date: Wed, 8 Jul 2020 23:37:14 +0200 Subject: [PATCH 410/424] Fix ContentDB menu icons not appearing on Windows --- builtin/mainmenu/dlg_contentstore.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/builtin/mainmenu/dlg_contentstore.lua b/builtin/mainmenu/dlg_contentstore.lua index b5c330f8f..01c42be0b 100644 --- a/builtin/mainmenu/dlg_contentstore.lua +++ b/builtin/mainmenu/dlg_contentstore.lua @@ -333,12 +333,12 @@ function store.get_formspec(dlgdata) "button[0.375,0;4,0.8;back;", fgettext("Back to Main Menu"), "]", "container[", W - 0.375 - 0.8*4 - 2, ",0]", - "image_button[0,0;0.8,0.8;", defaulttexturedir, "start_icon.png;pstart;]", - "image_button[0.8,0;0.8,0.8;", defaulttexturedir, "prev_icon.png;pback;]", + "image_button[0,0;0.8,0.8;", core.formspec_escape(defaulttexturedir), "start_icon.png;pstart;]", + "image_button[0.8,0;0.8,0.8;", core.formspec_escape(defaulttexturedir), "prev_icon.png;pback;]", "style[pagenum;border=false]", "button[1.6,0;2,0.8;pagenum;", tonumber(cur_page), " / ", tonumber(dlgdata.pagemax), "]", - "image_button[3.6,0;0.8,0.8;", defaulttexturedir, "next_icon.png;pnext;]", - "image_button[4.4,0;0.8,0.8;", defaulttexturedir, "end_icon.png;pend;]", + "image_button[3.6,0;0.8,0.8;", core.formspec_escape(defaulttexturedir), "next_icon.png;pnext;]", + "image_button[4.4,0;0.8,0.8;", core.formspec_escape(defaulttexturedir), "end_icon.png;pend;]", "container_end[]", "container_end[]", From 70df3d54f37c280f7afe60f6e964b8406577f39f Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 9 Jul 2020 22:01:46 +0200 Subject: [PATCH 411/424] Quick workaround for crashing destructor on Mingw32 closes #10137 --- src/script/common/c_converter.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/script/common/c_converter.cpp b/src/script/common/c_converter.cpp index de0cdfbf4..eb6ab5331 100644 --- a/src/script/common/c_converter.cpp +++ b/src/script/common/c_converter.cpp @@ -457,9 +457,17 @@ size_t read_stringlist(lua_State *L, int index, std::vector *result Table field getters */ +#if defined(__MINGW32__) && !defined(__MINGW64__) +/* MinGW 32-bit somehow crashes in the std::set destructor when this + * variable is thread-local, so just don't do that. */ +static std::set warned_msgs; +#endif + bool check_field_or_nil(lua_State *L, int index, int type, const char *fieldname) { - static thread_local std::set warned_msgs; +#if !defined(__MINGW32__) || defined(__MINGW64__) + thread_local std::set warned_msgs; +#endif int t = lua_type(L, index); if (t == LUA_TNIL) From 057f0b82c23d5ad4efe044fe0f0d8753eb3a8bcf Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 9 Jul 2020 22:04:20 +0200 Subject: [PATCH 412/424] Bump version to 5.3.0 --- CMakeLists.txt | 2 +- build/android/build.gradle | 2 +- misc/net.minetest.minetest.appdata.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a5f644652..8d33a2a7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ set(VERSION_PATCH 0) set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string") # Change to false for releases -set(DEVELOPMENT_BUILD TRUE) +set(DEVELOPMENT_BUILD FALSE) set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") if(VERSION_EXTRA) diff --git a/build/android/build.gradle b/build/android/build.gradle index 6e67030ba..8707b563c 100644 --- a/build/android/build.gradle +++ b/build/android/build.gradle @@ -4,7 +4,7 @@ project.ext.set("versionMajor", 5) // Version Major project.ext.set("versionMinor", 3) // Version Minor project.ext.set("versionPatch", 0) // Version Patch project.ext.set("versionExtra", "-dev") // Version Extra -project.ext.set("versionCode", 28) // Android Version Code +project.ext.set("versionCode", 30) // Android Version Code // NOTE: +2 after each release! // +1 for ARM and +1 for ARM64 APK's, because // each APK must have a larger `versionCode` than the previous diff --git a/misc/net.minetest.minetest.appdata.xml b/misc/net.minetest.minetest.appdata.xml index 6239c7115..c177c3713 100644 --- a/misc/net.minetest.minetest.appdata.xml +++ b/misc/net.minetest.minetest.appdata.xml @@ -62,6 +62,6 @@ minetest sfan5@live.de - + From 2384c10e104fd0c945f3677130e7d25c0a841482 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 9 Jul 2020 22:04:22 +0200 Subject: [PATCH 413/424] Continue with 5.4.0-dev --- CMakeLists.txt | 4 ++-- doc/client_lua_api.txt | 2 +- doc/menu_lua_api.txt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d33a2a7e..fec9709d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,12 +16,12 @@ set(CLANG_MINIMUM_VERSION "3.4") # Also remember to set PROTOCOL_VERSION in network/networkprotocol.h when releasing set(VERSION_MAJOR 5) -set(VERSION_MINOR 3) +set(VERSION_MINOR 4) set(VERSION_PATCH 0) set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string") # Change to false for releases -set(DEVELOPMENT_BUILD FALSE) +set(DEVELOPMENT_BUILD TRUE) set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") if(VERSION_EXTRA) diff --git a/doc/client_lua_api.txt b/doc/client_lua_api.txt index c9cd8ac93..04815aaa4 100644 --- a/doc/client_lua_api.txt +++ b/doc/client_lua_api.txt @@ -1,4 +1,4 @@ -Minetest Lua Client Modding API Reference 5.3.0 +Minetest Lua Client Modding API Reference 5.4.0 ================================================ * More information at * Developer Wiki: diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt index 724e37855..76bebe08b 100644 --- a/doc/menu_lua_api.txt +++ b/doc/menu_lua_api.txt @@ -1,4 +1,4 @@ -Minetest Lua Mainmenu API Reference 5.3.0 +Minetest Lua Mainmenu API Reference 5.4.0 ========================================= Introduction From b1ff04e06da531dc52f6ee91e2967b39743033e6 Mon Sep 17 00:00:00 2001 From: v-rob Date: Fri, 10 Jul 2020 03:11:26 -0700 Subject: [PATCH 414/424] Formspec: Make dropdowns optionally return event based on index, not value (#9496) --- doc/lua_api.txt | 15 +++++++++++--- src/gui/guiFormSpecMenu.cpp | 39 +++++++++++++++++++++-------------- src/gui/guiFormSpecMenu.h | 1 + src/network/networkprotocol.h | 4 +++- 4 files changed, 39 insertions(+), 20 deletions(-) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index f2a83eca5..2ac4d6766 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -2443,7 +2443,7 @@ Elements * `color` is color specified as a `ColorString`. If the alpha component is left blank, the box will be semitransparent. -### `dropdown[,;;;,, ...,;]` +### `dropdown[,;;;,, ...,;;]` * Show a dropdown field * **Important note**: There are two different operation modes: @@ -2454,8 +2454,12 @@ Elements * Fieldname data is transferred to Lua * Items to be shown in dropdown * Index of currently selected dropdown item +* `index event` (optional, allowed parameter since formspec version 4): Specifies the + event field value for selected items. + * `true`: Selected item index + * `false` (default): Selected item value -### `dropdown[,;,;;,, ...,;]` +### `dropdown[,;,;;,, ...,;;]` * Show a dropdown field * **Important note**: This syntax for dropdowns can only be used with the @@ -2468,6 +2472,10 @@ Elements * Fieldname data is transferred to Lua * Items to be shown in dropdown * Index of currently selected dropdown item +* `index event` (optional, allowed parameter since formspec version 4): Specifies the + event field value for selected items. + * `true`: Selected item index + * `false` (default): Selected item value ### `checkbox[,;;