fluid.lua 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. -- Orewood Reborn ABM Registry. I would like to thank desvox for making the orewood mod this one originated from.
  2. -- Functions to sprout papy from logs
  3. minetest.register_abm({
  4. nodenames = {"orewood:fluidwood"},
  5. neighbors = {"default:lava_source"},
  6. interval = 40,
  7. chance = 10,
  8. action = function(pos, node)
  9. local height = 0
  10. while node.name == "orewood:fluidwood" and height < 4 do
  11. height = height+1
  12. pos.y = pos.y+1
  13. node = minetest.get_node(pos)
  14. end
  15. if height == 4
  16. or node.name ~= "air" then
  17. return
  18. end
  19. minetest.set_node(pos, {name="orewood:lavapapy"})
  20. end,
  21. })
  22. minetest.register_abm({
  23. nodenames = {"orewood:fluidwood"},
  24. neighbors = {"default:river_water_source"},
  25. interval = 40,
  26. chance = 10,
  27. action = function(pos, node)
  28. local height = 0
  29. while node.name == "orewood:fluidwood" and height < 4 do
  30. height = height+1
  31. pos.y = pos.y+1
  32. node = minetest.get_node(pos)
  33. end
  34. if height == 4
  35. or node.name ~= "air" then
  36. return
  37. end
  38. minetest.set_node(pos, {name="orewood:riverpapy"})
  39. end,
  40. })
  41. minetest.register_abm({
  42. nodenames = {"orewood:fluidwood"},
  43. neighbors = {"default:water_source"},
  44. interval = 40,
  45. chance = 10,
  46. action = function(pos, node)
  47. local height = 0
  48. while node.name == "orewood:fluidwood" and height < 4 do
  49. height = height+1
  50. pos.y = pos.y+1
  51. node = minetest.get_node(pos)
  52. end
  53. if height == 4
  54. or node.name ~= "air" then
  55. return
  56. end
  57. minetest.set_node(pos, {name="orewood:snowpapy"})
  58. end,
  59. })
  60. -- Functions to grow papy that has sprouted
  61. minetest.register_abm({
  62. nodenames = {"orewood:lavapapy"},
  63. neighbors = {"orewood:fluidwood"},
  64. interval = 50,
  65. chance = 20,
  66. action = function(pos, node)
  67. pos.y = pos.y-1
  68. local name = minetest.get_node(pos).name
  69. if name ~= "orewood:fluidwood"
  70. and name ~= "orewood:fluidwood" then
  71. return
  72. end
  73. if not minetest.find_node_near(pos, 3, {"group:lava"}) then
  74. return
  75. end
  76. pos.y = pos.y+1
  77. local height = 0
  78. while node.name == "orewood:lavapapy" and height < 4 do
  79. height = height+1
  80. pos.y = pos.y+1
  81. node = minetest.get_node(pos)
  82. end
  83. if height == 4
  84. or node.name ~= "air" then
  85. return
  86. end
  87. minetest.set_node(pos, {name="orewood:lavapapy"})
  88. return true
  89. end,
  90. })
  91. minetest.register_abm({
  92. nodenames = {"orewood:riverpapy"},
  93. neighbors = {"orewood:fluidwood"},
  94. interval = 50,
  95. chance = 20,
  96. action = function(pos, node)
  97. pos.y = pos.y-1
  98. local name = minetest.get_node(pos).name
  99. if name ~= "orewood:fluidwood"
  100. and name ~= "orewood:fluidwood" then
  101. return
  102. end
  103. if not minetest.find_node_near(pos, 3, {"group:water"}) then
  104. return
  105. end
  106. pos.y = pos.y+1
  107. local height = 0
  108. while node.name == "orewood:riverpapy" and height < 4 do
  109. height = height+1
  110. pos.y = pos.y+1
  111. node = minetest.get_node(pos)
  112. end
  113. if height == 4
  114. or node.name ~= "air" then
  115. return
  116. end
  117. minetest.set_node(pos, {name="orewood:riverpapy"})
  118. return true
  119. end,
  120. })
  121. minetest.register_abm({
  122. nodenames = {"orewood:snowpapy"},
  123. neighbors = {"orewood:fluidwood"},
  124. interval = 50,
  125. chance = 20,
  126. action = function(pos, node)
  127. pos.y = pos.y-1
  128. local name = minetest.get_node(pos).name
  129. if name ~= "orewood:fluidwood"
  130. and name ~= "orewood:fluidwood" then
  131. return
  132. end
  133. if not minetest.find_node_near(pos, 3, {"group:water"}) then
  134. return
  135. end
  136. pos.y = pos.y+1
  137. local height = 0
  138. while node.name == "orewood:snowpapy" and height < 4 do
  139. height = height+1
  140. pos.y = pos.y+1
  141. node = minetest.get_node(pos)
  142. end
  143. if height == 4
  144. or node.name ~= "air" then
  145. return
  146. end
  147. minetest.set_node(pos, {name="orewood:snowpapy"})
  148. return true
  149. end,
  150. })
  151. -- And now, I bid you good luck ;D
  152. minetest.register_abm({
  153. nodenames = {"orewood:fluidwood"},
  154. neighbors = {"default:water_source"},
  155. interval = 40,
  156. chance = 10,
  157. action = function(pos, node)
  158. local height = 0
  159. while node.name == "orewood:fluidwood" and height < 4 do
  160. height = height+1
  161. pos.y = pos.y+1
  162. node = minetest.get_node(pos)
  163. end
  164. if height == 4
  165. or node.name ~= "air" then
  166. return
  167. end
  168. minetest.set_node(pos, {name="orewood:ironpapy"})
  169. end,
  170. })
  171. minetest.register_abm({
  172. nodenames = {"orewood:fluidwood"},
  173. neighbors = {"default:water_source"},
  174. interval = 40,
  175. chance = 10,
  176. action = function(pos, node)
  177. local height = 0
  178. while node.name == "orewood:fluidwood" and height < 4 do
  179. height = height+1
  180. pos.y = pos.y+1
  181. node = minetest.get_node(pos)
  182. end
  183. if height == 4
  184. or node.name ~= "air" then
  185. return
  186. end
  187. minetest.set_node(pos, {name="orewood:coalpapy"})
  188. end,
  189. })
  190. minetest.register_abm({
  191. nodenames = {"orewood:fluidwood"},
  192. neighbors = {"default:water_source"},
  193. interval = 40,
  194. chance = 10,
  195. action = function(pos, node)
  196. local height = 0
  197. while node.name == "orewood:fluidwood" and height < 4 do
  198. height = height+1
  199. pos.y = pos.y+1
  200. node = minetest.get_node(pos)
  201. end
  202. if height == 4
  203. or node.name ~= "air" then
  204. return
  205. end
  206. minetest.set_node(pos, {name="orewood:tinpapy"})
  207. end,
  208. })
  209. minetest.register_abm({
  210. nodenames = {"orewood:fluidwood"},
  211. neighbors = {"default:water_source"},
  212. interval = 40,
  213. chance = 10,
  214. action = function(pos, node)
  215. local height = 0
  216. while node.name == "orewood:fluidwood" and height < 4 do
  217. height = height+1
  218. pos.y = pos.y+1
  219. node = minetest.get_node(pos)
  220. end
  221. if height == 4
  222. or node.name ~= "air" then
  223. return
  224. end
  225. minetest.set_node(pos, {name="orewood:copperpapy"})
  226. end,
  227. })
  228. minetest.register_abm({
  229. nodenames = {"orewood:fluidwood"},
  230. neighbors = {"default:water_source"},
  231. interval = 40,
  232. chance = 10,
  233. action = function(pos, node)
  234. local height = 0
  235. while node.name == "orewood:fluidwood" and height < 4 do
  236. height = height+1
  237. pos.y = pos.y+1
  238. node = minetest.get_node(pos)
  239. end
  240. if height == 4
  241. or node.name ~= "air" then
  242. return
  243. end
  244. minetest.set_node(pos, {name="orewood:mesepapy"})
  245. end,
  246. })
  247. minetest.register_abm({
  248. nodenames = {"orewood:fluidwood"},
  249. neighbors = {"default:water_source"},
  250. interval = 40,
  251. chance = 10,
  252. action = function(pos, node)
  253. local height = 0
  254. while node.name == "orewood:fluidwood" and height < 4 do
  255. height = height+1
  256. pos.y = pos.y+1
  257. node = minetest.get_node(pos)
  258. end
  259. if height == 4
  260. or node.name ~= "air" then
  261. return
  262. end
  263. minetest.set_node(pos, {name="orewood:diamondpapy"})
  264. end,
  265. })
  266. minetest.register_abm({
  267. nodenames = {"orewood:fluidwood"},
  268. neighbors = {"default:water_source"},
  269. interval = 40,
  270. chance = 10,
  271. action = function(pos, node)
  272. local height = 0
  273. while node.name == "orewood:fluidwood" and height < 4 do
  274. height = height+1
  275. pos.y = pos.y+1
  276. node = minetest.get_node(pos)
  277. end
  278. if height == 4
  279. or node.name ~= "air" then
  280. return
  281. end
  282. minetest.set_node(pos, {name="orewood:goldpapy"})
  283. end,
  284. })
  285. minetest.register_abm({
  286. nodenames = {"orewood:fluidwood"},
  287. neighbors = {"default:water_source"},
  288. interval = 40,
  289. chance = 10,
  290. action = function(pos, node)
  291. local height = 0
  292. while node.name == "orewood:fluidwood" and height < 4 do
  293. height = height+1
  294. pos.y = pos.y+1
  295. node = minetest.get_node(pos)
  296. end
  297. if height == 4
  298. or node.name ~= "air" then
  299. return
  300. end
  301. minetest.set_node(pos, {name="orewood:obsidianpapy"})
  302. end,
  303. })
  304. minetest.register_abm({
  305. nodenames = {"orewood:fluidwood"},
  306. neighbors = {"default:water_source"},
  307. interval = 40,
  308. chance = 10,
  309. action = function(pos, node)
  310. local height = 0
  311. while node.name == "orewood:fluidwood" and height < 4 do
  312. height = height+1
  313. pos.y = pos.y+1
  314. node = minetest.get_node(pos)
  315. end
  316. if height == 4
  317. or node.name ~= "air" then
  318. return
  319. end
  320. minetest.set_node(pos, {name="orewood:claypapy"})
  321. end,
  322. })
  323. -- And why not add other mods to the mix?
  324. -- Because this dev is a procrastinator, that's why.