From 006ef5b4a5e362eed848ca26b411a8059d74b965 Mon Sep 17 00:00:00 2001 From: PilzAdam Date: Thu, 15 Oct 2015 21:32:31 +0200 Subject: [PATCH] New settings tab contain all possible settings Settings are automatically parsed from builtin/settingtypes.txt The edit dialog automatically adjust based on the type of setting --- builtin/mainmenu/tab_settings.lua | 919 +++++++++--------- builtin/settingtypes.txt | 832 ++++++++++++++++ minetest.conf.example | 1475 +++++++++++++++++------------ src/settings_translation_file.c | 445 +++++++++ util/updatepo.sh | 2 +- 5 files changed, 2621 insertions(+), 1052 deletions(-) create mode 100644 builtin/settingtypes.txt create mode 100644 src/settings_translation_file.c diff --git a/builtin/mainmenu/tab_settings.lua b/builtin/mainmenu/tab_settings.lua index d39030b1d..90d245337 100644 --- a/builtin/mainmenu/tab_settings.lua +++ b/builtin/mainmenu/tab_settings.lua @@ -1,5 +1,5 @@ --Minetest ---Copyright (C) 2013 sapier +--Copyright (C) 2015 PilzAdam -- --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,497 +15,504 @@ --with this program; if not, write to the Free Software Foundation, Inc., --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. --------------------------------------------------------------------------------- +local FILENAME = "settingtypes.txt" -local leaves_style_labels = { - fgettext("Opaque Leaves"), - fgettext("Simple Leaves"), - fgettext("Fancy Leaves") -} - -local leaves_style = { - {leaves_style_labels[1]..","..leaves_style_labels[2]..","..leaves_style_labels[3]}, - {"opaque", "simple", "fancy"}, -} - -local dd_filter_labels = { - fgettext("No Filter"), - fgettext("Bilinear Filter"), - fgettext("Trilinear Filter") -} - -local filters = { - {dd_filter_labels[1]..","..dd_filter_labels[2]..","..dd_filter_labels[3]}, - {"", "bilinear_filter", "trilinear_filter"}, -} - -local dd_mipmap_labels = { - fgettext("No Mipmap"), - fgettext("Mipmap"), - fgettext("Mipmap + Aniso. Filter") -} - -local mipmap = { - {dd_mipmap_labels[1]..","..dd_mipmap_labels[2]..","..dd_mipmap_labels[3]}, - {"", "mip_map", "anisotropic_filter"}, -} - -local function getLeavesStyleSettingIndex() - local style = core.setting_get("leaves_style") - if (style == leaves_style[2][3]) then - return 3 - elseif (style == leaves_style[2][2]) then - return 2 +local function parse_setting_line(settings, line) + -- empty lines + if line:match("^[%s]*$") then + -- clear current_comment so only comments directly above a setting are bound to it + settings.current_comment = "" + return end - return 1 -end -local dd_antialiasing_labels = { - fgettext("None"), - fgettext("2x"), - fgettext("4x"), - fgettext("8x"), -} - -local antialiasing = { - {dd_antialiasing_labels[1]..","..dd_antialiasing_labels[2]..",".. - dd_antialiasing_labels[3]..","..dd_antialiasing_labels[4]}, - {"0", "2", "4", "8"} -} - -local function getFilterSettingIndex() - if (core.setting_get(filters[2][3]) == "true") then - return 3 - end - if (core.setting_get(filters[2][3]) == "false" and core.setting_get(filters[2][2]) == "true") then - return 2 - end - return 1 -end - -local function getMipmapSettingIndex() - if (core.setting_get(mipmap[2][3]) == "true") then - return 3 - end - if (core.setting_get(mipmap[2][3]) == "false" and core.setting_get(mipmap[2][2]) == "true") then - return 2 - end - return 1 -end - -local function getAntialiasingSettingIndex() - local antialiasing_setting = core.setting_get("fsaa") - for i = 1, #(antialiasing[2]) do - if antialiasing_setting == antialiasing[2][i] then - return i - end - end - return 1 -end - -local function antialiasing_fname_to_name(fname) - for i = 1, #(dd_antialiasing_labels) do - if fname == dd_antialiasing_labels[i] then - return antialiasing[2][i] - end - end - return 0 -end - -local function dlg_confirm_reset_formspec(data) - local retval = - "size[8,3]" .. - "label[1,1;".. fgettext("Are you sure to reset your singleplayer world?") .. "]".. - "button[1,2;2.6,0.5;dlg_reset_singleplayer_confirm;".. - fgettext("Yes") .. "]" .. - "button[4,2;2.8,0.5;dlg_reset_singleplayer_cancel;".. - fgettext("No!!!") .. "]" - return retval -end - -local function dlg_confirm_reset_btnhandler(this, fields, dialogdata) - - if fields["dlg_reset_singleplayer_confirm"] ~= nil then - local worldlist = core.get_worlds() - local found_singleplayerworld = false - - for i=1,#worldlist,1 do - if worldlist[i].name == "singleplayerworld" then - found_singleplayerworld = true - gamedata.worldindex = i - end - end - - if found_singleplayerworld then - core.delete_world(gamedata.worldindex) - end - - core.create_world("singleplayerworld", 1) - - worldlist = core.get_worlds() - - found_singleplayerworld = false - - for i=1,#worldlist,1 do - if worldlist[i].name == "singleplayerworld" then - found_singleplayerworld = true - gamedata.worldindex = i - end + -- category + local category = line:match("^%[([^%]]+)%]$") + if category then + local level = 0 + local index = 1 + while category:sub(index, index) == "*" do + level = level + 1 + index = index + 1 end + category = category:sub(index, -1) + table.insert(settings, { + name = category, + level = level, + type = "category", + }) + return end - this.parent:show() - this:hide() - this:delete() - return true -end - -local function showconfirm_reset(tabview) - local new_dlg = dialog_create("reset_spworld", - dlg_confirm_reset_formspec, - dlg_confirm_reset_btnhandler, - nil) - new_dlg:set_parent(tabview) - tabview:hide() - new_dlg:show() -end - -local function gui_scale_to_scrollbar() - local current_value = tonumber(core.setting_get("gui_scaling")) - - if (current_value == nil) or current_value < 0.25 then - return 0 - end - if current_value <= 1.25 then - return ((current_value - 0.25)/ 1.0) * 700 - end - if current_value <= 6 then - return ((current_value -1.25) * 100) + 700 - end - - return 1000 -end - -local function scrollbar_to_gui_scale(value) - value = tonumber(value) - - if (value <= 700) then - return ((value / 700) * 1.0) + 0.25 - end - if (value <= 1000) then - return ((value - 700) / 100) + 1.25 - end - - return 1 -end - -local function viewing_range_min_to_scrollbar() - local current_value_min = tonumber(core.setting_get("viewing_range_nodes_min")) - - if (current_value_min == nil) then - return 0 - end - return current_value_min * 2 -end - -local function viewing_range_max_to_scrollbar() - local current_value_max = tonumber(core.setting_get("viewing_range_nodes_max")) - - if (current_value_max == nil) then - return 0 - end - return current_value_max * 2 -end - -local function scrollbar_to_viewing_range(value) - value = tonumber(value) - - if (value <= 1000) then - return value / 2 - end - return 35 -end - -local function formspec(tabview, name, tabdata) - local tab_string = - "box[0,0;3.5,4.0;#999999]" .. - "checkbox[0.25,0;cb_smooth_lighting;".. fgettext("Smooth Lighting") - .. ";".. dump(core.setting_getbool("smooth_lighting")) .. "]".. - "checkbox[0.25,0.5;cb_particles;".. fgettext("Enable Particles") .. ";" - .. dump(core.setting_getbool("enable_particles")) .. "]".. - "checkbox[0.25,1;cb_3d_clouds;".. fgettext("3D Clouds") .. ";" - .. dump(core.setting_getbool("enable_3d_clouds")) .. "]".. - "checkbox[0.25,1.5;cb_opaque_water;".. fgettext("Opaque Water") .. ";" - .. dump(core.setting_getbool("opaque_water")) .. "]".. - "checkbox[0.25,2.0;cb_connected_glass;".. fgettext("Connected Glass") .. ";" - .. dump(core.setting_getbool("connected_glass")) .. "]".. - "checkbox[0.25,2.5;cb_node_highlighting;".. fgettext("Node Highlighting") .. ";" - .. dump(core.setting_getbool("enable_node_highlighting")) .. "]".. - "dropdown[0.25,3.2;3.3;dd_leaves_style;" .. leaves_style[1][1] .. ";" - .. getLeavesStyleSettingIndex() .. "]" .. - "box[3.75,0;3.75,3.45;#999999]" .. - "label[3.85,0.1;".. fgettext("Texturing:") .. "]".. - "dropdown[3.85,0.55;3.85;dd_filters;" .. filters[1][1] .. ";" - .. getFilterSettingIndex() .. "]" .. - "dropdown[3.85,1.35;3.85;dd_mipmap;" .. mipmap[1][1] .. ";" - .. getMipmapSettingIndex() .. "]" .. - "label[3.85,2.15;".. fgettext("Antialiasing:") .. "]".. - "dropdown[3.85,2.6;3.85;dd_antialiasing;" .. antialiasing[1][1] .. ";" - .. getAntialiasingSettingIndex() .. "]" .. - "box[7.75,0;4,4;#999999]" .. - "checkbox[8,0;cb_shaders;".. fgettext("Shaders") .. ";" - .. dump(core.setting_getbool("enable_shaders")) .. "]" - - if PLATFORM ~= "Android" then - tab_string = tab_string .. - "button[8,4.75;3.75,0.5;btn_change_keys;".. fgettext("Change keys") .. "]" - else - tab_string = tab_string .. - "button[8,4.75;3.75,0.5;btn_reset_singleplayer;".. fgettext("Reset singleplayer world") .. "]" - end - tab_string = tab_string .. - "box[0,4.25;3.5,1.1;#999999]" .. - "label[0.25,4.25;" .. fgettext("GUI scale factor") .. "]" .. - "scrollbar[0.25,4.75;3,0.4;sb_gui_scaling;horizontal;" .. - gui_scale_to_scrollbar() .. "]" .. - "tooltip[sb_gui_scaling;" .. - fgettext("Scaling factor applied to menu elements: ") .. - dump(core.setting_get("gui_scaling")) .. "]" - - if PLATFORM == "Android" then - tab_string = tab_string .. - "box[3.75,3.55;3.75,1.8;#999999]" .. - "checkbox[3.9,3.45;cb_touchscreen_target;".. fgettext("Touch free target") .. ";" - .. dump(core.setting_getbool("touchtarget")) .. "]" - end - - if core.setting_get("touchscreen_threshold") ~= nil then - tab_string = tab_string .. - "label[4.3,4.1;" .. fgettext("Touchthreshold (px)") .. "]" .. - "dropdown[3.85,4.55;3.85;dd_touchthreshold;0,10,20,30,40,50;" .. - ((tonumber(core.setting_get("touchscreen_threshold"))/10)+1) .. "]" - end - - if core.setting_getbool("enable_shaders") then - tab_string = tab_string .. - "checkbox[8,0.5;cb_bumpmapping;".. fgettext("Bumpmapping") .. ";" - .. dump(core.setting_getbool("enable_bumpmapping")) .. "]".. - "checkbox[8,1.0;cb_generate_normalmaps;".. fgettext("Generate Normalmaps") .. ";" - .. dump(core.setting_getbool("generate_normalmaps")) .. "]".. - "checkbox[8,1.5;cb_parallax;".. fgettext("Parallax Occlusion") .. ";" - .. dump(core.setting_getbool("enable_parallax_occlusion")) .. "]".. - "checkbox[8,2.0;cb_waving_water;".. fgettext("Waving Water") .. ";" - .. dump(core.setting_getbool("enable_waving_water")) .. "]".. - "checkbox[8,2.5;cb_waving_leaves;".. fgettext("Waving Leaves") .. ";" - .. dump(core.setting_getbool("enable_waving_leaves")) .. "]".. - "checkbox[8,3.0;cb_waving_plants;".. fgettext("Waving Plants") .. ";" - .. dump(core.setting_getbool("enable_waving_plants")) .. "]" - else - tab_string = tab_string .. - "textlist[8.33,0.7;4,1;;#888888" .. fgettext("Bumpmapping") .. ";0;true]" .. - "textlist[8.33,1.2;4,1;;#888888" .. fgettext("Generate Normalmaps") .. ";0;true]" .. - "textlist[8.33,1.7;4,1;;#888888" .. fgettext("Parallax Occlusion") .. ";0;true]" .. - "textlist[8.33,2.2;4,1;;#888888" .. fgettext("Waving Water") .. ";0;true]" .. - "textlist[8.33,2.7;4,1;;#888888" .. fgettext("Waving Leaves") .. ";0;true]" .. - "textlist[8.33,3.2;4,1;;#888888" .. fgettext("Waving Plants") .. ";0;true]" - end - - local get_vrange_min = core.setting_get("viewing_range_nodes_min") - local get_vrange_max = core.setting_get("viewing_range_nodes_max") - - if core.setting_getbool("viewing_range_auto") then - tab_string = tab_string .. - "box[3.75,3.5;3.75,2;#999999]" .. - "label[3.85,3.5;" .. fgettext("Viewing Range :") .. "]" .. - "label[3.85,4;" .. fgettext("Min.") .. "]" .. - "scrollbar[4.65,4.05;2.75,0.4;sb_viewing_range_min;horizontal;" .. - viewing_range_min_to_scrollbar() .. "]" .. - "tooltip[sb_viewing_range_min;" .. fgettext("Minimal Viewing Range: $1 nodes", - get_vrange_min) .. "]" .. - "checkbox[3.85,4.8;cb_vrange_auto_adjust;" .. fgettext("Auto-adjust") .. ";" .. - dump(core.setting_getbool("viewing_range_auto")) .. "]".. - "label[3.85,4.5;" .. fgettext("Max.") .. "]" .. - "scrollbar[4.65,4.55;2.75,0.4;sb_viewing_range_max;horizontal;" .. - viewing_range_max_to_scrollbar() .. "]" .. - "tooltip[sb_viewing_range_max;" .. fgettext("Maximal Viewing Range: $1 nodes", - get_vrange_max) .. "]" - - if (get_vrange_min == nil and get_vrange_min > get_vrange_max) then - core.setting_set("viewing_range_nodes_min", get_vrange_max) - end - elseif (core.setting_getbool("viewing_range_auto") == nil or - core.setting_getbool("viewing_range_auto") == false) then - tab_string = tab_string .. - "box[3.75,3.5;3.75,1.5;#999999]" .. - "label[3.85,3.5;" .. fgettext("Viewing Range :") .. "]" .. - "label[3.85,4;" .. fgettext("Fixed") .. "]" .. - "scrollbar[4.65,4.05;2.75,0.4;sb_viewing_range_fixed;horizontal;" .. - viewing_range_min_to_scrollbar() .. "]" .. - "tooltip[sb_viewing_range_fixed;" .. fgettext("Fixed Viewing Range: $1 nodes", - get_vrange_min) .. "]" .. - "checkbox[3.85,4.3;cb_vrange_auto_adjust;" .. fgettext("Auto-adjust") .. ";" .. - dump(core.setting_getbool("viewing_range_auto")) .. "]" - end - - return tab_string -end - --------------------------------------------------------------------------------- -local function handle_settings_buttons(this, fields, tabname, tabdata) - if fields["cb_smooth_lighting"] then - core.setting_set("smooth_lighting", fields["cb_smooth_lighting"]) - return true - end - if fields["cb_particles"] then - core.setting_set("enable_particles", fields["cb_particles"]) - return true - end - if fields["cb_3d_clouds"] then - core.setting_set("enable_3d_clouds", fields["cb_3d_clouds"]) - return true - end - if fields["cb_opaque_water"] then - core.setting_set("opaque_water", fields["cb_opaque_water"]) - return true - end - if fields["cb_connected_glass"] then - core.setting_set("connected_glass", fields["cb_connected_glass"]) - return true - end - if fields["cb_node_highlighting"] then - core.setting_set("enable_node_highlighting", fields["cb_node_highlighting"]) - return true - end - if fields["cb_vrange_auto_adjust"] then - core.setting_set("viewing_range_auto", fields["cb_vrange_auto_adjust"]) - return true - end - if fields["cb_shaders"] then - if (core.setting_get("video_driver") == "direct3d8" - or core.setting_get("video_driver") == "direct3d9") then - core.setting_set("enable_shaders", "false") - gamedata.errormessage = fgettext("To enable shaders the OpenGL driver needs to be used.") + -- comment + local comment = line:match("^#[%s]*(.*)$") + if comment then + if settings.current_comment == "" then + settings.current_comment = comment else - core.setting_set("enable_shaders", fields["cb_shaders"]) + settings.current_comment = settings.current_comment .. "\n" .. comment end - return true + return end - if fields["cb_bumpmapping"] then - core.setting_set("enable_bumpmapping", fields["cb_bumpmapping"]) + + -- settings + local first_part, name, readable_name, setting_type = + line:match("^(([%w%._-]+)[%s]+%(([^%)]*)%)[%s]+([%w_]+)[%s]*)") + + if first_part then + if readable_name == "" then + readable_name = nil + end + local remaining_line = line:sub(first_part:len() + 1) + + if setting_type == "int" then + local default, min, max = remaining_line:match("^([%d]+)[%s]*([%d]*)[%s]*([%d]*)$") + if default and tonumber(default) then + if min == "" then + min = nil + end + if max == "" then + max = nil + end + table.insert(settings, { + name = name, + readable_name = readable_name, + type = "int", + default = default, + min = min, + max = max, + comment = settings.current_comment, + }) + else + core.log("error", "Found invalid int in " .. FILENAME .. ": " .. line) + end + + elseif setting_type == "string" or setting_type == "flags" or setting_type == "noise_params" then + local default = remaining_line:match("^[%s]*(.*)$") + if default then + table.insert(settings, { + name = name, + readable_name = readable_name, + type = setting_type, + default = default, + comment = settings.current_comment, + }) + else + core.log("error", "Found invalid string in " .. FILENAME .. ": " .. line) + end + + elseif setting_type == "bool" then + if remaining_line == "false" or remaining_line == "true" then + table.insert(settings, { + name = name, + readable_name = readable_name, + type = "bool", + default = remaining_line, + comment = settings.current_comment, + }) + else + core.log("error", "Found invalid bool in " .. FILENAME .. ": " .. line) + end + + elseif setting_type == "float" then + local default, min, max + = remaining_line:match("^([%d%.]+)[%s]*([%d%.]*)[%s]*([%d%.]*)$") + if default and tonumber(default) then + if min == "" then + min = nil + end + if max == "" then + max = nil + end + table.insert(settings, { + name = name, + readable_name = readable_name, + type = "float", + default = default, + min = min, + max = max, + comment = settings.current_comment, + }) + else + core.log("error", "Found invalid float in " .. FILENAME .. ": " .. line) + end + + elseif setting_type == "enum" then + local default, values = remaining_line:match("^([^%s]+)[%s]+(.+)$") + if default and values ~= "" then + table.insert(settings, { + name = name, + readable_name = readable_name, + type = "enum", + default = default, + values = values:split(","), + comment = settings.current_comment, + }) + else + core.log("error", "Found invalid enum in " .. FILENAME .. ": " .. line) + end + + elseif setting_type == "path" then + local default = remaining_line:match("^[%s]*(.*)$") + if default then + table.insert(settings, { + name = name, + readable_name = readable_name, + type = "path", + default = default, + comment = settings.current_comment, + }) + else + core.log("error", "Found invalid path in " .. FILENAME .. ": " .. line) + end + + elseif setting_type == "key" then + --ignore keys, since we have a special dialog for them + + -- TODO: flags, noise_params (, struct) + + else + core.log("error", "Found setting with invalid setting type in " .. FILENAME .. ": " .. line) + end + else + core.log("error", "Found invalid line in " .. FILENAME .. ": " .. line) end - if fields["cb_generate_normalmaps"] then - core.setting_set("generate_normalmaps", fields["cb_generate_normalmaps"]) + -- clear current_comment since we just used it + -- if we not just used it, then clear it since we only want comments + -- directly above the setting to be bound to it + settings.current_comment = "" +end + +local function parse_config_file() + local file = io.open(core.get_builtin_path() .. DIR_DELIM .. FILENAME, "r") + local settings = {} + if not file then + core.log("error", "Can't load " .. FILENAME) + return settings end - if fields["cb_parallax"] then - core.setting_set("enable_parallax_occlusion", fields["cb_parallax"]) - return true + + -- store this helper variable in the table so it's easier to pass to parse_setting_line() + settings.current_comment = "" + + local line = file:read("*line") + while line do + parse_setting_line(settings, line) + line = file:read("*line") end - if fields["cb_waving_water"] then - core.setting_set("enable_waving_water", fields["cb_waving_water"]) - return true + + settings.current_comment = nil + + file:close() + return settings +end + +local settings = parse_config_file() +local selected_setting = 1 + +local function get_current_value(setting) + local value = core.setting_get(setting.name) + if value == nil then + value = setting.default end - if fields["cb_waving_leaves"] then - core.setting_set("enable_waving_leaves", fields["cb_waving_leaves"]) + return value +end + +local function create_change_setting_formspec(dialogdata) + local setting = settings[selected_setting] + local formspec = "size[10,5.2,true]" .. + "button[5,4.5;2,1;btn_done;" .. fgettext("Save") .. "]" .. + "button[3,4.5;2,1;btn_cancel;" .. fgettext("Cancel") .. "]" .. + "tablecolumns[color;text]" .. + "tableoptions[background=#00000000;highlight=#00000000;border=false]" .. + "table[0,0;10,3;info;" + + if setting.readable_name then + formspec = formspec .. "#FFFF00," .. fgettext(setting.readable_name) + .. " (" .. core.formspec_escape(setting.name) .. ")," + else + formspec = formspec .. "#FFFF00," .. core.formspec_escape(setting.name) .. "," end - if fields["cb_waving_plants"] then - core.setting_set("enable_waving_plants", fields["cb_waving_plants"]) + + formspec = formspec .. ",," + + for _, comment_line in ipairs(fgettext_ne(setting.comment):split("\n")) do + formspec = formspec .. "," .. core.formspec_escape(comment_line) .. "," + end + + formspec = formspec .. ";1]" + + if setting.type == "bool" then + local selected_index + if core.is_yes(get_current_value(setting)) then + selected_index = 2 + else + selected_index = 1 + end + formspec = formspec .. "dropdown[0.5,3.5;3,1;dd_setting_value;" + .. fgettext("Disabled") .. "," .. fgettext("Enabled") .. ";" .. selected_index .. "]" + + elseif setting.type == "enum" then + local selected_index = 0 + formspec = formspec .. "dropdown[0.5,3.5;3,1;dd_setting_value;" + for index, value in ipairs(setting.values) do + -- translating value is not possible, since it's the value + -- that we set the setting to + formspec = formspec .. core.formspec_escape(value) .. "," + if get_current_value(setting) == value then + selected_index = index + end + end + if #setting.values > 0 then + formspec = formspec:sub(1, -2) -- remove trailing comma + end + formspec = formspec .. ";" .. selected_index .. "]" + + elseif setting.type == "path" then + local current_value = dialogdata.selected_path + if not current_value then + current_value = get_current_value(setting) + end + formspec = formspec .. "field[0.5,4;7.5,1;te_setting_value;;" + .. core.formspec_escape(current_value) .. "]" + .. "button[8,3.75;2,1;btn_browser_path;" .. fgettext("Browse") .. "]" + + else + -- TODO: fancy input for float, int, flags, noise_params + formspec = formspec .. "field[0.5,4;9.5,1;te_setting_value;;" + .. core.formspec_escape(get_current_value(setting)) .. "]" + end + return formspec +end + +local function handle_change_setting_buttons(this, fields) + if fields["btn_done"] or fields["key_enter"] then + local setting = settings[selected_setting] + if setting.type == "bool" then + local new_value = fields["dd_setting_value"] + -- Note: new_value is the actual (translated) value shown in the dropdown + core.setting_setbool(setting.name, new_value == fgettext("Enabled")) + + elseif setting.type == "enum" then + local new_value = fields["dd_setting_value"] + core.setting_set(setting.name, new_value) + + else + local new_value = fields["te_setting_value"] + core.setting_set(setting.name, new_value) + end + core.setting_save() + this:delete() return true end - if fields["sb_gui_scaling"] then - local event = core.explode_scrollbar_event(fields["sb_gui_scaling"]) + if fields["btn_cancel"] then + this:delete() + return true + end - if event.type == "CHG" then - local tosave = string.format("%.2f",scrollbar_to_gui_scale(event.value)) - core.setting_set("gui_scaling",tosave) + if fields["btn_browser_path"] then + core.show_file_open_dialog("dlg_browse_path", fgettext_ne("Select path")) + end + + if fields["dlg_browse_path_accepted"] then + this.data.selected_path = fields["dlg_browse_path_accepted"] + core.update_formspec(this:get_formspec()) + end + + return false +end + +local function create_settings_formspec(tabview, name, tabdata) + local formspec = "tablecolumns[color;tree;text;text]" .. + "tableoptions[background=#00000000;border=false]" .. + "table[0,0;12,4.5;list_settings;" + + local current_level = 0 + for _, entry in ipairs(settings) do + local name + if not core.setting_getbool("main_menu_technical_settings") and entry.readable_name then + name = fgettext_ne(entry.readable_name) + else + name = entry.name + end + + if entry.type == "category" then + current_level = entry.level + formspec = formspec .. "#FFFF00," .. current_level .. "," .. core.formspec_escape(name) .. ",," + elseif entry.type == "bool" then + local value = get_current_value(entry) + if core.is_yes(value) then + value = fgettext("Enabled") + else + value = fgettext("Disabled") + end + formspec = formspec .. "," .. (current_level + 1) .. "," .. core.formspec_escape(name) .. "," + .. value .. "," + else + formspec = formspec .. "," .. (current_level + 1) .. "," .. core.formspec_escape(name) .. "," + .. core.formspec_escape(get_current_value(entry)) .. "," + end + end + + if #settings > 0 then + formspec = formspec:sub(1, -2) -- remove trailing comma + end + formspec = formspec .. ";" .. selected_setting .. "]" .. + "button[4,4.5;3,1;btn_change_keys;".. fgettext("Change keys") .. "]" .. + "button[10,4.5;2,1;btn_edit;" .. fgettext("Edit") .. "]" .. + "button[7,4.5;3,1;btn_restore;" .. fgettext("Restore Default") .. "]" .. + "checkbox[0,4.5;cb_tech_settings;" .. fgettext("Show technical names") .. ";" + .. dump(core.setting_getbool("main_menu_technical_settings")) .. "]" + + return formspec +end + +local function handle_settings_buttons(this, fields, tabname, tabdata) + local list_enter = false + if fields["list_settings"] then + selected_setting = core.get_table_index("list_settings") + if core.explode_table_event(fields["list_settings"]).type == "DCL" then + -- Directly toggle booleans + local setting = settings[selected_setting] + if setting.type == "bool" then + local current_value = get_current_value(setting) + core.setting_setbool(setting.name, not core.is_yes(current_value)) + core.setting_save() + return true + else + list_enter = true + end + else return true end end - - for k, range in pairs({"min", "max", "fixed"}) do - if fields["sb_viewing_range_"..range] then - local event = core.explode_scrollbar_event(fields["sb_viewing_range_"..range]) - local tosave = string.format("%d", scrollbar_to_viewing_range(event.value)) - - if event.type == "CHG" and k < 3 then - core.setting_set("viewing_range_nodes_"..range, tosave) - return true - elseif event.type == "CHG" and k == 3 then - core.setting_set("viewing_range_nodes_min", tosave) - core.setting_set("viewing_range_nodes_max", tosave) - return true - end + + if fields["btn_edit"] or list_enter then + local setting = settings[selected_setting] + if setting.type ~= "category" then + local edit_dialog = dialog_create("change_setting", create_change_setting_formspec, + handle_change_setting_buttons) + edit_dialog:set_parent(this) + this:hide() + edit_dialog:show() end + return true + end + + if fields["btn_restore"] then + local setting = settings[selected_setting] + if setting.type ~= "category" then + core.setting_set(setting.name, setting.default) + core.setting_save() + core.update_formspec(this:get_formspec()) + end + return true end if fields["btn_change_keys"] then core.show_keys_menu() return true end - if fields["cb_touchscreen_target"] then - core.setting_set("touchtarget", fields["cb_touchscreen_target"]) - return true - end - if fields["btn_reset_singleplayer"] then - showconfirm_reset(this) + + if fields["cb_tech_settings"] then + core.setting_set("main_menu_technical_settings", fields["cb_tech_settings"]) + core.setting_save() + core.update_formspec(this:get_formspec()) return true end - --Note dropdowns have to be handled LAST! - local ddhandled = false + return false +end - if fields["dd_leaves_style"] == leaves_style_labels[1] then - core.setting_set("leaves_style", leaves_style[2][1]) - ddhandled = true - elseif fields["dd_leaves_style"] == leaves_style_labels[2] then - core.setting_set("leaves_style", leaves_style[2][2]) - ddhandled = true - elseif fields["dd_leaves_style"] == leaves_style_labels[3] then - core.setting_set("leaves_style", leaves_style[2][3]) - ddhandled = true - end - if fields["dd_filters"] == dd_filter_labels[1] then - core.setting_set("bilinear_filter", "false") - core.setting_set("trilinear_filter", "false") - ddhandled = true - elseif fields["dd_filters"] == dd_filter_labels[2] then - core.setting_set("bilinear_filter", "true") - core.setting_set("trilinear_filter", "false") - ddhandled = true - elseif fields["dd_filters"] == dd_filter_labels[3] then - core.setting_set("bilinear_filter", "false") - core.setting_set("trilinear_filter", "true") - ddhandled = true - end - if fields["dd_mipmap"] == dd_mipmap_labels[1] then - core.setting_set("mip_map", "false") - core.setting_set("anisotropic_filter", "false") - ddhandled = true - elseif fields["dd_mipmap"] == dd_mipmap_labels[2] then - core.setting_set("mip_map", "true") - core.setting_set("anisotropic_filter", "false") - ddhandled = true - elseif fields["dd_mipmap"] == dd_mipmap_labels[3] then - core.setting_set("mip_map", "true") - core.setting_set("anisotropic_filter", "true") - ddhandled = true - end - if fields["dd_antialiasing"] then - core.setting_set("fsaa", - antialiasing_fname_to_name(fields["dd_antialiasing"])) - ddhandled = true - end - if fields["dd_touchthreshold"] then - core.setting_set("touchscreen_threshold",fields["dd_touchthreshold"]) - ddhandled = true - end +local function create_minetest_conf_example() + local result = "# This file contains a list of all available settings and their default value for minetest.conf\n" .. + "\n" .. + "# By default, all the settings are commented and not functional.\n" .. + "# Uncomment settings by removing the preceding #.\n" .. + "\n" .. + "# minetest.conf is read by default from:\n" .. + "# ../minetest.conf\n" .. + "# ../../minetest.conf\n" .. + "# Any other path can be chosen by passing the path as a parameter\n" .. + "# to the program, eg. \"minetest.exe --config ../minetest.conf.example\".\n" .. + "\n" .. + "# Further documentation:\n" .. + "# http://wiki.minetest.net/\n" .. + "\n" - return ddhandled + for _, entry in ipairs(settings) do + if entry.type == "category" then + if entry.level == 0 then + result = result .. "#\n# " .. entry.name .. "\n#\n\n" + else + for i = 1, entry.level do + result = result .. "#" + end + result = result .. "# " .. entry.name .. "\n\n" + end + else + if entry.comment_line ~= "" then + for _, comment_line in ipairs(entry.comment:split("\n")) do + result = result .."# " .. comment_line .. "\n" + end + end + result = result .. "# type: " .. entry.type + if entry.min then + result = result .. " min: " .. entry.min + end + if entry.max then + result = result .. " max: " .. entry.max + end + if entry.values then + result = result .. " values: " .. table.concat(entry.values, ", ") + end + result = result .. "\n" + result = result .. "# " .. entry.name .. " = ".. entry.default .. "\n\n" + end + end + return result +end + +local function create_translation_file() + local result = "// This file is automatically generated\n" .. + "// It conatins a bunch of fake gettext calls, to tell xgettext about the strings in config files\n" .. + "// To update it, refer to the bottom of builtin/mainmenu/tab_settings.lua\n\n" .. + "fake_function() {\n" + for _, entry in ipairs(settings) do + if entry.type == "category" then + result = result .. "\tgettext(\"" .. entry.name .. "\");\n" + else + if entry.readable_name then + result = result .. "\tgettext(\"" .. entry.readable_name .. "\");\n" + end + if entry.comment ~= "" then + local comment = entry.comment:gsub("\n", "\\n") + result = result .. "\tgettext(\"" .. comment .. "\");\n" + end + end + end + result = result .. "}\n" + return result +end + +if false then + local file = io.open("minetest.conf.example", "w") + if file then + file:write(create_minetest_conf_example()) + file:close() + end +end + +if false then + local file = io.open("src/settings_translation_file.c", "w") + if file then + file:write(create_translation_file()) + file:close() + end end tab_settings = { name = "settings", caption = fgettext("Settings"), - cbf_formspec = formspec, - cbf_button_handler = handle_settings_buttons + cbf_formspec = create_settings_formspec, + cbf_button_handler = handle_settings_buttons, } diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt new file mode 100644 index 000000000..e916c03af --- /dev/null +++ b/builtin/settingtypes.txt @@ -0,0 +1,832 @@ +# This file contains all settings displayed in the settings menu. +# +# General format: +# name (Readable name) type type_args +# +# `type` can be: +# - int +# - string +# - bool +# - float +# - enum +# - path +# - key (will be ignored in GUI, since a special key change dialog exists) +# +# `type_args` can be: +# * int: +# - default +# - default min max +# * string: +# - default (if default is not specified then "" is set) +# * bool: +# - default +# * float: +# - default +# - default min max +# * enum: +# - default value1,value2,... +# * path: +# - default (if default is not specified then "" is set) +# * key: +# - default +# +# Comments directly above a setting are bound to this setting. +# All other comments are ignored. +# +# Comments and (Readable name) are handled by gettext. +# Comments should be complete sentences that describe the setting and possibly +# give the user additional useful insight. +# Sections are marked by a single line in the format: [Section Name] +# Sub-section are marked by adding * in front of the section name: [*Sub-section] +# Sub-sub-sections have two * etc. +# There shouldn't be too much settings per category; settings that shouldn't be +# modified by the "average user" should be in (sub-)categories called "Advanced". + +[Client] + +[*Controls] +# If enabled, you can place blocks at the position (feet + eye level) where you stand. +# This is helpful when working with nodeboxes in small areas. +enable_build_where_you_stand (Build inside player) bool false + +# Unobstructed movement without physics, downwards key is keymap_special1. +free_move (Free movement) bool false + +# Fast movement (keymap_special1). +fast_move (Fast movement) bool false + +# Smooths camera when moving and looking arround. +# Useful for recording videos. +cinematic (Cinematic mode) bool false + +# Smooths rotation of camera. 0 to disable. +camera_smoothing (Camera smoothing) float 0.0 0.0 0.99 + +# Smooths rotation of camera in cinematic mode. 0 to disable. +cinematic_camera_smoothing (Camera smoothing in cinematic mode) float 0.7 0.0 0.99 + +# Invert vertical mouse movement. +invert_mouse (Invert mouse) bool false + +# Mouse sensitivity multiplier. +mouse_sensitivity (Mouse sensitivity) float 0.2 + +# If enabled, keymap_special1 instead of keymap_sneak is used for climbing down and descending. +aux1_descends (Key use for climbing/descending) bool false + +# Double-tapping the jump key toggles fly mode. +doubletap_jump (Double tap jump for fly) bool false + +# If false aux1 is used to fly fast. +always_fly_fast (Always fly and fast) bool true + +# The time in seconds it takes between repeated right clicks when holding the right mouse button. +repeat_rightclick_time (Rightclick repetition interval) float 0.25 + +# Enable random user input, for testing. +random_input (Random input) bool false + +# Continuous forward movement (for testing). +continuous_forward (Continuous forward) bool false + +# Key mappings. +# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 +keymap_forward (Forward) key KEY_KEY_W +keymap_backward (Backward) key KEY_KEY_S +keymap_left (Left) key KEY_KEY_A +keymap_right (Right) key KEY_KEY_D +keymap_jump (Jump) key KEY_SPACE +keymap_sneak (Sneak) key KEY_LSHIFT +keymap_inventory (Inventory) key KEY_KEY_I +keymap_special1 (Use) key KEY_KEY_E +keymap_chat (Chat) key KEY_KEY_T +keymap_cmd (Command) key / +keyman_console (Console) key KEY_F10 +keymap_rangeselect (Range select) key KEY_KEY_R +keymap_freemove (Fly) key KEY_KEY_K +keymap_fastmove (Fast) key KEY_KEY_J +keymap_cinematic (Cinematic mode) key KEY_F8 +keymap_minimap (Minimap) key KEY_F9 +keymap_screenshot (Screenshot) key KEY_F12 +keymap_print_debug_stacks (Print stacks) key KEY_KEY_P + +[*Network] + +# Address to connect to (blank = start local server). +address (Server address) string + +# Port to connect to (UDP). +remote_port (Remote port) int 30000 + +# Save the map received by the client on disk. +enable_local_map_saving (Saving map received by server) bool false + +# Enable usage of remote media server (if provided by server). +enable_remote_media_server (Connect to external media server) bool true + +# URL to the server list displayed in the Multiplayer Tab. +serverlist_url (Serverlist URL) string servers.minetest.net + +# File in client/serverlist/ that contains your favorite servers displayed in the Multiplayer Tab. +serverlist_file (Serverlist file) string favoriteservers.txt + +[*Graphics] + +[**In-Game] + +# Minimum wanted FPS. +# The amount of rendered stuff is dynamically set according to this. +wanted_fps (Wanted FPS) int 30 + +# If FPS would go higher than this, limit it by sleeping. +# to not waste CPU power for no benefit. +fps_max (Maximum FPS) int 60 + +# Maximum FPS when game is paused. +pause_fps_max (FPS in pause menu) int 20 + +# The allowed adjustment range for the automatic rendering range adjustment. +viewing_range_nodes_max (Viewing range maximum) int 160 + +# The allowed adjustment range for the automatic rendering range adjustment. +viewing_range_nodes_min (View range minimum) int 35 + +# Vertical initial window size. +screenW (Screen width) int 800 + +# Horizontal initial window size. +screenH (Screen height) int 600 + +# Fullscreen mode. +fullscreen (Full screen) bool false + +fullscreen_bpp (Full screen BPP) int 24 + +# Experimental option, might cause visible spaces between blocks +# when set to higher number than 0. +fsaa (FSAA) enum 0 0,1,2,4,8,16 + +# Vertical screen synchronization. +vsync (V-Sync) bool false + +# Field of view in degrees. +fov (Field of view) int 72 30 160 + +# Whether to fog out the end of the visible area. +enable_fog (Fog) bool true + +# Enable a bit lower water surface; disable for speed (not quite optimized). +new_style_water (New style water) bool false + +# Leaves style: +# - Fancy -> all faces visible +# - Simple -> only outer faces, if defined special_tiles are used +# - Opaque -> disable transparency +leaves_style (Leaves style) enum fancy fancy,simple,opaque + +# Connects glass if supported by node. +connected_glass (Connect glass) bool false + +# Enable smooth lighting with simple ambient occlusion. +# Disable for speed or for different looks. +smooth_lighting (Smooth lighting) bool true + +# Adjust the gamma encoding for the light tables. Lower numbers are brighter. +# This setting is for the client only and is ignored by the server. +display_gamma (Gamma) float 1.8 1.0 3.0 + +# Path to texture directory. All textures are first searched from here. +texture_path (Texture path) path + +# Video back-end. +# Possible values: null, software, burningsvideo, direct3d8, direct3d9, opengl. +video_driver (Video driver) enum opengl null,software,burningsvideo,direct3d8,direct3d9,opengl + +# Enable/disable clouds. +enable_clouds (Clouds) bool true + +# Height on which clouds are appearing. +cloud_height (Cloud height) int 120 + +# Radius of cloud area stated in number of 64 node cloud squares. +# Values larger than 26 will start to produce sharp cutoffs at cloud area corners. +cloud_radius (Cloud radius) int 12 + +# Use 3D cloud look instead of flat. +enable_3d_clouds (3D clouds) bool true + +# Amount of view bobbing (0 = no view bobbing, 1.0 = normal, 2.0 = double). +view_bobbing_amount (View bobbing) float 1.0 + +# Amount of fall bobbing (0 = no fall bobbing, 1.0 = normal, 2.0 = double). +fall_bobbing_amount (Fall bobbing) float 0.0 + +# 3D support. +# Currently: +# - "none" = no 3d output. +# - "anaglyph" = cyan/magenta color 3d. +# - "interlaced" = odd/even line based polarisation screen support. +# - "topbottom" = split screen top/bottom. +# - "sidebyside" = split screen side by side. +3d_mode (3D mode) enum none none,anaglyph,interlaced,topbottom,sidebyside + +# In-game chat console background color (R,G,B). +console_color (Console color) string (0,0,0) + +# In-game chat console background alpha (opaqueness, between 0 and 255). +console_alpha (Console alpha) int 200 0 255 + +# Selection box border color (R,G,B). +selectionbox_color (Selection box color) string (0,0,0) + +# Width of the selectionbox's lines. +selectionbox_width (Selection box width) int 2 1 5 + +# Crosshair color (R,G,B). +crosshair_color (Crosshair color) string (255,255,255) + +# Cross alpha (opaqueness, between 0 and 255). +crosshair_alpha (Crosshair alpha) int 255 0 255 + +# Path for screenshots. +screenshot_path (Screenshot folder) path + +# Whether node texture animations should be desynchronized per mapblock. +desynchronize_mapblock_texture_animation (Desynchronize block animation) bool true + +# Maximum proportion of current window to be used for hotbar. +# Useful if there's something to be displayed right or left of hotbar. +hud_hotbar_max_width (Maximum hotbar width) float 1.0 + +# Enable selection highlighting for nodes (disables selectionbox). +enable_node_highlighting (Node highlighting) bool false + +mip_map (Mipmapping) bool false +anisotropic_filter (Anisotropic filtering) bool false +bilinear_filter (Bilinear filtering) bool false +trilinear_filter (Trilinear filtering) bool false + +# Filtered textures can blend RGB values with fully-transparent neighbors, +# which PNG optimizers usually discard, sometimes resulting in a dark or +# light edge to transparent textures. Apply this filter to clean that up +# at texture load time. +texture_clean_transparent (Clean transparent textures) bool false + +# When using bilinear/trilinear/anisotropic filters, low-resolution textures +# can be blurred, so automatically upscale them with nearest-neighbor +# interpolation to preserve crisp pixels. This sets the minimum texture size +# for the upscaled textures; higher values look sharper, but require more +# memory. Powers of 2 are recommended. Setting this higher than 1 may not +# have a visible effect unless bilinear/trilinear/anisotropic filtering is +# enabled. +texture_min_size (Minimum texture size for filters) int 64 + +# Set to true to pre-generate all item visuals. +preload_item_visuals (Preload inventory textures) bool false + +# Set to true to enable shaders. Disable them if video_driver = direct3d9/8. +enable_shaders (Shaders) bool true + +# Set to true to enable textures bumpmapping. Requires shaders enabled. +enable_bumpmapping (Bumpmapping) bool false + +# Set to true enables on the fly normalmap generation (Emboss effect). +# Requires bumpmapping enabled. +generate_normalmaps (Generate normalmaps) bool false + +# Strength of generated normalmaps. +normalmaps_strength (Normalmaps strength) float 0.6 + +# Defines sampling step of texture (0 - 2). +# A higher value results in smoother normal maps. +normalmaps_smooth (Normalmaps sampling) int 0 0 2 + +# Set to true enables parallax occlusion mapping. Requires shaders enabled. +enable_parallax_occlusion (Parralax occlusion) bool false + +# 0 = parallax occlusion with slope information (faster). +# 1 = relief mapping (slower, more accurate). +parallax_occlusion_mode (Parralax occlusion mode) int 1 0 1 + +# Strength of parallax. +3d_parallax_strength (Parralax occlusion strength) float 0.025 + +# Number of parallax occlusion iterations. +parallax_occlusion_iterations (Parralax occlusion iterations) int 4 + +# Overall scale of parallax occlusion effect. +parallax_occlusion_scale (Parralax occlusion Scale) float 0.08 + +# Overall bias of parallax occlusion effect, usually scale/2. +parallax_occlusion_bias (Parralax occlusion bias) float 0.04 + +# Set to true enables waving water. Requires shaders enabled. +enable_waving_water (Waving water) bool false + +water_wave_height (Waving water height) float 1.0 +water_wave_length (Waving water length) float 20.0 +water_wave_speed (Waving water speed) float 5.0 + +# Set to true enables waving leaves. Requires shaders enabled. +enable_waving_leaves (Waving leaves) bool false + +# Set to true enables waving plants. Requires shaders enabled. +enable_waving_plants (Waving plants) bool false + +# The strength (darkness) of node ambient-occlusion shading. +# Lower is darker, Higher is lighter. The valid range of values for this +# setting is 0.25 to 4.0 inclusive. If the value is out of range it will be +# set to the nearest valid value. +ambient_occlusion_gamma (Ambient occlusion gamma) float 2.2 0.25 4.0 + +# Enables caching of facedir rotated meshes. +enable_mesh_cache (Mesh cache) bool false + +# Enables minimap. +enable_minimap (Minimap) bool true + +# Shape of the minimap. Enabled = round, disabled = square. +minimap_shape_round (Round minimap) bool true + +# True = 256 +# False = 128 +# Useable to make minimap smoother on slower machines. +minimap_double_scan_height (Minimap scan height) bool true + +# Make fog and sky colors depend on daytime (dawn/sunset) and view direction. +directional_colored_fog (Colored fog) bool true + +[**Menus] + +# Use a cloud animation for the main menu background. +menu_clouds (Clouds in menu) bool true + +# Scale gui by a user specified value. +# Use a nearest-neighbor-anti-alias filter to scale the GUI. +# This will smooth over some of the rough edges, and blend +# pixels when scaling down, at the cost of blurring some +# edge pixels when images are scaled by non-integer sizes. +gui_scaling (GUI scaling) float 1.0 + +# When gui_scaling_filter is true, all GUI images need to be +# filtered in software, but some images are generated directly +# to hardware (e.g. render-to-texture for nodes in inventory). +gui_scaling_filter (GUI scaling filter) bool false + +# When gui_scaling_filter_txr2img is true, copy those images +# from hardware to software for scaling. When false, fall back +# to the old scaling method, for video drivers that don't +# propery support downloading textures back from hardware. +gui_scaling_filter_txr2img (GUI scaling filter txr2img) bool true + +# Delay showing tooltips, stated in milliseconds. +tooltip_show_delay (Tooltip delay) int 400 + +# Whether freetype fonts are used, requires freetype support to be compiled in. +freetype (Freetype fonts) bool true + +# Path to TrueTypeFont or bitmap. +font_path (Font path) path fonts/liberationsans.ttf + +# Font size. +font_size (Font size) int 15 + +# Font shadow offset, if 0 then shadow will not be drawn. +font_shadow (Font shadow) int 1 + +# Font shadow alpha (opaqueness, between 0 and 255). +font_shadow_alpha (Font shadow alpha) int 128 0 255 + +mono_font_path (Monospace font path) path fonts/liberationmono.ttf + +mono_font_size (Monospace font size) int 15 + +# This font will be used for certain languages. +fallback_font_path (Fallback font) path fonts/DroidSansFallbackFull.ttf +fallback_font_size (Fallback font size) int 15 +fallback_font_shadow (Fallback font shadow) int 1 +fallback_font_shadow_alpha (Fallback font shadow alpha) int 128 0 255 + +[**Advanced] + +# Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens. +screen_dpi (DPI) int 72 + +[*Sound] +enable_sound (Sound) bool true +sound_volume (Volume) float 0.7 0.0 1.0 + +[*Advanced] + +# Timeout for client to remove unused map data from memory. +client_unload_unused_data_timeout (Mapblock unload timeout) int 600 + +# Maximum number of mapblocks for client to be kept in memory. +# Set to -1 for unlimited amount. +client_mapblock_limit (Mapblock limit) int 5000 + +# Whether to show the client debug info (has the same effect as hitting F5). +show_debug (Show debug info) bool false + +[Server / Singleplayer] + +# Name of the server. +server_name (Server name) string Minetest server + +# Description of server. +server_description (Server description) string mine here + +# Domain name of server. +server_address (Server address) string game.minetest.net + +# Homepage of server. +server_url (Server URL) string http://minetest.net + +# Automaticaly report to masterserver. +server_announce (Announce server) bool false + +# Announce to this masterserver. +# If you want to announce your ipv6 address - use serverlist_url = v6.servers.minetest.net. +serverlist_url (Serverlist URL) string servers.minetest.net + +[*Network] + +# Network port to listen (UDP). +port (Server port) int 30000 + +# The network interface that the server listens on. +bind_address (Bind address) string + +# Set to true to disallow old clients from connecting. +strict_protocol_version_checking (Strict protocol checking) bool false + +# Specifies URL from which client fetches media instead of using UDP. +# $filename should be accessible from $remote_media$filename via cURL +# (obviously, remote_media should end with a slash). +# Files that are not present would be fetched the usual way. +remote_media (Remote media) string + +# Enable/disable running an IPv6 server. An IPv6 server may be restricted +# to IPv6 clients, depending on system configuration. +# Ignored if bind_address is set. +ipv6_server (IPv6 server) bool false + +[**Advanced] + +# How many blocks are flying in the wire simultaneously per client. +max_simultaneous_block_sends_per_client (Maximum simultaneously blocks send per client) int 10 + +# How many blocks are flying in the wire simultaneously per server. +max_simultaneous_block_sends_server_total (Maximum simultaneously bocks send total) int 40 + +# To reduce lag, block transfers are slowed down when a player is building something. +# This determines how long they are slowed down after placing or removing a node. +full_block_send_enable_min_time_from_building () float 2.0 + +# Maximum number of packets sent per send step, if you have a slow connection +# try reducing it, but don't reduce it to a number below double of targeted +# client number. +max_packets_per_iteration (Max. packets per iteration) int 1024 + +[*Game] + +# Default game (default when creating a new world). +default_game (Default game) string minetest + +# Message of the Day. +motd (Message of the day) string Welcome to this awesome Minetest server! + +# Maximum number of players connected simultaneously. +max_users (Maximum users) int 15 + +# World directory (everything in the world is stored here). +map-dir (Map directory) path + +# Time in seconds for item entity to live. +# Setting it to -1 disables the feature. +item_entity_ttl (Item entity TTL) int 900 + +# Set to true to enable creative mode (unlimited inventory). +creative_mode (Creative mode) bool false + +# Enable players getting damage and dying. +enable_damage (Damage) bool false + +# A chosen map seed for a new map, leave empty for random. +fixed_map_seed (Fixed map seed) string + +# Gives some stuff to players at the beginning. +give_initial_stuff (Give initial stuff) bool false + +# New users need to input this password. +default_password (Default password) string + +# Available privileges: interact, shout, teleport, settime, privs, ... +# See /privs in game for a full list on your server and mod configuration. +default_privs (Default privileges) string interact, shout + +# Whether players are shown to clients without any range limit. +# Deprecated, use the setting player_transfer_distance instead. +unlimited_player_transfer_distance (Unlimited player transfer distance) bool true + +# Defines the maximal player transfer distance in blocks (0 = unlimited). +player_transfer_distance (Player transfer distance) int 0 + +# Whether to enable players killing each other. +enable_pvp (Player versus Player) bool true + +# If this is set, players will always (re)spawn at the given position. +static_spawnpoint (Static spawnpoint) string 0, 10, 0 + +# If true, new players cannot join with an empty password. +disallow_empty_password (Disallow empty passwords) bool false + +# If true, disable cheat prevention in multiplayer. +disable_anticheat (Disable anticheat) bool false + +# If true, actions are recorded for rollback. +# This option is only read when server starts. +enable_rollback_recording (Rollback recording) bool false + +# A message to be displayed to all clients when the server shuts down. +kick_msg_shutdown (Shutdown message) string Server shutting down. + +# A message to be displayed to all clients when the server crashes. +kick_msg_crash (Crash message) string This server has experienced an internal error. You will now be disconnected. + +# Whether to ask clients to reconnect after a (Lua) crash. +# Set this to true if your server is set up to restart automatically. +ask_reconnect_on_crash (Ask to reconnect after crash) bool false + +# From how far client knows about objects. +active_object_send_range_blocks (Active object send range) int 3 + +# How large area of blocks are subject to the active block stuff. +# Active = objects are loaded and ABMs run. +active_block_range (Active block range) int 2 + +# From how far blocks are sent to clients, stated in mapblocks (16 nodes). +max_block_send_distance (Max block send distance) int 10 + +# Maximum number of forceloaded blocks. +max_forceloaded_blocks (Maximum forceloaded blocks) int 16 + +# Interval of sending time of day to clients. +time_send_interval (Time send interval) int 5 + +# Controls length of day/night cycle. +# 72=20min, 360=4min, 1=24hour, 0=day/night/whatever stays unchanged. +time_speed (Time speed) int 72 + +# Interval of saving important changes in the world, stated in seconds. +server_map_save_interval (Map save interval) float 5.3 + +[**Physics] + +movement_acceleration_default (Default acceleration) float 3 +movement_acceleration_air (Acceleration in air) float 2 +movement_acceleration_fast (Fast mode acceleration) float 10 +movement_speed_walk (Walking speed) float 4 +movement_speed_crouch (Crouch speed) float 1.35 +movement_speed_fast (Fast mode speed) float 20 +movement_speed_climb (Climbing speed) float 2 +movement_speed_jump (Jumping speed) float 6.5 +movement_speed_descend (Descending speed) float 6 +movement_liquid_fluidity (Liquid fluidity) float 1 +movement_liquid_fluidity_smooth (Liquid fluidity smoothing) float 0.5 +movement_liquid_sink (Liquid sink) float 10 +movement_gravity (Gravity) float 9.81 + +[**Advanced] + +# Handling for deprecated lua api calls: +# - "legacy" = (try to) mimic old behaviour (default for release). +# - "log" = mimic and log backtrace of deprecated call (default for debug). +# - "error" = abort on usage of deprecated call (suggested for mod developers). +deprecated_lua_api_handling (Deprecated Lua API handling) enum legacy legacy,log,error + +# Mod profiler. +mod_profiling (Mod profiling) bool false + +# Detailed mod profile data. +detailed_profiling (Detailed mod profiling) bool false + +# Profiler data print interval. 0 = disable. +profiler_print_interval (Profiling print interval) int 0 + +# Number of extra blocks that can be loaded by /clearobjects at once. +# This is a trade-off between sqlite transaction overhead and +# memory consumption (4096=100MB, as a rule of thumb). +max_clearobjects_extra_loaded_blocks (Max. clearobjects extra blocks) int 4096 + +# How much the server will wait before unloading unused MapBlocks. +# Higher value is smoother, but will use more RAM. +server_unload_unused_data_timeout (Unload unused server data) int 29 + +# Maximum number of statically stored objects in a block. +max_objects_per_block (Maxmimum objects per block) int 49 + +# http://www.sqlite.org/pragma.html#pragma_synchronous only numeric values: 0 1 2 +sqlite_synchronous (Synchronous SQLite) int 2 0 2 + +# Length of a server tick and the interval at which objects are generally updated over network. +dedicated_server_step (Dedicated server step) float 0.1 + +# Can be set to true to disable shutting down on invalid world data. +ignore_world_load_errors (Ignore world errors) bool false + +# Max liquids processed per step. +liquid_loop_max (Liquid loop max) int 100000 + +# The time (in seconds) that the liquids queue may grow beyond processing +# capacity until an attempt is made to decrease its size by dumping old queue +# items. A value of 0 disables the functionality. +liquid_queue_purge_time (Liquid queue purge time) int 0 + +# Liquid update interval in seconds. +liquid_update (Liquid update tick) float 1.0 + +[*Mapgen] + +# Name of map generator to be used when creating a new world. +# Currently supported: v5, v6, v7, singlenode. +mg_name (Mapgen name) enum v6 v5,v6,v7,singlenode + +# Water surface level of map +water_level (Water level) int 1 + +# From how far blocks are generated for clients, stated in mapblocks (16 nodes). +max_block_generate_distance (Max block generate distance) int 6 + +# Where the map generator stops. +# Please note: +# * Limited to 31000 (setting above has no effect) +# * The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks). +# * Those groups have an offset of -32, -32 nodes from the origin. +# * Only groups which are within the map_generation_limit are generated +map_generation_limit (Map generation limit) int 31000 0 31000 + +# Global map generation attributes. +# Currently supported: trees, caves, flat, dungeons, light. +# Flags that are not specified in the flag string are not modified from the default. +# To explicitly turn off a flag, prepend "no" to the beginning, e.g. nolight. +# 'trees' and 'flat' flags only have effect in mgv6. +mg_flags (Mapgen flags) flags trees, caves, dungeons, light + +[**Advanced] + +# Size of chunks to be generated, stated in mapblocks (16 nodes). +chunksize (Chunk size) int 5 + +# Dump the mapgen debug infos. +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 256 + +# 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 32 + +# 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 32 + +# Number of emerge threads to use. Make this field blank, or increase this number +# to use multiple threads. On multiprocessor systems, this will improve mapgen speed greatly +# at the cost of slightly buggy caves. +num_emerge_threads (Number of emerge threads) int 1 + +# Noise parameters for biome API temperature, humidity and biome blend. +mg_biome_np_heat (Mapgen biome heat) noise_params 50, 50, (750, 750, 750), 5349, 3, 0.5, 2.0 +mg_biome_np_heat_blend (Mapgen heat blend) noise_params 0, 1.5, (8, 8, 8), 13, 2, 1.0, 2.0 +mg_biome_np_humidity (Mapgen biome humidity) noise_params 50, 50, (750, 750, 750), 842, 3, 0.5, 2.0 +mg_biome_np_humidity_blend (Mapgen biome humidity blend) noise_params 0, 1.5, (8, 8, 8), 90003, 2, 1.0, 2.0 + +[***Mapgen v5] + +mgv5_np_filler_depth (Mapgen v5 filler depth) noise_params 0, 1, (150, 150, 150), 261, 4, 0.7, 2.0 +mgv5_np_factor (Mapgen v5 factor) noise_params 0, 1, (250, 250, 250), 920381, 3, 0.45, 2.0 +mgv5_np_height (Mapgen v5 height) noise_params 0, 10, (250, 250, 250), 84174, 4, 0.5, 2.0 +mgv5_np_cave1 (Mapgen v5 cave1) noise_params 0, 12, (50, 50, 50), 52534, 4, 0.5, 2.0 +mgv5_np_cave2 (Mapgen v5 cave2) noise_params 0, 12, (50, 50, 50), 10325, 4, 0.5, 2.0 +# TODO +#mgv5_np_ground = { +# offset = 0 +# scale = 40 +# spread = (80, 80, 80) +# seed = 983240 +# octaves = 4 +# persistence = 0.55 +# lacunarity = 2.0 +# flags = "eased" +#} + +[***Mapgen v6] + +# Map generation attributes specific to Mapgen V6. +# Currently supported: jungles, biomeblend, mudflow, snowbiomes. +# When snowbiomes are enabled jungles are enabled and the jungles flag is ignored. +mgv6_spflags (Mapgen v6 flags) flags jungles, biomeblend, mudflow, snowbiomes + +# Controls size of deserts and beaches in Mapgen V6. +# When snowbiomes are enabled 'mgv6_freq_desert' is ignored. +mgv6_freq_desert (Mapgen v6 desert frequency) float 0.45 +mgv6_freq_beach (Mapgen v6 beach frequency) float 0.15 + +# Perlin noise attributes for different map generation parameters. +# Noise parameters can be specified as a set of positional values: +# Offset, scale, (spread factors), seed offset, number of octaves, persistence, lacunarity. +# For example: +mgv6_np_terrain_base (Mapgen v6 terrain base) noise_params -4, 20, (250, 250, 250), 82341, 5, 0.6, 2.0 + +mgv6_np_terrain_base (Mapgen v6 terrain base) noise_params -4, 20, (250, 250, 250), 82341, 5, 0.6, 2.0 +mgv6_np_terrain_higher (Mapgen v6 terrain altitude) noise_params 20, 16, (500, 500, 500), 85039, 5, 0.6, 2.0 +mgv6_np_steepness (Mapgen v6 steepness) noise_params 0.85, 0.5, (125, 125, 125), -932, 5, 0.7, 2.0 +mgv6_np_height_select (Mapgen v6 height select) noise_params 0.5, 1, (250, 250, 250), 4213, 5, 0.69, 2.0 +mgv6_np_mud (Mapgen v6 mud) noise_params 4, 2, (200, 200, 200), 91013, 3, 0.55, 2.0 +mgv6_np_beach (Mapgen v6 beach) noise_params 0, 1, (250, 250, 250), 59420, 3, 0.50, 2.0 +mgv6_np_biome (Mapgen v6 biome) noise_params 0, 1, (500, 500, 500), 9130, 3, 0.50, 2.0 +mgv6_np_cave (Mapgen v6 cave) noise_params 6, 6, (250, 250, 250), 34329, 3, 0.50, 2.0 +mgv6_np_humidity (Mapgen v6 humidity) noise_params 0.5, 0.5, (500, 500, 500), 72384, 3, 0.50, 2.0 +mgv6_np_trees (Mapgen v6 trees) noise_params 0, 1, (125, 125, 125), 2, 4, 0.66, 2.0 +mgv6_np_apple_trees (Mapgen v6 apple trees) noise_params 0, 1, (100, 100, 100), 342902, 3, 0.45, 2.0 + +[***Mapgen v7] +# Map generation attributes specific to Mapgen V7. +# Currently supported: mountains, ridges. +# 'ridges' are the rivers. +mgv7_spflags (Mapgen v7 flags) flags mountains, ridges + +mgv7_np_terrain_base (Mapgen v7 terrain base) noise_params 4, 70, (600, 600, 600), 82341, 5, 0.6, 2.0 +mgv7_np_terrain_alt (Mapgen v7 terrain altitude) noise_params 4, 25, (600, 600, 600), 5934, 5, 0.6, 2.0 +mgv7_np_terrain_persist (Mapgen v7 terrain persistation) noise_params 0.6, 0.1, (2000, 2000, 2000), 539, 3, 0.6, 2.0 +mgv7_np_height_select (Mapgen v7 height select) noise_params -12, 24, (500, 500, 500), 4213, 6, 0.7, 2.0 +mgv7_np_filler_depth (Mapgen v7 filler depth) noise_params 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0 +mgv7_np_mount_height (Mapgen v7 mount height) noise_params 256, 112, (1000, 1000, 1000), 72449, 3, 0.6, 2.0 +mgv7_np_ridge_uwater (Mapgen v7 ridge water) noise_params 0, 1, (1000, 1000, 1000), 85039, 5, 0.6, 2.0 +mgv7_np_mountain (Mapgen v7 mountain) noise_params -0.6, 1, (250, 350, 250), 5333, 5, 0.63, 2.0 +mgv7_np_ridge (Mapgen v7 ridge) noise_params 0, 1, (100, 100, 100), 6467, 4, 0.75, 2.0 +mgv7_np_cave1 (Mapgen v7 cave1) noise_params 0, 12, (100, 100, 100), 52534, 4, 0.5, 2.0 +mgv7_np_cave2 (Mapgen v7 cave2) noise_params 0, 12, (100, 100, 100), 10325, 4, 0.5, 2.0 + +[*Security] + +# Prevent mods from doing insecure things like running shell commands. +secure.enable_security (Enable mod security) bool false + +# Comma-separated list of trusted mods that are allowed to access insecure +# functions even when mod security is on (via request_insecure_environment()). +secure.trusted_mods (Trusted mods) string + +[Client and Server] +# Name of the player. +# When running a server, clients connecting with this name are admins. +name (Player name) string + +# Override language. When no value is provided (default) system language is used. +# Check "locale" directory for the list of available translations. +language (Language) string + +# Level of logging to be written to debug.txt: +# - (no logging) +# - none (messages with no level) +# - error +# - warning +# - action +# - info +# - verbose +debug_log_level (Debug log level) enum action warning,action,info,verbose + +# IPv6 support. +enable_ipv6 (IPv6) bool true + +[*Advanced] +# Default timeout for cURL, stated in milliseconds. +# Only has an effect if compiled with cURL. +curl_timeout (cURL timeout) int 5000 + +# Limits number of parallel HTTP requests. Affects: +# - Media fetch if server uses remote_media setting. +# - Serverlist download and server announcement. +# - Downloads performed by main menu (e.g. mod manager). +# Only has an effect if compiled with cURL. +curl_parallel_limit (cURL parallel limit) int 8 + +# Maximum time in ms a file download (e.g. a mod download) may take +curl_file_download_timeout (cURL file download timeout) int 300000 + +# Makes DirectX work with LuaJIT. Disable if it causes troubles. +high_precision_fpu (High-precision FPU) bool true + +main_menu_script (Main menu script) string + +main_menu_game_mgr (Main menu game manager) int 0 + +main_menu_mod_mgr (Main menu mod manager) int 1 + +modstore_download_url (Modstore download URL) string https://forum.minetest.net/media/ + +modstore_listmods_url (Modstore mods list URL) string https://forum.minetest.net/mmdb/mods/ + +modstore_details_url (Modstore details URL) string https://forum.minetest.net/mmdb/mod/*/ diff --git a/minetest.conf.example b/minetest.conf.example index 15d0abbf3..caca198b9 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -1,293 +1,293 @@ -# This file is read by default from: +# This file contains a list of all available settings and their default value for minetest.conf + +# By default, all the settings are commented and not functional. +# Uncomment settings by removing the preceding #. + +# minetest.conf is read by default from: # ../minetest.conf # ../../minetest.conf # Any other path can be chosen by passing the path as a parameter # to the program, eg. "minetest.exe --config ../minetest.conf.example". -# By default, all the settings are commented and not functional. -# Uncomment settings by removing the preceding #. - # Further documentation: # http://wiki.minetest.net/ -# NOTE: This file might not be up-to-date, refer to the -# defaultsettings.cpp file for an up-to-date list: -# https://github.com/minetest/minetest/blob/master/src/defaultsettings.cpp - -# A vim command to convert most of defaultsettings.cpp to conf file format: -# :'<,'>s/\tsettings->setDefault("\([^"]*\)", "\([^"]*\)");.*/#\1 = \2/g -# Note: Some of the settings are implemented in Lua. - # -# Client and server +# Client # -# Name of player, on a server this is the main admin -#name = +## Controls -# -# Client stuff -# +# If enabled, you can place blocks at the position (feet + eye level) where you stand. +# This is helpful when working with nodeboxes in small areas. +# type: bool +# enable_build_where_you_stand = false -# Port to connect to (UDP) -#remote_port = +# Unobstructed movement without physics, downwards key is keymap_special1. +# type: bool +# free_move = false -# Key mappings. -# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 -#keymap_forward = KEY_KEY_W -#keymap_backward = KEY_KEY_S -#keymap_left = KEY_KEY_A -#keymap_right = KEY_KEY_D -#keymap_jump = KEY_SPACE -#keymap_sneak = KEY_LSHIFT -#keymap_inventory = KEY_KEY_I +# Fast movement (keymap_special1). +# type: bool +# fast_move = false -# Go down ladder / go down in fly mode / go fast in fast mode -#keymap_special1 = KEY_KEY_E -#keymap_chat = KEY_KEY_T -#keymap_cmd = / -#keyman_console = KEY_F10 -#keymap_rangeselect = KEY_KEY_R -#keymap_freemove = KEY_KEY_K -#keymap_fastmove = KEY_KEY_J -#keymap_cinematic = KEY_F8 -#keymap_screenshot = KEY_F12 +# Smooths camera when moving and looking arround. +# Useful for recording videos. +# type: bool +# cinematic = false -# If true, keymap_special1 instead of keymap_sneak is used for climbing down and descending -#aux1_descends = false +# Smooths rotation of camera. 0 to disable. +# type: float min: 0.0 max: 0.99 +# camera_smoothing = 0.0 -# Double-tapping the jump key toggles fly mode -#doubletap_jump = false +# Smooths rotation of camera in cinematic mode. 0 to disable. +# type: float min: 0.0 max: 0.99 +# cinematic_camera_smoothing = 0.7 -# If false aux1 is used to fly fast -#always_fly_fast = true +# Invert vertical mouse movement. +# type: bool +# invert_mouse = false -# Some (temporary) keys for debugging -#keymap_print_debug_stacks = KEY_KEY_P -#keymap_quicktune_prev = KEY_HOME -#keymap_quicktune_next = KEY_END -#keymap_quicktune_dec = KEY_NEXT -#keymap_quicktune_inc = KEY_PRIOR +# Mouse sensitivity multiplier. +# type: float +# mouse_sensitivity = 0.2 -# If set to true, you can place blocks at the position (feet + eye level) where you stand. -# This is helpful when working with nodeboxes. -#enable_build_where_you_stand = false +# If enabled, keymap_special1 instead of keymap_sneak is used for climbing down and descending. +# type: bool +# aux1_descends = false -# Minimum FPS. +# Double-tapping the jump key toggles fly mode. +# type: bool +# doubletap_jump = false + +# If false aux1 is used to fly fast. +# type: bool +# always_fly_fast = true + +# The time in seconds it takes between repeated right clicks when holding the right mouse button. +# type: float +# repeat_rightclick_time = 0.25 + +# Enable random user input, for testing. +# type: bool +# random_input = false + +# Continuous forward movement (for testing). +# type: bool +# continuous_forward = false + +## Network + +# Address to connect to (blank = start local server). +# type: string +# address = + +# Port to connect to (UDP). +# type: int +# remote_port = 30000 + +# Save the map received by the client on disk. +# type: bool +# enable_local_map_saving = false + +# Enable usage of remote media server (if provided by server). +# type: bool +# enable_remote_media_server = true + +# URL to the server list displayed in the Multiplayer Tab. +# type: string +# serverlist_url = servers.minetest.net + +# File in client/serverlist/ that contains your favorite servers displayed in the Multiplayer Tab. +# type: string +# serverlist_file = favoriteservers.txt + +## Graphics + +### In-Game + +# Minimum wanted FPS. # The amount of rendered stuff is dynamically set according to this. -#wanted_fps = 30 +# type: int +# wanted_fps = 30 -# If FPS would go higher than this, limit it by sleeping +# If FPS would go higher than this, limit it by sleeping. # to not waste CPU power for no benefit. -#fps_max = 60 +# type: int +# fps_max = 60 -# Maximum FPS when game is paused -#pause_fps_max = 20 +# Maximum FPS when game is paused. +# type: int +# pause_fps_max = 20 -# The allowed adjustment range for the automatic rendering range adjustment -#viewing_range_nodes_max = 160 -#viewing_range_nodes_min = 35 +# The allowed adjustment range for the automatic rendering range adjustment. +# type: int +# viewing_range_nodes_max = 160 -# Initial window size -#screenW = 800 -#screenH = 600 -#fullscreen = false -#fullscreen_bpp = 24 +# The allowed adjustment range for the automatic rendering range adjustment. +# type: int +# viewing_range_nodes_min = 35 + +# Vertical initial window size. +# type: int +# screenW = 800 + +# Horizontal initial window size. +# type: int +# screenH = 600 + +# Fullscreen mode. +# type: bool +# fullscreen = false + +# type: int +# fullscreen_bpp = 24 # Experimental option, might cause visible spaces between blocks # when set to higher number than 0. -#fsaa = 0 +# type: enum values: 0, 1, 2, 4, 8, 16 +# fsaa = 0 -# Vertical synchronization -#vsync = false +# Vertical screen synchronization. +# type: bool +# vsync = false -# Field of view in degrees -#fov = 72 +# Field of view in degrees. +# type: int min: 30 max: 160 +# fov = 72 -# Address to connect to (#blank = start local server) -#address = +# Whether to fog out the end of the visible area. +# type: bool +# enable_fog = true -# Enable random user input, for testing -#random_input = false - -# Timeout for client to remove unused map data from memory -#client_unload_unused_data_timeout = 600 - -# Maximum number of mapblocks for client to be kept in memory -# Set to -1 for unlimited amount -#client_mapblock_limit = 5000 - -# Whether to fog out the end of the visible area -#enable_fog = true - -# Whether to show the client debug info (has the same effect as hitting F5) -#show_debug = false - -# Enable a bit lower water surface; disable for speed (not quite optimized) -#new_style_water = false - -# Max liquids processed per step -#liquid_loop_max = 100000 - -# The time (in seconds) that the liquids queue may grow beyond processing -# capacity until an attempt is made to decrease its size by dumping old queue -# items. A value of 0 disables the functionality. -#liquid_queue_purge_time = 0 - -# Liquid update interval in seconds -#liquid_update = 1.0 +# Enable a bit lower water surface; disable for speed (not quite optimized). +# type: bool +# new_style_water = false # Leaves style: -# fancy - all faces visible -# simple - only outer faces, if defined special_tiles are used -# opaque - disable transparency -#leaves_style = fancy +# - Fancy -> all faces visible +# - Simple -> only outer faces, if defined special_tiles are used +# - Opaque -> disable transparency +# type: enum values: fancy, simple, opaque +# leaves_style = fancy -# Connects glass if supported by node -#connected_glass = false +# Connects glass if supported by node. +# type: bool +# connected_glass = false # Enable smooth lighting with simple ambient occlusion. # Disable for speed or for different looks. -#smooth_lighting = true +# type: bool +# smooth_lighting = true -# Adjust the gamma encoding for the light tables. Valid values are in the range -# 1.0 to 3.0 (inclusive); lower numbers are brighter. This setting is for the -# client only and is ignored by the server -#display_gamma = 1.8 +# Adjust the gamma encoding for the light tables. Lower numbers are brighter. +# This setting is for the client only and is ignored by the server. +# type: float min: 1.0 max: 3.0 +# display_gamma = 1.8 -# Path to texture directory. All textures are first searched from here. -#texture_path = +# Path to texture directory. All textures are first searched from here. +# type: path +# texture_path = # Video back-end. # Possible values: null, software, burningsvideo, direct3d8, direct3d9, opengl. -#video_driver = opengl +# type: enum values: null, software, burningsvideo, direct3d8, direct3d9, opengl +# video_driver = opengl -# Unobstructed movement without physics, downwards key is keymap_special1 -#free_move = false +# Enable/disable clouds. +# type: bool +# enable_clouds = true -# Continuous forward movement (for testing) -#continuous_forward = false - -# Enable cinematic mode -#cinematic = false - -# Camera smoothing - smooths rotation of camera. 0 is no smoothing. -# Must be equal to or greater than 0, and less than 1. -#camera_smoothing = 0.0 - -# Camera smoothing when in cinematic mode -#cinematic_camera_smoothing = 0.7 - -# Fast movement (keymap_special1) -#fast_move = false - -# Invert mouse -#invert_mouse = false - -# Enable/disable clouds -#enable_clouds = true - -# Height on which clouds are appearing -#cloud_height = 120 +# Height on which clouds are appearing. +# type: int +# cloud_height = 120 # Radius of cloud area stated in number of 64 node cloud squares. # Values larger than 26 will start to produce sharp cutoffs at cloud area corners. -#cloud_radius = 12 +# type: int +# cloud_radius = 12 -# Use 3D cloud look instead of flat -#enable_3d_clouds = true +# Use 3D cloud look instead of flat. +# type: bool +# enable_3d_clouds = true -# Use a cloud animation for the main menu background -#menu_clouds = true +# Amount of view bobbing (0 = no view bobbing, 1.0 = normal, 2.0 = double). +# type: float +# view_bobbing_amount = 1.0 -# Path for screenshots -#screenshot_path = +# Amount of fall bobbing (0 = no fall bobbing, 1.0 = normal, 2.0 = double). +# type: float +# fall_bobbing_amount = 0.0 -# Amount of view bobbing (0 = no view bobbing, 1.0 = normal, 2.0 = double) -#view_bobbing_amount = 1.0 - -# Amount of fall bobbing (0 = no fall bobbing, 1.0 = normal, 2.0 = double) -#fall_bobbing_amount = 0.0 - -# 3d support. +# 3D support. # Currently: -# "none" = no 3d output. -# "anaglyph" = cyan/magenta color 3d. -# "interlaced" = odd/even line based polarisation screen support. -# "topbottom" = split screen top/bottom. -# "sidebyside" = split screen side by side. -#3d_mode = none +# - "none" = no 3d output. +# - "anaglyph" = cyan/magenta color 3d. +# - "interlaced" = odd/even line based polarisation screen support. +# - "topbottom" = split screen top/bottom. +# - "sidebyside" = split screen side by side. +# type: enum values: none, anaglyph, interlaced, topbottom, sidebyside +# 3d_mode = none -# Strength of parallax -#3d_parallax_strength = 0.025 +# In-game chat console background color (R,G,B). +# type: string +# console_color = (0,0,0) -# In-game chat console background color (R,G,B) -#console_color = (0,0,0) +# In-game chat console background alpha (opaqueness, between 0 and 255). +# type: int min: 0 max: 255 +# console_alpha = 200 -# In-game chat console background alpha (opaqueness, between 0 and 255) -#console_alpha = 200 +# Selection box border color (R,G,B). +# type: string +# selectionbox_color = (0,0,0) -# Selection box border color (R,G,B) -#selectionbox_color = (0,0,0) +# Width of the selectionbox's lines. +# type: int min: 1 max: 5 +# selectionbox_width = 2 -# Crosshair color (R,G,B) -#crosshair_color = (255,255,255) +# Crosshair color (R,G,B). +# type: string +# crosshair_color = (255,255,255) -# Cross alpha (opaqueness, between 0 and 255) -#crosshair_alpha = 255 +# Cross alpha (opaqueness, between 0 and 255). +# type: int min: 0 max: 255 +# crosshair_alpha = 255 -# Scale gui by a user specified value -# Use a nearest-neighbor-anti-alias filter to scale the GUI. -# This will smooth over some of the rough edges, and blend -# pixels when scaling down, at the cost of blurring some -# edge pixels when images are scaled by non-integer sizes. -#gui_scaling = 1.0 +# Path for screenshots. +# type: path +# screenshot_path = -# When gui_scaling_filter is true, all GUI images need to be -# filtered in software, but some images are generated directly -# to hardware (e.g. render-to-texture for nodes in inventory). -#gui_scaling_filter = false - -# When gui_scaling_filter_txr2img is true, copy those images -# from hardware to software for scaling. When false, fall back -# to the old scaling method, for video drivers that don't -# propery support downloading textures back from hardware. -#gui_scaling_filter_txr2img = true - -# Sensitivity multiplier -#mouse_sensitivity = 0.2 - -# Sound settings -#enable_sound = true -#sound_volume = 0.7 - -# Whether node texture animations should be desynchronized per mapblock -#desynchronize_mapblock_texture_animation = true - -# Width of the selectionbox's lines (Between 1 and 5) -#selectionbox_width = 2 +# Whether node texture animations should be desynchronized per mapblock. +# type: bool +# desynchronize_mapblock_texture_animation = true # Maximum proportion of current window to be used for hotbar. # Useful if there's something to be displayed right or left of hotbar. -#hud_hotbar_max_width = 1.0 +# type: float +# hud_hotbar_max_width = 1.0 -# Save the map received by the client on disk -#enable_local_map_saving = false +# Enable selection highlighting for nodes (disables selectionbox). +# type: bool +# enable_node_highlighting = false -# Enable selection highlighting for nodes (disables selectionbox) -#enable_node_highlighting = false +# type: bool +# mip_map = false -# Texture filtering settings -#mip_map = false -#anisotropic_filter = false -#bilinear_filter = false -#trilinear_filter = false +# type: bool +# anisotropic_filter = false + +# type: bool +# bilinear_filter = false + +# type: bool +# trilinear_filter = false # Filtered textures can blend RGB values with fully-transparent neighbors, # which PNG optimizers usually discard, sometimes resulting in a dark or # light edge to transparent textures. Apply this filter to clean that up # at texture load time. -#texture_clean_transparent = false +# type: bool +# texture_clean_transparent = false # When using bilinear/trilinear/anisotropic filters, low-resolution textures # can be blurred, so automatically upscale them with nearest-neighbor @@ -296,492 +296,777 @@ # memory. Powers of 2 are recommended. Setting this higher than 1 may not # have a visible effect unless bilinear/trilinear/anisotropic filtering is # enabled. -#texture_min_size = 64 +# type: int +# texture_min_size = 64 -# Set to true to pre-generate all item visuals -#preload_item_visuals = false +# Set to true to pre-generate all item visuals. +# type: bool +# preload_item_visuals = false # Set to true to enable shaders. Disable them if video_driver = direct3d9/8. -#enable_shaders = true +# type: bool +# enable_shaders = true # Set to true to enable textures bumpmapping. Requires shaders enabled. -#enable_bumpmapping = false +# type: bool +# enable_bumpmapping = false # Set to true enables on the fly normalmap generation (Emboss effect). # Requires bumpmapping enabled. -#generate_normalmaps = false +# type: bool +# generate_normalmaps = false -# Strength of generated normalmaps -#normalmaps_strength = 0.6 +# Strength of generated normalmaps. +# type: float +# normalmaps_strength = 0.6 # Defines sampling step of texture (0 - 2). # A higher value results in smoother normal maps. -#normalmaps_smooth = 0 - -# 0 = parallax occlusion with slope information (faster) -# 1 = relief mapping (slower, more accurate) -#parallax_occlusion_mode = 1 +# type: int min: 0 max: 2 +# normalmaps_smooth = 0 # Set to true enables parallax occlusion mapping. Requires shaders enabled. -#enable_parallax_occlusion = false +# type: bool +# enable_parallax_occlusion = false -# Number of parallax occlusion iterations -#parallax_occlusion_iterations = 4 +# 0 = parallax occlusion with slope information (faster). +# 1 = relief mapping (slower, more accurate). +# type: int min: 0 max: 1 +# parallax_occlusion_mode = 1 -# Overall scale of parallax occlusion effect -#parallax_occlusion_scale = 0.08 +# Strength of parallax. +# type: float +# 3d_parallax_strength = 0.025 -# Overall bias of parallax occlusion effect, usually scale/2 -#parallax_occlusion_bias = 0.04 +# Number of parallax occlusion iterations. +# type: int +# parallax_occlusion_iterations = 4 + +# Overall scale of parallax occlusion effect. +# type: float +# parallax_occlusion_scale = 0.08 + +# Overall bias of parallax occlusion effect, usually scale/2. +# type: float +# parallax_occlusion_bias = 0.04 # Set to true enables waving water. Requires shaders enabled. -#enable_waving_water = false +# type: bool +# enable_waving_water = false -# Parameters for waving water: -#water_wave_height = 1.0 -#water_wave_length = 20.0 -#water_wave_speed = 5.0 +# type: float +# water_wave_height = 1.0 + +# type: float +# water_wave_length = 20.0 + +# type: float +# water_wave_speed = 5.0 # Set to true enables waving leaves. Requires shaders enabled. -#enable_waving_leaves = false +# type: bool +# enable_waving_leaves = false # Set to true enables waving plants. Requires shaders enabled. -#enable_waving_plants = false +# type: bool +# enable_waving_plants = false # The strength (darkness) of node ambient-occlusion shading. # Lower is darker, Higher is lighter. The valid range of values for this # setting is 0.25 to 4.0 inclusive. If the value is out of range it will be # set to the nearest valid value. -#ambient_occlusion_gamma = 2.2 +# type: float min: 0.25 max: 4.0 +# ambient_occlusion_gamma = 2.2 -# Enables caching of facedir rotated meshes -#enable_mesh_cache = false +# Enables caching of facedir rotated meshes. +# type: bool +# enable_mesh_cache = false -# Enables minimap -#enable_minimap = true +# Enables minimap. +# type: bool +# enable_minimap = true -# true - round shape, false - square -#minimap_shape_round = true +# Shape of the minimap. Enabled = round, disabled = square. +# type: bool +# minimap_shape_round = true -# true = 256, false = 128 -# useable to make minimap smoother on slower machines -#minimap_double_scan_height = true +# True = 256 +# False = 128 +# Useable to make minimap smoother on slower machines. +# type: bool +# minimap_double_scan_height = true -# The time in seconds it takes between repeated -# right clicks when holding the right mouse button. -#repeat_rightclick_time = 0.25 +# Make fog and sky colors depend on daytime (dawn/sunset) and view direction. +# type: bool +# directional_colored_fog = true -# Make fog and sky colors depend on daytime (dawn/sunset) and view direction -#directional_colored_fog = true +### Menus -# Delay showing tooltips, stated in milliseconds -#tooltip_show_delay = 400 +# Use a cloud animation for the main menu background. +# type: bool +# menu_clouds = true -# Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens -#screen_dpi = 72 +# Scale gui by a user specified value. +# Use a nearest-neighbor-anti-alias filter to scale the GUI. +# This will smooth over some of the rough edges, and blend +# pixels when scaling down, at the cost of blurring some +# edge pixels when images are scaled by non-integer sizes. +# type: float +# gui_scaling = 1.0 -# Default timeout for cURL, stated in milliseconds. -# Only has an effect if compiled with cURL. -#curl_timeout = 5000 +# When gui_scaling_filter is true, all GUI images need to be +# filtered in software, but some images are generated directly +# to hardware (e.g. render-to-texture for nodes in inventory). +# type: bool +# gui_scaling_filter = false -# Limits number of parallel HTTP requests. Affects: -# Media fetch if server uses remote_media setting. -# Serverlist download and server announcement. -# Downloads performed by main menu (e.g. mod manager). -# Only has an effect if compiled with cURL. -#curl_parallel_limit = 8 +# When gui_scaling_filter_txr2img is true, copy those images +# from hardware to software for scaling. When false, fall back +# to the old scaling method, for video drivers that don't +# propery support downloading textures back from hardware. +# type: bool +# gui_scaling_filter_txr2img = true -# Maximum time in ms a file download (e.g. a mod download) may take -#curl_file_download_timeout = 300000 +# Delay showing tooltips, stated in milliseconds. +# type: int +# tooltip_show_delay = 400 -# Enable usage of remote media server (if provided by server) -#enable_remote_media_server = true +# Whether freetype fonts are used, requires freetype support to be compiled in. +# type: bool +# freetype = true -# Url to the server list displayed in the Multiplayer Tab -#serverlist_url = servers.minetest.net +# Path to TrueTypeFont or bitmap. +# type: path +# font_path = fonts/liberationsans.ttf -# File in client/serverlist/ that contains your favorite servers displayed in the Multiplayer Tab -#serverlist_file = favoriteservers.txt +# Font size. +# type: int +# font_size = 15 -# Whether freetype fonts are used, requires freetype support to be compiled in -#freetype = true +# Font shadow offset, if 0 then shadow will not be drawn. +# type: int +# font_shadow = 1 -# Path to TrueTypeFont or bitmap -#font_path = fonts/liberationsans.ttf -#font_size = 15 +# Font shadow alpha (opaqueness, between 0 and 255). +# type: int min: 0 max: 255 +# font_shadow_alpha = 128 -# Font shadow offset, if 0 then shadow will not be drawn -#font_shadow = 1 +# type: path +# mono_font_path = fonts/liberationmono.ttf -# Font shadow alpha (opaqueness, between 0 and 255) -#font_shadow_alpha = 128 -#mono_font_path = fonts/liberationmono.ttf -#mono_font_size = 15 +# type: int +# mono_font_size = 15 -# This font will be used for certain languages -#fallback_font_path = fonts/DroidSansFallbackFull.ttf -#fallback_font_size = 15 -#fallback_font_shadow = 1 -#fallback_font_shadow_alpha = 128 +# This font will be used for certain languages. +# type: path +# fallback_font_path = fonts/DroidSansFallbackFull.ttf + +# type: int +# fallback_font_size = 15 + +# type: int +# fallback_font_shadow = 1 + +# type: int min: 0 max: 255 +# fallback_font_shadow_alpha = 128 + +### Advanced + +# Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens. +# type: int +# screen_dpi = 72 + +## Sound + +# type: bool +# enable_sound = true + +# type: float min: 0.0 max: 1.0 +# sound_volume = 0.7 + +## Advanced + +# Timeout for client to remove unused map data from memory. +# type: int +# client_unload_unused_data_timeout = 600 + +# Maximum number of mapblocks for client to be kept in memory. +# Set to -1 for unlimited amount. +# type: int +# client_mapblock_limit = 5000 + +# Whether to show the client debug info (has the same effect as hitting F5). +# type: bool +# show_debug = false # -# Server stuff +# Server / Singleplayer # -# Network port to listen (UDP) -#port = 30000 +# Name of the server. +# type: string +# server_name = Minetest server -# Bind address -#bind_address = +# Description of server. +# type: string +# server_description = mine here -# Name of server -#server_name = Minetest server +# Domain name of server. +# type: string +# server_address = game.minetest.net -# Description of server -#server_description = mine here +# Homepage of server. +# type: string +# server_url = http://minetest.net -# Domain name of server -#server_address = game.minetest.net - -# Homepage of server -#server_url = http://minetest.net - -# Automaticaly report to masterserver -#server_announce = 0 +# Automaticaly report to masterserver. +# type: bool +# server_announce = false # Announce to this masterserver. # If you want to announce your ipv6 address - use serverlist_url = v6.servers.minetest.net. -#serverlist_url = servers.minetest.net +# type: string +# serverlist_url = servers.minetest.net -# Default game (default when creating a new world) -#default_game = minetest +## Network -# World directory (everything in the world is stored here) -#map-dir = /custom/world +# Network port to listen (UDP). +# type: int +# port = 30000 -# Message of the Day -#motd = Welcome to this awesome Minetest server! +# The network interface that the server listens on. +# type: string +# bind_address = -# Maximum number of players connected simultaneously -#max_users = 15 - -# Set to true to disallow old clients from connecting -#strict_protocol_version_checking = false - -# Time in seconds for item entity to live. Default value: 900s. -# Setting it to -1 disables the feature. -#item_entity_ttl = 900 - -# Set to true to enable creative mode (unlimited inventory) -#creative_mode = false - -# Enable players getting damage and dying -#enable_damage = false - -# A chosen map seed for a new map, leave empty for random -#fixed_map_seed = - -# Gives some stuff to players at the beginning -#give_initial_stuff = false - -# New users need to input this password -#default_password = - -# Available privileges: interact, shout, teleport, settime, privs, ... -# See /privs in game for a full list on your server and mod configuration. -#default_privs = interact, shout - -# Whether players are shown to clients without any range limit. -# Deprecated, use the setting player_transfer_distance instead. -#unlimited_player_transfer_distance = true - -# Defines the maximal player transfer distance in blocks (0 = unlimited) -#player_transfer_distance = 0 - -# Whether to enable players killing each other -#enable_pvp = true - -# If this is set, players will always (re)spawn at the given position -#static_spawnpoint = 0, 10, 0 - -# If true, new players cannot join with an empty password -#disallow_empty_password = false - -# If true, disable cheat prevention in multiplayer -#disable_anticheat = false - -# If true, actions are recorded for rollback -# This option is only read when server starts -#enable_rollback_recording = false - -# Handling for deprecated lua api calls: -# "legacy" = (try to) mimic old behaviour (default for release). -# "log" = mimic and log backtrace of deprecated call (default for debug). -# "error" = abort on usage of deprecated call (suggested for mod developers). -#deprecated_lua_api_handling = legacy - -# A message to be displayed to all clients when the server shuts down -#kick_msg_shutdown = Server shutting down. - -# A message to be displayed to all clients when the server crashes -#kick_msg_crash = This server has experienced an internal error. You will now be disconnected. - -# Whether to ask clients to reconnect after a (lua) crash. -# Set this to true if your server is set up to restart automatically. -#ask_reconnect_on_crash = false - -# Mod profiler -#mod_profiling = false - -# Detailed mod profile data -#detailed_profiling = false - -# Profiler data print interval. #0 = disable. -#profiler_print_interval = 0 -#enable_mapgen_debug_info = false - -# From how far client knows about objects -#active_object_send_range_blocks = 3 - -# How large area of blocks are subject to the active block stuff. -# Active = objects are loaded and ABMs run. -#active_block_range = 2 - -# How many blocks are flying in the wire simultaneously per client -#max_simultaneous_block_sends_per_client = 10 - -# How many blocks are flying in the wire simultaneously per server -#max_simultaneous_block_sends_server_total = 40 - -# From how far blocks are sent to clients, stated in mapblocks (16 nodes) -#max_block_send_distance = 10 - -# From how far blocks are generated for clients, stated in mapblocks (16 nodes) -#max_block_generate_distance = 6 - -# Where the map generator stops. -# Please note: -# * Limited to 31000 (setting above has no effect) -# * The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks). -# * Those groups have an offset of -32, -32 nodes from the origin. -# * Only groups which are within the map_generation_limit are generated -#map_generation_limit = 31000 - -# Number of extra blocks that can be loaded by /clearobjects at once. -# This is a trade-off between sqlite transaction overhead and -# memory consumption (4096=100MB, as a rule of thumb). -#max_clearobjects_extra_loaded_blocks = 4096 - -# Maximum number of forceloaded blocks -#max_forceloaded_blocks = 16 - -# Interval of sending time of day to clients -#time_send_interval = 5 - -# Controls length of day/night cycle. -# 72=20min, 360=4min, 1=24hour, 0=day/night/whatever stays unchanged. -#time_speed = 72 - -# How much the server will wait before unloading unused MapBlocks. -# Higher value is smoother, but will use more RAM. -#server_unload_unused_data_timeout = 29 - -# Maximum number of statically stored objects in a block -#max_objects_per_block = 49 - -# Interval of saving important changes in the world, stated in seconds -#server_map_save_interval = 5.3 - -# http://www.sqlite.org/pragma.html#pragma_synchronous only numeric values: 0 1 2 -#sqlite_synchronous = 2 - -# To reduce lag, block transfers are slowed down when a player is building something. -# This determines how long they are slowed down after placing or removing a node. -#full_block_send_enable_min_time_from_building = 2.0 - -# Length of a server tick and the interval at which objects are generally updated over network -#dedicated_server_step = 0.1 - -# Can be set to true to disable shutting down on invalid world data -#ignore_world_load_errors = false +# Set to true to disallow old clients from connecting. +# type: bool +# strict_protocol_version_checking = false # Specifies URL from which client fetches media instead of using UDP. # $filename should be accessible from $remote_media$filename via cURL # (obviously, remote_media should end with a slash). # Files that are not present would be fetched the usual way. -#remote_media = - -# Level of logging to be written to debug.txt: -# (no logging), none (messages with no level), error, -# warning, action, info, or verbose. -#debug_log_level = action - -# Maximum number of blocks that can be queued for loading -#emergequeue_limit_total = 256 - -# Maximum number of blocks to be queued that are to be loaded from file. -# Set to blank for an appropriate amount to be chosen automatically. -#emergequeue_limit_diskonly = 32 - -# 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 = 32 - -# Number of emerge threads to use. Make this field blank, or increase this number -# to use multiple threads. On multiprocessor systems, this will improve mapgen speed greatly -# at the cost of slightly buggy caves. -#num_emerge_threads = 1 - -# Maximum number of packets sent per send step, if you have a slow connection -# try reducing it, but don't reduce it to a number below double of targeted -# client number. -#max_packets_per_iteration = 1024 - -# Enable/disable IPv6 -#enable_ipv6 = true +# type: string +# remote_media = # Enable/disable running an IPv6 server. An IPv6 server may be restricted # to IPv6 clients, depending on system configuration. # Ignored if bind_address is set. -#ipv6_server = false +# type: bool +# ipv6_server = false -#main_menu_script = -#main_menu_game_mgr = 0 -#main_menu_mod_mgr = 1 -#modstore_download_url = https://forum.minetest.net/media/ -#modstore_listmods_url = https://forum.minetest.net/mmdb/mods/ -#modstore_details_url = https://forum.minetest.net/mmdb/mod/*/ +### Advanced -# Makes DirectX work with LuaJIT. Disable if it causes troubles. -#high_precision_fpu = true +# How many blocks are flying in the wire simultaneously per client. +# type: int +# max_simultaneous_block_sends_per_client = 10 -# Override language. When no value is provided (default) system language is used. -# Check "locale" directory for the list of available translations. -#language = +# How many blocks are flying in the wire simultaneously per server. +# type: int +# max_simultaneous_block_sends_server_total = 40 -# -# Physics stuff -# +# To reduce lag, block transfers are slowed down when a player is building something. +# This determines how long they are slowed down after placing or removing a node. +# type: float +# full_block_send_enable_min_time_from_building = 2.0 -#movement_acceleration_default = 3 -#movement_acceleration_air = 2 -#movement_acceleration_fast = 10 -#movement_speed_walk = 4 -#movement_speed_crouch = 1.35 -#movement_speed_fast = 20 -#movement_speed_climb = 2 -#movement_speed_jump = 6.5 -#movement_speed_descend = 6 -#movement_liquid_fluidity = 1 -#movement_liquid_fluidity_smooth = 0.5 -#movement_liquid_sink = 10 -#movement_gravity = 9.81 +# Maximum number of packets sent per send step, if you have a slow connection +# try reducing it, but don't reduce it to a number below double of targeted +# client number. +# type: int +# max_packets_per_iteration = 1024 -# -# Mapgen stuff -# +## Game -# Name of map generator to be used. +# Default game (default when creating a new world). +# type: string +# default_game = minetest + +# Message of the Day. +# type: string +# motd = Welcome to this awesome Minetest server! + +# Maximum number of players connected simultaneously. +# type: int +# max_users = 15 + +# World directory (everything in the world is stored here). +# type: path +# map-dir = + +# Time in seconds for item entity to live. +# Setting it to -1 disables the feature. +# type: int +# item_entity_ttl = 900 + +# Set to true to enable creative mode (unlimited inventory). +# type: bool +# creative_mode = false + +# Enable players getting damage and dying. +# type: bool +# enable_damage = false + +# A chosen map seed for a new map, leave empty for random. +# type: string +# fixed_map_seed = + +# Gives some stuff to players at the beginning. +# type: bool +# give_initial_stuff = false + +# New users need to input this password. +# type: string +# default_password = + +# Available privileges: interact, shout, teleport, settime, privs, ... +# See /privs in game for a full list on your server and mod configuration. +# type: string +# default_privs = interact, shout + +# Whether players are shown to clients without any range limit. +# Deprecated, use the setting player_transfer_distance instead. +# type: bool +# unlimited_player_transfer_distance = true + +# Defines the maximal player transfer distance in blocks (0 = unlimited). +# type: int +# player_transfer_distance = 0 + +# Whether to enable players killing each other. +# type: bool +# enable_pvp = true + +# If this is set, players will always (re)spawn at the given position. +# type: string +# static_spawnpoint = 0, 10, 0 + +# If true, new players cannot join with an empty password. +# type: bool +# disallow_empty_password = false + +# If true, disable cheat prevention in multiplayer. +# type: bool +# disable_anticheat = false + +# If true, actions are recorded for rollback. +# This option is only read when server starts. +# type: bool +# enable_rollback_recording = false + +# A message to be displayed to all clients when the server shuts down. +# type: string +# kick_msg_shutdown = Server shutting down. + +# A message to be displayed to all clients when the server crashes. +# type: string +# kick_msg_crash = This server has experienced an internal error. You will now be disconnected. + +# Whether to ask clients to reconnect after a (Lua) crash. +# Set this to true if your server is set up to restart automatically. +# type: bool +# ask_reconnect_on_crash = false + +# From how far client knows about objects. +# type: int +# active_object_send_range_blocks = 3 + +# How large area of blocks are subject to the active block stuff. +# Active = objects are loaded and ABMs run. +# type: int +# active_block_range = 2 + +# From how far blocks are sent to clients, stated in mapblocks (16 nodes). +# type: int +# max_block_send_distance = 10 + +# Maximum number of forceloaded blocks. +# type: int +# max_forceloaded_blocks = 16 + +# Interval of sending time of day to clients. +# type: int +# time_send_interval = 5 + +# Controls length of day/night cycle. +# 72=20min, 360=4min, 1=24hour, 0=day/night/whatever stays unchanged. +# type: int +# time_speed = 72 + +# Interval of saving important changes in the world, stated in seconds. +# type: float +# server_map_save_interval = 5.3 + +### Physics + +# type: float +# movement_acceleration_default = 3 + +# type: float +# movement_acceleration_air = 2 + +# type: float +# movement_acceleration_fast = 10 + +# type: float +# movement_speed_walk = 4 + +# type: float +# movement_speed_crouch = 1.35 + +# type: float +# movement_speed_fast = 20 + +# type: float +# movement_speed_climb = 2 + +# type: float +# movement_speed_jump = 6.5 + +# type: float +# movement_speed_descend = 6 + +# type: float +# movement_liquid_fluidity = 1 + +# type: float +# movement_liquid_fluidity_smooth = 0.5 + +# type: float +# movement_liquid_sink = 10 + +# type: float +# movement_gravity = 9.81 + +### Advanced + +# Handling for deprecated lua api calls: +# - "legacy" = (try to) mimic old behaviour (default for release). +# - "log" = mimic and log backtrace of deprecated call (default for debug). +# - "error" = abort on usage of deprecated call (suggested for mod developers). +# type: enum values: legacy, log, error +# deprecated_lua_api_handling = legacy + +# Mod profiler. +# type: bool +# mod_profiling = false + +# Detailed mod profile data. +# type: bool +# detailed_profiling = false + +# Profiler data print interval. 0 = disable. +# type: int +# profiler_print_interval = 0 + +# Number of extra blocks that can be loaded by /clearobjects at once. +# This is a trade-off between sqlite transaction overhead and +# memory consumption (4096=100MB, as a rule of thumb). +# type: int +# max_clearobjects_extra_loaded_blocks = 4096 + +# How much the server will wait before unloading unused MapBlocks. +# Higher value is smoother, but will use more RAM. +# type: int +# server_unload_unused_data_timeout = 29 + +# Maximum number of statically stored objects in a block. +# type: int +# max_objects_per_block = 49 + +# http://www.sqlite.org/pragma.html#pragma_synchronous only numeric values: 0 1 2 +# type: int min: 0 max: 2 +# sqlite_synchronous = 2 + +# Length of a server tick and the interval at which objects are generally updated over network. +# type: float +# dedicated_server_step = 0.1 + +# Can be set to true to disable shutting down on invalid world data. +# type: bool +# ignore_world_load_errors = false + +# Max liquids processed per step. +# type: int +# liquid_loop_max = 100000 + +# The time (in seconds) that the liquids queue may grow beyond processing +# capacity until an attempt is made to decrease its size by dumping old queue +# items. A value of 0 disables the functionality. +# type: int +# liquid_queue_purge_time = 0 + +# Liquid update interval in seconds. +# type: float +# liquid_update = 1.0 + +## Mapgen + +# Name of map generator to be used when creating a new world. # Currently supported: v5, v6, v7, singlenode. -#mg_name = v6 +# type: enum values: v5, v6, v7, singlenode +# mg_name = v6 # Water surface level of map -#water_level = 1 +# type: int +# water_level = 1 -# Size of chunks to be generated, stated in mapblocks (16 nodes) -#chunksize = 5 +# From how far blocks are generated for clients, stated in mapblocks (16 nodes). +# type: int +# max_block_generate_distance = 6 + +# Where the map generator stops. +# Please note: +# * Limited to 31000 (setting above has no effect) +# * The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks). +# * Those groups have an offset of -32, -32 nodes from the origin. +# * Only groups which are within the map_generation_limit are generated +# type: int min: 0 max: 31000 +# map_generation_limit = 31000 # Global map generation attributes. # Currently supported: trees, caves, flat, dungeons, light. # Flags that are not specified in the flag string are not modified from the default. # To explicitly turn off a flag, prepend "no" to the beginning, e.g. nolight. # 'trees' and 'flat' flags only have effect in mgv6. -#mg_flags = trees, caves, dungeons, light +# type: flags +# mg_flags = trees, caves, dungeons, light + +### Advanced + +# Size of chunks to be generated, stated in mapblocks (16 nodes). +# type: int +# chunksize = 5 + +# Dump the mapgen debug infos. +# type: bool +# enable_mapgen_debug_info = false + +# Maximum number of blocks that can be queued for loading. +# type: int +# emergequeue_limit_total = 256 + +# 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. +# type: int +# emergequeue_limit_diskonly = 32 + +# Maximum number of blocks to be queued that are to be generated. +# Set to blank for an appropriate amount to be chosen automatically. +# type: int +# emergequeue_limit_generate = 32 + +# Number of emerge threads to use. Make this field blank, or increase this number +# to use multiple threads. On multiprocessor systems, this will improve mapgen speed greatly +# at the cost of slightly buggy caves. +# type: int +# num_emerge_threads = 1 + +# Noise parameters for biome API temperature, humidity and biome blend. +# type: noise_params +# mg_biome_np_heat = 50, 50, (750, 750, 750), 5349, 3, 0.5, 2.0 + +# type: noise_params +# mg_biome_np_heat_blend = 0, 1.5, (8, 8, 8), 13, 2, 1.0, 2.0 + +# type: noise_params +# mg_biome_np_humidity = 50, 50, (750, 750, 750), 842, 3, 0.5, 2.0 + +# type: noise_params +# mg_biome_np_humidity_blend = 0, 1.5, (8, 8, 8), 90003, 2, 1.0, 2.0 + +#### Mapgen v5 + +# type: noise_params +# mgv5_np_filler_depth = 0, 1, (150, 150, 150), 261, 4, 0.7, 2.0 + +# type: noise_params +# mgv5_np_factor = 0, 1, (250, 250, 250), 920381, 3, 0.45, 2.0 + +# type: noise_params +# mgv5_np_height = 0, 10, (250, 250, 250), 84174, 4, 0.5, 2.0 + +# type: noise_params +# mgv5_np_cave1 = 0, 12, (50, 50, 50), 52534, 4, 0.5, 2.0 + +# type: noise_params +# mgv5_np_cave2 = 0, 12, (50, 50, 50), 10325, 4, 0.5, 2.0 + +#### Mapgen v6 # Map generation attributes specific to Mapgen V6. # Currently supported: jungles, biomeblend, mudflow, snowbiomes. # When snowbiomes are enabled jungles are enabled and the jungles flag is ignored. -#mgv6_spflags = jungles, biomeblend, mudflow, snowbiomes +# type: flags +# mgv6_spflags = jungles, biomeblend, mudflow, snowbiomes -# Controls size of deserts and beaches in Mapgen V6 +# Controls size of deserts and beaches in Mapgen V6. # When snowbiomes are enabled 'mgv6_freq_desert' is ignored. -#mgv6_freq_desert = 0.45 -#mgv6_freq_beach = 0.15 +# type: float +# mgv6_freq_desert = 0.45 -# Map generation attributes specific to Mapgen V7. -# Currently supported: mountains, ridges. -# 'ridges' are the rivers. -#mgv7_spflags = mountains, ridges +# type: float +# mgv6_freq_beach = 0.15 # Perlin noise attributes for different map generation parameters. # Noise parameters can be specified as a set of positional values: # Offset, scale, (spread factors), seed offset, number of octaves, persistence, lacunarity. # For example: -#mgv6_np_terrain_base = -4, 20, (250, 250, 250), 82341, 5, 0.6, 2.0 -# Or the new group format can be used instead, for example: -#mgv6_np_terrain_base = { -# offset = -4 -# scale = 20 -# spread = (250, 250, 250) -# seed = 82341 -# octaves = 5 -# persistence = 0.6 -# lacunarity = 2.0 -# flags = "defaults" -#} -# Only the group format supports noise flags which are needed for eased noise. -# Mgv5 uses eased noise for np_ground so this is shown in group format, -# other noise parameters are shown in positional format to save space. +# type: noise_params +# mgv6_np_terrain_base = -4, 20, (250, 250, 250), 82341, 5, 0.6, 2.0 -# Noise parameters for biome API temperature, humidity and biome blend -#mg_biome_np_heat = 50, 50, (750, 750, 750), 5349, 3, 0.5, 2.0 -#mg_biome_np_heat_blend = 0, 1.5, (8, 8, 8), 13, 2, 1.0, 2.0 -#mg_biome_np_humidity = 50, 50, (750, 750, 750), 842, 3, 0.5, 2.0 -#mg_biome_np_humidity_blend = 0, 1.5, (8, 8, 8), 90003, 2, 1.0, 2.0 +# type: noise_params +# mgv6_np_terrain_base = -4, 20, (250, 250, 250), 82341, 5, 0.6, 2.0 -#mgv5_np_filler_depth = 0, 1, (150, 150, 150), 261, 4, 0.7, 2.0 -#mgv5_np_factor = 0, 1, (250, 250, 250), 920381, 3, 0.45, 2.0 -#mgv5_np_height = 0, 10, (250, 250, 250), 84174, 4, 0.5, 2.0 -#mgv5_np_cave1 = 0, 12, (50, 50, 50), 52534, 4, 0.5, 2.0 -#mgv5_np_cave2 = 0, 12, (50, 50, 50), 10325, 4, 0.5, 2.0 -#mgv5_np_ground = { -# offset = 0 -# scale = 40 -# spread = (80, 80, 80) -# seed = 983240 -# octaves = 4 -# persistence = 0.55 -# lacunarity = 2.0 -# flags = "eased" -#} +# type: noise_params +# mgv6_np_terrain_higher = 20, 16, (500, 500, 500), 85039, 5, 0.6, 2.0 -#mgv6_np_terrain_base = -4, 20, (250, 250, 250), 82341, 5, 0.6, 2.0 -#mgv6_np_terrain_higher = 20, 16, (500, 500, 500), 85039, 5, 0.6, 2.0 -#mgv6_np_steepness = 0.85, 0.5, (125, 125, 125), -932, 5, 0.7, 2.0 -#mgv6_np_height_select = 0.5, 1, (250, 250, 250), 4213, 5, 0.69, 2.0 -#mgv6_np_mud = 4, 2, (200, 200, 200), 91013, 3, 0.55, 2.0 -#mgv6_np_beach = 0, 1, (250, 250, 250), 59420, 3, 0.50, 2.0 -#mgv6_np_biome = 0, 1, (500, 500, 500), 9130, 3, 0.50, 2.0 -#mgv6_np_cave = 6, 6, (250, 250, 250), 34329, 3, 0.50, 2.0 -#mgv6_np_humidity = 0.5, 0.5, (500, 500, 500), 72384, 3, 0.50, 2.0 -#mgv6_np_trees = 0, 1, (125, 125, 125), 2, 4, 0.66, 2.0 -#mgv6_np_apple_trees = 0, 1, (100, 100, 100), 342902, 3, 0.45, 2.0 +# type: noise_params +# mgv6_np_steepness = 0.85, 0.5, (125, 125, 125), -932, 5, 0.7, 2.0 -#mgv7_np_terrain_base = 4, 70, (600, 600, 600), 82341, 5, 0.6, 2.0 -#mgv7_np_terrain_alt = 4, 25, (600, 600, 600), 5934, 5, 0.6, 2.0 -#mgv7_np_terrain_persist = 0.6, 0.1, (2000, 2000, 2000), 539, 3, 0.6, 2.0 -#mgv7_np_height_select = -12, 24, (500, 500, 500), 4213, 6, 0.7, 2.0 -#mgv7_np_filler_depth = 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0 -#mgv7_np_mount_height = 256, 112, (1000, 1000, 1000), 72449, 3, 0.6, 2.0 -#mgv7_np_ridge_uwater = 0, 1, (1000, 1000, 1000), 85039, 5, 0.6, 2.0 -#mgv7_np_mountain = -0.6, 1, (250, 350, 250), 5333, 5, 0.63, 2.0 -#mgv7_np_ridge = 0, 1, (100, 100, 100), 6467, 4, 0.75, 2.0 -#mgv7_np_cave1 = 0, 12, (100, 100, 100), 52534, 4, 0.5, 2.0 -#mgv7_np_cave2 = 0, 12, (100, 100, 100), 10325, 4, 0.5, 2.0 +# type: noise_params +# mgv6_np_height_select = 0.5, 1, (250, 250, 250), 4213, 5, 0.69, 2.0 + +# type: noise_params +# mgv6_np_mud = 4, 2, (200, 200, 200), 91013, 3, 0.55, 2.0 + +# type: noise_params +# mgv6_np_beach = 0, 1, (250, 250, 250), 59420, 3, 0.50, 2.0 + +# type: noise_params +# mgv6_np_biome = 0, 1, (500, 500, 500), 9130, 3, 0.50, 2.0 + +# type: noise_params +# mgv6_np_cave = 6, 6, (250, 250, 250), 34329, 3, 0.50, 2.0 + +# type: noise_params +# mgv6_np_humidity = 0.5, 0.5, (500, 500, 500), 72384, 3, 0.50, 2.0 + +# type: noise_params +# mgv6_np_trees = 0, 1, (125, 125, 125), 2, 4, 0.66, 2.0 + +# type: noise_params +# mgv6_np_apple_trees = 0, 1, (100, 100, 100), 342902, 3, 0.45, 2.0 + +#### Mapgen v7 + +# Map generation attributes specific to Mapgen V7. +# Currently supported: mountains, ridges. +# 'ridges' are the rivers. +# type: flags +# mgv7_spflags = mountains, ridges + +# type: noise_params +# mgv7_np_terrain_base = 4, 70, (600, 600, 600), 82341, 5, 0.6, 2.0 + +# type: noise_params +# mgv7_np_terrain_alt = 4, 25, (600, 600, 600), 5934, 5, 0.6, 2.0 + +# type: noise_params +# mgv7_np_terrain_persist = 0.6, 0.1, (2000, 2000, 2000), 539, 3, 0.6, 2.0 + +# type: noise_params +# mgv7_np_height_select = -12, 24, (500, 500, 500), 4213, 6, 0.7, 2.0 + +# type: noise_params +# mgv7_np_filler_depth = 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0 + +# type: noise_params +# mgv7_np_mount_height = 256, 112, (1000, 1000, 1000), 72449, 3, 0.6, 2.0 + +# type: noise_params +# mgv7_np_ridge_uwater = 0, 1, (1000, 1000, 1000), 85039, 5, 0.6, 2.0 + +# type: noise_params +# mgv7_np_mountain = -0.6, 1, (250, 350, 250), 5333, 5, 0.63, 2.0 + +# type: noise_params +# mgv7_np_ridge = 0, 1, (100, 100, 100), 6467, 4, 0.75, 2.0 + +# type: noise_params +# mgv7_np_cave1 = 0, 12, (100, 100, 100), 52534, 4, 0.5, 2.0 + +# type: noise_params +# mgv7_np_cave2 = 0, 12, (100, 100, 100), 10325, 4, 0.5, 2.0 + +## Security # Prevent mods from doing insecure things like running shell commands. -#secure.enable_security = false +# type: bool +# secure.enable_security = false # Comma-separated list of trusted mods that are allowed to access insecure # functions even when mod security is on (via request_insecure_environment()). -#secure.trusted_mods = +# type: string +# secure.trusted_mods = + +# +# Client and Server +# + +# Name of the player. +# When running a server, clients connecting with this name are admins. +# type: string +# name = + +# Override language. When no value is provided (default) system language is used. +# Check "locale" directory for the list of available translations. +# type: string +# language = + +# Level of logging to be written to debug.txt: +# - (no logging) +# - none (messages with no level) +# - error +# - warning +# - action +# - info +# - verbose +# type: enum values: warning, action, info, verbose +# debug_log_level = action + +# IPv6 support. +# type: bool +# enable_ipv6 = true + +## Advanced + +# Default timeout for cURL, stated in milliseconds. +# Only has an effect if compiled with cURL. +# type: int +# curl_timeout = 5000 + +# Limits number of parallel HTTP requests. Affects: +# - Media fetch if server uses remote_media setting. +# - Serverlist download and server announcement. +# - Downloads performed by main menu (e.g. mod manager). +# Only has an effect if compiled with cURL. +# type: int +# curl_parallel_limit = 8 + +# Maximum time in ms a file download (e.g. a mod download) may take +# type: int +# curl_file_download_timeout = 300000 + +# Makes DirectX work with LuaJIT. Disable if it causes troubles. +# type: bool +# high_precision_fpu = true + +# type: string +# main_menu_script = + +# type: int +# main_menu_game_mgr = 0 + +# type: int +# main_menu_mod_mgr = 1 + +# type: string +# modstore_download_url = https://forum.minetest.net/media/ + +# type: string +# modstore_listmods_url = https://forum.minetest.net/mmdb/mods/ + +# type: string +# modstore_details_url = https://forum.minetest.net/mmdb/mod/*/ + diff --git a/src/settings_translation_file.c b/src/settings_translation_file.c new file mode 100644 index 000000000..d92e845ae --- /dev/null +++ b/src/settings_translation_file.c @@ -0,0 +1,445 @@ +// This file is automatically generated +// It conatins a bunch of fake gettext calls, to tell xgettext about the strings in config files +// To update it, refer to the bottom of builtin/mainmenu/tab_settings.lua + +fake_function() { + gettext("Client"); + gettext("Controls"); + gettext("Build inside player"); + gettext("If enabled, you can place blocks at the position (feet + eye level) where you stand.\nThis is helpful when working with nodeboxes in small areas."); + gettext("Free movement"); + gettext("Unobstructed movement without physics, downwards key is keymap_special1."); + gettext("Fast movement"); + gettext("Fast movement (keymap_special1)."); + gettext("Cinematic mode"); + gettext("Smooths camera when moving and looking arround.\nUseful for recording videos."); + gettext("Camera smoothing"); + gettext("Smooths rotation of camera. 0 to disable."); + gettext("Camera smoothing in cinematic mode"); + gettext("Smooths rotation of camera in cinematic mode. 0 to disable."); + gettext("Invert mouse"); + gettext("Invert vertical mouse movement."); + gettext("Mouse sensitivity"); + gettext("Mouse sensitivity multiplier."); + gettext("Key use for climbing/descending"); + gettext("If enabled, keymap_special1 instead of keymap_sneak is used for climbing down and descending."); + gettext("Double tap jump for fly"); + gettext("Double-tapping the jump key toggles fly mode."); + gettext("Always fly and fast"); + gettext("If false aux1 is used to fly fast."); + gettext("Rightclick repetition interval"); + gettext("The time in seconds it takes between repeated right clicks when holding the right mouse button."); + gettext("Random input"); + gettext("Enable random user input, for testing."); + gettext("Continuous forward"); + gettext("Continuous forward movement (for testing)."); + gettext("Network"); + gettext("Server address"); + gettext("Address to connect to (blank = start local server)."); + gettext("Remote port"); + gettext("Port to connect to (UDP)."); + gettext("Saving map received by server"); + gettext("Save the map received by the client on disk."); + gettext("Connect to external media server"); + gettext("Enable usage of remote media server (if provided by server)."); + gettext("Serverlist URL"); + gettext("URL to the server list displayed in the Multiplayer Tab."); + gettext("Serverlist file"); + gettext("File in client/serverlist/ that contains your favorite servers displayed in the Multiplayer Tab."); + gettext("Graphics"); + gettext("In-Game"); + gettext("Wanted FPS"); + gettext("Minimum wanted FPS.\nThe amount of rendered stuff is dynamically set according to this."); + gettext("Maximum FPS"); + gettext("If FPS would go higher than this, limit it by sleeping.\nto not waste CPU power for no benefit."); + gettext("FPS in pause menu"); + gettext("Maximum FPS when game is paused."); + gettext("Viewing range maximum"); + gettext("The allowed adjustment range for the automatic rendering range adjustment."); + gettext("View range minimum"); + gettext("The allowed adjustment range for the automatic rendering range adjustment."); + gettext("Screen width"); + gettext("Vertical initial window size."); + gettext("Screen height"); + gettext("Horizontal initial window size."); + gettext("Full screen"); + gettext("Fullscreen mode."); + gettext("Full screen BPP"); + gettext("FSAA"); + gettext("Experimental option, might cause visible spaces between blocks\nwhen set to higher number than 0."); + gettext("V-Sync"); + gettext("Vertical screen synchronization."); + gettext("Field of view"); + gettext("Field of view in degrees."); + gettext("Fog"); + gettext("Whether to fog out the end of the visible area."); + gettext("New style water"); + gettext("Enable a bit lower water surface; disable for speed (not quite optimized)."); + gettext("Leaves style"); + gettext("Leaves style:\n- Fancy -> all faces visible\n- Simple -> only outer faces, if defined special_tiles are used\n- Opaque -> disable transparency"); + gettext("Connect glass"); + gettext("Connects glass if supported by node."); + gettext("Smooth lighting"); + gettext("Enable smooth lighting with simple ambient occlusion.\nDisable for speed or for different looks."); + gettext("Gamma"); + gettext("Adjust the gamma encoding for the light tables. Lower numbers are brighter.\nThis setting is for the client only and is ignored by the server."); + gettext("Texture path"); + gettext("Path to texture directory. All textures are first searched from here."); + gettext("Video driver"); + gettext("Video back-end.\nPossible values: null, software, burningsvideo, direct3d8, direct3d9, opengl."); + gettext("Clouds"); + gettext("Enable/disable clouds."); + gettext("Cloud height"); + gettext("Height on which clouds are appearing."); + gettext("Cloud radius"); + gettext("Radius of cloud area stated in number of 64 node cloud squares.\nValues larger than 26 will start to produce sharp cutoffs at cloud area corners."); + gettext("3D clouds"); + gettext("Use 3D cloud look instead of flat."); + gettext("View bobbing"); + gettext("Amount of view bobbing (0 = no view bobbing, 1.0 = normal, 2.0 = double)."); + gettext("Fall bobbing"); + gettext("Amount of fall bobbing (0 = no fall bobbing, 1.0 = normal, 2.0 = double)."); + gettext("3D mode"); + gettext("3D support.\nCurrently:\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."); + gettext("Console color"); + gettext("In-game chat console background color (R,G,B)."); + gettext("Console alpha"); + gettext("In-game chat console background alpha (opaqueness, between 0 and 255)."); + gettext("Selection box color"); + gettext("Selection box border color (R,G,B)."); + gettext("Selection box width"); + gettext("Width of the selectionbox's lines."); + gettext("Crosshair color"); + gettext("Crosshair color (R,G,B)."); + gettext("Crosshair alpha"); + gettext("Cross alpha (opaqueness, between 0 and 255)."); + gettext("Screenshot folder"); + gettext("Path for screenshots."); + gettext("Desynchronize block animation"); + gettext("Whether node texture animations should be desynchronized per mapblock."); + gettext("Maximum hotbar width"); + gettext("Maximum proportion of current window to be used for hotbar.\nUseful if there's something to be displayed right or left of hotbar."); + gettext("Node highlighting"); + gettext("Enable selection highlighting for nodes (disables selectionbox)."); + gettext("Mipmapping"); + gettext("Anisotropic filtering"); + gettext("Bilinear filtering"); + gettext("Trilinear filtering"); + gettext("Clean transparent textures"); + gettext("Filtered textures can blend RGB values with fully-transparent neighbors,\nwhich PNG optimizers usually discard, sometimes resulting in a dark or\nlight edge to transparent textures. Apply this filter to clean that up\nat texture load time."); + gettext("Minimum texture size for filters"); + gettext("When using bilinear/trilinear/anisotropic filters, low-resolution textures\ncan be blurred, so automatically upscale them with nearest-neighbor\ninterpolation to preserve crisp pixels. This sets the minimum texture size\nfor the upscaled textures; higher values look sharper, but require more\nmemory. Powers of 2 are recommended. Setting this higher than 1 may not\nhave a visible effect unless bilinear/trilinear/anisotropic filtering is\nenabled."); + gettext("Preload inventory textures"); + gettext("Set to true to pre-generate all item visuals."); + gettext("Shaders"); + gettext("Set to true to enable shaders. Disable them if video_driver = direct3d9/8."); + gettext("Bumpmapping"); + gettext("Set to true to enable textures bumpmapping. Requires shaders enabled."); + gettext("Generate normalmaps"); + gettext("Set to true enables on the fly normalmap generation (Emboss effect).\nRequires bumpmapping enabled."); + gettext("Normalmaps strength"); + gettext("Strength of generated normalmaps."); + gettext("Normalmaps sampling"); + gettext("Defines sampling step of texture (0 - 2).\nA higher value results in smoother normal maps."); + gettext("Parralax occlusion"); + gettext("Set to true enables parallax occlusion mapping. Requires shaders enabled."); + gettext("Parralax occlusion mode"); + gettext("0 = parallax occlusion with slope information (faster).\n1 = relief mapping (slower, more accurate)."); + gettext("Parralax occlusion strength"); + gettext("Strength of parallax."); + gettext("Parralax occlusion iterations"); + gettext("Number of parallax occlusion iterations."); + gettext("Parralax occlusion Scale"); + gettext("Overall scale of parallax occlusion effect."); + gettext("Parralax occlusion bias"); + gettext("Overall bias of parallax occlusion effect, usually scale/2."); + gettext("Waving water"); + gettext("Set to true enables waving water. Requires shaders enabled."); + gettext("Waving water height"); + gettext("Waving water length"); + gettext("Waving water speed"); + gettext("Waving leaves"); + gettext("Set to true enables waving leaves. Requires shaders enabled."); + gettext("Waving plants"); + gettext("Set to true enables waving plants. Requires shaders enabled."); + gettext("Ambient occlusion gamma"); + gettext("The strength (darkness) of node ambient-occlusion shading.\nLower is darker, Higher is lighter. The valid range of values for this\nsetting is 0.25 to 4.0 inclusive. If the value is out of range it will be\nset to the nearest valid value."); + gettext("Mesh cache"); + gettext("Enables caching of facedir rotated meshes."); + gettext("Minimap"); + gettext("Enables minimap."); + gettext("Round minimap"); + gettext("Shape of the minimap. Enabled = round, disabled = square."); + gettext("Minimap scan height"); + gettext("True = 256\nFalse = 128\nUseable to make minimap smoother on slower machines."); + gettext("Colored fog"); + gettext("Make fog and sky colors depend on daytime (dawn/sunset) and view direction."); + gettext("Menus"); + gettext("Clouds in menu"); + gettext("Use a cloud animation for the main menu background."); + gettext("GUI scaling"); + gettext("Scale gui by a user specified value.\nUse a nearest-neighbor-anti-alias filter to scale the GUI.\nThis will smooth over some of the rough edges, and blend\npixels when scaling down, at the cost of blurring some\nedge pixels when images are scaled by non-integer sizes."); + gettext("GUI scaling filter"); + gettext("When gui_scaling_filter is true, all GUI images need to be\nfiltered in software, but some images are generated directly\nto hardware (e.g. render-to-texture for nodes in inventory)."); + gettext("GUI scaling filter txr2img"); + gettext("When gui_scaling_filter_txr2img is true, copy those images\nfrom hardware to software for scaling. When false, fall back\nto the old scaling method, for video drivers that don't\npropery support downloading textures back from hardware."); + gettext("Tooltip delay"); + gettext("Delay showing tooltips, stated in milliseconds."); + gettext("Freetype fonts"); + gettext("Whether freetype fonts are used, requires freetype support to be compiled in."); + gettext("Font path"); + gettext("Path to TrueTypeFont or bitmap."); + gettext("Font size"); + gettext("Font size."); + gettext("Font shadow"); + gettext("Font shadow offset, if 0 then shadow will not be drawn."); + gettext("Font shadow alpha"); + gettext("Font shadow alpha (opaqueness, between 0 and 255)."); + gettext("Monospace font path"); + gettext("Monospace font size"); + gettext("Fallback font"); + gettext("This font will be used for certain languages."); + gettext("Fallback font size"); + gettext("Fallback font shadow"); + gettext("Fallback font shadow alpha"); + gettext("Advanced"); + gettext("DPI"); + gettext("Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens."); + gettext("Sound"); + gettext("Sound"); + gettext("Volume"); + gettext("Advanced"); + gettext("Mapblock unload timeout"); + gettext("Timeout for client to remove unused map data from memory."); + gettext("Mapblock limit"); + gettext("Maximum number of mapblocks for client to be kept in memory.\nSet to -1 for unlimited amount."); + gettext("Show debug info"); + gettext("Whether to show the client debug info (has the same effect as hitting F5)."); + gettext("Server / Singleplayer"); + gettext("Server name"); + gettext("Name of the server."); + gettext("Server description"); + gettext("Description of server."); + gettext("Server address"); + gettext("Domain name of server."); + gettext("Server URL"); + gettext("Homepage of server."); + gettext("Announce server"); + gettext("Automaticaly report to masterserver."); + gettext("Serverlist URL"); + gettext("Announce to this masterserver.\nIf you want to announce your ipv6 address - use serverlist_url = v6.servers.minetest.net."); + gettext("Network"); + gettext("Server port"); + gettext("Network port to listen (UDP)."); + gettext("Bind address"); + gettext("The network interface that the server listens on."); + gettext("Strict protocol checking"); + gettext("Set to true to disallow old clients from connecting."); + gettext("Remote media"); + gettext("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).\nFiles that are not present would be fetched the usual way."); + gettext("IPv6 server"); + gettext("Enable/disable running an IPv6 server. An IPv6 server may be restricted\nto IPv6 clients, depending on system configuration.\nIgnored if bind_address is set."); + gettext("Advanced"); + gettext("Maximum simultaneously blocks send per client"); + gettext("How many blocks are flying in the wire simultaneously per client."); + gettext("Maximum simultaneously bocks send total"); + gettext("How many blocks are flying in the wire simultaneously per server."); + gettext("To reduce lag, block transfers are slowed down when a player is building something.\nThis determines how long they are slowed down after placing or removing a node."); + gettext("Max. packets per iteration"); + gettext("Maximum number of packets sent per send step, if you have a slow connection\ntry reducing it, but don't reduce it to a number below double of targeted\nclient number."); + gettext("Game"); + gettext("Default game"); + gettext("Default game (default when creating a new world)."); + gettext("Message of the day"); + gettext("Message of the Day."); + gettext("Maximum users"); + gettext("Maximum number of players connected simultaneously."); + gettext("Map directory"); + gettext("World directory (everything in the world is stored here)."); + gettext("Item entity TTL"); + gettext("Time in seconds for item entity to live.\nSetting it to -1 disables the feature."); + gettext("Creative mode"); + gettext("Set to true to enable creative mode (unlimited inventory)."); + gettext("Damage"); + gettext("Enable players getting damage and dying."); + gettext("Fixed map seed"); + gettext("A chosen map seed for a new map, leave empty for random."); + gettext("Give initial stuff"); + gettext("Gives some stuff to players at the beginning."); + gettext("Default password"); + gettext("New users need to input this password."); + gettext("Default privileges"); + gettext("Available privileges: interact, shout, teleport, settime, privs, ...\nSee /privs in game for a full list on your server and mod configuration."); + gettext("Unlimited player transfer distance"); + gettext("Whether players are shown to clients without any range limit.\nDeprecated, use the setting player_transfer_distance instead."); + gettext("Player transfer distance"); + gettext("Defines the maximal player transfer distance in blocks (0 = unlimited)."); + gettext("Player versus Player"); + gettext("Whether to enable players killing each other."); + gettext("Static spawnpoint"); + gettext("If this is set, players will always (re)spawn at the given position."); + gettext("Disallow empty passwords"); + gettext("If true, new players cannot join with an empty password."); + gettext("Disable anticheat"); + gettext("If true, disable cheat prevention in multiplayer."); + gettext("Rollback recording"); + gettext("If true, actions are recorded for rollback.\nThis option is only read when server starts."); + gettext("Shutdown message"); + gettext("A message to be displayed to all clients when the server shuts down."); + gettext("Crash message"); + gettext("A message to be displayed to all clients when the server crashes."); + gettext("Ask to reconnect after crash"); + gettext("Whether to ask clients to reconnect after a (Lua) crash.\nSet this to true if your server is set up to restart automatically."); + gettext("Active object send range"); + gettext("From how far client knows about objects."); + gettext("Active block range"); + gettext("How large area of blocks are subject to the active block stuff.\nActive = objects are loaded and ABMs run."); + gettext("Max block send distance"); + gettext("From how far blocks are sent to clients, stated in mapblocks (16 nodes)."); + gettext("Maximum forceloaded blocks"); + gettext("Maximum number of forceloaded blocks."); + gettext("Time send interval"); + gettext("Interval of sending time of day to clients."); + gettext("Time speed"); + gettext("Controls length of day/night cycle.\n72=20min, 360=4min, 1=24hour, 0=day/night/whatever stays unchanged."); + gettext("Map save interval"); + gettext("Interval of saving important changes in the world, stated in seconds."); + gettext("Physics"); + gettext("Default acceleration"); + gettext("Acceleration in air"); + gettext("Fast mode acceleration"); + gettext("Walking speed"); + gettext("Crouch speed"); + gettext("Fast mode speed"); + gettext("Climbing speed"); + gettext("Jumping speed"); + gettext("Descending speed"); + gettext("Liquid fluidity"); + gettext("Liquid fluidity smoothing"); + gettext("Liquid sink"); + gettext("Gravity"); + gettext("Advanced"); + gettext("Deprecated Lua API handling"); + gettext("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)."); + gettext("Mod profiling"); + gettext("Mod profiler."); + gettext("Detailed mod profiling"); + gettext("Detailed mod profile data."); + gettext("Profiling print interval"); + gettext("Profiler data print interval. 0 = disable."); + gettext("Max. clearobjects extra blocks"); + gettext("Number of extra blocks that can be loaded by /clearobjects at once.\nThis is a trade-off between sqlite transaction overhead and\nmemory consumption (4096=100MB, as a rule of thumb)."); + gettext("Unload unused server data"); + gettext("How much the server will wait before unloading unused MapBlocks.\nHigher value is smoother, but will use more RAM."); + gettext("Maxmimum objects per block"); + gettext("Maximum number of statically stored objects in a block."); + gettext("Synchronous SQLite"); + gettext("http://www.sqlite.org/pragma.html#pragma_synchronous only numeric values: 0 1 2"); + gettext("Dedicated server step"); + gettext("Length of a server tick and the interval at which objects are generally updated over network."); + gettext("Ignore world errors"); + gettext("Can be set to true to disable shutting down on invalid world data."); + gettext("Liquid loop max"); + gettext("Max liquids processed per step."); + gettext("Liquid queue purge time"); + gettext("The time (in seconds) that the liquids queue may grow beyond processing\ncapacity until an attempt is made to decrease its size by dumping old queue\nitems. A value of 0 disables the functionality."); + gettext("Liquid update tick"); + gettext("Liquid update interval in seconds."); + gettext("Mapgen"); + gettext("Mapgen name"); + gettext("Name of map generator to be used when creating a new world.\nCurrently supported: v5, v6, v7, singlenode."); + gettext("Water level"); + gettext("Water surface level of map"); + gettext("Max block generate distance"); + gettext("From how far blocks are generated for clients, stated in mapblocks (16 nodes)."); + gettext("Map generation limit"); + gettext("Where the map generator stops.\nPlease note:\n* Limited to 31000 (setting above has no effect)\n* The map generator works in groups of 80x80x80 nodes (5x5x5 MapBlocks).\n* Those groups have an offset of -32, -32 nodes from the origin.\n* Only groups which are within the map_generation_limit are generated"); + gettext("Mapgen flags"); + gettext("Global map generation attributes.\nCurrently supported: trees, caves, flat, dungeons, light.\nFlags that are not specified in the flag string are not modified from the default.\nTo explicitly turn off a flag, prepend "no" to the beginning, e.g. nolight.\n'trees' and 'flat' flags only have effect in mgv6."); + gettext("Advanced"); + gettext("Chunk size"); + gettext("Size of chunks to be generated, stated in mapblocks (16 nodes)."); + gettext("Mapgen debug"); + gettext("Dump the mapgen debug infos."); + gettext("Absolute limit of emerge queues"); + 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("Number of emerge threads"); + gettext("Number of emerge threads to use. Make this field blank, or increase this number\nto use multiple threads. On multiprocessor systems, this will improve mapgen speed greatly\nat the cost of slightly buggy caves."); + gettext("Mapgen biome heat"); + gettext("Noise parameters for biome API temperature, humidity and biome blend."); + gettext("Mapgen heat blend"); + gettext("Mapgen biome humidity"); + gettext("Mapgen biome humidity blend"); + gettext("Mapgen v5"); + gettext("Mapgen v5 filler depth"); + gettext("Mapgen v5 factor"); + gettext("Mapgen v5 height"); + gettext("Mapgen v5 cave1"); + gettext("Mapgen v5 cave2"); + gettext("Mapgen v6"); + gettext("Mapgen v6 flags"); + gettext("Map generation attributes specific to Mapgen V6.\nCurrently supported: jungles, biomeblend, mudflow, snowbiomes.\nWhen snowbiomes are enabled jungles are enabled and the jungles flag is ignored."); + gettext("Mapgen v6 desert frequency"); + gettext("Controls size of deserts and beaches in Mapgen V6.\nWhen snowbiomes are enabled 'mgv6_freq_desert' is ignored."); + gettext("Mapgen v6 beach frequency"); + gettext("Mapgen v6 terrain base"); + gettext("Perlin noise attributes for different map generation parameters.\nNoise parameters can be specified as a set of positional values:\nOffset, scale, (spread factors), seed offset, number of octaves, persistence, lacunarity.\nFor example:"); + gettext("Mapgen v6 terrain base"); + gettext("Mapgen v6 terrain altitude"); + gettext("Mapgen v6 steepness"); + gettext("Mapgen v6 height select"); + gettext("Mapgen v6 mud"); + gettext("Mapgen v6 beach"); + gettext("Mapgen v6 biome"); + gettext("Mapgen v6 cave"); + gettext("Mapgen v6 humidity"); + gettext("Mapgen v6 trees"); + gettext("Mapgen v6 apple trees"); + gettext("Mapgen v7"); + gettext("Mapgen v7 flags"); + gettext("Map generation attributes specific to Mapgen V7.\nCurrently supported: mountains, ridges.\n'ridges' are the rivers."); + gettext("Mapgen v7 terrain base"); + gettext("Mapgen v7 terrain altitude"); + gettext("Mapgen v7 terrain persistation"); + gettext("Mapgen v7 height select"); + gettext("Mapgen v7 filler depth"); + gettext("Mapgen v7 mount height"); + gettext("Mapgen v7 ridge water"); + gettext("Mapgen v7 mountain"); + gettext("Mapgen v7 ridge"); + gettext("Mapgen v7 cave1"); + gettext("Mapgen v7 cave2"); + gettext("Security"); + gettext("Enable mod security"); + gettext("Prevent mods from doing insecure things like running shell commands."); + gettext("Trusted mods"); + gettext("Comma-separated list of trusted mods that are allowed to access insecure\nfunctions even when mod security is on (via request_insecure_environment())."); + gettext("Client and Server"); + gettext("Player name"); + gettext("Name of the player.\nWhen running a server, clients connecting with this name are admins."); + gettext("Language"); + gettext("Override language. When no value is provided (default) system language is used.\nCheck "locale" directory for the list of available translations."); + gettext("Debug log level"); + 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("IPv6"); + gettext("IPv6 support."); + gettext("Advanced"); + gettext("cURL timeout"); + gettext("Default timeout for cURL, stated in milliseconds.\nOnly has an effect if compiled with cURL."); + gettext("cURL parallel limit"); + gettext("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).\nOnly has an effect if compiled with cURL."); + gettext("cURL file download timeout"); + gettext("Maximum time in ms a file download (e.g. a mod download) may take"); + gettext("High-precision FPU"); + gettext("Makes DirectX work with LuaJIT. Disable if it causes troubles."); + gettext("Main menu script"); + gettext("Main menu game manager"); + gettext("Main menu mod manager"); + gettext("Modstore download URL"); + gettext("Modstore mods list URL"); + gettext("Modstore details URL"); +} diff --git a/util/updatepo.sh b/util/updatepo.sh index f4a401f2c..1fc723373 100755 --- a/util/updatepo.sh +++ b/util/updatepo.sh @@ -50,7 +50,7 @@ cd .. potfile=po/minetest.pot xgettext --package-name=minetest \ --sort-by-file \ - --add-location=file \ + --add-location \ --keyword=N_ \ --keyword=wgettext \ --keyword=fgettext \