Improvements/fixes for noise parameter input in advanced settings

Formspec input for each individual noise parameter and flag.
Allow noise flags to be set in advanced settings, previously only settable
in minetest.conf.

Standardise 'group format' for noise parameters set in minetest.conf, as
only these support noise flags. However the older 'single line' format is
still accepted to support existing minetest.conf files.
Therefore auto-generate minetest.conf.example with noise parameters in
'group format'.

Setting 'type' in settingtypes.txt is now either 'noise_params_2D' or
'noise_params_3D', the dimension number is displayed in the advanced
settings edit page.
This commit is contained in:
Muhammad Rifqi Priyo Susanto 2017-09-10 00:49:12 +07:00 committed by paramat
parent c60abb2aec
commit a1e1a19ac3
9 changed files with 476 additions and 145 deletions

@ -25,6 +25,10 @@ local CHAR_CLASSES = {
FLAGS = "[%w_%-%.,]", FLAGS = "[%w_%-%.,]",
} }
local function flags_to_table(flags)
return flags:gsub("%s+", ""):split(",", true) -- Remove all spaces and split
end
-- returns error message, or nil -- returns error message, or nil
local function parse_setting_line(settings, line, read_all, base_level, allow_secure) local function parse_setting_line(settings, line, read_all, base_level, allow_secure)
-- comment -- comment
@ -111,7 +115,7 @@ local function parse_setting_line(settings, line, read_all, base_level, allow_se
return return
end end
if setting_type == "string" or setting_type == "noise_params" if setting_type == "string"
or setting_type == "key" or setting_type == "v3f" then or setting_type == "key" or setting_type == "v3f" then
local default = remaining_line:match("^(.*)$") local default = remaining_line:match("^(.*)$")
@ -133,6 +137,60 @@ local function parse_setting_line(settings, line, read_all, base_level, allow_se
return return
end end
if setting_type == "noise_params_2d"
or setting_type == "noise_params_3d" then
local default = remaining_line:match("^(.*)$")
if not default then
return "Invalid string setting"
end
local values = {}
local ti = 1
local index = 1
for line in default:gmatch("[+-]?[%d.-e]+") do -- All numeric characters
index = default:find("[+-]?[%d.-e]+", index) + line:len()
table.insert(values, line)
ti = ti + 1
if ti > 9 then
break
end
end
index = default:find("[^, ]", index)
local flags = ""
if index then
flags = default:sub(index)
default = default:sub(1, index - 3) -- Make sure no flags in single-line format
end
table.insert(values, flags)
table.insert(settings, {
name = name,
readable_name = readable_name,
type = setting_type,
default = default,
default_table = {
offset = values[1],
scale = values[2],
spread = {
x = values[3],
y = values[4],
z = values[5]
},
seed = values[6],
octaves = values[7],
persistence = values[8],
lacunarity = values[9],
flags = values[10]
},
values = values,
comment = current_comment,
noise_params = true,
flags = flags_to_table("defaults,eased,absvalue")
})
return
end
if setting_type == "bool" then if setting_type == "bool" then
if remaining_line ~= "false" and remaining_line ~= "true" then if remaining_line ~= "false" and remaining_line ~= "true" then
return "Invalid boolean setting" return "Invalid boolean setting"
@ -236,7 +294,7 @@ local function parse_setting_line(settings, line, read_all, base_level, allow_se
readable_name = readable_name, readable_name = readable_name,
type = "flags", type = "flags",
default = default, default = default,
possible = possible, possible = flags_to_table(possible),
comment = current_comment, comment = current_comment,
}) })
return return
@ -430,11 +488,61 @@ local function get_current_value(setting)
return value return value
end end
local function get_current_np_group(setting)
local value = core.settings:get_np_group(setting.name)
local t = {}
if value == nil then
t = setting.values
else
table.insert(t, value.offset)
table.insert(t, value.scale)
table.insert(t, value.spread.x)
table.insert(t, value.spread.y)
table.insert(t, value.spread.z)
table.insert(t, value.seed)
table.insert(t, value.octaves)
table.insert(t, value.persistence)
table.insert(t, value.lacunarity)
table.insert(t, value.flags)
end
return t
end
local function get_current_np_group_as_string(setting)
local value = core.settings:get_np_group(setting.name)
local t
if value == nil then
t = setting.default
else
t = value.offset .. ", " ..
value.scale .. ", (" ..
value.spread.x .. ", " ..
value.spread.y .. ", " ..
value.spread.z .. "), " ..
value.seed .. ", " ..
value.octaves .. ", " ..
value.persistence .. ", " ..
value.lacunarity .. ", " ..
value.flags
end
return t
end
local checkboxes = {} -- handle checkboxes events
local function create_change_setting_formspec(dialogdata) local function create_change_setting_formspec(dialogdata)
local setting = settings[selected_setting] local setting = settings[selected_setting]
local formspec = "size[10,5.2,true]" .. local height = 5.2
"button[5,4.5;2,1;btn_done;" .. fgettext("Save") .. "]" .. if setting.type == "noise_params_2d" or setting.type == "noise_params_3d" then
"button[3,4.5;2,1;btn_cancel;" .. fgettext("Cancel") .. "]" .. -- Three flags, checkboxes on 2 columns, with a vertical space of 1/2 unit
height = 8.7
elseif setting.type == "flags" then
-- Checkboxes on 2 columns, with a vertical space of 1/2 unit
height = 5.2 + math.ceil(#setting.possible / 2) / 2
end
local formspec = "size[10," .. height .. ",true]" ..
"button[5," .. height - 0.7 .. ";2,1;btn_done;" .. fgettext("Save") .. "]" ..
"button[3," .. height - 0.7 .. ";2,1;btn_cancel;" .. fgettext("Cancel") .. "]" ..
"tablecolumns[color;text]" .. "tablecolumns[color;text]" ..
"tableoptions[background=#00000000;highlight=#00000000;border=false]" .. "tableoptions[background=#00000000;highlight=#00000000;border=false]" ..
"table[0,0;10,3;info;" "table[0,0;10,3;info;"
@ -459,21 +567,6 @@ local function create_change_setting_formspec(dialogdata)
formspec = formspec .. "," .. core.formspec_escape(comment_line) .. "," formspec = formspec .. "," .. core.formspec_escape(comment_line) .. ","
end end
if setting.type == "flags" then
formspec = formspec .. ",,"
.. "," .. fgettext("Please enter a comma seperated list of flags.") .. ","
.. "," .. fgettext("Possible values are: ")
.. core.formspec_escape(setting.possible:gsub(",", ", ")) .. ","
elseif setting.type == "noise_params" then
formspec = formspec .. ",,"
.. "," .. fgettext("Format:") .. ","
.. "," .. fgettext("<offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>),") .. ","
.. "," .. fgettext("<seed>, <octaves>, <persistence>, <lacunarity>") .. ","
elseif setting.type == "v3f" then
formspec = formspec .. ",,"
.. "," .. fgettext_ne("Format is 3 numbers separated by commas and inside brackets.") .. ","
end
formspec = formspec:sub(1, -2) -- remove trailing comma formspec = formspec:sub(1, -2) -- remove trailing comma
formspec = formspec .. ";1]" formspec = formspec .. ";1]"
@ -514,8 +607,91 @@ local function create_change_setting_formspec(dialogdata)
.. core.formspec_escape(current_value) .. "]" .. core.formspec_escape(current_value) .. "]"
.. "button[8,3.75;2,1;btn_browser_" .. setting.type .. ";" .. fgettext("Browse") .. "]" .. "button[8,3.75;2,1;btn_browser_" .. setting.type .. ";" .. fgettext("Browse") .. "]"
elseif setting.type == "noise_params_2d" or setting.type == "noise_params_3d" then
local t = get_current_np_group(setting)
local dimension = 3
if setting.type == "noise_params_2d" then
dimension = 2
end
formspec = formspec
.. "label[0,2.5;(" .. dimension .. "D Noise)]"
.. "field[0.5,4;3.3,1;te_offset;Offset;" -- Offset
.. core.formspec_escape(t[1] or "") .. "]"
.. "field[3.8,4;3.3,1;te_scale;Scale;" -- Scale
.. core.formspec_escape(t[2] or "") .. "]"
.. "field[7.1,4;3.3,1;te_seed;Seed;" -- Seed
.. core.formspec_escape(t[6] or "") .. "]"
.. "label[0.5,4.7;Spread]" -- Spread
.. "field[2.0,5;2.8,1;te_spreadx;X;"
.. core.formspec_escape(t[3] or "") .. "]"
.. "field[4.8,5;2.8,1;te_spready;Y;"
.. core.formspec_escape(t[4] or "") .. "]"
.. "field[7.6,5;2.8,1;te_spreadz;Z;"
.. core.formspec_escape(t[5] or "") .. "]"
.. "field[0.5,6;3.3,1;te_octaves;Octaves;" -- Octaves
.. core.formspec_escape(t[7] or "") .. "]"
.. "field[3.8,6;3.3,1;te_persist;Persistance;" -- Persistance
.. core.formspec_escape(t[8] or "") .. "]"
.. "field[7.1,6;3.3,1;te_lacun;Lacunarity;" -- Lacunarity
.. core.formspec_escape(t[9] or "") .. "]"
local enabled_flags = flags_to_table(t[10])
local flags = {}
for _, name in ipairs(enabled_flags) do
-- Index by name, to avoid iterating over all enabled_flags for every possible flag.
flags[name] = true
end
-- Flags
formspec = formspec
.. "checkbox[0.5,6.5;cb_defaults;defaults;" -- defaults
.. tostring(flags["defaults"] == true) .. "]" -- to get false if nil
.. "checkbox[5,6.5;cb_eased;eased;" -- eased
.. tostring(flags["eased"] == true) .. "]"
.. "checkbox[5,7.0;cb_absvalue;absvalue;" -- absvalue
.. tostring(flags["absvalue"] == true) .. "]"
elseif setting.type == "v3f" then
local val = get_current_value(setting)
local v3f = {}
for line in val:gmatch("[+-]?[%d.-e]+") do -- All numeric characters
table.insert(v3f, line)
end
formspec = formspec
.. "field[0.5,4;3.3,1;te_x;X;" -- X
.. core.formspec_escape(v3f[1] or "") .. "]"
.. "field[3.8,4;3.3,1;te_y;Y;" -- Y
.. core.formspec_escape(v3f[2] or "") .. "]"
.. "field[7.1,4;3.3,1;te_z;Z;" -- Z
.. core.formspec_escape(v3f[3] or "") .. "]"
elseif setting.type == "flags" then
local enabled_flags = flags_to_table(get_current_value(setting))
local flags = {}
for _, name in ipairs(enabled_flags) do
-- Index by name, to avoid iterating over all enabled_flags for every possible flag.
flags[name] = true
end
local flags_count = #setting.possible
for i, name in ipairs(setting.possible) do
local x = 0.5
local y = 3.5 + i / 2
if i - 1 >= flags_count / 2 then -- 2nd column
x = 5
y = y - flags_count / 4
end
local checkbox_name = "cb_" .. name
local is_enabled = flags[name] == true -- to get false if nil
checkboxes[checkbox_name] = is_enabled
formspec = formspec .. "checkbox["
.. x .. "," .. y
.. ";" .. checkbox_name .. ";"
.. name .. ";" .. tostring(is_enabled) .. "]"
end
else else
-- TODO: fancy input for float, int, flags, noise_params, v3f -- TODO: fancy input for float, int
local width = 10 local width = 10
local text = get_current_value(setting) local text = get_current_value(setting)
if dialogdata.error_message then if dialogdata.error_message then
@ -535,8 +711,8 @@ local function create_change_setting_formspec(dialogdata)
end end
local function handle_change_setting_buttons(this, fields) local function handle_change_setting_buttons(this, fields)
if fields["btn_done"] or fields["key_enter"] then
local setting = settings[selected_setting] local setting = settings[selected_setting]
if fields["btn_done"] or fields["key_enter"] then
if setting.type == "bool" then if setting.type == "bool" then
local new_value = fields["dd_setting_value"] local new_value = fields["dd_setting_value"]
-- Note: new_value is the actual (translated) value shown in the dropdown -- Note: new_value is the actual (translated) value shown in the dropdown
@ -579,17 +755,49 @@ local function handle_change_setting_buttons(this, fields)
core.settings:set(setting.name, new_value) core.settings:set(setting.name, new_value)
elseif setting.type == "flags" then elseif setting.type == "flags" then
local new_value = fields["te_setting_value"] local values = {}
for _,value in ipairs(new_value:split(",", true)) do for _, name in ipairs(setting.possible) do
value = value:trim() if checkboxes["cb_" .. name] then
local possible = "," .. setting.possible .. "," table.insert(values, name)
if not possible:find("," .. value .. ",", 0, true) then
this.data.error_message = fgettext_ne("\"$1\" is not a valid flag.", value)
this.data.entered_text = fields["te_setting_value"]
core.update_formspec(this:get_formspec())
return true
end end
end end
checkboxes = {}
local new_value = table.concat(values, ", ")
core.settings:set(setting.name, new_value)
elseif setting.type == "noise_params_2d" or setting.type == "noise_params_3d" then
local np_flags = {}
for _, name in ipairs(setting.flags) do
if checkboxes["cb_" .. name] then
table.insert(np_flags, name)
end
end
checkboxes = {}
local new_value = {
offset = fields["te_offset"],
scale = fields["te_scale"],
spread = {
x = fields["te_spreadx"],
y = fields["te_spready"],
z = fields["te_spreadz"]
},
seed = fields["te_seed"],
octaves = fields["te_octaves"],
persistence = fields["te_persist"],
lacunarity = fields["te_lacun"],
flags = table.concat(np_flags, ", ")
}
core.settings:set_np_group(setting.name, new_value)
elseif setting.type == "v3f" then
local new_value = "("
.. fields["te_x"] .. ", "
.. fields["te_y"] .. ", "
.. fields["te_z"] .. ")"
core.settings:set(setting.name, new_value) core.settings:set(setting.name, new_value)
else else
@ -621,6 +829,16 @@ local function handle_change_setting_buttons(this, fields)
core.update_formspec(this:get_formspec()) core.update_formspec(this:get_formspec())
end end
if setting.type == "flags"
or setting.type == "noise_params_2d"
or setting.type == "noise_params_3d" then
for name, value in pairs(fields) do
if name:sub(1, 3) == "cb_" then
checkboxes[name] = value == "true"
end
end
end
return false return false
end end
@ -659,6 +877,10 @@ local function create_settings_formspec(tabview, name, tabdata)
elseif entry.type == "key" then elseif entry.type == "key" then
-- ignore key settings, since we have a special dialog for them -- ignore key settings, since we have a special dialog for them
elseif entry.type == "noise_params_2d" or entry.type == "noise_params_3d" then
formspec = formspec .. "," .. (current_level + 1) .. "," .. core.formspec_escape(name) .. ","
.. core.formspec_escape(get_current_np_group_as_string(entry)) .. ","
else else
formspec = formspec .. "," .. (current_level + 1) .. "," .. core.formspec_escape(name) .. "," formspec = formspec .. "," .. (current_level + 1) .. "," .. core.formspec_escape(name) .. ","
.. core.formspec_escape(get_current_value(entry)) .. "," .. core.formspec_escape(get_current_value(entry)) .. ","
@ -743,7 +965,12 @@ local function handle_settings_buttons(this, fields, tabname, tabdata)
if fields["btn_restore"] then if fields["btn_restore"] then
local setting = settings[selected_setting] local setting = settings[selected_setting]
if setting and setting.type ~= "category" then if setting and setting.type ~= "category" then
if setting.type == "noise_params_2d"
or setting.type == "noise_params_3d" then
core.settings:set_np_group(setting.name, setting.default_table)
else
core.settings:set(setting.name, setting.default) core.settings:set(setting.name, setting.default)
end
core.settings:write() core.settings:write()
core.update_formspec(this:get_formspec()) core.update_formspec(this:get_formspec())
end end

@ -22,6 +22,20 @@ local minetest_example_header = [[
]] ]]
local group_format_template = [[
# %s = {
# offset = %s,
# scale = %s,
# spread = (%s, %s, %s),
# seed = %s,
# octaves = %s,
# persistence = %s,
# lacunarity = %s,
# flags = "%s"
# }
]]
local function create_minetest_conf_example() local function create_minetest_conf_example()
local result = { minetest_example_header } local result = { minetest_example_header }
for _, entry in ipairs(settings) do for _, entry in ipairs(settings) do
@ -33,6 +47,12 @@ local function create_minetest_conf_example()
insert(result, "# " .. entry.name .. "\n\n") insert(result, "# " .. entry.name .. "\n\n")
end end
else else
local group_format = false
if entry.noise_params and entry.values then
if entry.type == "noise_params_2d" or entry.type == "noise_params_3d" then
group_format = true
end
end
if entry.comment ~= "" then if entry.comment ~= "" then
for _, comment_line in ipairs(entry.comment:split("\n", true)) do for _, comment_line in ipairs(entry.comment:split("\n", true)) do
insert(result, "# " .. comment_line .. "\n") insert(result, "# " .. comment_line .. "\n")
@ -45,13 +65,19 @@ local function create_minetest_conf_example()
if entry.max then if entry.max then
insert(result, " max: " .. entry.max) insert(result, " max: " .. entry.max)
end end
if entry.values then if entry.values and entry.noise_params == nil then
insert(result, " values: " .. concat(entry.values, ", ")) insert(result, " values: " .. concat(entry.values, ", "))
end end
if entry.possible then if entry.possible then
insert(result, " possible values: " .. entry.possible:gsub(",", ", ")) insert(result, " possible values: " .. concat(entry.possible, ", "))
end end
insert(result, "\n") insert(result, "\n")
if group_format == true then
insert(result, sprintf(group_format_template, entry.name, entry.values[1],
entry.values[2], entry.values[3], entry.values[4], entry.values[5],
entry.values[6], entry.values[7], entry.values[8], entry.values[9],
entry.values[10]))
else
local append local append
if entry.default ~= "" then if entry.default ~= "" then
append = " " .. entry.default append = " " .. entry.default
@ -59,6 +85,7 @@ local function create_minetest_conf_example()
insert(result, sprintf("# %s =%s\n\n", entry.name, append or "")) insert(result, sprintf("# %s =%s\n\n", entry.name, append or ""))
end end
end end
end
return concat(result) return concat(result)
end end

