init.lua 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. local mushroom_grow_nodes = {"default:dirt", "default:dirt_with_grass", "default:dirt_with_rainforest_litter", "default:dirt_with_coniferous_litter"}
  2. local poisoned = {}
  3. minetest.register_node(":flowers:mushroom_red", { --Amanita Muscaria (Fly Agaric)
  4. description = "Red Mushroom",
  5. tiles = {"flowers_mushroom_red.png"},
  6. inventory_image = "flowers_mushroom_red.png",
  7. drawtype = "plantlike",
  8. paramtype = "light",
  9. sunlight_propagates = true,
  10. walkable = false,
  11. buildable_to = true,
  12. groups = {snappy = 3, attached_node = 1, flammable = 1, mushroom = 1, toxic_mushroom = 1},
  13. sounds = default.node_sound_leaves_defaults(),
  14. on_use = minetest.item_eat(-5),
  15. selection_box = {
  16. type = "fixed",
  17. fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, -1 / 16, 4 / 16},
  18. }
  19. })
  20. minetest.register_node("mushrooms_redo:mushroom_white", { --Amanita Smithiana (Smith's Amanita)
  21. description = "White Mushroom",
  22. tiles = {"mushroom_white.png"},
  23. inventory_image = "mushroom_white.png",
  24. drawtype = "plantlike",
  25. paramtype = "light",
  26. sunlight_propagates = true,
  27. walkable = false,
  28. buildable_to = true,
  29. groups = {snappy = 3, attached_node = 1, flammable = 1, mushroom = 1, toxic_mushroom = 3},
  30. sounds = default.node_sound_leaves_defaults(),
  31. on_use = function(itemstack, player)
  32. if not poisoned[player:get_player_name()] then
  33. minetest.after(10,
  34. function(player)
  35. if player and player:is_player() then
  36. player:set_hp(0)
  37. end
  38. end, player)
  39. poisoned[player:get_player_name()] = true
  40. end
  41. return minetest.item_eat(5)(itemstack, player)
  42. end,
  43. selection_box = {
  44. type = "fixed",
  45. fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 1 / 16, 3 / 16},
  46. }
  47. })
  48. minetest.register_on_dieplayer(function(player)
  49. poisoned[player:get_player_name()] = nil
  50. end)
  51. minetest.register_on_leaveplayer(function(player)
  52. if poisoned[player:get_player_name()] then
  53. player:set_hp(0)
  54. end
  55. poisoned[player:get_player_name()] = nil
  56. end)
  57. minetest.register_node(":flowers:mushroom_brown", { --Lentinula Edodes (Shiitake)
  58. description = "Brown Mushroom",
  59. tiles = {"flowers_mushroom_brown.png"},
  60. inventory_image = "flowers_mushroom_brown.png",
  61. drawtype = "plantlike",
  62. paramtype = "light",
  63. sunlight_propagates = true,
  64. walkable = false,
  65. buildable_to = true,
  66. groups = {snappy = 3, attached_node = 1, flammable = 1, mushroom = 1},
  67. sounds = default.node_sound_leaves_defaults(),
  68. on_use = minetest.item_eat(1),
  69. selection_box = {
  70. type = "fixed",
  71. fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, -2 / 16, 3 / 16},
  72. }
  73. })
  74. minetest.register_node("mushrooms_redo:mushroom_brown_cooked", {
  75. description = "Cooked Brown Mushroom",
  76. tiles = {"flowers_mushroom_brown.png^[colorize:#501F08:200"},
  77. inventory_image = "flowers_mushroom_brown.png^[colorize:#501F08:200",
  78. drawtype = "plantlike",
  79. paramtype = "light",
  80. sunlight_propagates = true,
  81. walkable = false,
  82. buildable_to = true,
  83. groups = {snappy = 3, attached_node = 1, flammable = 1},
  84. sounds = default.node_sound_leaves_defaults(),
  85. on_use = minetest.item_eat(6),
  86. selection_box = {
  87. type = "fixed",
  88. fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, -2 / 16, 3 / 16},
  89. }
  90. })
  91. minetest.register_craft({
  92. type = "cooking",
  93. output = "mushrooms_redo:mushroom_brown_cooked",
  94. recipe = "flowers:mushroom_brown",
  95. cooktime = 8,
  96. })
  97. minetest.register_craftitem("mushrooms_redo:sinister_bread", {
  98. description = "Bread",
  99. inventory_image = "farming_bread.png",
  100. on_use = function(itemstack, player)
  101. if not poisoned[player:get_player_name()] then
  102. minetest.after(10,
  103. function(player)
  104. if player and player:is_player() then
  105. player:set_hp(0)
  106. end
  107. end, player)
  108. poisoned[player:get_player_name()] = true
  109. end
  110. return minetest.item_eat(5)(itemstack, player)
  111. end,
  112. groups = {flammable = 2},
  113. })
  114. minetest.register_craft({
  115. output = "mushrooms_redo:sinister_bread",
  116. type="shapeless",
  117. recipe={"farming:bread","mushrooms_redo:mushroom_white"},
  118. })
  119. --[[
  120. Nullify default mushroom spread. group:mushroom now handles this.
  121. Delete the brackets on the next line to fall back to default (mushrooms registered by use of group:mushroom will no longer grow).
  122. ]]
  123. flowers.mushroom_spread = function() end
  124. minetest.register_abm({
  125. nodenames={"group:mushroom"},
  126. interval=15,
  127. chance=24,
  128. catch_up = false,
  129. action=function(p, node)
  130. local shroom = node.name
  131. local light = minetest.get_node_light(p, 0.5)
  132. if not light then return end
  133. local node_reg = minetest.registered_nodes[shroom]
  134. if not node_reg then return end
  135. p.x = p.x + 2*(math.random() - 0.5)
  136. p.y = p.y + 2*(math.random() - 0.5)
  137. p.z = p.z + 2*(math.random() - 0.5)
  138. if minetest.get_node(p).name ~= "air" then return end
  139. local soil_reg = minetest.registered_nodes[minetest.get_node(vector.new(p.x,p.y-1,p.z)).name]
  140. if 3 <= light and light <= 5 and soil_reg and soil_reg.groups.soil then
  141. minetest.set_node(p, node)
  142. end
  143. end
  144. })--]]
  145. local mg_name = minetest.get_mapgen_setting("mg_name")
  146. if mg_name == "v6" then
  147. minetest.register_decoration({
  148. deco_type = "simple",
  149. place_on = mushroom_grow_nodes,
  150. sidelen = 16,
  151. noise_params = {
  152. offset = 0,
  153. scale = 0.04,
  154. spread = {x = 100, y = 100, z = 100},
  155. seed = 7133,
  156. octaves = 3,
  157. persist = 0.6
  158. },
  159. biomes = {"rainforest", "jungle", "deciduous_forest", "coniferous_forest", "floatland_coniferous_forest"},
  160. y_min = 1,
  161. y_max = 30,
  162. decoration = "mushrooms_redo:mushroom_white",
  163. spawn_by = "group:tree",
  164. num_spawn_by = 1,
  165. })
  166. else
  167. minetest.register_decoration({
  168. deco_type = "simple",
  169. place_on = mushroom_grow_nodes,
  170. sidelen = 16,
  171. noise_params = {
  172. offset = 0,
  173. scale = 0.006,
  174. spread = {x = 250, y = 250, z = 250},
  175. seed = 2,
  176. octaves = 3,
  177. persist = 0.66
  178. },
  179. biomes = {"rainforest", "jungle", "deciduous_forest", "coniferous_forest", "floatland_coniferous_forest"},
  180. y_min = 1,
  181. y_max = 31000,
  182. decoration = "mushrooms_redo:mushroom_white",
  183. })
  184. end