corals.lua 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. local function coral_on_place(itemstack, placer, pointed_thing)
  2. if pointed_thing.type ~= "node" or not placer then
  3. return itemstack
  4. end
  5. local player_name = placer:get_player_name()
  6. local pos_under = pointed_thing.under
  7. local pos_above = pointed_thing.above
  8. local node_under = minetest.get_node(pos_under)
  9. local def_under = minetest.registered_nodes[node_under.name]
  10. if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then
  11. return def_under.on_rightclick(pos_under, node_under, placer, itemstack, pointed_thing) or itemstack
  12. end
  13. local water_group = minetest.get_item_group(minetest.get_node(pos_above).name, "water")
  14. if node_under.name ~= "default:coral_skeleton" or water_group == 0 then
  15. return itemstack
  16. end
  17. if minetest.test_protection(pos_under, player_name) or minetest.test_protection(pos_above, player_name) then
  18. return itemstack
  19. end
  20. node_under.name = itemstack:get_name()
  21. minetest.set_node(pos_under, node_under)
  22. itemstack:take_item()
  23. return itemstack
  24. end
  25. minetest.register_node("default:coral_green", {
  26. description = "Green Coral",
  27. drawtype = "plantlike_rooted",
  28. waving = 1,
  29. paramtype = "light",
  30. tiles = {"default_coral_skeleton.png"},
  31. special_tiles = {{name = "default_coral_green.png", tileable_vertical = true}},
  32. inventory_image = "default_coral_green.png",
  33. wield_image = "default_coral_green.png",
  34. groups = utility.dig_groups("plant"),
  35. selection_box = {
  36. type = "fixed",
  37. fixed = {
  38. {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
  39. {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},
  40. },
  41. },
  42. node_dig_prediction = "default:coral_skeleton",
  43. node_placement_prediction = "",
  44. sounds = default.node_sound_stone_defaults({
  45. dig = {name = "default_dig_snappy", gain = 0.2},
  46. dug = {name = "default_grass_footstep", gain = 0.25},
  47. }),
  48. on_place = coral_on_place,
  49. after_destruct = function(pos, oldnode)
  50. minetest.set_node(pos, {name = "default:coral_skeleton"})
  51. end,
  52. })
  53. minetest.register_node("default:coral_pink", {
  54. description = "Pink Coral",
  55. drawtype = "plantlike_rooted",
  56. waving = 1,
  57. paramtype = "light",
  58. tiles = {"default_coral_skeleton.png"},
  59. special_tiles = {{name = "default_coral_pink.png", tileable_vertical = true}},
  60. inventory_image = "default_coral_pink.png",
  61. wield_image = "default_coral_pink.png",
  62. groups = utility.dig_groups("plant"),
  63. selection_box = {
  64. type = "fixed",
  65. fixed = {
  66. {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
  67. {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},
  68. },
  69. },
  70. node_dig_prediction = "default:coral_skeleton",
  71. node_placement_prediction = "",
  72. sounds = default.node_sound_stone_defaults({
  73. dig = {name = "default_dig_snappy", gain = 0.2},
  74. dug = {name = "default_grass_footstep", gain = 0.25},
  75. }),
  76. on_place = coral_on_place,
  77. after_destruct = function(pos, oldnode)
  78. minetest.set_node(pos, {name = "default:coral_skeleton"})
  79. end,
  80. })
  81. minetest.register_node("default:coral_cyan", {
  82. description = "Cyan Coral",
  83. drawtype = "plantlike_rooted",
  84. waving = 1,
  85. paramtype = "light",
  86. tiles = {"default_coral_skeleton.png"},
  87. special_tiles = {{name = "default_coral_cyan.png", tileable_vertical = true}},
  88. inventory_image = "default_coral_cyan.png",
  89. wield_image = "default_coral_cyan.png",
  90. groups = utility.dig_groups("plant"),
  91. selection_box = {
  92. type = "fixed",
  93. fixed = {
  94. {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
  95. {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},
  96. },
  97. },
  98. node_dig_prediction = "default:coral_skeleton",
  99. node_placement_prediction = "",
  100. sounds = default.node_sound_stone_defaults({
  101. dig = {name = "default_dig_snappy", gain = 0.2},
  102. dug = {name = "default_grass_footstep", gain = 0.25},
  103. }),
  104. on_place = coral_on_place,
  105. after_destruct = function(pos, oldnode)
  106. minetest.set_node(pos, {name = "default:coral_skeleton"})
  107. end,
  108. })
  109. minetest.register_node("default:coral_brown", {
  110. description = "Brown Coral",
  111. tiles = {"default_coral_brown.png"},
  112. groups = utility.dig_groups("cobble"),
  113. drop = "default:coral_skeleton",
  114. silverpick_drop = true,
  115. sounds = default.node_sound_stone_defaults(),
  116. })
  117. minetest.register_node("default:coral_orange", {
  118. description = "Orange Coral",
  119. tiles = {"default_coral_orange.png"},
  120. groups = utility.dig_groups("cobble"),
  121. drop = "default:coral_skeleton",
  122. silverpick_drop = true,
  123. sounds = default.node_sound_stone_defaults(),
  124. })
  125. minetest.register_node("default:coral_skeleton", {
  126. description = "Coral Skeleton",
  127. tiles = {"default_coral_skeleton.png"},
  128. groups = utility.dig_groups("cobble"),
  129. sounds = default.node_sound_stone_defaults(),
  130. })