trees.lua 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. local random = math.random
  2. -- I don't remember if snow function is needed.
  3. -- local function is_snow_nearby(pos)
  4. -- return minetest.find_node_near(pos, 1,
  5. -- {"default:snow", "default:snowblock", "default:dirt_with_snow"})
  6. -- end
  7. -- Sapling ABM
  8. function maple.grow_sapling(pos)
  9. if not default.can_grow(pos) then
  10. -- Can't grow yet, try later.
  11. minetest.get_node_timer(pos):start(random(240, 600))
  12. return
  13. end
  14. local node = minetest.get_node(pos)
  15. if node.name == "maple:maple_sapling" then
  16. minetest.log("action", "An maple sapling grows into a tree at "..
  17. minetest.pos_to_string(pos))
  18. minetest.remove_node(pos)
  19. maple.grow_new_maple_tree(pos)
  20. end
  21. end
  22. minetest.register_lbm({
  23. name = "maple:convert_saplings_to_node_timer",
  24. nodenames = {"maple:maple_sapling"},
  25. action = function(pos)
  26. minetest.get_node_timer(pos):start(random(1200, 2400))
  27. end
  28. })
  29. --
  30. -- Tree generation
  31. --
  32. -- New maple tree
  33. function maple.grow_new_maple_tree(pos)
  34. local path = maple.path .. "/schematics/maple_tree.mts"
  35. minetest.place_schematic({x = pos.x - 3, y = pos.y, z = pos.z - 3},
  36. path, "0", nil, false)
  37. end