marram_grass.lua 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. -- Renew mod for Minetest
  2. -- Copyright © 2020 Alex Yst <https://y.st./>
  3. -- This program is free software; you can redistribute it and/or
  4. -- modify it under the terms of the GNU Lesser General Public
  5. -- License as published by the Free Software Foundation; either
  6. -- version 2.1 of the License, or (at your option) any later version.
  7. -- This software is distributed in the hope that it will be useful,
  8. -- but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  10. -- Lesser General Public License for more details.
  11. -- You should have received a copy of the GNU Lesser General Public
  12. -- License along with this program. If not, see
  13. -- <https://www.gnu.org./licenses/>.
  14. local nodenames = {
  15. "default:marram_grass_1",
  16. "default:marram_grass_2",
  17. "default:marram_grass_3"
  18. }
  19. minetest.register_abm({
  20. label = "Marram Grass Propagation",
  21. nodenames = nodenames,
  22. neighbors = {"default:sand"},
  23. interval = 1800,
  24. chance = 900,
  25. catch_up = true,
  26. action = function(pos)
  27. local candidates = minetest.find_nodes_in_area_under_air({
  28. x = pos.x - 1,
  29. y = pos.y - 1,
  30. z = pos.z - 1,
  31. }, {
  32. x = pos.x + 1,
  33. y = pos.y + 1,
  34. z = pos.z + 1,
  35. }, "default:sand")
  36. if #candidates > 0 then
  37. minetest.set_node(math.random(#candidates), {name = nodenames[math.random(3)]})
  38. end
  39. end,
  40. })