@ -15,7 +15,9 @@
# - filepath # - filepath
# - key (will be ignored in GUI, since a special key change dialog exists) # - key (will be ignored in GUI, since a special key change dialog exists)
# - flags # - flags
# - noise_params # - noise_params_2d
# - noise_params_3d
# - v3f
# #
# `type_args` can be: # `type_args` can be:
# * int: # * int:
@ -39,8 +41,15 @@
# * flags: # * flags:
# Flags are always separated by comma without spaces. # Flags are always separated by comma without spaces.
# - default possible_flags # - default possible_flags
# * noise_params: # * noise_params_2d:
# TODO: these are currently treated like strings # Format is <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, <octaves>, <persistance>, <lacunarity>[, <default flags>]
# - default
# * noise_params_3d:
# Format is <offset>, <scale>, (<spreadX>, <spreadY>, <spreadZ>), <seed>, <octaves>, <persistance>, <lacunarity>[, <default flags>]
# - default
# * v3f:
# Format is (<X>, <Y>, <Z>)
# - default
# #
# Comments directly above a setting are bound to this setting. # Comments directly above a setting are bound to this setting.
# All other comments are ignored. # All other comments are ignored.
@ -1239,7 +1248,7 @@ mapgen_limit (Map generation limit) int 31000 0 31000
# Global map generation attributes. # Global map generation attributes.
# In Mapgen v6 the 'decorations' flag controls all decorations except trees # In Mapgen v6 the 'decorations' flag controls all decorations except trees
# and junglegrass, in all other mapgens this flag controls all decorations. # and junglegrass, in all other mapgens this flag controls all decorations.
# Flags that are not specified in the flag string are not modified from the default. # Flags that are not enabled are not modified from the default.
# Flags starting with 'no' are used to explicitly disable them. # Flags starting with 'no' are used to explicitly disable them.
mg_flags (Mapgen flags) flags caves,dungeons,light,decorations caves,dungeons,light,decorations,nocaves,nodungeons,nolight,nodecorations mg_flags (Mapgen flags) flags caves,dungeons,light,decorations caves,dungeons,light,decorations,nocaves,nodungeons,nolight,nodecorations
@ -1249,21 +1258,21 @@ projecting_dungeons (Projecting dungeons) bool true
[*Biome API temperature and humidity noise parameters] [*Biome API temperature and humidity noise parameters]
# Temperature variation for biomes. # Temperature variation for biomes.
mg_biome_np_heat (Heat noise) noise_params 50, 50, (1000, 1000, 1000), 5349, 3, 0.5, 2.0 mg_biome_np_heat (Heat noise) noise_params_2d 50, 50, (1000, 1000, 1000), 5349, 3, 0.5, 2.0, eased
# Small-scale temperature variation for blending biomes on borders. # Small-scale temperature variation for blending biomes on borders.
mg_biome_np_heat_blend (Heat blend noise) noise_params 0, 1.5, (8, 8, 8), 13, 2, 1.0, 2.0 mg_biome_np_heat_blend (Heat blend noise) noise_params_2d 0, 1.5, (8, 8, 8), 13, 2, 1.0, 2.0, eased
# Humidity variation for biomes. # Humidity variation for biomes.
mg_biome_np_humidity (Humidity noise) noise_params 50, 50, (1000, 1000, 1000), 842, 3, 0.5, 2.0 mg_biome_np_humidity (Humidity noise) noise_params_2d 50, 50, (1000, 1000, 1000), 842, 3, 0.5, 2.0, eased
# Small-scale humidity variation for blending biomes on borders. # Small-scale humidity variation for blending biomes on borders.
mg_biome_np_humidity_blend (Humidity blend noise) noise_params 0, 1.5, (8, 8, 8), 90003, 2, 1.0, 2.0 mg_biome_np_humidity_blend (Humidity blend noise) noise_params_2d 0, 1.5, (8, 8, 8), 90003, 2, 1.0, 2.0, eased
[*Mapgen V5] [*Mapgen V5]
# Map generation attributes specific to Mapgen v5. # Map generation attributes specific to Mapgen v5.
# Flags that are not specified in the flag string are not modified from the default. # Flags that are not enabled are not modified from the default.
# Flags starting with 'no' are used to explicitly disable them. # Flags starting with 'no' are used to explicitly disable them.
mgv5_spflags (Mapgen V5 specific flags) flags caverns caverns,nocaverns mgv5_spflags (Mapgen V5 specific flags) flags caverns caverns,nocaverns
@ -1288,39 +1297,26 @@ mgv5_cavern_threshold (Cavern threshold) float 0.7
[**Noises] [**Noises]
# Variation of biome filler depth. # Variation of biome filler depth.
mgv5_np_filler_depth (Filler depth noise) noise_params 0, 1, (150, 150, 150), 261, 4, 0.7, 2.0 mgv5_np_filler_depth (Filler depth noise) noise_params_2d 0, 1, (150, 150, 150), 261, 4, 0.7, 2.0, eased
# Variation of terrain vertical scale. # Variation of terrain vertical scale.
# When noise is < -0.55 terrain is near-flat. # When noise is < -0.55 terrain is near-flat.
mgv5_np_factor (Factor noise) noise_params 0, 1, (250, 250, 250), 920381, 3, 0.45, 2.0 mgv5_np_factor (Factor noise) noise_params_2d 0, 1, (250, 250, 250), 920381, 3, 0.45, 2.0, eased
# Y-level of average terrain surface. # Y-level of average terrain surface.
mgv5_np_height (Height noise) noise_params 0, 10, (250, 250, 250), 84174, 4, 0.5, 2.0 mgv5_np_height (Height noise) noise_params_2d 0, 10, (250, 250, 250), 84174, 4, 0.5, 2.0, eased
# First of 2 3D noises that together define tunnels. # First of 2 3D noises that together define tunnels.
mgv5_np_cave1 (Cave1 noise) noise_params 0, 12, (50, 50, 50), 52534, 4, 0.5, 2.0 mgv5_np_cave1 (Cave1 noise) noise_params_3d 0, 12, (50, 50, 50), 52534, 4, 0.5, 2.0
# Second of 2 3D noises that together define tunnels. # Second of 2 3D noises that together define tunnels.
mgv5_np_cave2 (Cave2 noise) noise_params 0, 12, (50, 50, 50), 10325, 4, 0.5, 2.0 mgv5_np_cave2 (Cave2 noise) noise_params_3d 0, 12, (50, 50, 50), 10325, 4, 0.5, 2.0
# 3D noise defining giant caverns. # 3D noise defining giant caverns.
mgv5_np_cavern (Cavern noise) noise_params 0, 1, (384, 128, 384), 723, 5, 0.63, 2.0 mgv5_np_cavern (Cavern noise) noise_params_3d 0, 1, (384, 128, 384), 723, 5, 0.63, 2.0
# TODO
# Noise parameters in group format, unsupported by advanced settings
# menu but settable in minetest.conf.
# See documentation of noise parameter formats in minetest.conf.example.
# 3D noise defining terrain. # 3D noise defining terrain.
#mgv5_np_ground = { mgv5_np_ground (Ground noise) noise_params_3d 0, 40, (80, 80, 80), 983240, 4, 0.55, 2.0, eased
# offset = 0
# scale = 40
# spread = (80, 80, 80)
# seed = 983240
# octaves = 4
# persistence = 0.55
# lacunarity = 2.0
# flags = "eased"
#}
[*Mapgen V6] [*Mapgen V6]
@ -1328,7 +1324,7 @@ mgv5_np_cavern (Cavern noise) noise_params 0, 1, (384, 128, 384), 723, 5, 0.63,
# The 'snowbiomes' flag enables the new 5 biome system. # The 'snowbiomes' flag enables the new 5 biome system.
# When the new biome system is enabled jungles are automatically enabled and # When the new biome system is enabled jungles are automatically enabled and
# the 'jungles' flag is ignored. # the 'jungles' flag is ignored.
# Flags that are not specified in the flag string are not modified from the default. # Flags that are not enabled are not modified from the default.
# Flags starting with 'no' are used to explicitly disable them. # Flags starting with 'no' are used to explicitly disable them.
mgv6_spflags (Mapgen V6 specific flags) flags jungles,biomeblend,mudflow,snowbiomes,trees jungles,biomeblend,mudflow,snowbiomes,flat,trees,nojungles,nobiomeblend,nomudflow,nosnowbiomes,noflat,notrees mgv6_spflags (Mapgen V6 specific flags) flags jungles,biomeblend,mudflow,snowbiomes,trees jungles,biomeblend,mudflow,snowbiomes,flat,trees,nojungles,nobiomeblend,nomudflow,nosnowbiomes,noflat,notrees
@ -1342,43 +1338,43 @@ mgv6_freq_beach (Beach noise threshold) float 0.15
[**Noises] [**Noises]
# Y-level of lower terrain and lakebeds. # Y-level of lower terrain and lakebeds.
mgv6_np_terrain_base (Terrain base noise) noise_params -4, 20, (250, 250, 250), 82341, 5, 0.6, 2.0 mgv6_np_terrain_base (Terrain base noise) noise_params_2d -4, 20, (250, 250, 250), 82341, 5, 0.6, 2.0, eased
# Y-level of higher (cliff-top) terrain. # Y-level of higher (cliff-top) terrain.
mgv6_np_terrain_higher (Terrain higher noise) noise_params 20, 16, (500, 500, 500), 85039, 5, 0.6, 2.0 mgv6_np_terrain_higher (Terrain higher noise) noise_params_2d 20, 16, (500, 500, 500), 85039, 5, 0.6, 2.0, eased
# Varies steepness of cliffs. # Varies steepness of cliffs.
mgv6_np_steepness (Steepness noise) noise_params 0.85, 0.5, (125, 125, 125), -932, 5, 0.7, 2.0 mgv6_np_steepness (Steepness noise) noise_params_2d 0.85, 0.5, (125, 125, 125), -932, 5, 0.7, 2.0, eased
# Defines areas of 'terrain_higher' (cliff-top terrain). # Defines areas of 'terrain_higher' (cliff-top terrain).
mgv6_np_height_select (Height select noise) noise_params 0.5, 1, (250, 250, 250), 4213, 5, 0.69, 2.0 mgv6_np_height_select (Height select noise) noise_params_2d 0.5, 1, (250, 250, 250), 4213, 5, 0.69, 2.0, eased
# Varies depth of biome surface nodes. # Varies depth of biome surface nodes.
mgv6_np_mud (Mud noise) noise_params 4, 2, (200, 200, 200), 91013, 3, 0.55, 2.0 mgv6_np_mud (Mud noise) noise_params_2d 4, 2, (200, 200, 200), 91013, 3, 0.55, 2.0, eased
# Defines areas with sandy beaches. # Defines areas with sandy beaches.
mgv6_np_beach (Beach noise) noise_params 0, 1, (250, 250, 250), 59420, 3, 0.50, 2.0 mgv6_np_beach (Beach noise) noise_params_2d 0, 1, (250, 250, 250), 59420, 3, 0.50, 2.0, eased
# Temperature variation for biomes. # Temperature variation for biomes.
mgv6_np_biome (Biome noise) noise_params 0, 1, (500, 500, 500), 9130, 3, 0.50, 2.0 mgv6_np_biome (Biome noise) noise_params_2d 0, 1, (500, 500, 500), 9130, 3, 0.50, 2.0, eased
# Variation of number of caves. # Variation of number of caves.
mgv6_np_cave (Cave noise) noise_params 6, 6, (250, 250, 250), 34329, 3, 0.50, 2.0 mgv6_np_cave (Cave noise) noise_params_2d 6, 6, (250, 250, 250), 34329, 3, 0.50, 2.0, eased
# Humidity variation for biomes. # Humidity variation for biomes.
mgv6_np_humidity (Humidity noise) noise_params 0.5, 0.5, (500, 500, 500), 72384, 3, 0.50, 2.0 mgv6_np_humidity (Humidity noise) noise_params_2d 0.5, 0.5, (500, 500, 500), 72384, 3, 0.50, 2.0, eased
# Defines tree areas and tree density. # Defines tree areas and tree density.
mgv6_np_trees (Trees noise) noise_params 0, 1, (125, 125, 125), 2, 4, 0.66, 2.0 mgv6_np_trees (Trees noise) noise_params_2d 0, 1, (125, 125, 125), 2, 4, 0.66, 2.0, eased
# Defines areas where trees have apples. # Defines areas where trees have apples.
mgv6_np_apple_trees (Apple trees noise) noise_params 0, 1, (100, 100, 100), 342902, 3, 0.45, 2.0 mgv6_np_apple_trees (Apple trees noise) noise_params_2d 0, 1, (100, 100, 100), 342902, 3, 0.45, 2.0, eased
[*Mapgen V7] [*Mapgen V7]
# Map generation attributes specific to Mapgen v7. # Map generation attributes specific to Mapgen v7.
# 'ridges' enables the rivers. # 'ridges' enables the rivers.
# Flags that are not specified in the flag string are not modified from the default. # Flags that are not enabled are not modified from the default.
# Flags starting with 'no' are used to explicitly disable them. # Flags starting with 'no' are used to explicitly disable them.
mgv7_spflags (Mapgen V7 specific flags) flags mountains,ridges,nofloatlands,caverns mountains,ridges,floatlands,caverns,nomountains,noridges,nofloatlands,nocaverns mgv7_spflags (Mapgen V7 specific flags) flags mountains,ridges,nofloatlands,caverns mountains,ridges,floatlands,caverns,nomountains,noridges,nofloatlands,nocaverns
@ -1419,54 +1415,54 @@ mgv7_cavern_threshold (Cavern threshold) float 0.7
[**Noises] [**Noises]
# Y-level of higher (cliff-top) terrain. # Y-level of higher (cliff-top) terrain.
mgv7_np_terrain_base (Terrain base noise) noise_params 4, 70, (600, 600, 600), 82341, 5, 0.6, 2.0 mgv7_np_terrain_base (Terrain base noise) noise_params_2d 4, 70, (600, 600, 600), 82341, 5, 0.6, 2.0, eased
# Y-level of lower terrain and lakebeds. # Y-level of lower terrain and lakebeds.
mgv7_np_terrain_alt (Terrain alt noise) noise_params 4, 25, (600, 600, 600), 5934, 5, 0.6, 2.0 mgv7_np_terrain_alt (Terrain alt noise) noise_params_2d 4, 25, (600, 600, 600), 5934, 5, 0.6, 2.0, eased
# Varies roughness of terrain. # Varies roughness of terrain.
# Defines the 'persistence' value for terrain_base and terrain_alt noises. # Defines the 'persistence' value for terrain_base and terrain_alt noises.
mgv7_np_terrain_persist (Terrain persistence noise) noise_params 0.6, 0.1, (2000, 2000, 2000), 539, 3, 0.6, 2.0 mgv7_np_terrain_persist (Terrain persistence noise) noise_params_2d 0.6, 0.1, (2000, 2000, 2000), 539, 3, 0.6, 2.0, eased
# Defines areas of higher (cliff-top) terrain and affects steepness of cliffs. # Defines areas of higher (cliff-top) terrain and affects steepness of cliffs.
mgv7_np_height_select (Height select noise) noise_params -8, 16, (500, 500, 500), 4213, 6, 0.7, 2.0 mgv7_np_height_select (Height select noise) noise_params_2d -8, 16, (500, 500, 500), 4213, 6, 0.7, 2.0, eased
# Variation of biome filler depth. # Variation of biome filler depth.
mgv7_np_filler_depth (Filler depth noise) noise_params 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0 mgv7_np_filler_depth (Filler depth noise) noise_params_2d 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0, eased
# Variation of maximum mountain height (in nodes). # Variation of maximum mountain height (in nodes).
mgv7_np_mount_height (Mountain height noise) noise_params 256, 112, (1000, 1000, 1000), 72449, 3, 0.6, 2.0 mgv7_np_mount_height (Mountain height noise) noise_params_2d 256, 112, (1000, 1000, 1000), 72449, 3, 0.6, 2.0, eased
# Defines large-scale river channel structure. # Defines large-scale river channel structure.
mgv7_np_ridge_uwater (Ridge underwater noise) noise_params 0, 1, (1000, 1000, 1000), 85039, 5, 0.6, 2.0 mgv7_np_ridge_uwater (Ridge underwater noise) noise_params_2d 0, 1, (1000, 1000, 1000), 85039, 5, 0.6, 2.0, eased
# Defines areas of floatland smooth terrain. # Defines areas of floatland smooth terrain.
# Smooth floatlands occur when noise > 0. # Smooth floatlands occur when noise > 0.
mgv7_np_floatland_base (Floatland base noise) noise_params -0.6, 1.5, (600, 600, 600), 114, 5, 0.6, 2.0 mgv7_np_floatland_base (Floatland base noise) noise_params_2d -0.6, 1.5, (600, 600, 600), 114, 5, 0.6, 2.0, eased
# Variation of hill height and lake depth on floatland smooth terrain. # Variation of hill height and lake depth on floatland smooth terrain.
mgv7_np_float_base_height (Floatland base height noise) noise_params 48, 24, (300, 300, 300), 907, 4, 0.7, 2.0 mgv7_np_float_base_height (Floatland base height noise) noise_params_2d 48, 24, (300, 300, 300), 907, 4, 0.7, 2.0, eased
# 3D noise defining mountain structure and height. # 3D noise defining mountain structure and height.
# Also defines structure of floatland mountain terrain. # Also defines structure of floatland mountain terrain.
mgv7_np_mountain (Mountain noise) noise_params -0.6, 1, (250, 350, 250), 5333, 5, 0.63, 2.0 mgv7_np_mountain (Mountain noise) noise_params_3d -0.6, 1, (250, 350, 250), 5333, 5, 0.63, 2.0
# 3D noise defining structure of river canyon walls. # 3D noise defining structure of river canyon walls.
mgv7_np_ridge (Ridge noise) noise_params 0, 1, (100, 100, 100), 6467, 4, 0.75, 2.0 mgv7_np_ridge (Ridge noise) noise_params_3d 0, 1, (100, 100, 100), 6467, 4, 0.75, 2.0
# 3D noise defining giant caverns. # 3D noise defining giant caverns.
mgv7_np_cavern (Cavern noise) noise_params 0, 1, (384, 128, 384), 723, 5, 0.63, 2.0 mgv7_np_cavern (Cavern noise) noise_params_3d 0, 1, (384, 128, 384), 723, 5, 0.63, 2.0
# First of 2 3D noises that together define tunnels. # First of 2 3D noises that together define tunnels.
mgv7_np_cave1 (Cave1 noise) noise_params 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0 mgv7_np_cave1 (Cave1 noise) noise_params_3d 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
# Second of 2 3D noises that together define tunnels. # Second of 2 3D noises that together define tunnels.
mgv7_np_cave2 (Cave2 noise) noise_params 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0 mgv7_np_cave2 (Cave2 noise) noise_params_3d 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
[*Mapgen Carpathian] [*Mapgen Carpathian]
# Map generation attributes specific to Mapgen Carpathian. # Map generation attributes specific to Mapgen Carpathian.
# Flags that are not specified in the flag string are not modified from the default. # Flags that are not enabled are not modified from the default.
# Flags starting with 'no' are used to explicitly disable them. # Flags starting with 'no' are used to explicitly disable them.
mgcarpathian_spflags (Mapgen Carpathian specific flags) flags caverns caverns,nocaverns mgcarpathian_spflags (Mapgen Carpathian specific flags) flags caverns caverns,nocaverns
@ -1491,58 +1487,58 @@ mgcarpathian_cavern_threshold (Cavern threshold) float 0.7
[**Noises] [**Noises]
# 2D noise that defines the base ground level. # 2D noise that defines the base ground level.
mgcarpathian_np_base (Base ground noise) noise_params 12, 1, (2557, 2557, 2557), 6538, 4, 0.8, 0.5 mgcarpathian_np_base (Base ground noise) noise_params_2d 12, 1, (2557, 2557, 2557), 6538, 4, 0.8, 0.5, eased
# Variation of biome filler depth. # Variation of biome filler depth.
mgcarpathian_np_filler_depth (Filler depth noise) noise_params 0, 1, (128, 128, 128), 261, 3, 0.7, 2.0 mgcarpathian_np_filler_depth (Filler depth noise) noise_params_2d 0, 1, (128, 128, 128), 261, 3, 0.7, 2.0, eased
# First of 4 3D noises that together define hill/mountain range height. # First of 4 2D noises that together define hill/mountain range height.
mgcarpathian_np_height1 (Hilliness1 noise) noise_params 0, 5, (251, 251, 251), 9613, 5, 0.5, 2.0 mgcarpathian_np_height1 (Hilliness1 noise) noise_params_2d 0, 5, (251, 251, 251), 9613, 5, 0.5, 2.0, eased
# Second of 4 3D noises that together define hill/mountain range height. # Second of 4 2D noises that together define hill/mountain range height.
mgcarpathian_np_height2 (Hilliness2 noise) noise_params 0, 5, (383, 383, 383), 1949, 5, 0.5, 2.0 mgcarpathian_np_height2 (Hilliness2 noise) noise_params_2d 0, 5, (383, 383, 383), 1949, 5, 0.5, 2.0, eased
# Third of 4 3D noises that together define hill/mountain range height. # Third of 4 2D noises that together define hill/mountain range height.
mgcarpathian_np_height3 (Hilliness3 noise) noise_params 0, 5, (509, 509, 509), 3211, 5, 0.5, 2.0 mgcarpathian_np_height3 (Hilliness3 noise) noise_params_2d 0, 5, (509, 509, 509), 3211, 5, 0.5, 2.0, eased
# Fourth of 4 3D noises that together define hill/mountain range height. # Fourth of 4 2D noises that together define hill/mountain range height.
mgcarpathian_np_height4 (Hilliness4 noise) noise_params 0, 5, (631, 631, 631), 1583, 5, 0.5, 2.0 mgcarpathian_np_height4 (Hilliness4 noise) noise_params_2d 0, 5, (631, 631, 631), 1583, 5, 0.5, 2.0, eased
# 2D noise that controls the size/occurance of rolling hills. # 2D noise that controls the size/occurance of rolling hills.
mgcarpathian_np_hills_terrain (Rolling hills spread noise) noise_params 1, 1, (1301, 1301, 1301), 1692, 3, 0.5, 2.0 mgcarpathian_np_hills_terrain (Rolling hills spread noise) noise_params_2d 1, 1, (1301, 1301, 1301), 1692, 3, 0.5, 2.0, eased
# 2D noise that controls the size/occurance of ridged mountain ranges. # 2D noise that controls the size/occurance of ridged mountain ranges.
mgcarpathian_np_ridge_terrain (Ridge mountain spread noise) noise_params 1, 1, (1889, 1889, 1889), 3568, 3, 0.5, 2.0 mgcarpathian_np_ridge_terrain (Ridge mountain spread noise) noise_params_2d 1, 1, (1889, 1889, 1889), 3568, 3, 0.5, 2.0, eased
# 2D noise that controls the size/occurance of step mountain ranges. # 2D noise that controls the size/occurance of step mountain ranges.
mgcarpathian_np_step_terrain (Step mountain spread noise) noise_params 1, 1, (1889, 1889, 1889), 4157, 3, 0.5, 2.0 mgcarpathian_np_step_terrain (Step mountain spread noise) noise_params_2d 1, 1, (1889, 1889, 1889), 4157, 3, 0.5, 2.0, eased
# 2D noise that controls the shape/size of rolling hills. # 2D noise that controls the shape/size of rolling hills.
mgcarpathian_np_hills (Rolling hill size noise) noise_params 0, 3, (257, 257, 257), 6604, 6, 0.5, 2.0 mgcarpathian_np_hills (Rolling hill size noise) noise_params_2d 0, 3, (257, 257, 257), 6604, 6, 0.5, 2.0, eased
# 2D noise that controls the shape/size of ridged mountains. # 2D noise that controls the shape/size of ridged mountains.
mgcarpathian_np_ridge_mnt (Ridged mountain size noise) noise_params 0, 12, (743, 743, 743), 5520, 6, 0.7, 2.0 mgcarpathian_np_ridge_mnt (Ridged mountain size noise) noise_params_2d 0, 12, (743, 743, 743), 5520, 6, 0.7, 2.0, eased
# 2D noise that controls the shape/size of step mountains. # 2D noise that controls the shape/size of step mountains.
mgcarpathian_np_step_mnt (Step mountain size noise) noise_params 0, 8, (509, 509, 509), 2590, 6, 0.6, 2.0 mgcarpathian_np_step_mnt (Step mountain size noise) noise_params_2d 0, 8, (509, 509, 509), 2590, 6, 0.6, 2.0, eased
# 3D noise for mountain overhangs, cliffs, etc. Usually small variations. # 3D noise for mountain overhangs, cliffs, etc. Usually small variations.
mgcarpathian_np_mnt_var (Mountain variation noise) noise_params 0, 1, (499, 499, 499), 2490, 5, 0.55, 2.0 mgcarpathian_np_mnt_var (Mountain variation noise) noise_params_3d 0, 1, (499, 499, 499), 2490, 5, 0.55, 2.0
# First of 2 3D noises that together define tunnels. # First of 2 3D noises that together define tunnels.
mgcarpathian_np_cave1 (Cave1 noise) noise_params 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0 mgcarpathian_np_cave1 (Cave1 noise) noise_params_3d 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
# Second of 2 3D noises that together define tunnels. # Second of 2 3D noises that together define tunnels.
mgcarpathian_np_cave2 (Cave2 noise) noise_params 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0 mgcarpathian_np_cave2 (Cave2 noise) noise_params_3d 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
# 3D noise defining giant caverns. # 3D noise defining giant caverns.
mgcarpathian_np_cavern (Cavern noise) noise_params 0, 1, (384, 128, 384), 723, 5, 0.63, 2.0 mgcarpathian_np_cavern (Cavern noise) noise_params_3d 0, 1, (384, 128, 384), 723, 5, 0.63, 2.0
[*Mapgen Flat] [*Mapgen Flat]
# Map generation attributes specific to Mapgen flat. # Map generation attributes specific to Mapgen flat.
# Occasional lakes and hills can be added to the flat world. # Occasional lakes and hills can be added to the flat world.
# Flags that are not specified in the flag string are not modified from the default. # Flags that are not enabled are not modified from the default.
# Flags starting with 'no' are used to explicitly disable them. # Flags starting with 'no' are used to explicitly disable them.
mgflat_spflags (Mapgen Flat specific flags) flags nolakes,nohills lakes,hills,nolakes,nohills mgflat_spflags (Mapgen Flat specific flags) flags nolakes,nohills lakes,hills,nolakes,nohills
@ -1577,16 +1573,16 @@ mgflat_hill_steepness (Hill steepness) float 64.0
[**Noises] [**Noises]
# Defines location and terrain of optional hills and lakes. # Defines location and terrain of optional hills and lakes.
mgflat_np_terrain (Terrain noise) noise_params 0, 1, (600, 600, 600), 7244, 5, 0.6, 2.0 mgflat_np_terrain (Terrain noise) noise_params_2d 0, 1, (600, 600, 600), 7244, 5, 0.6, 2.0, eased
# Variation of biome filler depth. # Variation of biome filler depth.
mgflat_np_filler_depth (Filler depth noise) noise_params 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0 mgflat_np_filler_depth (Filler depth noise) noise_params_2d 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0, eased
# First of 2 3D noises that together define tunnels. # First of 2 3D noises that together define tunnels.
mgflat_np_cave1 (Cave1 noise) noise_params 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0 mgflat_np_cave1 (Cave1 noise) noise_params_3d 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
# Second of 2 3D noises that together define tunnels. # Second of 2 3D noises that together define tunnels.
mgflat_np_cave2 (Cave2 noise) noise_params 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0 mgflat_np_cave2 (Cave2 noise) noise_params_3d 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
[*Mapgen Fractal] [*Mapgen Fractal]
@ -1659,16 +1655,16 @@ mgfractal_julia_w (Julia w) float 0.33
[**Noises] [**Noises]
# Y-level of seabed. # Y-level of seabed.
mgfractal_np_seabed (Seabed noise) noise_params -14, 9, (600, 600, 600), 41900, 5, 0.6, 2.0 mgfractal_np_seabed (Seabed noise) noise_params_2d -14, 9, (600, 600, 600), 41900, 5, 0.6, 2.0, eased
# Variation of biome filler depth. # Variation of biome filler depth.
mgfractal_np_filler_depth (Filler depth noise) noise_params 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0 mgfractal_np_filler_depth (Filler depth noise) noise_params_2d 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0, eased
# First of 2 3D noises that together define tunnels. # First of 2 3D noises that together define tunnels.
mgfractal_np_cave1 (Cave1 noise) noise_params 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0 mgfractal_np_cave1 (Cave1 noise) noise_params_3d 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
# Second of 2 3D noises that together define tunnels. # Second of 2 3D noises that together define tunnels.
mgfractal_np_cave2 (Cave2 noise) noise_params 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0 mgfractal_np_cave2 (Cave2 noise) noise_params_3d 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
[*Mapgen Valleys] [*Mapgen Valleys]
@ -1676,7 +1672,7 @@ mgfractal_np_cave2 (Cave2 noise) noise_params 0, 12, (67, 67, 67), 10325, 3, 0.5
# 'altitude_chill' makes higher elevations colder, which may cause biome issues. # 'altitude_chill' makes higher elevations colder, which may cause biome issues.
# 'humid_rivers' modifies the humidity around rivers and in areas where water would tend to pool, # 'humid_rivers' modifies the humidity around rivers and in areas where water would tend to pool,
# it may interfere with delicately adjusted biomes. # it may interfere with delicately adjusted biomes.
# Flags that are not specified in the flag string are not modified from the default. # Flags that are not enabled are not modified from the default.
# Flags starting with 'no' are used to explicitly disable them. # Flags starting with 'no' are used to explicitly disable them.
mg_valleys_spflags (Mapgen Valleys specific flags) flags altitude_chill,humid_rivers altitude_chill,noaltitude_chill,humid_rivers,nohumid_rivers mg_valleys_spflags (Mapgen Valleys specific flags) flags altitude_chill,humid_rivers altitude_chill,noaltitude_chill,humid_rivers,nohumid_rivers
@ -1709,34 +1705,34 @@ mgvalleys_cave_width (Cave width) float 0.09
[**Noises] [**Noises]
# Caves and tunnels form at the intersection of the two noises # Caves and tunnels form at the intersection of the two noises
mgvalleys_np_cave1 (Cave noise #1) noise_params 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0 mgvalleys_np_cave1 (Cave noise #1) noise_params_3d 0, 12, (61, 61, 61), 52534, 3, 0.5, 2.0
# Caves and tunnels form at the intersection of the two noises # Caves and tunnels form at the intersection of the two noises
mgvalleys_np_cave2 (Cave noise #2) noise_params 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0 mgvalleys_np_cave2 (Cave noise #2) noise_params_3d 0, 12, (67, 67, 67), 10325, 3, 0.5, 2.0
# The depth of dirt or other filler # The depth of dirt or other filler
mgvalleys_np_filler_depth (Filler Depth) noise_params 0, 1.2, (256, 256, 256), 1605, 3, 0.5, 2.0 mgvalleys_np_filler_depth (Filler Depth) noise_params_2d 0, 1.2, (256, 256, 256), 1605, 3, 0.5, 2.0, eased
# Massive caves form here. # Massive caves form here.
mgvalleys_np_massive_caves (Massive cave noise) noise_params 0, 1, (768, 256, 768), 59033, 6, 0.63, 2.0 mgvalleys_np_massive_caves (Massive cave noise) noise_params_3d 0, 1, (768, 256, 768), 59033, 6, 0.63, 2.0
# River noise -- rivers occur close to zero # River noise -- rivers occur close to zero
mgvalleys_np_rivers (River Noise) noise_params 0, 1, (256, 256, 256), -6050, 5, 0.6, 2.0 mgvalleys_np_rivers (River Noise) noise_params_2d 0, 1, (256, 256, 256), -6050, 5, 0.6, 2.0, eased
# Base terrain height # Base terrain height
mgvalleys_np_terrain_height (Terrain Height) noise_params -10, 50, (1024, 1024, 1024), 5202, 6, 0.4, 2.0 mgvalleys_np_terrain_height (Terrain Height) noise_params_2d -10, 50, (1024, 1024, 1024), 5202, 6, 0.4, 2.0, eased
# Raises terrain to make valleys around the rivers # Raises terrain to make valleys around the rivers
mgvalleys_np_valley_depth (Valley Depth) noise_params 5, 4, (512, 512, 512), -1914, 1, 1.0, 2.0 mgvalleys_np_valley_depth (Valley Depth) noise_params_2d 5, 4, (512, 512, 512), -1914, 1, 1.0, 2.0, eased
# Slope and fill work together to modify the heights # Slope and fill work together to modify the heights
mgvalleys_np_inter_valley_fill (Valley Fill) noise_params 0, 1, (256, 512, 256), 1993, 6, 0.8, 2.0 mgvalleys_np_inter_valley_fill (Valley Fill) noise_params_3d 0, 1, (256, 512, 256), 1993, 6, 0.8, 2.0
# Amplifies the valleys # Amplifies the valleys
mgvalleys_np_valley_profile (Valley Profile) noise_params 0.6, 0.5, (512, 512, 512), 777, 1, 1.0, 2.0 mgvalleys_np_valley_profile (Valley Profile) noise_params_2d 0.6, 0.5, (512, 512, 512), 777, 1, 1.0, 2.0, eased
# Slope and fill work together to modify the heights # Slope and fill work together to modify the heights
mgvalleys_np_inter_valley_slope (Valley Slope) noise_params 0.5, 0.5, (128, 128, 128), 746, 1, 1.0, 2.0 mgvalleys_np_inter_valley_slope (Valley Slope) noise_params_2d 0.5, 0.5, (128, 128, 128), 746, 1, 1.0, 2.0, eased
[*Advanced] [*Advanced]

@ -1043,13 +1043,13 @@ Accumulates the absolute value of each noise gradient result.
Noise parameters format example for 2D or 3D perlin noise or perlin noise maps: Noise parameters format example for 2D or 3D perlin noise or perlin noise maps:
np_terrain = { np_terrain = {
offset = 0, offset = "0",
scale = 1, scale = "1",
spread = {x=500, y=500, z=500}, spread = {x="500", y="500", z="500"},
seed = 571347, seed = 571347,
octaves = 5, octaves = 5,
persist = 0.63, persist = "0.63",
lacunarity = 2.0, lacunarity = "2.0",
flags = "defaults, absvalue" flags = "defaults, absvalue"
} }
^ A single noise parameter table can be used to get 2D or 3D noise, ^ A single noise parameter table can be used to get 2D or 3D noise,
@ -4024,12 +4024,16 @@ It can be created via `Settings(filename)`.
#### Methods #### Methods
* `get(key)`: returns a value * `get(key)`: returns a value
* `get_bool(key)`: returns a boolean * `get_bool(key)`: returns a boolean
* `get_np_group(key)`: returns a NoiseParams table
* `set(key, value)` * `set(key, value)`
* Setting names can't contain whitespace or any of `="{}#`. * Setting names can't contain whitespace or any of `="{}#`.
* Setting values can't contain the sequence `\n"""`. * Setting values can't contain the sequence `\n"""`.
* Setting names starting with "secure." can't be set on the main settings object (`minetest.settings`). * Setting names starting with "secure." can't be set on the main settings object (`minetest.settings`).
* `set_bool(key, value)` * `set_bool(key, value)`
* See documentation for set() above. * See documentation for set() above.
* `set_np_group(key, value)`
* `value` is a NoiseParams table.
* Also, see documentation for set() above.
* `remove(key)`: returns a boolean (`true` for success) * `remove(key)`: returns a boolean (`true` for success)
* `get_names()`: returns `{key1,...}` * `get_names()`: returns `{key1,...}`
* `write()`: returns a boolean (`true` for success) * `write()`: returns a boolean (`true` for success)

@ -1586,13 +1586,13 @@ bool read_noiseparams(lua_State *L, int index, NoiseParams *np)
void push_noiseparams(lua_State *L, NoiseParams *np) void push_noiseparams(lua_State *L, NoiseParams *np)
{ {
lua_newtable(L); lua_newtable(L);
lua_pushnumber(L, np->offset); push_float_string(L, np->offset);
lua_setfield(L, -2, "offset"); lua_setfield(L, -2, "offset");
lua_pushnumber(L, np->scale); push_float_string(L, np->scale);
lua_setfield(L, -2, "scale"); lua_setfield(L, -2, "scale");
lua_pushnumber(L, np->persist); push_float_string(L, np->persist);
lua_setfield(L, -2, "persistence"); lua_setfield(L, -2, "persistence");
lua_pushnumber(L, np->lacunarity); push_float_string(L, np->lacunarity);
lua_setfield(L, -2, "lacunarity"); lua_setfield(L, -2, "lacunarity");
lua_pushnumber(L, np->seed); lua_pushnumber(L, np->seed);
lua_setfield(L, -2, "seed"); lua_setfield(L, -2, "seed");
@ -1603,7 +1603,7 @@ void push_noiseparams(lua_State *L, NoiseParams *np)
np->flags); np->flags);
lua_setfield(L, -2, "flags"); lua_setfield(L, -2, "flags");
push_v3f(L, np->spread); push_v3_float_string(L, np->spread);
lua_setfield(L, -2, "spread"); lua_setfield(L, -2, "spread");
} }

