mirror of
https://github.com/mt-mods/biome_lib.git
synced 2024-12-25 02:10:18 +01:00
add compatibility for games other than minetest_game
This commit is contained in:
parent
f569bb1fbd
commit
7f1fec6ae0
40
API.txt
40
API.txt
@ -588,3 +588,43 @@ And this particular one is mapped slightly differently from the others:
|
||||
|
||||
(Note the +150 and +50 offsets)
|
||||
|
||||
|
||||
==================
|
||||
Default game nodes
|
||||
==================
|
||||
|
||||
Although this project was intended to be used with minetest_game, it can be
|
||||
configured to work with something else instead. All you need to do is provide
|
||||
the names of the nodes in your game you want biome_lib's internals to use.
|
||||
|
||||
Put these settings in your game's minetest.conf (or your client's own config,
|
||||
if desired). You'll need to set all of them.
|
||||
|
||||
biome_lib_default_grow_through_nodes
|
||||
Comma-separated list of things that a spawned node is allowed to grow
|
||||
through. Air is always added to whatever you specify.
|
||||
Default: air, default:snow
|
||||
|
||||
biome_lib_default_water_nodes
|
||||
Comma-separated list of nodes that should be treated as water for the sake
|
||||
of looking for neighboring "wet" ground.
|
||||
Default: default:water_source, default:water_flowing,
|
||||
default:river_water_source, default:river_water_flowing
|
||||
|
||||
biome_lib_default_wet_surfaces
|
||||
Comma-separated list of nodes that should be considered "wet" if one of
|
||||
the aforementioned water nodes is nearby.
|
||||
Default: default:dirt, default:dirt_with_grass, default:sand
|
||||
|
||||
biome_lib_default_grow_nodes
|
||||
Comma-separated list of nodes that something must be sitting on to be
|
||||
able to actively change from one thing to another (such as a sapling
|
||||
growing into a tree), to be used for ALL growable nodes, if the calling
|
||||
mod doesn't provide its own lists.
|
||||
Default: "default:dirt_with_grass"
|
||||
|
||||
biome_lib_default_ground_nodes
|
||||
Comma-separated list of nodes to use as the "root" of something that can
|
||||
gradually climb up a wall, to be used for ALL such nodes, if the calling
|
||||
mod doesn't provide its own lists.
|
||||
Default: "default:dirt_with_grass"
|
||||
|
@ -12,7 +12,7 @@ Both mapgen-based spawning and ABM-based spawning is supported. Growing code is
|
||||
|
||||
It is primarily intended for mapgen v6, but it should work fine when used with mapgen v7.
|
||||
|
||||
**Dependencies**: default from minetest_game
|
||||
**Dependencies:** nothing, but if you don't use `minetest_game`, you'll need to supply some settings (see API.txt).
|
||||
|
||||
**Recommends**: [Plantlife Modpack](https://github.com/minetest-mods/plantlife_modpack),
|
||||
[More Trees](https://github.com/minetest-mods/moretrees)
|
||||
|
@ -20,8 +20,8 @@ function biome_lib:grow_plants(opts)
|
||||
local options = opts
|
||||
|
||||
options.height_limit = options.height_limit or 5
|
||||
options.ground_nodes = options.ground_nodes or { "default:dirt_with_grass" }
|
||||
options.grow_nodes = options.grow_nodes or { "default:dirt_with_grass" }
|
||||
options.ground_nodes = options.ground_nodes or biome_lib.default_ground_nodes
|
||||
options.grow_nodes = options.grow_nodes or biome_lib.default_grow_nodes
|
||||
options.seed_diff = options.seed_diff or 0
|
||||
|
||||
local n
|
||||
@ -55,7 +55,7 @@ function biome_lib:grow_plants(opts)
|
||||
if options.need_wall and options.verticals_list then
|
||||
walldir = biome_lib:find_adjacent_wall(p_top, options.verticals_list, options.choose_random_wall)
|
||||
end
|
||||
if (n_top.name == "air" or n_top.name == "default:snow")
|
||||
if biome_lib.default_grow_through_nodes[n_top.name]
|
||||
and (not options.need_wall or (options.need_wall and walldir)) then
|
||||
if options.grow_vertically and walldir then
|
||||
if biome_lib:search_downward(pos, options.height_limit, options.ground_nodes) then
|
||||
|
39
init.lua
39
init.lua
@ -32,6 +32,41 @@ biome_lib.total_no_aircheck_calls = 0
|
||||
|
||||
biome_lib.queue_run_ratio = tonumber(minetest.settings:get("biome_lib_queue_run_ratio")) or 100
|
||||
|
||||
local function tableize(s)
|
||||
return string.split(string.trim(string.gsub(s, " ", "")))
|
||||
end
|
||||
|
||||
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"}
|
||||
|
||||
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||
local S
|
||||
if minetest.global_exists("intllib") then
|
||||
@ -617,11 +652,11 @@ function biome_lib:spawn_on_surfaces(sd,sp,sr,sc,ss,sa)
|
||||
|
||||
local currentsurface = minetest.get_node(pos).name
|
||||
|
||||
if currentsurface == "default:water_source" and
|
||||
if biome_lib.default_water_nodes[currentsurface] and
|
||||
#minetest.find_nodes_in_area(
|
||||
{x=pos.x, y=pos.y-biome.depth_max-1, z=pos.z},
|
||||
vector.new(pos),
|
||||
{"default:dirt", "default:dirt_with_grass", "default:sand"}
|
||||
biome_lib.default_wet_surfaces
|
||||
) == 0 then
|
||||
return -- On water but no ground nearby
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user