1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-01 17:38:41 +00:00

Merge remote-tracking branch 'upstream/master' into Visuals-Vol-2

This commit is contained in:
Gefüllte Taubenbrust 2024-11-17 12:02:30 +01:00
commit 00ef9b14d0
1043 changed files with 44800 additions and 28934 deletions

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/client/chatcommands.lua
core.register_on_sending_chat_message(function(message)
if message:sub(1,2) == ".." then
return false

View file

@ -1,4 +1,3 @@
-- Minetest: builtin/client/init.lua
local scriptpath = core.get_builtin_path()
local clientpath = scriptpath.."client"..DIR_DELIM
local commonpath = scriptpath.."common"..DIR_DELIM

View file

@ -155,7 +155,7 @@ end
function core.after(after, func, ...)
assert(tonumber(after) and not core.is_nan(after) and type(func) == "function",
"Invalid minetest.after invocation")
"Invalid core.after invocation")
local new_job = {
mod_origin = core.get_last_run_mod(),

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/common/chatcommands.lua
-- For server-side translations (if INIT == "game")
-- Otherwise, use core.gettext
local S = core.get_translator("__builtin")

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2013 sapier
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,3 @@
-- Minetest: builtin/item_s.lua
-- The distinction of what goes here is a bit tricky, basically it's everything
-- that does not (directly or indirectly) need access to ServerEnvironment,
-- Server or writable access to IGameDef on the engine side.

View file

@ -11,8 +11,8 @@ end
core.known_metatables = known_metatables
function core.register_async_metatable(...)
core.log("deprecated", "minetest.register_async_metatable is deprecated. " ..
"Use minetest.register_portable_metatable instead.")
core.log("deprecated", "core.register_async_metatable is deprecated. " ..
"Use core.register_portable_metatable instead.")
return core.register_portable_metatable(...)
end

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/misc_helpers.lua
--------------------------------------------------------------------------------
-- Localize functions to avoid table lookups (better performance).
local string_sub, string_find = string.sub, string.find
@ -574,12 +572,14 @@ function core.strip_colors(str)
return (str:gsub(ESCAPE_CHAR .. "%([bc]@[^)]+%)", ""))
end
function core.translate(textdomain, str, ...)
local function translate(textdomain, str, num, ...)
local start_seq
if textdomain == "" then
if textdomain == "" and num == "" then
start_seq = ESCAPE_CHAR .. "T"
else
elseif num == "" then
start_seq = ESCAPE_CHAR .. "(T@" .. textdomain .. ")"
else
start_seq = ESCAPE_CHAR .. "(T@" .. textdomain .. "@" .. num .. ")"
end
local arg = {n=select('#', ...), ...}
local end_seq = ESCAPE_CHAR .. "E"
@ -610,8 +610,31 @@ function core.translate(textdomain, str, ...)
return start_seq .. translated .. end_seq
end
function core.translate(textdomain, str, ...)
return translate(textdomain, str, "", ...)
end
function core.translate_n(textdomain, str, str_plural, n, ...)
assert (type(n) == "number")
assert (n >= 0)
assert (math.floor(n) == n)
-- Truncate n if too large
local max = 1000000
if n >= 2 * max then
n = n % max + max
end
if n == 1 then
return translate(textdomain, str, "1", ...)
else
return translate(textdomain, str_plural, tostring(n), ...)
end
end
function core.get_translator(textdomain)
return function(str, ...) return core.translate(textdomain or "", str, ...) end
return
(function(str, ...) return core.translate(textdomain or "", str, ...) end),
(function(str, str_plural, n, ...) return core.translate_n(textdomain or "", str, str_plural, n, ...) end)
end
--------------------------------------------------------------------------------

View file

@ -204,18 +204,18 @@ local function dummy_func() end
function core.deserialize(str, safe)
-- Backwards compatibility
if str == nil then
core.log("deprecated", "minetest.deserialize called with nil (expected string).")
core.log("deprecated", "core.deserialize called with nil (expected string).")
return nil, "Invalid type: Expected a string, got nil"
end
local t = type(str)
if t ~= "string" then
error(("minetest.deserialize called with %s (expected string)."):format(t))
error(("core.deserialize called with %s (expected string)."):format(t))
end
local func, err = loadstring(str)
if not func then return nil, err end
-- math.huge was serialized to inf and NaNs to nan by Lua in Minetest 5.6, so we have to support this here
-- math.huge was serialized to inf and NaNs to nan by Lua in engine version 5.6, so we have to support this here
local env = {inf = math_huge, nan = 0/0}
if safe then
env.loadstring = dummy_func

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--Copyright (C) 2023 Gregor Parzefall
--

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--
--This program is free software; you can redistribute it and/or modify

View file

@ -10,7 +10,7 @@ end
function core.handle_async(func, callback, ...)
assert(type(func) == "function" and type(callback) == "function",
"Invalid minetest.handle_async invocation")
"Invalid core.handle_async invocation")
local args = {n = select("#", ...), ...}
local mod_origin = core.get_last_run_mod()

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/auth.lua
--
-- Builtin authentication handler
--
@ -95,11 +93,11 @@ core.builtin_auth_handler = {
for priv, value in pairs(privileges) do
-- Warnings for improper API usage
if value == false then
core.log('deprecated', "`false` value given to `minetest.set_player_privs`, "..
core.log('deprecated', "`false` value given to `core.set_player_privs`, "..
"this is almost certainly a bug, "..
"granting a privilege rather than revoking it")
elseif value ~= true then
core.log('deprecated', "non-`true` value given to `minetest.set_player_privs`")
core.log('deprecated', "non-`true` value given to `core.set_player_privs`")
end
-- Run grant callbacks
if prev_privs[priv] == nil then
@ -196,7 +194,7 @@ function core.change_player_privs(name, changes)
elseif change == false then
privs[priv] = nil
else
error("non-bool value given to `minetest.change_player_privs`")
error("non-bool value given to `core.change_player_privs`")
end
end
core.set_player_privs(name, privs)

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/game/chat.lua
local S = core.get_translator("__builtin")
-- Helper function that implements search and replace without pattern matching

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/constants.lua
--
-- Constants values for use with the Lua API
--

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/deprecated.lua
--
-- EnvRef
--
@ -35,9 +33,9 @@ local settings = core.settings
local function setting_proxy(name)
return function(...)
core.log("deprecated", "WARNING: minetest.setting_* "..
core.log("deprecated", "WARNING: core.setting_* "..
"functions are deprecated. "..
"Use methods on the minetest.settings object.")
"Use methods on the core.settings object.")
return settings[name](settings, ...)
end
end

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/detached_inventory.lua
core.detached_inventories = {}
local create_detached_inventory_raw = core.create_detached_inventory_raw

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/item.lua
local builtin_shared = ...
local SCALE = 0.667

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/features.lua
core.features = {
glasslike_framed = true,
nodebox_as_selectionbox = true,
@ -45,6 +43,7 @@ core.features = {
hotbar_hud_element = true,
bulk_lbms = true,
abm_without_neighbors = true,
biome_weights = true,
}
function core.has_feature(arg)

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/item.lua
local builtin_shared = ...
local function copy_pointed_thing(pointed_thing)

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/item_entity.lua
function core.spawn_item(pos, item)
-- Take item in any format
local stack = ItemStack(item)

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/misc.lua
local S = core.get_translator("__builtin")
--

View file

@ -1,4 +1,3 @@
-- Minetest: builtin/misc_s.lua
-- The distinction of what goes here is a bit tricky, basically it's everything
-- that does not (directly or indirectly) need access to ServerEnvironment,
-- Server or writable access to IGameDef on the engine side.
@ -25,11 +24,8 @@ 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]
local def = core.registered_items[name]
return def and def.groups[group] or 0
end

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/privileges.lua
local S = core.get_translator("__builtin")
--

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/register.lua
local builtin_shared = ...
local S = core.get_translator("__builtin")

View file

@ -1,5 +1,3 @@
-- Minetest: builtin/static_spawn.lua
local static_spawnpoint_string = core.settings:get("static_spawnpoint")
if static_spawnpoint_string and
static_spawnpoint_string ~= "" and

View file

@ -35,7 +35,7 @@ end
local log = function(...) end
--local log = print
minetest.register_allow_player_inventory_action(function(_, action, inv, info)
core.register_allow_player_inventory_action(function(_, action, inv, info)
log("\tallow " .. action, info.count or info.stack:to_string())
if action == "move" then
@ -69,7 +69,7 @@ minetest.register_allow_player_inventory_action(function(_, action, inv, info)
return -- Unlimited
end)
minetest.register_on_player_inventory_action(function(_, action, inv, info)
core.register_on_player_inventory_action(function(_, action, inv, info)
log("\ton " .. action, info.count or info.stack:to_string())
if action == "take" or action == "put" then

View file

@ -1,5 +1,5 @@
--
-- This file contains built-in stuff in Minetest implemented in Lua.
-- This file contains built-in stuff in Luanti implemented in Lua.
--
-- It is always loaded and executed after registration of the C API,
-- before loading and running any mods.

View file

@ -11,11 +11,6 @@ end
core.async_event_handler = handle_job
function core.handle_async(func, parameter, callback)
-- Serialize function
local serialized_func = string.dump(func)
assert(serialized_func ~= nil)
-- Serialize parameters
local serialized_param = core.serialize(parameter)
@ -23,7 +18,7 @@ function core.handle_async(func, parameter, callback)
return false
end
local jobid = core.do_async_callback(serialized_func, serialized_param)
local jobid = core.do_async_callback(func, serialized_param)
core.async_jobs[jobid] = callback

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2018-24 rubenwardy
--
--This program is free software; you can redistribute it and/or modify
@ -392,7 +392,7 @@ function contentdb.resolve_dependencies(package, game, callback)
end
local function fetch_pkgs(params)
local function fetch_pkgs()
local version = core.get_version()
local base_url = core.settings:get("contentdb_url")
local url = base_url ..
@ -429,41 +429,43 @@ local function fetch_pkgs(params)
if not packages or #packages == 0 then
return
end
local aliases = {}
return packages
end
function contentdb.set_packages_from_api(packages)
contentdb.package_by_id = {}
contentdb.aliases = {}
for _, package in pairs(packages) do
package.id = params.calculate_package_id(package.type, package.author, package.name)
package.id = contentdb.calculate_package_id(package.type, package.author, package.name)
package.url_part = core.urlencode(package.author) .. "/" .. core.urlencode(package.name)
contentdb.package_by_id[package.id] = package
if package.aliases then
for _, alias in ipairs(package.aliases) do
-- We currently don't support name changing
local suffix = "/" .. package.name
if alias:sub(-#suffix) == suffix then
aliases[alias:lower()] = package.id
contentdb.aliases[alias:lower()] = package.id
end
end
end
end
return { packages = packages, aliases = aliases }
contentdb.load_ok = true
contentdb.load_error = false
contentdb.packages = packages
contentdb.packages_full = packages
contentdb.packages_full_unordered = packages
end
function contentdb.fetch_pkgs(callback)
contentdb.loading = true
core.handle_async(fetch_pkgs, { calculate_package_id = contentdb.calculate_package_id }, function(result)
core.handle_async(fetch_pkgs, nil, function(result)
if result then
contentdb.load_ok = true
contentdb.load_error = false
contentdb.packages = result.packages
contentdb.packages_full = result.packages
contentdb.packages_full_unordered = result.packages
contentdb.aliases = result.aliases
for _, package in ipairs(result.packages) do
contentdb.package_by_id[package.id] = package
end
contentdb.set_packages_from_api(result)
else
contentdb.load_error = true
end
@ -563,30 +565,32 @@ function contentdb.filter_packages(query, by_type)
end
local keywords = {}
for word in query:lower():gmatch("%S+") do
table.insert(keywords, word)
for word in query:gmatch("%S+") do
table.insert(keywords, word:lower())
end
local function contains_all_keywords(str)
str = str:lower()
for _, keyword in ipairs(keywords) do
if not str:find(keyword, 1, true) then
return false
end
end
return true
end
local function matches_keywords(package)
for k = 1, #keywords do
local keyword = keywords[k]
if string.find(package.name:lower(), keyword, 1, true) or
string.find(package.title:lower(), keyword, 1, true) or
string.find(package.author:lower(), keyword, 1, true) or
string.find(package.short_description:lower(), keyword, 1, true) then
return true
end
end
return false
return contains_all_keywords(package.name) or
contains_all_keywords(package.title) or
contains_all_keywords(package.author) or
contains_all_keywords(package.short_description)
end
contentdb.packages = {}
for _, package in pairs(contentdb.packages_full) do
if (query == "" or matches_keywords(package)) and
(by_type == nil or package.type == by_type) then
contentdb.packages[#contentdb.packages + 1] = package
table.insert(contentdb.packages, package)
end
end
end

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2018-20 rubenwardy
--
--This program is free software; you can redistribute it and/or modify
@ -18,7 +18,7 @@
if not core.get_http_api then
function create_contentdb_dlg()
return messagebox("contentdb",
fgettext("ContentDB is not available when Minetest was compiled without cURL"))
fgettext("ContentDB is not available when Luanti was compiled without cURL"))
end
return
end
@ -357,7 +357,7 @@ local function get_formspec(dlgdata)
if package.featured then
table.insert_all(formspec, {
"tooltip[0,0;0.8,0.8;", fgettext("Featured"), "]",
"image[0.2,0.2;0.4,0.4;", defaulttexturedir, "server_favorite.png]",
"image[0.2,0.2;0.4,0.4;", core.formspec_escape(defaulttexturedir .. "server_favorite.png"), "]",
})
end
@ -367,20 +367,21 @@ local function get_formspec(dlgdata)
if package.downloading then
table.insert_all(formspec, {
"animated_image[0,0;0.5,0.5;downloading;", defaulttexturedir, "cdb_downloading.png;3;400;;]",
"animated_image[0,0;0.5,0.5;downloading;", core.formspec_escape(defaulttexturedir .. "cdb_downloading.png"),
";3;400;;]",
})
elseif package.queued then
table.insert_all(formspec, {
"image[0,0;0.5,0.5;", defaulttexturedir, "cdb_queued.png]",
"image[0,0;0.5,0.5;", core.formspec_escape(defaulttexturedir .. "cdb_queued.png"), "]",
})
elseif package.path then
if package.installed_release < package.release then
table.insert_all(formspec, {
"image[0,0;0.5,0.5;", defaulttexturedir, "cdb_update.png]",
"image[0,0;0.5,0.5;", core.formspec_escape(defaulttexturedir .. "cdb_update.png"), "]",
})
else
table.insert_all(formspec, {
"image[0.1,0.1;0.3,0.3;", defaulttexturedir, "checkbox_64.png]",
"image[0.1,0.1;0.3,0.3;", core.formspec_escape(defaulttexturedir .. "checkbox_64.png"), "]",
})
end
end
@ -487,7 +488,7 @@ end
local function handle_events(event)
if event == "DialogShow" then
-- Don't show the "MINETEST" header behind the dialog.
-- Don't show the header image behind the dialog.
mm_game_theme.set_engine(true)
-- If ContentDB is already loaded, auto-install packages here.

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2018-24 rubenwardy
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2018-24 rubenwardy
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2018-24 rubenwardy
--
--This program is free software; you can redistribute it and/or modify
@ -51,10 +51,6 @@ local function get_formspec(data)
return
end
if info.forums then
info.forums = "https://forum.minetest.net/viewtopic.php?t=" .. info.forums
end
assert(data.package.name == info.name)
data.info = info
ui.update()
@ -194,7 +190,7 @@ local function get_formspec(data)
add_link_button(fgettext("Source"), "repo")
add_link_button(fgettext("Issue Tracker"), "issue_tracker")
add_link_button(fgettext("Translate"), "translation_url")
add_link_button(fgettext("Forum Topic"), "forums")
add_link_button(fgettext("Forum Topic"), "forum_url")
hypertext = hypertext .. "\n\n" .. info.long_description.body

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2023 rubenwardy
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2013 sapier
--
--This program is free software; you can redistribute it and/or modify
@ -840,7 +840,7 @@ function pkgmgr.get_contentdb_id(content)
return content.author:lower() .. "/" .. content.name
end
-- Until Minetest 5.8.0, Minetest Game was bundled with Minetest.
-- Until version 5.8.0, Minetest Game was bundled with the engine.
-- Unfortunately, the bundled MTG was not versioned (missing "release"
-- field in game.conf).
-- Therefore, we consider any installation of MTG that is not versioned,

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2023-24 rubenwardy
--
--This program is free software; you can redistribute it and/or modify
@ -40,7 +40,7 @@ function get_screenshot(package, screenshot_url, level)
return defaulttexturedir .. "no_screenshot.png"
end
-- Minetest only supports png and jpg
-- Luanti only supports png and jpg
local ext = get_file_extension(screenshot_url)
if ext ~= "png" and ext ~= "jpg" then
screenshot_url = screenshot_url:sub(0, -#ext - 1) .. "png"

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2022 rubenwardy
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2023 rubenwardy
--
--This program is free software; you can redistribute it and/or modify

View file

@ -13,7 +13,9 @@
"Desour/DS",
"srifqi",
"Gregor Parzefall (grorp)",
"Lars Müller (luatic)"
"Lars Müller (luatic)",
"cx384",
"sfence"
],
"previous_core_developers": [
"BlockMen",
@ -44,30 +46,25 @@
],
"#": "For updating active/previous contributors, see the script in ./util/gather_git_credits.py",
"contributors": [
"cx384",
"numzero",
"AFCMS",
"sfence",
"Wuzzy",
"ROllerozxa",
"JosiahWI",
"OgelGames",
"David Heidelberg",
"1F616EMO",
"HybridDog",
"Bradley Pierce (Thresher)",
"savilli",
"Stvk imension",
"y5nw",
"Erich Schubert",
"numzero",
"red-001 <red-001@outlook.ie>",
"David Heidelberg",
"Wuzzy",
"paradust7",
"HybridDog",
"Zemtzov7",
"kromka-chleba",
"AFCMS",
"chmodsayshello",
"jordan4ibanez",
"superfloh247"
"OgelGames"
],
"previous_contributors": [
"Nils Dagsson Moskopp (erlehmann) <nils@dieweltistgarnichtso.net> [Minetest logo]",
"red-001 <red-001@outlook.ie>",
"Ælla Chiana Moskopp (erle) <erle@dieweltistgarnichtso.net> [Logo]",
"Giuseppe Bilotta",
"HybridDog",
"ClobberXD",
"Dániel Juhász (juhdanad) <juhdanad@gmail.com>",
"MirceaKitsune <mirceakitsune@gmail.com>",
@ -75,6 +72,7 @@
"MoNTE48",
"Constantin Wenger (SpeedProg)",
"Ciaran Gultnieks (CiaranG)",
"ROllerozxa",
"Paul Ouellette (pauloue)",
"stujones11",
"Rogier <rogier777@gmail.com>",

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2013 sapier
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2022 rubenwardy
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2023 Gregor Parzefall
--
--This program is free software; you can redistribute it and/or modify
@ -68,15 +68,15 @@ end
local function get_formspec(dialogdata)
local markup = table.concat({
"<big>", fgettext("Minetest Game is no longer installed by default"), "</big>\n",
fgettext("For a long time, the Minetest engine shipped with a default game called \"Minetest Game\". " ..
"Since Minetest 5.8.0, Minetest ships without a default game."), "\n",
fgettext("For a long time, Luanti shipped with a default game called \"Minetest Game\". " ..
"Since version 5.8.0, Luanti ships without a default game."), "\n",
fgettext("If you want to continue playing in your Minetest Game worlds, you need to reinstall Minetest Game."),
})
return table.concat({
"formspec_version[6]",
"size[12.8,7]",
"hypertext[0.375,0.375;12.05,5.2;text;", minetest.formspec_escape(markup), "]",
"hypertext[0.375,0.375;12.05,5.2;text;", core.formspec_escape(markup), "]",
"container[0.375,5.825]",
"style[dismiss;bgcolor=red]",
"button[0,0;4,0.8;dismiss;", fgettext("Dismiss"), "]",
@ -114,7 +114,7 @@ local function eventhandler(event)
return true
elseif event == "MenuQuit" then
-- Don't allow closing the dialog with ESC, but still allow exiting
-- Minetest.
-- Luanti
core.close()
return true
end

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,5 +1,5 @@
--[[
Minetest
Luanti
Copyright (C) 2018-2020 SmallJoker, 2022 rubenwardy
This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2013 sapier
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--
--This program is free software; you can redistribute it and/or modify
@ -133,4 +133,5 @@ local function init_globals()
check_new_version()
end
assert(os.execute == nil)
init_globals()

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2020 rubenwardy
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2022 rubenwardy
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2015 PilzAdam
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2022 rubenwardy
--
--This program is free software; you can redistribute it and/or modify
@ -341,18 +341,17 @@ local function check_requirements(name, requires)
end
local video_driver = core.get_active_driver()
local shaders_support = video_driver == "opengl" or video_driver == "opengl3" or video_driver == "ogles2"
local touch_support = core.irrlicht_device_supports_touch()
local touch_controls = core.settings:get("touch_controls")
local special = {
android = PLATFORM == "Android",
desktop = PLATFORM ~= "Android",
-- When touch_controls is "auto", we don't which input method will be used,
-- so we show settings for both.
touchscreen = touch_controls == "auto" or core.is_yes(touch_controls),
keyboard_mouse = touch_controls == "auto" or not core.is_yes(touch_controls),
shaders_support = shaders_support,
shaders = core.settings:get_bool("enable_shaders") and shaders_support,
opengl = video_driver == "opengl",
touch_support = touch_support,
-- When touch_controls is "auto", we don't know which input method will
-- be used, so we show settings for both.
touchscreen = touch_support and (touch_controls == "auto" or core.is_yes(touch_controls)),
keyboard_mouse = not touch_support or (touch_controls == "auto" or not core.is_yes(touch_controls)),
opengl = (video_driver == "opengl" or video_driver == "opengl3"),
gles = video_driver:sub(1, 5) == "ogles",
}
@ -360,7 +359,7 @@ local function check_requirements(name, requires)
if special[req_key] == nil then
local required_setting = get_setting_info(req_key)
if required_setting == nil then
core.log("warning", "Unknown setting " .. req_key .. " required by " .. name)
core.log("warning", "Unknown setting " .. req_key .. " required by " .. (name or "???"))
end
local actual_value = core.settings:get_bool(req_key,
required_setting and core.is_yes(required_setting.default))
@ -706,7 +705,7 @@ local function buttonhandler(this, fields)
local function after_setting_change(comp)
write_settings_early()
if comp.setting.name == "touch_controls" then
if comp.setting and comp.setting.name == "touch_controls" then
-- Changing the "touch_controls" setting may result in a different
-- page list.
regenerate_page_list(dialogdata)
@ -734,7 +733,7 @@ end
local function eventhandler(event)
if event == "DialogShow" then
-- Don't show the "MINETEST" header behind the dialog.
-- Don't show the header image behind the dialog.
mm_game_theme.set_engine(true)
return true
end

View file

@ -13,7 +13,7 @@ local minetest_example_header = [[
# ../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".
# to the program, eg. "luanti.exe --config ../minetest.conf.example".
# Further documentation:
# https://wiki.minetest.net/

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2022 rubenwardy
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2015 PilzAdam
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2021-2 x2048
--Copyright (C) 2022-3 rubenwardy
--
@ -82,7 +82,6 @@ end
return {
query_text = "Shadows",
requires = {
shaders = true,
opengl = true,
},
get_formspec = function(self, avail_w)

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2013 sapier
--
--This program is free software; you can redistribute it and/or modify
@ -78,8 +78,8 @@ return {
"style[label_button;border=false]" ..
"button[0.1,3.4;5.3,0.5;label_button;" ..
core.formspec_escape(version.project .. " " .. version.string) .. "]" ..
"button_url[1.5,4.1;2.5,0.8;homepage;minetest.net;https://www.minetest.net/]" ..
"hypertext[5.5,0.25;9.75,6.6;credits;" .. minetest.formspec_escape(hypertext) .. "]"
"button_url[1.5,4.1;2.5,0.8;homepage;luanti.org;https://www.luanti.org/]" ..
"hypertext[5.5,0.25;9.75,6.6;credits;" .. core.formspec_escape(hypertext) .. "]"
-- Render information
local active_renderer_info = fgettext("Active renderer:") .. " " ..

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--Copyright (C) 2018 rubenwardy <rw@rubenwardy.com>
--
@ -118,7 +118,7 @@ local function get_formspec(tabview, name, tabdata)
local title_and_name
if selected_pkg.type == "game" then
title_and_name = selected_pkg.name
title_and_name = selected_pkg.title or selected_pkg.name
else
title_and_name = (selected_pkg.title or selected_pkg.name) .. "\n" ..
core.colorize("#BFBFBF", selected_pkg.name)

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--
--This program is free software; you can redistribute it and/or modify
@ -166,8 +166,8 @@ local function get_formspec(tabview, name, tabdata)
local H = tabview.height
local hypertext = "<global valign=middle halign=center size=18>" ..
fgettext_ne("Minetest is a game-creation platform that allows you to play many different games.") .. "\n" ..
fgettext_ne("Minetest doesn't come with a game by default.") .. " " ..
fgettext_ne("Luanti is a game-creation platform that allows you to play many different games.") .. "\n" ..
fgettext_ne("Luanti doesn't come with a game by default.") .. " " ..
fgettext_ne("You need to install a game before you can create a world.")
local button_y = H * 2/3 - 0.6

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2014 sapier
--
--This program is free software; you can redistribute it and/or modify
@ -195,8 +195,7 @@ local function search_server_list(input)
-- setup the keyword list
local keywords = {}
for word in input:gmatch("%S+") do
word = word:gsub("(%W)", "%%%1")
table.insert(keywords, word)
table.insert(keywords, word:lower())
end
if #keywords == 0 then
@ -207,26 +206,17 @@ local function search_server_list(input)
-- Search the serverlist
local search_result = {}
for i = 1, #serverlistmgr.servers do
local server = serverlistmgr.servers[i]
local found = 0
for k = 1, #keywords do
local keyword = keywords[k]
if server.name then
local sername = server.name:lower()
local _, count = sername:gsub(keyword, keyword)
found = found + count * 4
end
if server.description then
local desc = server.description:lower()
local _, count = desc:gsub(keyword, keyword)
found = found + count * 2
end
for i, server in ipairs(serverlistmgr.servers) do
local name_matches, description_matches = true, true
for _, keyword in ipairs(keywords) do
name_matches = name_matches and not not
(server.name or ""):lower():find(keyword, 1, true)
description_matches = description_matches and not not
(server.description or ""):lower():find(keyword, 1, true)
end
if found > 0 then
local points = (#serverlistmgr.servers - i) / 5 + found
server.points = points
if name_matches or description_matches then
server.points = #serverlistmgr.servers - i
+ (name_matches and 50 or 0)
table.insert(search_result, server)
end
end

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2016 T4im
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2016 T4im
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2016 T4im
--
--This program is free software; you can redistribute it and/or modify

View file

@ -1,4 +1,4 @@
--Minetest
--Luanti
--Copyright (C) 2016 T4im
--
--This program is free software; you can redistribute it and/or modify

View file

@ -61,7 +61,7 @@
#
# # This is a comment
# #
# # Requires: shaders, enable_dynamic_shadows, !enable_waving_leaves
# # Requires: enable_dynamic_shadows, !enable_waving_leaves
# name (Readable name) type type_args
#
# A requirement can be the name of a boolean setting or an engine-defined value.
@ -69,8 +69,6 @@
#
# * The value of a boolean setting, such as enable_dynamic_shadows
# * An engine-defined value:
# * shaders_support (a video driver that supports shaders, may not be enabled)
# * shaders (both enable_shaders and shaders_support)
# * desktop / android
# * touchscreen / keyboard_mouse
# * opengl / gles
@ -114,7 +112,7 @@ always_fly_fast (Always fly fast) bool true
# the place button.
#
# Requires: keyboard_mouse
repeat_place_time (Place repetition interval) float 0.25 0.15 2.0
repeat_place_time (Place repetition interval) float 0.25 0.16 2.0
# The minimum time in seconds it takes between digging nodes when holding
# the dig button.
@ -155,6 +153,8 @@ invert_hotbar_mouse_wheel (Hotbar: Invert mouse wheel direction) bool false
# Enables the touchscreen controls, allowing you to play the game with a touchscreen.
# "auto" means that the touchscreen controls will be enabled and disabled
# automatically depending on the last used input method.
#
# Requires: touch_support
touch_controls (Touchscreen controls) enum auto auto,true,false
# Touchscreen sensitivity multiplier.
@ -197,7 +197,7 @@ virtual_joystick_triggers_aux1 (Virtual joystick triggers Aux1 button) bool fals
# Easy to use and well-known from other games that shall not be named.
#
# * long_tap
# Known from the classic Minetest mobile controls.
# Known from the classic Luanti mobile controls.
# Combat is more or less impossible.
#
# Requires: touchscreen
@ -263,6 +263,8 @@ viewing_range (Viewing range) int 190 20 4000
# to the game world only, keeping the GUI intact.
# It should give a significant performance boost at the cost of less detailed image.
# Higher values result in a less detailed image.
# Note: Undersampling is currently not supported if the "3d_mode" setting is set
# to a non-default value.
undersampling (Undersampling) int 1 1 8
[**3D]
@ -275,7 +277,6 @@ undersampling (Undersampling) int 1 1 8
# - topbottom: split screen top/bottom.
# - sidebyside: split screen side by side.
# - crossview: Cross-eyed 3d
# Note that the interlaced mode requires shaders to be enabled.
3d_mode (3D mode) enum none none,anaglyph,interlaced,topbottom,sidebyside,crossview
# Strength of 3D mode parallax.
@ -414,11 +415,11 @@ anisotropic_filter (Anisotropic filtering) bool false
# Smoothens out block edges but does not affect the insides of textures.
# A restart is required to change this option.
#
# * FXAA - Fast approximate antialiasing (requires shaders)
# * FXAA - Fast approximate antialiasing
# Applies a post-processing filter to detect and smoothen high-contrast edges.
# Provides balance between speed and image quality.
#
# * SSAA - Super-sampling antialiasing (requires shaders)
# * SSAA - Super-sampling antialiasing
# Renders higher-resolution image of the scene, then scales down to reduce
# the aliasing effects. This is the slowest and the most accurate method.
antialiasing (Antialiasing method) enum none none,fsaa,fxaa,ssaa
@ -471,18 +472,12 @@ enable_particles (Digging particles) bool true
[**Waving Nodes]
# Set to true to enable waving leaves.
#
# Requires: shaders
enable_waving_leaves (Waving leaves) bool false
# Set to true to enable waving plants.
#
# Requires: shaders
enable_waving_plants (Waving plants) bool false
# Set to true to enable waving liquids (like water).
#
# Requires: shaders
enable_waving_water (Waving liquids) bool false
# The maximum height of the surface of waving liquids.
@ -490,76 +485,76 @@ enable_waving_water (Waving liquids) bool false
# 0.0 = Wave doesn't move at all.
# Default is 1.0 (1/2 node).
#
# Requires: shaders, enable_waving_water
# Requires: enable_waving_water
water_wave_height (Waving liquids wave height) float 1.0 0.0 4.0
# Length of liquid waves.
#
# Requires: shaders, enable_waving_water
# Requires: enable_waving_water
water_wave_length (Waving liquids wavelength) float 20.0 0.1
# How fast liquid waves will move. Higher = faster.
# If negative, liquid waves will move backwards.
#
# Requires: shaders, enable_waving_water
# Requires: enable_waving_water
water_wave_speed (Waving liquids wave speed) float 5.0
# When enabled, crude liquid reflections are simulated.
# When waving liquids are enabled, the wave parameters will affect these reflections.
#
# Requires: shaders, enable_dynamic_shadows
# Requires: enable_dynamic_shadows
enable_water_reflections (Liquid reflections) bool false
[**Dynamic shadows]
# Set to true to enable Shadow Mapping.
#
# Requires: shaders, opengl
# Requires: opengl
enable_dynamic_shadows (Dynamic shadows) bool false
# Set the shadow strength gamma.
# Adjusts the intensity of in-game dynamic shadows.
# Lower value means lighter shadows, higher value means darker shadows.
#
# Requires: shaders, enable_dynamic_shadows, opengl
# Requires: enable_dynamic_shadows, opengl
shadow_strength_gamma (Shadow strength gamma) float 1.0 0.1 10.0
# Maximum distance to render shadows.
#
# Requires: shaders, enable_dynamic_shadows, opengl
# Requires: enable_dynamic_shadows, opengl
shadow_map_max_distance (Shadow map max distance in nodes to render shadows) float 140.0 10.0 1000.0
# Texture size to render the shadow map on.
# This must be a power of two.
# Bigger numbers create better shadows but it is also more expensive.
#
# Requires: shaders, enable_dynamic_shadows, opengl
# Requires: enable_dynamic_shadows, opengl
shadow_map_texture_size (Shadow map texture size) int 2048 128 8192
# Sets shadow texture quality to 32 bits.
# On false, 16 bits texture will be used.
# This can cause much more artifacts in the shadow.
#
# Requires: shaders, enable_dynamic_shadows, opengl
# Requires: enable_dynamic_shadows, opengl
shadow_map_texture_32bit (Shadow map texture in 32 bits) bool true
# Enable Poisson disk filtering.
# On true uses Poisson disk to make "soft shadows". Otherwise uses PCF filtering.
#
# Requires: shaders, enable_dynamic_shadows, opengl
# Requires: enable_dynamic_shadows, opengl
shadow_poisson_filter (Poisson filtering) bool true
# Define shadow filtering quality.
# This simulates the soft shadows effect by applying a PCF or Poisson disk
# but also uses more resources.
#
# Requires: shaders, enable_dynamic_shadows, opengl
# Requires: enable_dynamic_shadows, opengl
shadow_filters (Shadow filter quality) enum 1 0,1,2
# Enable colored shadows.
# On true translucent nodes cast colored shadows. This is expensive.
#
# Requires: shaders, enable_dynamic_shadows, opengl
# Requires: enable_dynamic_shadows, opengl
shadow_map_color (Colored shadows) bool false
# Spread a complete update of shadow map over given number of frames.
@ -567,33 +562,31 @@ shadow_map_color (Colored shadows) bool false
# will consume more resources.
# Minimum value: 1; maximum value: 16
#
# Requires: shaders, enable_dynamic_shadows, opengl
# Requires: enable_dynamic_shadows, opengl
shadow_update_frames (Map shadows update frames) int 8 1 16
# Set the soft shadow radius size.
# Lower values mean sharper shadows, bigger values mean softer shadows.
# Minimum value: 1.0; maximum value: 15.0
#
# Requires: shaders, enable_dynamic_shadows, opengl
# Requires: enable_dynamic_shadows, opengl
shadow_soft_radius (Soft shadow radius) float 5.0 1.0 15.0
# Set the default tilt of Sun/Moon orbit in degrees.
# Games may change orbit tilt via API.
# Value of 0 means no tilt / vertical orbit.
#
# Requires: shaders, enable_dynamic_shadows, opengl
# Requires: enable_dynamic_shadows, opengl
shadow_sky_body_orbit_tilt (Sky Body Orbit Tilt) float 0.0 -60.0 60.0
# Tint sunlight during sunrise/sunset.
#
# Requires: shaders, enable_dynamic_shadows, opengl
# Requires: enable_dynamic_shadows, opengl
enable_sun_tint (Tinted sunlight) bool false
[**Post Processing]
# Enables the post processing pipeline.
#
# Requires: shaders
enable_post_processing (Enable Post Processing) bool true
# Enables Hable's 'Uncharted 2' filmic tone mapping.
@ -601,7 +594,7 @@ enable_post_processing (Enable Post Processing) bool true
# appearance of high dynamic range images. Mid-range contrast is slightly
# enhanced, highlights and shadows are gradually compressed.
#
# Requires: shaders, enable_post_processing
# Requires: enable_post_processing
tone_mapping (Filmic tone mapping) bool false
# Enable automatic exposure correction
@ -609,14 +602,14 @@ tone_mapping (Filmic tone mapping) bool false
# automatically adjust to the brightness of the scene,
# simulating the behavior of human eye.
#
# Requires: shaders, enable_post_processing
# Requires: enable_post_processing
enable_auto_exposure (Enable Automatic Exposure) bool false
# Set the exposure compensation in EV units.
# Value of 0.0 (default) means no exposure compensation.
# Range: from -1 to 1.0
#
# Requires: shaders, enable_post_processing, enable_auto_exposure
# Requires: enable_post_processing, enable_auto_exposure
exposure_compensation (Exposure compensation) float 0.0 -1.0 1.0
# Set the post processing gamma value.
@ -624,17 +617,17 @@ exposure_compensation (Exposure compensation) float 0.0 -1.0 1.0
# Range: from 1.0 to 5.0
# Default: 1.6
#
# Requires: shaders, enable_post_processing, tone_mapping
# Requires: enable_post_processing, tone_mapping
secondstage_gamma (Gamma) float 1.6 1.0 5.0
# Apply ASL CDL color grading to make brighter colors warmer and darker colors cooler.
#
# Requires: shaders, enable_post_processing
# Requires: enable_post_processing
enable_color_grading (Color grading) bool false
# Apply vignette effect to darken the edges of the screen.
#
# Requires: shaders, enable_post_processing
# Requires: enable_post_processing
enable_vignette (Vignette) bool false
# Apply dithering to reduce color banding artifacts.
@ -645,51 +638,49 @@ enable_vignette (Vignette) bool false
# With OpenGL ES, dithering only works if the shader supports high
# floating-point precision and it may have a higher performance impact.
#
# Requires: shaders, enable_post_processing
# Requires: enable_post_processing
debanding (Enable Debanding) bool true
# Set to true to enable bloom effect.
# Bright colors will bleed over the neighboring objects.
#
# Requires: shaders, enable_post_processing
# Requires: enable_post_processing
enable_bloom (Enable Bloom) bool false
# Set to true to enable volumetric lighting effect (a.k.a. "Godrays").
#
# Requires: shaders, enable_post_processing, enable_bloom
# Requires: enable_post_processing, enable_bloom
enable_volumetric_lighting (Volumetric Lighting) bool false
# Make volumetrics weaker against closer objects to emulate physical volumetrics.
#
# Requires: shaders, enable_post_processing, enable_bloom, enable_volumetric_lighting
# Requires: enable_post_processing, enable_bloom, enable_volumetric_lighting
enable_volumetric_depth_attenuation (Volumetric Depth Attenuation) bool false
[**Other Effects]
# Makes the color of light fog more saturated.
#
# Requires: shaders
enable_tinted_fog (Tinted fog) bool false
# Apply bump maps to nodes based on their textures. It is recommended to use a tilted sun orbit to go with this (Sky Body Orbit Tilt).
#
# Requires: shaders, enable_dynamic_shadows
# Requires: enable_dynamic_shadows
enable_bumpmaps (Bump maps) bool false
# Simulate translucency when looking at foliage in the sunlight.
# It is recommended to use this with the leaves style set to fancy.
#
# Requires: shaders, enable_dynamic_shadows
# Requires: enable_dynamic_shadows
enable_translucent_foliage (Translucent foliage) bool false
# Apply specular shading to nodes.
#
# Requires: shaders, enable_dynamic_shadows
# Requires: enable_dynamic_shadows
enable_node_specular (Node specular) bool false
# When enabled, liquid reflections are simulated.
#
# Requires: shaders, enable_waving_water, enable_dynamic_shadows
# Requires: enable_waving_water, enable_dynamic_shadows
enable_water_reflections (Liquid reflections) bool false
[*Audio]
@ -773,6 +764,10 @@ show_debug (Show debug info) bool false
# Radius to use when the block bounds HUD feature is set to near blocks.
show_block_bounds_radius_near (Block bounds HUD radius) int 4 0 1000
# 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 0.001 1.0
[**Chat]
# Maximum number of recent chat messages to show
@ -787,10 +782,6 @@ 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
# 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 0.001 1.0
# Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console output.
clickable_chat_weblinks (Chat weblinks) bool true
@ -805,9 +796,9 @@ chat_font_size (Chat font size) int 0 0 72
[**Content Repository]
# The URL for the content repository
contentdb_url (ContentDB URL) string https://content.minetest.net
contentdb_url (ContentDB URL) string https://content.luanti.org
# If enabled and you have ContentDB packages installed, Minetest may contact ContentDB to
# If enabled and you have ContentDB packages installed, Luanti may contact ContentDB to
# check for package updates when opening the mainmenu.
contentdb_enable_updates_indicator (Enable updates available indicator on content tab) bool true
@ -815,8 +806,8 @@ contentdb_enable_updates_indicator (Enable updates available indicator on conten
# "nonfree" can be used to hide packages which do not qualify as 'free software',
# as defined by the Free Software Foundation.
# You can also specify content ratings.
# These flags are independent from Minetest versions,
# so see a full list at https://content.minetest.net/help/content_flags/
# These flags are independent from Luanti versions,
# so see a full list at https://content.luanti.org/help/content_flags/
contentdb_flag_blacklist (ContentDB Flag Blacklist) string nonfree, desktop_default
# Maximum number of concurrent downloads. Downloads exceeding this limit will be queued.
@ -832,13 +823,13 @@ contentdb_max_concurrent_downloads (ContentDB Max Concurrent Downloads) int 3 1
enable_local_map_saving (Saving map received from server) bool false
# URL to the server list displayed in the Multiplayer Tab.
serverlist_url (Serverlist URL) string servers.minetest.net
serverlist_url (Serverlist URL) string servers.luanti.org
# If enabled, account registration is separate from login in the UI.
# If disabled, new accounts will be registered automatically when logging in.
enable_split_login_register (Enable split login/register) bool true
# URL to JSON file which provides information about the newest Minetest release.
# URL to JSON file which provides information about the newest Luanti release.
# If this is empty the engine will never check for updates.
update_information_url (Update information URL) string https://www.minetest.net/release_info.json
@ -852,16 +843,16 @@ name (Admin name) string
[**Serverlist and MOTD]
# Name of the server, to be displayed when players join and in the serverlist.
server_name (Server name) string Minetest server
server_name (Server name) string Luanti server
# Description of server, to be displayed when players join and in the serverlist.
server_description (Server description) string mine here
# Domain name of server, to be displayed in the serverlist.
server_address (Server address) string game.minetest.net
server_address (Server address) string game.example.net
# Homepage of server, to be displayed in the serverlist.
server_url (Server URL) string https://minetest.net
server_url (Server URL) string https://game.example.net
# Automatically report to the serverlist.
server_announce (Announce server) bool false
@ -870,7 +861,7 @@ server_announce (Announce server) bool false
server_announce_send_players (Send player names to the server list) bool true
# Announce to this serverlist.
serverlist_url (Serverlist URL) string servers.minetest.net
serverlist_url (Serverlist URL) string servers.luanti.org
# Message of the day displayed to players connecting.
motd (Message of the day) string
@ -899,7 +890,7 @@ strict_protocol_version_checking (Strict protocol checking) bool false
# Older clients are compatible in the sense that they will not crash when connecting
# to new servers, but they may not support all new features that you are expecting.
# This allows for more fine-grained control than strict_protocol_version_checking.
# Minetest still enforces its own internal minimum, and enabling
# Luanti still enforces its own internal minimum, and enabling
# strict_protocol_version_checking will effectively override this.
protocol_version_min (Protocol version minimum) int 1 1 65535
@ -1848,7 +1839,7 @@ instrument.lbm (Loading Block Modifiers) bool true
instrument.chatcommand (Chat commands) bool true
# Instrument global callback functions on registration.
# (anything you pass to a minetest.register_*() function)
# (anything you pass to a core.register_*() function)
instrument.global_callback (Global callbacks) bool true
# Instrument builtin.
@ -1880,14 +1871,7 @@ ignore_world_load_errors (Ignore world errors) bool false
[**Graphics]
# Shaders are a fundamental part of rendering and enable advanced visual effects.
#
# Requires: shaders_support
enable_shaders (Shaders) bool true
# Path to shader directory. If no path is defined, default location will be used.
#
# Requires: shaders
shader_path (Shader path) path
# The rendering back-end.
@ -1907,16 +1891,12 @@ cloud_radius (Cloud radius) int 12 1 62
# Whether node texture animations should be desynchronized per mapblock.
desynchronize_mapblock_texture_animation (Desynchronize block animation) bool false
# Enables caching of facedir rotated meshes.
# This is only effective with shaders disabled.
enable_mesh_cache (Mesh cache) bool false
# Delay between mesh updates on the client in ms. Increasing this will slow
# down the rate of mesh updates, thus reducing jitter on slower clients.
mesh_generation_interval (Mapblock mesh generation delay) int 0 0 50
# Number of threads to use for mesh generation.
# Value of 0 (default) will let Minetest autodetect the number of available threads.
# Value of 0 (default) will let Luanti autodetect the number of available threads.
mesh_generation_threads (Mapblock mesh generation threads) int 0 0 8
# True = 256
@ -1965,7 +1945,7 @@ opengl_debug (OpenGL debug) bool false
# top-left - processed base image, top-right - final image
# bottom-left - raw base image, bottom-right - bloom texture.
#
# Requires: shaders, enable_post_processing, enable_bloom
# Requires: enable_post_processing, enable_bloom
enable_bloom_debug (Enable Bloom Debug) bool false
[**Sound]
@ -2050,7 +2030,7 @@ lighting_boost_spread (Light curve boost spread) float 0.2 0.0 0.4
[**Networking]
# Prometheus listener address.
# If Minetest is compiled with ENABLE_PROMETHEUS option enabled,
# If Luanti is compiled with ENABLE_PROMETHEUS option enabled,
# enable metrics listener for Prometheus on that address.
# Metrics can be fetched on http://127.0.0.1:30000/metrics
prometheus_listener_address (Prometheus listener address) string 127.0.0.1:30000
@ -2110,6 +2090,8 @@ ask_reconnect_on_crash (Ask to reconnect after crash) bool false
# Length of a server tick (the interval at which everything is generally updated),
# stated in seconds.
# Does not apply to sessions hosted from the client menu.
# This is a lower bound, i.e. server steps may not be shorter than this, but
# they are often longer.
dedicated_server_step (Dedicated server step) float 0.09 0.0 1.0
# Whether players are shown to clients without any range limit.
@ -2255,7 +2237,7 @@ curl_file_download_timeout (cURL file download timeout) int 300000 5000 21474836
# Adjust the detected display density, used for scaling UI elements.
display_density_factor (Display Density Scaling Factor) float 1 0.5 5.0
# Windows systems only: Start Minetest with the command line window in the background.
# Windows systems only: Start Luanti with the command line window in the background.
# Contains the same information as the file debug.txt (default name).
enable_console (Enable console window) bool false