@ -51,6 +51,15 @@ if (value < F1000_MIN || value > F1000_MAX) { \
#define CHECK_POS_TAB(index) CHECK_TYPE(index, "position", LUA_TTABLE) #define CHECK_POS_TAB(index) CHECK_TYPE(index, "position", LUA_TTABLE)
void push_float_string(lua_State *L, float value)
{
std::stringstream ss;
std::string str;
ss << value;
str = ss.str();
lua_pushstring(L, str.c_str());
}
void push_v3f(lua_State *L, v3f p) void push_v3f(lua_State *L, v3f p)
{ {
lua_newtable(L); lua_newtable(L);
@ -71,6 +80,26 @@ void push_v2f(lua_State *L, v2f p)
lua_setfield(L, -2, "y"); lua_setfield(L, -2, "y");
} }
void push_v3_float_string(lua_State *L, v3f p)
{
lua_newtable(L);
push_float_string(L, p.X);
lua_setfield(L, -2, "x");
push_float_string(L, p.Y);
lua_setfield(L, -2, "y");
push_float_string(L, p.Z);
lua_setfield(L, -2, "z");
}
void push_v2_float_string(lua_State *L, v2f p)
{
lua_newtable(L);
push_float_string(L, p.X);
lua_setfield(L, -2, "x");
push_float_string(L, p.Y);
lua_setfield(L, -2, "y");
}
v2s16 read_v2s16(lua_State *L, int index) v2s16 read_v2s16(lua_State *L, int index)
{ {
v2s16 p; v2s16 p;

@ -99,6 +99,9 @@ std::vector<aabb3f> read_aabb3f_vector (lua_State *L, int index, f32 scale);
size_t read_stringlist (lua_State *L, int index, size_t read_stringlist (lua_State *L, int index,
std::vector<std::string> *result); std::vector<std::string> *result);
void push_float_string (lua_State *L, float value);
void push_v3_float_string(lua_State *L, v3f p);
void push_v2_float_string(lua_State *L, v2f p);
void push_v2s16 (lua_State *L, v2s16 p); void push_v2s16 (lua_State *L, v2s16 p);
void push_v2s32 (lua_State *L, v2s32 p); void push_v2s32 (lua_State *L, v2s32 p);
void push_v3s16 (lua_State *L, v3s16 p); void push_v3s16 (lua_State *L, v3s16 p);

@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "lua_api/l_internal.h" #include "lua_api/l_internal.h"
#include "cpp_api/s_security.h" #include "cpp_api/s_security.h"
#include "settings.h" #include "settings.h"
#include "noise.h"
#include "log.h" #include "log.h"
@ -105,6 +106,24 @@ int LuaSettings::l_get_bool(lua_State* L)
return 1; return 1;
} }
// get_np_group(self, key) -> value
int LuaSettings::l_get_np_group(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;
LuaSettings *o = checkobject(L, 1);
std::string key = std::string(luaL_checkstring(L, 2));
if (o->m_settings->exists(key)) {
NoiseParams np;
o->m_settings->getNoiseParams(key, np);
push_noiseparams(L, &np);
} else {
lua_pushnil(L);
}
return 1;
}
// set(self, key, value) // set(self, key, value)
int LuaSettings::l_set(lua_State* L) int LuaSettings::l_set(lua_State* L)
{ {
@ -138,6 +157,23 @@ int LuaSettings::l_set_bool(lua_State* L)
return 1; return 1;
} }
// set(self, key, value)
int LuaSettings::l_set_np_group(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;
LuaSettings *o = checkobject(L, 1);
std::string key = std::string(luaL_checkstring(L, 2));
NoiseParams value;
read_noiseparams(L, 3, &value);
SET_SECURITY_CHECK(L, key);
o->m_settings->setNoiseParams(key, value, false);
return 0;
}
// remove(self, key) -> success // remove(self, key) -> success
int LuaSettings::l_remove(lua_State* L) int LuaSettings::l_remove(lua_State* L)
{ {
@ -264,8 +300,10 @@ const char LuaSettings::className[] = "Settings";
const luaL_Reg LuaSettings::methods[] = { const luaL_Reg LuaSettings::methods[] = {
luamethod(LuaSettings, get), luamethod(LuaSettings, get),
luamethod(LuaSettings, get_bool), luamethod(LuaSettings, get_bool),
luamethod(LuaSettings, get_np_group),
luamethod(LuaSettings, set), luamethod(LuaSettings, set),
luamethod(LuaSettings, set_bool), luamethod(LuaSettings, set_bool),
luamethod(LuaSettings, set_np_group),
luamethod(LuaSettings, remove), luamethod(LuaSettings, remove),
luamethod(LuaSettings, get_names), luamethod(LuaSettings, get_names),
luamethod(LuaSettings, write), luamethod(LuaSettings, write),

@ -19,6 +19,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#pragma once #pragma once
#include "common/c_content.h"
#include "lua_api/l_base.h" #include "lua_api/l_base.h"
class Settings; class Settings;
@ -38,12 +39,18 @@ private:
// get_bool(self, key) -> boolean // get_bool(self, key) -> boolean
static int l_get_bool(lua_State *L); static int l_get_bool(lua_State *L);
// get_np_group(self, key) -> noiseparam
static int l_get_np_group(lua_State *L);
// set(self, key, value) // set(self, key, value)
static int l_set(lua_State *L); static int l_set(lua_State *L);
// set_bool(self, key, value) // set_bool(self, key, value)
static int l_set_bool(lua_State *L); static int l_set_bool(lua_State *L);
// set_np_group(self, key, value)
static int l_set_np_group(lua_State *L);
// remove(self, key) -> success // remove(self, key) -> success
static int l_remove(lua_State *L); static int l_remove(lua_State *L);