# 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". # Further documentation: # http://wiki.minetest.net/ # # 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. # type: bool # enable_build_where_you_stand = false # Player is able to fly without being affected by gravity. # This requires the "fly" privilege on the server. # type: bool # free_move = false # Fast movement (via use key). # This requires the "fast" privilege on the server. # type: bool # fast_move = false # If enabled together with fly mode, player is able to fly through solid nodes. # This requires the "noclip" privilege on the server. # type: bool # noclip = false # Smooths camera when looking around. Also called look or mouse smoothing. # Useful for recording videos. # type: bool # cinematic = false # Smooths rotation of camera. 0 to disable. # type: float min: 0 max: 0.99 # camera_smoothing = 0.0 # Smooths rotation of camera in cinematic mode. 0 to disable. # type: float min: 0 max: 0.99 # cinematic_camera_smoothing = 0.7 # Invert vertical mouse movement. # type: bool # invert_mouse = false # Mouse sensitivity multiplier. # type: float # mouse_sensitivity = 0.2 # If enabled, "use" key instead of "sneak" key is used for climbing down and descending. # type: bool # aux1_descends = false # Double-tapping the jump key toggles fly mode. # type: bool # doubletap_jump = false # If disabled "use" key is used to fly fast if both fly and fast mode are enabled. # 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 (only used for testing). # type: bool # random_input = false # Continuous forward movement (only used for testing). # type: bool # continuous_forward = false # Enable Joysticks # type: bool # enable_joysticks = false # The time in seconds it takes between repeated events # when holding down a joystick button combination. # type: float # repeat_joystick_button_time = 0.17 # The sensitivity of the joystick axes for moving the # ingame view frustum around. # type: float # joystick_frustum_sensitivity = 170 # Key for moving the player forward. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_forward = KEY_KEY_W # Key for moving the player backward. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_backward = KEY_KEY_S # Key for moving the player left. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_left = KEY_KEY_A # Key for moving the player right. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_right = KEY_KEY_D # Key for jumping. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_jump = KEY_SPACE # Key for sneaking. # Also used for climbing down and descending in water if aux1_descends is disabled. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_sneak = KEY_LSHIFT # Key for opening the inventory. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_inventory = KEY_KEY_I # Key for moving fast in fast mode. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_special1 = KEY_KEY_E # Key for opening the chat window. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_chat = KEY_KEY_T # Key for opening the chat window to type commands. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_cmd = / # Key for opening the chat console. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keyman_console = KEY_F10 # Key for toggling unlimited view range. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_rangeselect = KEY_KEY_R # Key for toggling flying. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_freemove = KEY_KEY_K # Key for toggling fast mode. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_fastmove = KEY_KEY_J # Key for toggling noclip mode. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_noclip = KEY_KEY_H # Key for toggling autorun. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_autorun = # Key for toggling cinematic mode. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_cinematic = # Key for toggling display of minimap. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_minimap = KEY_F9 # Key for taking screenshots. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_screenshot = KEY_F12 # Key for dropping the currently selected item. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_drop = KEY_KEY_Q # Key for toggling the display of the HUD. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_toggle_hud = KEY_F1 # Key for toggling the display of the chat. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_toggle_chat = KEY_F2 # Key for toggling the display of the fog. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_toggle_force_fog_off = KEY_F3 # Key for toggling the camera update. Only used for development # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_toggle_update_camera = # Key for toggling the display of debug info. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_toggle_debug = KEY_F5 # Key for toggling the display of the profiler. Used for development. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_toggle_profiler = KEY_F6 # Key for switching between first- and third-person camera. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_camera_mode = KEY_F7 # Key for increasing the viewing range. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_increase_viewing_range_min = + # Key for decreasing the viewing range. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_decrease_viewing_range_min = - # Key for printing debug stacks. Used for development. # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # type: key # keymap_print_debug_stacks = KEY_KEY_P ## Network # Address to connect to. # Leave this blank to start a local server. # Note that the address field in the main menu overrides this setting. # type: string # address = # Port to connect to (UDP). # Note that the port field in the main menu overrides this setting. # type: int min: 1 max: 65535 # remote_port = 30000 # Whether to support older servers before protocol version 25. # Enable if you want to connect to 0.4.12 servers and before. # Servers starting with 0.4.13 will work, 0.4.12-dev servers may work. # Disabling this option will protect your password better. # type: bool # send_pre_v25_init = false # Save the map received by the client on disk. # type: bool # enable_local_map_saving = false # Show entity selection boxes # type: bool # show_entity_selectionbox = true # Enable usage of remote media server (if provided by server). # Remote servers offer a significantly faster way to download media (e.g. textures) # when connecting to the 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 #### Basic # Enable VBO # type: bool # enable_vbo = true # Whether to fog out the end of the visible area. # type: bool # enable_fog = true # Leaves style: # - 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. # type: bool # connected_glass = false # Enable smooth lighting with simple ambient occlusion. # Disable for speed or for different looks. # type: bool # smooth_lighting = true # Clouds are a client side effect. # type: bool # enable_clouds = true # Use 3D cloud look instead of flat. # type: bool # enable_3d_clouds = true # Method used to highlight selected object. # type: enum values: box, halo # node_highlighting = box #### Filtering # Use mip mapping to scale textures. May slightly increase performance. # type: bool # mip_map = false # Use anisotropic filtering when viewing at textures from an angle. # type: bool # anisotropic_filter = false # Use bilinear filtering when scaling textures. # type: bool # bilinear_filter = false # Use trilinear filtering when scaling textures. # 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. # 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 # 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. # type: int # texture_min_size = 64 # Experimental option, might cause visible spaces between blocks # when set to higher number than 0. # type: enum values: 0, 1, 2, 4, 8, 16 # fsaa = 0 #### Shaders # Shaders allow advanced visual effects and may increase performance on some video cards. # Thy only work with the OpenGL video backend. # type: bool # enable_shaders = true ##### Tone Mapping # Enables filmic tone mapping # type: bool # tone_mapping = false ##### Bumpmapping # Enables bumpmapping for textures. Normalmaps need to be supplied by the texture pack # or need to be auto-generated. # Requires shaders to be enabled. # type: bool # enable_bumpmapping = false # Enables on the fly normalmap generation (Emboss effect). # Requires bumpmapping to be enabled. # type: bool # generate_normalmaps = false # Strength of generated normalmaps. # type: float # normalmaps_strength = 0.6 # Defines sampling step of texture. # A higher value results in smoother normal maps. # type: int min: 0 max: 2 # normalmaps_smooth = 0 ##### Parallax Occlusion # Enables parallax occlusion mapping. # Requires shaders to be enabled. # type: bool # enable_parallax_occlusion = false # 0 = parallax occlusion with slope information (faster). # 1 = relief mapping (slower, more accurate). # type: int min: 0 max: 1 # parallax_occlusion_mode = 1 # Strength of parallax. # type: float # 3d_parallax_strength = 0.025 # Number of parallax occlusion iterations. # type: int # parallax_occlusi-- Minetest: builtin/misc.lua local S = core.get_translator("__builtin") -- -- Misc. API functions -- -- @spec core.kick_player(String, String) :: Boolean function core.kick_player(player_name, reason) if type(reason) == "string" then reason = "Kicked: " .. reason else reason = "Kicked." end return core.disconnect_player(player_name, reason) end function core.check_player_privs(name, ...) if core.is_player(name) then name = name:get_player_name() elseif type(name) ~= "string" then error("core.check_player_privs expects a player or playername as " .. "argument.", 2) end local requested_privs = {...} local player_privs = core.get_player_privs(name) local missing_privileges = {} if type(requested_privs[1]) == "table" then -- We were provided with a table like { privA = true, privB = true }. for priv, value in pairs(requested_privs[1]) do if value and not player_privs[priv] then missing_privileges[#missing_privileges + 1] = priv end end else -- Only a list, we can process it directly. for key, priv in pairs(requested_privs) do if not player_privs[priv] then missing_privileges[#missing_privileges + 1] = priv end end end if #missing_privileges > 0 then return false, missing_privileges end return true, "" end function core.send_join_message(player_name) if not core.is_singleplayer() then core.chat_send_all("*** " .. S("@1 joined the game.", player_name)) end end function core.send_leave_message(player_name, timed_out) local announcement = "*** " .. S("@1 left the game.", player_name) if timed_out then announcement = "*** " .. S("@1 left the game (timed out).", player_name) end core.chat_send_all(announcement) end core.register_on_joinplayer(function(player) local player_name = player:get_player_name() if not core.is_singleplayer() then local status = core.get_server_status(player_name, true) if status and status ~= "" then core.chat_send_player(player_name, status) end end core.send_join_message(player_name) end) core.register_on_leaveplayer(function(player, timed_out) local player_name = player:get_player_name() core.send_leave_message(player_name, timed_out) end) function core.is_player(player) -- a table being a player is also supported because it quacks sufficiently -- like a player if it has the is_player function local t = type(player) return (t == "userdata" or t == "table") and type(player.is_player) == "function" and player:is_player() end function core.player_exists(name) return core.get_auth_handler().get_auth(name) ~= nil end -- Returns two position vectors representing a box of `radius` in each -- direction centered around the player corresponding to `player_name` function core.get_player_radius_area(player_name, radius) local player = core.get_player_by_name(player_name) if player == nil then return nil end local p1 = player:get_pos() local p2 = p1 if radius then p1 = vector.subtract(p1, radius) p2 = vector.add(p2, radius) end return p1, p2 end function core.hash_node_position(pos) return (pos.z + 32768) * 65536 * 65536 + (pos.y + 32768) * 65536 + pos.x + 32768 end function core.get_position_from_hash(hash) local x = (hash % 65536) - 32768 hash = math.floor(hash / 65536) local y = (hash % 65536) - 32768 hash = math.floor(hash / 65536) local z = (hash % 65536) - 32768 return vector.new(x, y, z) end function core.get_item_group(name, group) if not core.registered_items[name] or not core.registered_items[name].groups[group] then return 0 end return core.registered_items[name].groups[group] end function core.get_node_group(name, group) core.log("deprecated", "Deprecated usage of get_node_group, use get_item_group instead") return core.get_item_group(name, group) end function core.setting_get_pos(name) local value = core.settings:get(name) if not value then return nil end return core.string_to_pos(value) end -- See l_env.cpp for the other functions function core.get_artificial_light(param1) return math.floor(param1 / 16) end -- To be overriden by protection mods function core.is_protected(pos, name) return false end function core.record_protection_violation(pos, name) for _, func in pairs(core.registered_on_protection_violation) do func(pos, name) end end -- To be overridden by Creative mods local creative_mode_cache = core.settings:get_bool("creative_mode") function core.is_creative_enabled(name) return creative_mode_cache end -- Checks if specified volume intersects a protected volume function core.is_area_protected(minp, maxp, player_name, interval) -- 'interval' is the largest allowed interval for the 3D lattice of checks. -- Compute the optimal float step 'd' for each axis so that all corners and -- borders are checked. 'd' will be smaller or equal to 'interval'. -- Subtracting 1e-4 ensures that the max co-ordinate will be reached by the -- for loop (which might otherwise not be the case due to rounding errors). -- Default to 4 interval = interval or 4 local d = {} for _, c in pairs({"x", "y", "z"}) do if minp[c] > maxp[c] then -- Repair positions: 'minp' > 'maxp' local tmp = maxp[c] maxp[c] = minp[c] minp[c] = tmp end if maxp[c] > minp[c] then d[c] = (maxp[c] - minp[c]) / math.ceil((maxp[c] - minp[c]) / interval) - 1e-4 else d[c] = 1 -- Any value larger than 0 to avoid division by zero end end for zf = minp.z, maxp.z, d.z do local z = math.floor(zf + 0.5) for yf = minp.y, maxp.y, d.y do local y = math.floor(yf + 0.5) for xf = minp.x, maxp.x, d.x do local x = math.floor(xf + 0.5) local pos = vector.new(x, y, z) if core.is_protected(pos, player_name) then return pos end end end end return false end local raillike_ids = {} local raillike_cur_id = 0 function core.raillike_group(name) local id = raillike_ids[name] if not id then raillike_cur_id = raillike_cur_id + 1 raillike_ids[name] = raillike_cur_id id = raillike_cur_id end return id end -- HTTP callback interface function core.http_add_fetch(httpenv) httpenv.fetch = function(req, callback) local handle = httpenv.fetch_async(req) local function update_http_status() local res = httpenv.fetch_async_get(handle) if res.completed then callback(res) else core.after(0, update_http_status) end end core.after(0, update_http_status) end return httpenv end function core.close_formspec(player_name, formname) return core.show_formspec(player_name, formname, "") end function core.cancel_shutdown_requests() core.request_shutdown("", false, -1) end -- Used for callback handling with dynamic_add_media core.dynamic_media_callbacks = {} -- PNG encoder safety wrapper local o_encode_png = core.encode_png function core.encode_png(width, height, data, compression) if type(width) ~= "number" then error("Incorrect type for 'width', expected number, got " .. type(width)) end if type(height) ~= "number" then error("Incorrect type for 'height', expected number, got " .. type(height)) end local expected_byte_count = width * height * 4 if type(data) ~= "table" and type(data) ~= "string" then error("Incorrect type for 'data', expected table or string, got " .. type(data)) end local data_length = type(data) == "table" and #data * 4 or string.len(data) if data_length ~= expected_byte_count then error(string.format( "Incorrect length of 'data', width and height imply %d bytes but %d were provided", expected_byte_count, data_length )) end if type(data) == "table" then local dataBuf = {} for i = 1, #data do dataBuf[i] = core.colorspec_to_bytes(data[i]) end data = table.concat(dataBuf) end return o_encode_png(width, height, data, compression or 6) end