soil.lua 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. minetest.register_node("farming:soil", {
  2. tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"},
  3. drop = "default:dirt",
  4. groups = {crumbly=2, falling_node=1, not_in_creative_inventory=1},
  5. sounds = default.node_sound_dirt_defaults({
  6. footstep = {name="default_grass_footstep", gain=0.4},
  7. }),
  8. })
  9. minetest.register_node("farming:soil_wet", {
  10. tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet_side.png"},
  11. drop = "default:dirt",
  12. groups = {crumbly=2, falling_node=1, not_in_creative_inventory=1},
  13. sounds = default.node_sound_dirt_defaults({
  14. footstep = {name="default_grass_footstep", gain=0.4},
  15. }),
  16. })
  17. minetest.register_abm({
  18. nodenames = {"farming:soil"},
  19. interval = 15,
  20. chance = 5,
  21. action = function(pos, node)
  22. if minetest.find_node_near(pos, 4, {"default:water_source", "default:water_flowing"}) then
  23. node.name = "farming:soil_wet"
  24. minetest.set_node(pos, node)
  25. end
  26. end,
  27. })
  28. minetest.register_abm({
  29. nodenames = {"farming:soil", "farming:soil_wet"},
  30. interval = 2,
  31. chance = 20,
  32. action = function(pos, node)
  33. local above = {x=pos.x, y=pos.y+1, z=pos.z}
  34. local name = minetest.get_node(above).name
  35. local nodedef = minetest.registered_nodes[name]
  36. if name ~= "ignore" and nodedef
  37. and not ((nodedef.sunlight_propagates or nodedef.paramtype == "light")
  38. and nodedef.liquidtype == "none") then
  39. minetest.set_node(pos, {name = "default:dirt"})
  40. end
  41. end
  42. })