mirror of
https://github.com/mt-mods/biome_lib.git
synced 2024-12-23 17:30:18 +01:00
Reign-in the default on-generated limit from +/- 31k to -16/+48m
since nothing much is normally found outside that range anyway only enqueue blocks that are within that range, or within the range specfied by all of the mods that make generate_plant() calls, whichever covers more volume.
This commit is contained in:
parent
c6cd524f62
commit
6342a16b0a
10
API.txt
10
API.txt
@ -112,9 +112,9 @@ biome = {
|
|||||||
depth_max = num, -- If the object spawns on top of a water source, the
|
depth_max = num, -- If the object spawns on top of a water source, the
|
||||||
-- water must be at most this deep. Defaults to 1.
|
-- water must be at most this deep. Defaults to 1.
|
||||||
min_elevation = num, -- Surface must be at this altitude or higher to
|
min_elevation = num, -- Surface must be at this altitude or higher to
|
||||||
-- spawn at all. Defaults to -31000...
|
-- spawn at all. Defaults to -16 meters.
|
||||||
max_elevation = num, -- ...but must be no higher than this altitude.
|
max_elevation = num, -- Surface must be no higher than this altitude.
|
||||||
-- Defaults to +31000.
|
-- Defaults to +48.
|
||||||
near_nodes = {table}, -- List of nodes that must be somewhere in the
|
near_nodes = {table}, -- List of nodes that must be somewhere in the
|
||||||
-- vicinity in order for the plant to spawn. Can also
|
-- vicinity in order for the plant to spawn. Can also
|
||||||
-- be a string with a single node name. If not
|
-- be a string with a single node name. If not
|
||||||
@ -270,8 +270,8 @@ biome = {
|
|||||||
depth = num, -- How deep/thick of a layer the spawned-on node must
|
depth = num, -- How deep/thick of a layer the spawned-on node must
|
||||||
-- be. Typically used for water.
|
-- be. Typically used for water.
|
||||||
min_elevation = num, -- Minimum elevation in meters/nodes. Defaults to
|
min_elevation = num, -- Minimum elevation in meters/nodes. Defaults to
|
||||||
-- -31000 (unlimited).
|
-- -16 meters.
|
||||||
max_elevation = num, -- Max elevation. Defaults to +31000 (unlimited).
|
max_elevation = num, -- Max elevation. Defaults to +48m.
|
||||||
near_nodes = {table}, -- what nodes must be in the general vicinity of the
|
near_nodes = {table}, -- what nodes must be in the general vicinity of the
|
||||||
-- object being spawned.
|
-- object being spawned.
|
||||||
near_nodes_size = num, -- how wide of a search area to look for the nodes
|
near_nodes_size = num, -- how wide of a search area to look for the nodes
|
||||||
|
13
init.lua
13
init.lua
@ -33,6 +33,10 @@ biome_lib.actionslist_no_aircheck = {}
|
|||||||
biome_lib.surfaceslist_aircheck = {}
|
biome_lib.surfaceslist_aircheck = {}
|
||||||
biome_lib.surfaceslist_no_aircheck = {}
|
biome_lib.surfaceslist_no_aircheck = {}
|
||||||
|
|
||||||
|
-- the mapgen rarely creates useful surfaces outside this range, but mods can
|
||||||
|
-- still specify a wider range if needed.
|
||||||
|
biome_lib.mapgen_elevation_limit = { ["min"] = -16, ["max"] = 48 }
|
||||||
|
|
||||||
biome_lib.modpath = minetest.get_modpath("biome_lib")
|
biome_lib.modpath = minetest.get_modpath("biome_lib")
|
||||||
|
|
||||||
local function tableize(s)
|
local function tableize(s)
|
||||||
@ -153,8 +157,8 @@ end
|
|||||||
|
|
||||||
function biome_lib:set_defaults(biome)
|
function biome_lib:set_defaults(biome)
|
||||||
biome.seed_diff = biome.seed_diff or 0
|
biome.seed_diff = biome.seed_diff or 0
|
||||||
biome.min_elevation = biome.min_elevation or -31000
|
biome.min_elevation = biome.min_elevation or biome_lib.mapgen_elevation_limit.min
|
||||||
biome.max_elevation = biome.max_elevation or 31000
|
biome.max_elevation = biome.max_elevation or biome_lib.mapgen_elevation_limit.max
|
||||||
biome.temp_min = biome.temp_min or 1
|
biome.temp_min = biome.temp_min or 1
|
||||||
biome.temp_max = biome.temp_max or -1
|
biome.temp_max = biome.temp_max or -1
|
||||||
biome.humidity_min = biome.humidity_min or 1
|
biome.humidity_min = biome.humidity_min or 1
|
||||||
@ -206,6 +210,9 @@ function biome_lib:register_generate_plant(biomedef, nodes_or_function_or_model)
|
|||||||
biome_lib.dbg("Warning: Registered function call using deprecated string method: "..dump(nodes_or_function_or_model), 2)
|
biome_lib.dbg("Warning: Registered function call using deprecated string method: "..dump(nodes_or_function_or_model), 2)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
biome_lib.mapgen_elevation_limit.min = math.min(biomedef.min_elevation or 0, biome_lib.mapgen_elevation_limit.min)
|
||||||
|
biome_lib.mapgen_elevation_limit.max = math.max(biomedef.max_elevation or 0, biome_lib.mapgen_elevation_limit.max)
|
||||||
|
|
||||||
if biomedef.check_air == false then
|
if biomedef.check_air == false then
|
||||||
biome_lib.dbg("Register no-air-check mapgen hook: "..dump(nodes_or_function_or_model), 3)
|
biome_lib.dbg("Register no-air-check mapgen hook: "..dump(nodes_or_function_or_model), 3)
|
||||||
biome_lib.actionslist_no_aircheck[#biome_lib.actionslist_no_aircheck + 1] = { biomedef, nodes_or_function_or_model }
|
biome_lib.actionslist_no_aircheck[#biome_lib.actionslist_no_aircheck + 1] = { biomedef, nodes_or_function_or_model }
|
||||||
@ -859,6 +866,8 @@ end
|
|||||||
minetest.after(0, function()
|
minetest.after(0, function()
|
||||||
biome_lib.dbg("Registered a total of "..(#biome_lib.surfaceslist_aircheck)+(#biome_lib.surfaceslist_no_aircheck).." surface types to be evaluated, spread", 0)
|
biome_lib.dbg("Registered a total of "..(#biome_lib.surfaceslist_aircheck)+(#biome_lib.surfaceslist_no_aircheck).." surface types to be evaluated, spread", 0)
|
||||||
biome_lib.dbg("across "..#biome_lib.actionslist_aircheck.." actions with air-checking and "..#biome_lib.actionslist_no_aircheck.." actions without.", 0)
|
biome_lib.dbg("across "..#biome_lib.actionslist_aircheck.." actions with air-checking and "..#biome_lib.actionslist_no_aircheck.." actions without.", 0)
|
||||||
|
biome_lib.dbg("within an elevation range of "..biome_lib.mapgen_elevation_limit.min.." and "..biome_lib.mapgen_elevation_limit.max.." meters.", 0)
|
||||||
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
biome_lib.dbg("[Biome Lib] Loaded", 0)
|
biome_lib.dbg("[Biome Lib] Loaded", 0)
|
||||||
|
@ -57,18 +57,26 @@ end
|
|||||||
|
|
||||||
minetest.register_on_generated(function(minp, maxp, blockseed)
|
minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||||
local timestamp = minetest.get_us_time()
|
local timestamp = minetest.get_us_time()
|
||||||
for x = 0, 4 do
|
for y = 0, 4 do
|
||||||
local minx = minp.x + x*16
|
local miny = minp.y + y*16
|
||||||
for y = 0, 4 do
|
|
||||||
local miny = minp.y + y*16
|
|
||||||
for z = 0, 4 do
|
|
||||||
local minz = minp.z + z*16
|
|
||||||
|
|
||||||
local bmin = {x=minx, y=miny, z=minz}
|
if miny >= biome_lib.mapgen_elevation_limit.min
|
||||||
local bmax = {x=minx + 15, y=miny + 15, z=minz + 15}
|
and (miny + 15) <= biome_lib.mapgen_elevation_limit.max then
|
||||||
biome_lib.block_log[#biome_lib.block_log + 1] = { bmin, bmax, true, timestamp }
|
|
||||||
biome_lib.block_log[#biome_lib.block_log + 1] = { bmin, bmax, false, timestamp }
|
for x = 0, 4 do
|
||||||
|
local minx = minp.x + x*16
|
||||||
|
|
||||||
|
for z = 0, 4 do
|
||||||
|
local minz = minp.z + z*16
|
||||||
|
|
||||||
|
local bmin = {x=minx, y=miny, z=minz}
|
||||||
|
local bmax = {x=minx + 15, y=miny + 15, z=minz + 15}
|
||||||
|
biome_lib.block_log[#biome_lib.block_log + 1] = { bmin, bmax, true, timestamp }
|
||||||
|
biome_lib.block_log[#biome_lib.block_log + 1] = { bmin, bmax, false, timestamp }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
biome_lib.dbg("Did not enqueue mapblocks at elevation "..miny.."m, they're out of range of any generate_plant() calls.", 4)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
biome_lib.run_block_recheck_list = true
|
biome_lib.run_block_recheck_list = true
|
||||||
|
Loading…
Reference in New Issue
Block a user