mirror of
https://github.com/mt-mods/plantlife_modpack.git
synced 2024-11-14 22:30:38 +01:00
f629f54d43
* bushes ground content minetest default game treats all bush parts as ground content, so we do that here too. The baskets however are player made and placed, so they aren't ground content * cavestuff ground content Pebbles are given to mapgen as decorations, so they have been left as ground content. The stalactites are not ground content * user 'placed' nodes -> not ground content * ground content revision
85 lines
2.5 KiB
Lua
85 lines
2.5 KiB
Lua
-- support for i18n
|
|
local S = minetest.get_translator("nature_classic")
|
|
-- Blossoms and such
|
|
|
|
local function spawn_apple_under(pos)
|
|
local below = {
|
|
x = pos.x,
|
|
y = pos.y - 1,
|
|
z = pos.z,
|
|
}
|
|
if minetest.get_node(below).name == "air" then
|
|
minetest.swap_node(below, { name = "default:apple" })
|
|
end
|
|
end
|
|
|
|
minetest.register_node(":"..nature.blossom_node, {
|
|
description = S("Apple blossoms"),
|
|
drawtype = "allfaces_optional",
|
|
tiles = nature.blossom_textures,
|
|
paramtype = "light",
|
|
groups = nature.blossom_groups,
|
|
is_ground_content = false,
|
|
sounds = default.node_sound_leaves_defaults(),
|
|
waving = 1
|
|
})
|
|
|
|
default.register_leafdecay({
|
|
trunks = { nature.blossom_trunk },
|
|
leaves = { nature.blossom_node, nature.blossom_leaves },
|
|
radius = nature.blossom_decay,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = nature.blossom_node,
|
|
burntime = 2,
|
|
})
|
|
|
|
-- these ABMs can get heavy, so just enqueue the nodes
|
|
|
|
-- Adding Blossoms
|
|
-- Limit mass changes after block has not been loaded for some time:
|
|
-- Run ABM with higher frequency, but don't enqueue all blocks
|
|
minetest.register_abm({
|
|
nodenames = { nature.blossom_leaves },
|
|
interval = nature.blossom_delay / nature.leaves_blossom_chance,
|
|
chance = nature.leaves_blossom_chance,
|
|
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
if math.random(nature.leaves_blossom_chance) == 1 then
|
|
nature.enqueue_node(pos, node, nature.blossom_node)
|
|
end
|
|
end
|
|
})
|
|
|
|
-- Removing blossoms
|
|
-- Limit mass changes after block has not been loaded for some time:
|
|
-- Run ABM with higher frequency, but don't enqueue all blocks
|
|
minetest.register_abm({
|
|
nodenames = { nature.blossom_node },
|
|
interval = nature.blossom_delay / nature.blossom_leaves_chance,
|
|
chance = nature.blossom_leaves_chance,
|
|
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
if math.random(nature.blossom_leaves_chance) == 1 then
|
|
nature.enqueue_node(pos, node, nature.blossom_leaves)
|
|
end
|
|
end
|
|
})
|
|
|
|
-- Spawning apples
|
|
-- Limit mass changes after block has not been loaded for some time:
|
|
-- spawn apples with 25% chance, but with 4 times higher frequency
|
|
minetest.register_abm({
|
|
nodenames = { nature.blossom_node },
|
|
interval = nature.apple_delay / 4,
|
|
chance = nature.apple_chance,
|
|
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
if math.random(4) == 1 and nature.dtime < 0.2 and not minetest.find_node_near(pos, nature.apple_spread, { "default:apple" }) then
|
|
spawn_apple_under(pos)
|
|
end
|
|
end
|
|
})
|