mirror of
https://github.com/mt-mods/plantlife_modpack.git
synced 2024-11-15 23:00:38 +01:00
Added feature to API to allow for limits on spawning altitude also. None of
the included plants use this, it's mainly for the conifers mod.
This commit is contained in:
parent
f9df1b5965
commit
e2794f71f4
8
API.txt
8
API.txt
|
@ -14,11 +14,12 @@ dbg()
|
|||
|
||||
-----
|
||||
The first of these, spawn_on_surfaces() is defined with quite a large number
|
||||
of variables:
|
||||
of variables. All of the variables below, if specified at all, must be
|
||||
specified exactly in the order given here.
|
||||
|
||||
spawn_on_surfaces = function(sdelay, splant, sradius, schance, ssurface,
|
||||
savoid, seed_diff, lightmin, lightmax, nneighbors,
|
||||
ocount, facedir)
|
||||
ocount, facedir, depthmax, altitudemin, altitudemax)
|
||||
|
||||
The first several of these are all required, and are from the last version of
|
||||
the flowers mod, so this part of the API should be the same as before.
|
||||
|
@ -68,6 +69,9 @@ facedir: The value passed to the param2 variable when adding the plant node
|
|||
to the map. Defaults to 0.
|
||||
depthmax: If a node spawns on top of a water source, the water must be at
|
||||
most this deep. Defaults to 1 node.
|
||||
altitudemin: Items must be at this altitude or higher to spawn at all.
|
||||
Defaults to -31000.
|
||||
altitudemax: But no higher than this altitude. Defaults to +31000.
|
||||
|
||||
-----
|
||||
The second function, grow_plants() is defined like so:
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
-- Various settings - most of these probably won't need to be changed
|
||||
|
||||
local plantlife_debug = false -- ...unless you want the modpack to spam the console ;-)
|
||||
local plantlife_debug = true -- ...unless you want the modpack to spam the console ;-)
|
||||
|
||||
local plantlife_seed_diff = 123
|
||||
local perlin_octaves = 3
|
||||
|
@ -45,13 +45,15 @@ end
|
|||
|
||||
-- The spawning ABM
|
||||
|
||||
spawn_on_surfaces = function(sdelay, splant, sradius, schance, ssurface, savoid, seed_diff, lightmin, lightmax, nneighbors, ocount, facedir, depthmax)
|
||||
spawn_on_surfaces = function(sdelay, splant, sradius, schance, ssurface, savoid, seed_diff, lightmin, lightmax, nneighbors, ocount, facedir, depthmax, altmin, altmax)
|
||||
if seed_diff == nil then seed_diff = 0 end
|
||||
if lightmin == nil then lightmin = 0 end
|
||||
if lightmax == nil then lightmax = LIGHT_MAX end
|
||||
if nneighbors == nil then nneighbors = ssurface end
|
||||
if ocount == nil then ocount = 0 end
|
||||
if depthmax == nil then depthmax = 1 end
|
||||
if altmin == nil then altmin = -31000 end
|
||||
if altmax == nil then altmax = 31000 end
|
||||
minetest.register_abm({
|
||||
nodenames = { ssurface },
|
||||
interval = sdelay,
|
||||
|
@ -62,12 +64,14 @@ spawn_on_surfaces = function(sdelay, splant, sradius, schance, ssurface, savoid,
|
|||
local n_top = minetest.env:get_node(p_top)
|
||||
local perlin = minetest.env:get_perlin(seed_diff, perlin_octaves, perlin_persistence, perlin_scale )
|
||||
local noise = perlin:get2d({x=p_top.x, y=p_top.z})
|
||||
if ( noise > plantlife_limit ) and (n_top.name == "air") and is_node_loaded(p_top) then
|
||||
if noise > plantlife_limit and n_top.name == "air" and is_node_loaded(p_top) then
|
||||
local n_light = minetest.env:get_node_light(p_top, nil)
|
||||
if (minetest.env:find_node_near(p_top, sradius + math.random(-1.5,2), savoid) == nil )
|
||||
and (n_light >= lightmin)
|
||||
and (n_light <= lightmax)
|
||||
if minetest.env:find_node_near(p_top, sradius + math.random(-1.5,2), savoid) == nil
|
||||
and n_light >= lightmin
|
||||
and n_light <= lightmax
|
||||
and table.getn(minetest.env:find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, nneighbors)) > ocount
|
||||
and pos.y >= altmin
|
||||
and pos.y <= altmax
|
||||
then
|
||||
local walldir = plant_valid_wall(p_top)
|
||||
if splant == "poisonivy:seedling" and walldir ~= nil then
|
||||
|
|
Loading…
Reference in New Issue
Block a user