123 lines
2.7 KiB
Lua
123 lines
2.7 KiB
Lua
local flowers = beautiflowers.flowers
|
|
|
|
|
|
|
|
--[[Amount of flowers that you want to be generated
|
|
5 = normal
|
|
less than 5= just a little
|
|
more than 5 = a lot of flowers
|
|
]]--
|
|
|
|
local FLOWERS_AMOUNT = 5
|
|
|
|
--Maximun height that you want to spawn flowers (min 1, max 30000)
|
|
local MAX_HEIGHT = 30000
|
|
|
|
local function register_pasto(name)
|
|
|
|
minetest.register_decoration({
|
|
name = "beautiflowers:"..name,
|
|
deco_type = "simple",
|
|
place_on = {"default:dirt_with_grass","default:dirt"},
|
|
sidelen = 16,
|
|
noise_params = {
|
|
offset = -0.03,
|
|
scale = 0.07,
|
|
spread = {x = 100, y = 100, z = 100},
|
|
seed = 1602,
|
|
octaves = 3,
|
|
persist = 1,
|
|
},
|
|
y_max = 30000,
|
|
y_min = 1,
|
|
decoration = "beautiflowers:"..name,
|
|
spawn_by = "default:dirt_with_grass"
|
|
})
|
|
|
|
end
|
|
|
|
local function register_bonsai(name)
|
|
|
|
minetest.register_decoration({
|
|
name = "beautiflowers:"..name,
|
|
deco_type = "simple",
|
|
place_on = {"default:stone","default:cobble","default:mossycobble"},
|
|
sidelen = 16,
|
|
noise_params = {
|
|
offset = -0.006,
|
|
scale = 0.07,
|
|
spread = {x = 250, y = 250, z = 250},
|
|
seed = 2,
|
|
octaves = 3,
|
|
persist = 0.66,
|
|
},
|
|
y_max = 30000,
|
|
y_min = 30,
|
|
decoration = "beautiflowers:"..name,
|
|
})
|
|
|
|
end
|
|
|
|
local function register_flower(name)
|
|
local fill = (FLOWERS_AMOUNT/16000)
|
|
minetest.register_decoration({
|
|
name = "beautiflowers:"..name,
|
|
deco_type = "simple",
|
|
place_on = {"default:dirt_with_grass"},
|
|
sidelen = 16,
|
|
fill_ratio = fill,
|
|
y_max = MAX_HEIGHT,
|
|
y_min = 1,
|
|
decoration = "beautiflowers:"..name,
|
|
})
|
|
|
|
end
|
|
|
|
function beautiflowers.bonsai_spread(pos, node)
|
|
if minetest.get_node_light(pos, 0.5) > 3 then
|
|
if minetest.get_node_light(pos, nil) == 15 then
|
|
minetest.remove_node(pos)
|
|
end
|
|
return
|
|
end
|
|
local positions = minetest.find_nodes_in_area_under_air(
|
|
{x = pos.x - 1, y = pos.y - 2, z = pos.z - 1},
|
|
{x = pos.x + 1, y = pos.y + 1, z = pos.z + 1},
|
|
{"group:stone"})
|
|
if #positions == 0 then
|
|
return
|
|
end
|
|
local pos2 = positions[math.random(#positions)]
|
|
pos2.y = pos2.y + 1
|
|
if minetest.get_node_light(pos2, 0.5) <= 3 then
|
|
minetest.set_node(pos2, {name = node.name})
|
|
end
|
|
end
|
|
|
|
minetest.register_abm({
|
|
label = "Bonsai spread",
|
|
nodenames = {"beautiflowers:bonsai_1","beautiflowers:bonsai_2","beautiflowers:bonsai_3","beautiflowers:bonsai_4","beautiflowers:bonsai_5"},
|
|
interval = 11,
|
|
chance = 150,
|
|
action = function(...)
|
|
beautiflowers.bonsai_spread(...)
|
|
end,
|
|
})
|
|
|
|
for i = 1, #flowers do
|
|
local name = unpack(flowers[i])
|
|
local aux = unpack(name:split("_"))
|
|
if aux == "pasto" then
|
|
register_pasto(name)
|
|
else
|
|
if aux == "bonsai" then
|
|
register_bonsai(name)
|
|
else
|
|
register_flower(name)
|
|
end
|
|
|
|
end
|
|
|
|
|
|
end
|