mirror of
https://github.com/mt-mods/biome_lib.git
synced 2024-12-25 10:20: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)
|
(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.
|
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),
|
**Recommends**: [Plantlife Modpack](https://github.com/minetest-mods/plantlife_modpack),
|
||||||
[More Trees](https://github.com/minetest-mods/moretrees)
|
[More Trees](https://github.com/minetest-mods/moretrees)
|
||||||
|
@ -20,8 +20,8 @@ function biome_lib:grow_plants(opts)
|
|||||||
local options = opts
|
local options = opts
|
||||||
|
|
||||||
options.height_limit = options.height_limit or 5
|
options.height_limit = options.height_limit or 5
|
||||||
options.ground_nodes = options.ground_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 { "default:dirt_with_grass" }
|
options.grow_nodes = options.grow_nodes or biome_lib.default_grow_nodes
|
||||||
options.seed_diff = options.seed_diff or 0
|
options.seed_diff = options.seed_diff or 0
|
||||||
|
|
||||||
local n
|
local n
|
||||||
@ -55,7 +55,7 @@ function biome_lib:grow_plants(opts)
|
|||||||
if options.need_wall and options.verticals_list then
|
if options.need_wall and options.verticals_list then
|
||||||
walldir = biome_lib:find_adjacent_wall(p_top, options.verticals_list, options.choose_random_wall)
|
walldir = biome_lib:find_adjacent_wall(p_top, options.verticals_list, options.choose_random_wall)
|
||||||
end
|
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
|
and (not options.need_wall or (options.need_wall and walldir)) then
|
||||||
if options.grow_vertically and walldir then
|
if options.grow_vertically and walldir then
|
||||||
if biome_lib:search_downward(pos, options.height_limit, options.ground_nodes) 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
|
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.
|
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||||
local S
|
local S
|
||||||
if minetest.global_exists("intllib") then
|
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
|
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(
|
#minetest.find_nodes_in_area(
|
||||||
{x=pos.x, y=pos.y-biome.depth_max-1, z=pos.z},
|
{x=pos.x, y=pos.y-biome.depth_max-1, z=pos.z},
|
||||||
vector.new(pos),
|
vector.new(pos),
|
||||||
{"default:dirt", "default:dirt_with_grass", "default:sand"}
|
biome_lib.default_wet_surfaces
|
||||||
) == 0 then
|
) == 0 then
|
||||||
return -- On water but no ground nearby
|
return -- On water but no ground nearby
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user