123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- 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
|