Disable mapgen by default, minetest has snow biomes now.

This commit is contained in:
Quentin Quaadgras 2018-04-23 22:28:55 +12:00
parent ee3b12c07d
commit 7f394447f1
4 changed files with 62 additions and 55 deletions

View File

@ -33,3 +33,6 @@ mapgen_rarity (Snow Biome Rarity %) float 18
#size of the generated… (has an effect to the rarity, too) #size of the generated… (has an effect to the rarity, too)
mapgen_size (Snow Biome Size) float 210 mapgen_size (Snow Biome Size) float 210
#Minetest finally has capable snow biomes by default, lets not mess it up with the old snowgen.
disable_mapgen (Disable mod-generated biomes) bool true

View File

@ -12,63 +12,66 @@ saplings grow into trees. --]]
-- Part 1: To disable the mapgen, add the *starting* comment under this line. -- Part 1: To disable the mapgen, add the *starting* comment under this line.
if not snow.disable_mapgen then
print("[snow] Mapgen enabled!")
snow.mapgen = snow.mapgen or {}
local mg = snow.mapgen
snow.mapgen = snow.mapgen or {} -- perlin noise "hills" are not peaks but looking like sinus curve
local mg = snow.mapgen local function upper_rarity(rarity)
return math.sign(rarity)*math.sin(math.abs(rarity)*math.pi/2)
-- perlin noise "hills" are not peaks but looking like sinus curve
local function upper_rarity(rarity)
return math.sign(rarity)*math.sin(math.abs(rarity)*math.pi/2)
end
local rarity = snow.mapgen_rarity
local size = snow.mapgen_size
local smooth = snow.smooth_biomes
local nosmooth_rarity, perlin_scale
local function calc_values()
nosmooth_rarity = 1-rarity/50
perlin_scale = size*100/rarity
mg.perlin_scale = perlin_scale
local smooth_rarity_max, smooth_rarity_min, smooth_rarity_dif
if smooth then
local smooth_trans_size = 4 --snow.smooth_trans_size
mg.smooth_rarity_max = upper_rarity(nosmooth_rarity+smooth_trans_size*2/perlin_scale)
mg.smooth_rarity_min = upper_rarity(nosmooth_rarity-smooth_trans_size/perlin_scale)
mg.smooth_rarity_dif = mg.smooth_rarity_max-mg.smooth_rarity_min
end end
nosmooth_rarity = upper_rarity(nosmooth_rarity)
mg.nosmooth_rarity = nosmooth_rarity
end
calc_values()
snow.register_on_configuring(function(name, v) local rarity = snow.mapgen_rarity
if name == "mapgen_rarity" then local size = snow.mapgen_size
rarity = v local smooth = snow.smooth_biomes
elseif name == "mapgen_size" then
size = v local nosmooth_rarity, perlin_scale
elseif name == "smooth_biomes" then local function calc_values()
smooth = v nosmooth_rarity = 1-rarity/50
else perlin_scale = size*100/rarity
return mg.perlin_scale = perlin_scale
local smooth_rarity_max, smooth_rarity_min, smooth_rarity_dif
if smooth then
local smooth_trans_size = 4 --snow.smooth_trans_size
mg.smooth_rarity_max = upper_rarity(nosmooth_rarity+smooth_trans_size*2/perlin_scale)
mg.smooth_rarity_min = upper_rarity(nosmooth_rarity-smooth_trans_size/perlin_scale)
mg.smooth_rarity_dif = mg.smooth_rarity_max-mg.smooth_rarity_min
end
nosmooth_rarity = upper_rarity(nosmooth_rarity)
mg.nosmooth_rarity = nosmooth_rarity
end end
-- TODO: if e.g. size and rarity get changed at once, don't calculate the values more times
calc_values() calc_values()
end)
snow.register_on_configuring(function(name, v)
if name == "mapgen_rarity" then
rarity = v
elseif name == "mapgen_size" then
size = v
elseif name == "smooth_biomes" then
smooth = v
else
return
end
-- TODO: if e.g. size and rarity get changed at once, don't calculate the values more times
calc_values()
end)
--Identify the mapgen. --Identify the mapgen.
local mgname = minetest.get_mapgen_setting"mg_name" local mgname = minetest.get_mapgen_setting"mg_name"
if not mgname then if not mgname then
minetest.log("error", "[MOD] Snow Biomes: WARNING! mapgen could not be identifyed!") minetest.log("error", "[MOD] Snow Biomes: WARNING! mapgen could not be identifyed!")
end end
local path = minetest.get_modpath"snow" local path = minetest.get_modpath"snow"
if mgname == "v7" then if mgname == "v7" then
--Load mapgen_v7 compatibility. --Load mapgen_v7 compatibility.
dofile(path.."/src/mapgen_v7.lua") dofile(path.."/src/mapgen_v7.lua")
else else
--Load mapgen_v6 compatibility. --Load mapgen_v6 compatibility.
dofile(path.."/src/mapgen_v6.lua") dofile(path.."/src/mapgen_v6.lua")
end
end end
-- To complete the commenting-out add the *closing* comment under this line. -- To complete the commenting-out add the *closing* comment under this line.

View File

@ -142,10 +142,10 @@ local function define_contents()
end end
local smooth = snow.smooth_biomes local smooth = snow.smooth_biomes
local smooth_rarity_max = mg.smooth_rarity_max local smooth_rarity_max = mg.smooth_rarity_max or 0
local smooth_rarity_min = mg.smooth_rarity_min local smooth_rarity_min = mg.smooth_rarity_min or 0
local smooth_rarity_dif = mg.smooth_rarity_dif local smooth_rarity_dif = mg.smooth_rarity_dif or 0
local nosmooth_rarity = mg.nosmooth_rarity local nosmooth_rarity = mg.nosmooth_rarity or 0
snow.register_on_configuring(function(name, v) snow.register_on_configuring(function(name, v)
if name == "debug" then if name == "debug" then
@ -235,7 +235,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
for z = z0, z1 do for z = z0, z1 do
for x = x0, x1 do for x = x0, x1 do
local in_biome = false local in_biome = false
local test local test = 0
if nvals_default[ni] < 0.35 then if nvals_default[ni] < 0.35 then
nvals_cold = nvals_cold or perlin_objs.cold:get2dMap_flat({x=x0, y=z0}, nbuf_cold) nvals_cold = nvals_cold or perlin_objs.cold:get2dMap_flat({x=x0, y=z0}, nbuf_cold)
test = math.min(nvals_cold[ni], 1) test = math.min(nvals_cold[ni], 1)

View File

@ -12,6 +12,7 @@ snow = {
min_height = tonumber(minetest.settings:get("min_height")) or 3, min_height = tonumber(minetest.settings:get("min_height")) or 3,
mapgen_rarity = tonumber(minetest.settings:get("mapgen_rarity")) or 18, mapgen_rarity = tonumber(minetest.settings:get("mapgen_rarity")) or 18,
mapgen_size = tonumber(minetest.settings:get("mapgen_size")) or 210, mapgen_size = tonumber(minetest.settings:get("mapgen_size")) or 210,
disable_mapgen = minetest.settings:get_bool("disable_mapgen"),
} }
-- functions for dynamically changing settings -- functions for dynamically changing settings