diff --git a/settingtypes.txt b/settingtypes.txt index 796dfff..3dfc990 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -33,3 +33,6 @@ mapgen_rarity (Snow Biome Rarity %) float 18 #size of the generated… (has an effect to the rarity, too) 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 diff --git a/src/mapgen.lua b/src/mapgen.lua index 8aaa4fb..af67043 100644 --- a/src/mapgen.lua +++ b/src/mapgen.lua @@ -12,63 +12,66 @@ saplings grow into trees. --]] -- 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 {} -local mg = snow.mapgen - --- 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 + -- 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 - nosmooth_rarity = upper_rarity(nosmooth_rarity) - mg.nosmooth_rarity = nosmooth_rarity -end -calc_values() -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 + 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 + nosmooth_rarity = upper_rarity(nosmooth_rarity) + mg.nosmooth_rarity = nosmooth_rarity end - -- TODO: if e.g. size and rarity get changed at once, don't calculate the values more times 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. -local mgname = minetest.get_mapgen_setting"mg_name" -if not mgname then - minetest.log("error", "[MOD] Snow Biomes: WARNING! mapgen could not be identifyed!") -end -local path = minetest.get_modpath"snow" -if mgname == "v7" then - --Load mapgen_v7 compatibility. - dofile(path.."/src/mapgen_v7.lua") -else - --Load mapgen_v6 compatibility. - dofile(path.."/src/mapgen_v6.lua") + --Identify the mapgen. + local mgname = minetest.get_mapgen_setting"mg_name" + if not mgname then + minetest.log("error", "[MOD] Snow Biomes: WARNING! mapgen could not be identifyed!") + end + local path = minetest.get_modpath"snow" + if mgname == "v7" then + --Load mapgen_v7 compatibility. + dofile(path.."/src/mapgen_v7.lua") + else + --Load mapgen_v6 compatibility. + dofile(path.."/src/mapgen_v6.lua") + end end -- To complete the commenting-out add the *closing* comment under this line. diff --git a/src/mapgen_v6.lua b/src/mapgen_v6.lua index 9c7e95d..1f532da 100644 --- a/src/mapgen_v6.lua +++ b/src/mapgen_v6.lua @@ -142,10 +142,10 @@ local function define_contents() end local smooth = snow.smooth_biomes -local smooth_rarity_max = mg.smooth_rarity_max -local smooth_rarity_min = mg.smooth_rarity_min -local smooth_rarity_dif = mg.smooth_rarity_dif -local nosmooth_rarity = mg.nosmooth_rarity +local smooth_rarity_max = mg.smooth_rarity_max or 0 +local smooth_rarity_min = mg.smooth_rarity_min or 0 +local smooth_rarity_dif = mg.smooth_rarity_dif or 0 +local nosmooth_rarity = mg.nosmooth_rarity or 0 snow.register_on_configuring(function(name, v) if name == "debug" then @@ -235,7 +235,7 @@ minetest.register_on_generated(function(minp, maxp, seed) for z = z0, z1 do for x = x0, x1 do local in_biome = false - local test + local test = 0 if nvals_default[ni] < 0.35 then nvals_cold = nvals_cold or perlin_objs.cold:get2dMap_flat({x=x0, y=z0}, nbuf_cold) test = math.min(nvals_cold[ni], 1) diff --git a/src/util.lua b/src/util.lua index 10f8c30..6c6831c 100644 --- a/src/util.lua +++ b/src/util.lua @@ -12,6 +12,7 @@ snow = { min_height = tonumber(minetest.settings:get("min_height")) or 3, mapgen_rarity = tonumber(minetest.settings:get("mapgen_rarity")) or 18, mapgen_size = tonumber(minetest.settings:get("mapgen_size")) or 210, + disable_mapgen = minetest.settings:get_bool("disable_mapgen"), } -- functions for dynamically changing settings