nodes.lua 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. minetest.override_item("default:dirt", {
  2. soil = {
  3. base = "default:dirt",
  4. dry = "farming:soil",
  5. wet = "farming:soil_wet"
  6. }
  7. })
  8. minetest.override_item("default:dirt_with_grass", {
  9. soil = {
  10. base = "default:dirt_with_grass",
  11. dry = "farming:soil",
  12. wet = "farming:soil_wet"
  13. }
  14. })
  15. minetest.override_item("default:dirt_with_dry_grass", {
  16. soil = {
  17. base = "default:dirt_with_dry_grass",
  18. dry = "farming:soil",
  19. wet = "farming:soil_wet"
  20. }
  21. })
  22. minetest.override_item("default:dirt_with_rainforest_litter", {
  23. soil = {
  24. base = "default:dirt_with_rainforest_litter",
  25. dry = "farming:soil",
  26. wet = "farming:soil_wet"
  27. }
  28. })
  29. minetest.override_item("default:dirt_with_coniferous_litter", {
  30. soil = {
  31. base = "default:dirt_with_coniferous_litter",
  32. dry = "farming:soil",
  33. wet = "farming:soil_wet"
  34. }
  35. })
  36. minetest.register_node("farming:soil", {
  37. description = "Soil",
  38. tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"},
  39. drop = "default:dirt",
  40. groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1},
  41. sounds = default.node_sound_dirt_defaults(),
  42. soil = {
  43. base = "default:dirt",
  44. dry = "farming:soil",
  45. wet = "farming:soil_wet"
  46. }
  47. })
  48. minetest.register_node("farming:soil_wet", {
  49. description = "Wet Soil",
  50. tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet_side.png"},
  51. drop = "default:dirt",
  52. groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1},
  53. sounds = default.node_sound_dirt_defaults(),
  54. soil = {
  55. base = "default:dirt",
  56. dry = "farming:soil",
  57. wet = "farming:soil_wet"
  58. }
  59. })
  60. minetest.override_item("default:desert_sand", {
  61. groups = {crumbly=3, falling_node=1, sand=1, soil = 1},
  62. soil = {
  63. base = "default:desert_sand",
  64. dry = "farming:desert_sand_soil",
  65. wet = "farming:desert_sand_soil_wet"
  66. }
  67. })
  68. minetest.register_node("farming:desert_sand_soil", {
  69. description = "Desert Sand Soil",
  70. drop = "default:desert_sand",
  71. tiles = {"farming_desert_sand_soil.png", "default_desert_sand.png"},
  72. groups = {crumbly=3, not_in_creative_inventory = 1, falling_node=1, sand=1, soil = 2, desert = 1, field = 1},
  73. sounds = default.node_sound_sand_defaults(),
  74. soil = {
  75. base = "default:desert_sand",
  76. dry = "farming:desert_sand_soil",
  77. wet = "farming:desert_sand_soil_wet"
  78. }
  79. })
  80. minetest.register_node("farming:desert_sand_soil_wet", {
  81. description = "Wet Desert Sand Soil",
  82. drop = "default:desert_sand",
  83. tiles = {"farming_desert_sand_soil_wet.png", "farming_desert_sand_soil_wet_side.png"},
  84. groups = {crumbly=3, falling_node=1, sand=1, not_in_creative_inventory=1, soil=3, wet = 1, desert = 1, field = 1},
  85. sounds = default.node_sound_sand_defaults(),
  86. soil = {
  87. base = "default:desert_sand",
  88. dry = "farming:desert_sand_soil",
  89. wet = "farming:desert_sand_soil_wet"
  90. }
  91. })
  92. minetest.register_node("farming:straw", {
  93. description = "Straw",
  94. tiles = {"farming_straw.png"},
  95. is_ground_content = false,
  96. stack_max = 2,
  97. groups = {snappy=3, flammable=4, fall_damage_add_percent=-30},
  98. sounds = default.node_sound_leaves_defaults(),
  99. })
  100. stairs.register_stair_and_slab(
  101. "straw",
  102. "farming:straw",
  103. {snappy = 3, flammable = 4},
  104. {"farming_straw.png"},
  105. "Straw Stair",
  106. "Straw Slab",
  107. default.node_sound_leaves_defaults()
  108. )
  109. minetest.register_abm({
  110. label = "Farming soil",
  111. nodenames = {"group:field"},
  112. interval = 15,
  113. chance = 4,
  114. action = function(pos, node)
  115. local n_def = minetest.registered_nodes[node.name] or nil
  116. local wet = n_def.soil.wet or nil
  117. local base = n_def.soil.base or nil
  118. local dry = n_def.soil.dry or nil
  119. if not n_def or not n_def.soil or not wet or not base or not dry then
  120. return
  121. end
  122. pos.y = pos.y + 1
  123. local nn = minetest.get_node_or_nil(pos)
  124. if not nn or not nn.name then
  125. return
  126. end
  127. local nn_def = minetest.registered_nodes[nn.name] or nil
  128. pos.y = pos.y - 1
  129. if nn_def and nn_def.walkable and minetest.get_item_group(nn.name, "plant") == 0 then
  130. minetest.set_node(pos, {name = base})
  131. return
  132. end
  133. -- check if there is water nearby
  134. local wet_lvl = minetest.get_item_group(node.name, "wet")
  135. if minetest.find_node_near(pos, 3, {"group:water"}) then
  136. -- if it is dry soil and not base node, turn it into wet soil
  137. if wet_lvl == 0 then
  138. minetest.set_node(pos, {name = wet})
  139. end
  140. else
  141. -- only turn back if there are no unloaded blocks (and therefore
  142. -- possible water sources) nearby
  143. if not minetest.find_node_near(pos, 3, {"ignore"}) then
  144. -- turn it back into base if it is already dry
  145. if wet_lvl == 0 then
  146. -- only turn it back if there is no plant/seed on top of it
  147. if minetest.get_item_group(nn.name, "plant") == 0 and minetest.get_item_group(nn.name, "seed") == 0 then
  148. minetest.set_node(pos, {name = base})
  149. end
  150. -- if its wet turn it back into dry soil
  151. elseif wet_lvl == 1 then
  152. minetest.set_node(pos, {name = dry})
  153. end
  154. end
  155. end
  156. end,
  157. })
  158. for i = 1, 5 do
  159. minetest.override_item("default:grass_"..i, {drop = {
  160. max_items = 1,
  161. items = {
  162. {items = {'farming:seed_wheat'},rarity = 8},
  163. {items = {'default:grass_1'}},
  164. }
  165. }})
  166. end
  167. for i = 1, 5 do
  168. minetest.override_item("default:dry_grass_"..i, {drop = {
  169. max_items = 1,
  170. items = {
  171. {items = {'farming:seed_cotton'},rarity = 9},
  172. {items = {'default:dry_grass_1'}},
  173. }
  174. }})
  175. end
  176. minetest.override_item("default:junglegrass", {drop = {
  177. max_items = 1,
  178. items = {
  179. {items = {'farming:seed_rice'},rarity = 8},
  180. {items = {'default:junglegrass'}},
  181. }
  182. }})