123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- -- Biome library mod by VanessaE
- --
- -- I got the temperature map idea from "hmmmm", values used for it came from
- -- Splizard's snow mod.
- --
- biome_lib = {}
- biome_lib.modpath = minetest.get_modpath("biome_lib")
- -- Boilerplate to support localized strings if intllib mod is installed.
- local S
- if minetest.global_exists("intllib") then
- if intllib.make_gettext_pair then
- S = intllib.make_gettext_pair()
- else
- S = intllib.Getter()
- end
- else
- S = function(s) return s end
- end
- biome_lib.intllib = S
- local c1 = minetest.settings:get("biome_lib_default_grow_through_nodes")
- biome_lib.default_grow_through_nodes = {["air"] = true}
- if c1 then
- for _, i in ipairs(tableize(c1)) do
- biome_lib.default_grow_through_nodes[i] = true
- end
- else
- biome_lib.default_grow_through_nodes["default:snow"] = true
- end
- local c2 = minetest.settings:get("biome_lib_default_water_nodes")
- biome_lib.default_water_nodes = {}
- if c2 then
- for _, i in ipairs(tableize(c2)) do
- biome_lib.default_water_nodes[i] = true
- end
- else
- biome_lib.default_water_nodes["default:water_source"] = true
- biome_lib.default_water_nodes["default:water_flowing"] = true
- biome_lib.default_water_nodes["default:river_water_source"] = true
- biome_lib.default_water_nodes["default:river_water_flowing"] = true
- end
- local c3 = minetest.settings:get("biome_lib_default_wet_surfaces")
- local c4 = minetest.settings:get("biome_lib_default_ground_nodes")
- local c5 = minetest.settings:get("biome_lib_default_grow_nodes")
- biome_lib.default_wet_surfaces = c3 and tableize(c3) or {"default:dirt", "default:dirt_with_grass", "default:sand"}
- biome_lib.default_ground_nodes = c4 and tableize(c4) or {"default:dirt_with_grass"}
- biome_lib.default_grow_nodes = c5 and tableize(c5) or {"default:dirt_with_grass"}
- biome_lib.debug_log_level = tonumber(minetest.settings:get("biome_lib_debug_log_level")) or 0
- local rr = tonumber(minetest.settings:get("biome_lib_queue_ratio")) or -200
- biome_lib.queue_ratio = 100 - rr
- biome_lib.entries_per_step = math.max(-rr, 1)
- -- the timer that manages the block timeout is in microseconds, but the timer
- -- that manages the queue wakeup call has to be in seconds, and works best if
- -- it takes a fraction of the block timeout interval.
- local t = tonumber(minetest.settings:get("biome_lib_block_timeout")) or 300
- biome_lib.block_timeout = t * 1000000
- -- we don't want the wakeup function to trigger TOO often,
- -- in case the user's block timeout setting is really low
- biome_lib.block_queue_wakeup_time = math.min(t/2, math.max(20, t/10))
- -- the actual important stuff starts here ;-)
- dofile(biome_lib.modpath .. "/api.lua")
- dofile(biome_lib.modpath .. "/search_functions.lua")
- dofile(biome_lib.modpath .. "/growth.lua")
- dofile(biome_lib.modpath .. "/compat.lua")
- minetest.after(0.01, function()
- -- report the final registration results and enable the active block queue stuff
- local n = #biome_lib.actionslist_aircheck + #biome_lib.actionslist_no_aircheck
- biome_lib.dbg("All mapgen registrations completed.", 0)
- if n > 0 then
- biome_lib.dbg("Total items/actions to handle manually: "..n.." ("..#biome_lib.actionslist_no_aircheck.." without air checks)", 0)
- biome_lib.dbg("Total surface types to handle manually: "..#biome_lib.surfaceslist_aircheck + #biome_lib.surfaceslist_no_aircheck, 0)
- else
- biome_lib.dbg("There are no \"handle manually\" items/actions registered,", 0)
- biome_lib.dbg("so the mapblock queue will not be not used this session.", 0)
- end
- biome_lib.dbg("Items sent to the engine's decorations handler: "..#biome_lib.registered_decorations, 0)
- biome_lib.dbg("Elevation range: "..biome_lib.mapgen_elevation_limit.min.." to "..string.format("%+d", biome_lib.mapgen_elevation_limit.max).." meters.", 0)
- if n > 0 then
- dofile(biome_lib.modpath .. "/block_queue_checks.lua")
- end
- end)
|