hops.lua 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. local base_speed = 100
  2. minetest.register_craftitem("farming_super:hops", {
  3. description = "Hops",
  4. inventory_image = "farming_super_hops.png",
  5. groups = {flammable = 2},
  6. })
  7. minetest.register_craftitem("farming_super:hops_sapling", {
  8. description = "Hops Sapling",
  9. inventory_image = "farming_super_hops_vine.png",
  10. groups = {flammable = 2},
  11. on_place = function(itemstack, placer, pointed_thing)
  12. local n = minetest.get_node(pointed_thing.under)
  13. if n.name == "farming:soil_wet" then
  14. itemstack:take_item()
  15. minetest.set_node(pointed_thing.under, {name = "farming_super:hops_vine", param2 = 1,})
  16. end
  17. return itemstack
  18. end,
  19. })
  20. minetest.register_node("farming_super:hops_vine", {
  21. description = "Hops Plant",
  22. drawtype = "plantlike_rooted",
  23. waving = 1,
  24. tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet_side.png"},
  25. drop = "default:dirt",
  26. special_tiles = {{name = "farming_super_hops_vine.png", tileable_vertical = true}},
  27. inventory_image = "farming_super_hops_vine.png",
  28. paramtype = "light",
  29. paramtype2 = "leveled",
  30. place_param2 = 1,
  31. groups = {snappy = 3},
  32. visual_scale = 1.5,
  33. selection_box = {
  34. type = "fixed",
  35. fixed = {
  36. {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
  37. {-2/16, 0.5, -2/16, 2/16, 3.5, 2/16},
  38. },
  39. },
  40. node_dig_prediction = "default:sand",
  41. node_placement_prediction = "",
  42. sounds = default.node_sound_sand_defaults({
  43. dig = {name = "default_dig_snappy", gain = 0.2},
  44. dug = {name = "default_grass_footstep", gain = 0.25},
  45. }),
  46. after_destruct = function(pos, oldnode)
  47. local n = minetest.get_node(pos)
  48. -- if n.name == "farming_super:hops_vine_fruit" then
  49. -- minetest.set_node(pos, {name = "farming_super:hops_vine", param2 = oldnode.param2})
  50. if n.name ~= "farming_super:hops_vine_fruit" then
  51. minetest.set_node(pos, {name = "farming:soil_wet"})
  52. end
  53. end,
  54. })
  55. minetest.register_decoration({
  56. name = "farming_super:hops_vine",
  57. deco_type = "simple",
  58. place_on = {"default:dirt_with_coniferous_litter"},
  59. sidelen = 16,
  60. noise_params = {
  61. offset = -0.002,
  62. scale = 0.03,
  63. spread = {x = 200, y = 200, z = 200},
  64. seed = 56784,
  65. octaves = 3,
  66. persist = 0.8
  67. },
  68. biomes = {"coniferous_forest"},
  69. y_max = 140,
  70. y_min = 20,
  71. decoration = "farming_super:hops_vine",
  72. --decoration = "default:mese_block",
  73. })
  74. minetest.register_node("farming_super:hops_vine_fruit", {
  75. description = "Hops Plant with Flowers",
  76. drawtype = "plantlike_rooted",
  77. waving = 1,
  78. tiles = {"default_sand.png"},
  79. tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet_side.png"},
  80. drop = "default:dirt",
  81. special_tiles = {{name = "farming_super_hops_vine_fruit.png", tileable_vertical = true}},
  82. inventory_image = "farming_super_hops_vine_fruit.png",
  83. paramtype = "light",
  84. paramtype2 = "leveled",
  85. place_param2 = 1,
  86. groups = {snappy = 3},
  87. visual_scale = 1.5,
  88. selection_box = {
  89. type = "fixed",
  90. fixed = {
  91. {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
  92. {-2/16, 0.5, -2/16, 2/16, 3.5, 2/16},
  93. },
  94. },
  95. node_dig_prediction = "default:sand",
  96. node_placement_prediction = "",
  97. sounds = default.node_sound_sand_defaults({
  98. dig = {name = "default_dig_snappy", gain = 0.2},
  99. dug = {name = "default_grass_footstep", gain = 0.25},
  100. }),
  101. after_destruct = function(pos, oldnode)
  102. local n = minetest.get_node(pos)
  103. -- if n.name == "farming_super:hops_vine_fruit" then
  104. -- minetest.set_node(pos, {name = "farming_super:hops_vine", param2 = oldnode.param2})
  105. if n.name ~= "farming_super:hops_vine_fruit" then
  106. minetest.set_node(pos, {name = "farming:soil_wet"})
  107. end
  108. end,
  109. })
  110. minetest.register_abm({
  111. label = "Hops Vine Growth",
  112. nodenames = {"farming_super:hops_vine", "farming_super:hops_vine_fruit", },
  113. interval = 1,
  114. chance = 1,
  115. action = function(pos, node)
  116. local lvl = minetest.get_node_level(pos)
  117. local cnt = math.max(1, math.ceil(((lvl - 7) / 16) * 1.5) )
  118. local top = {x=pos.x, y=pos.y + cnt, z=pos.z}
  119. local stick = minetest.get_node(top)
  120. if stick.name == "farming_super:pole" then
  121. minetest.add_node_level(pos, 1)
  122. end
  123. end,
  124. })
  125. minetest.register_abm({
  126. label = "Hops Vine Fruit Growth",
  127. nodenames = {"farming_super:hops_vine", },
  128. interval = 5,
  129. chance = 1,
  130. action = function(pos, node)
  131. minetest.set_node(pos, {name="farming_super:hops_vine_fruit", param2 = node.param2})
  132. end,
  133. })