sand.lua 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. -- Renew mod for Minetest
  2. -- Copyright © 2020 Alex Yst <https://y.st./>
  3. -- This program is free software; you can redistribute it and/or
  4. -- modify it under the terms of the GNU Lesser General Public
  5. -- License as published by the Free Software Foundation; either
  6. -- version 2.1 of the License, or (at your option) any later version.
  7. -- This software is distributed in the hope that it will be useful,
  8. -- but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  10. -- Lesser General Public License for more details.
  11. -- You should have received a copy of the GNU Lesser General Public
  12. -- License along with this program. If not, see
  13. -- <https://www.gnu.org./licenses/>.
  14. -- Tools
  15. minetest.register_tool("renew:sledgehammer_wood", {
  16. description = "Wooden Sledgehammer",
  17. inventory_image = "renew-sledgehammer_wood.png",
  18. tool_capabilities = {
  19. full_punch_interval = 1.2,
  20. max_drop_level=0,
  21. groupcaps={
  22. pulverizeable = {times={[3]=1.60}, uses=10, maxlevel=1},
  23. },
  24. damage_groups = {fleshy=2},
  25. },
  26. groups = {flammable = 2},
  27. sound = {breaks = "default_tool_breaks"},
  28. })
  29. minetest.register_tool("renew:sledgehammer_stone", {
  30. description = "Stone Sledgehammer",
  31. inventory_image = "renew-sledgehammer_stone.png",
  32. tool_capabilities = {
  33. full_punch_interval = 1.3,
  34. max_drop_level=0,
  35. groupcaps={
  36. pulverizeable = {times={[2]=2.0, [3]=1.00}, uses=20, maxlevel=1},
  37. },
  38. damage_groups = {fleshy=3},
  39. },
  40. sound = {breaks = "default_tool_breaks"},
  41. })
  42. minetest.register_tool("renew:sledgehammer_steel", {
  43. description = "Steel Sledgehammer",
  44. inventory_image = "renew-sledgehammer_steel.png",
  45. tool_capabilities = {
  46. full_punch_interval = 1.0,
  47. max_drop_level=1,
  48. groupcaps={
  49. pulverizeable = {times={[1]=4.00, [2]=1.60, [3]=0.80}, uses=20, maxlevel=2},
  50. },
  51. damage_groups = {fleshy=4},
  52. },
  53. sound = {breaks = "default_tool_breaks"},
  54. })
  55. minetest.register_tool("renew:sledgehammer_bronze", {
  56. description = "Bronze Sledgehammer",
  57. inventory_image = "renew-sledgehammer_bronze.png",
  58. tool_capabilities = {
  59. full_punch_interval = 1.0,
  60. max_drop_level=1,
  61. groupcaps={
  62. pulverizeable = {times={[1]=4.00, [2]=1.60, [3]=0.80}, uses=30, maxlevel=2},
  63. },
  64. damage_groups = {fleshy=4},
  65. },
  66. sound = {breaks = "default_tool_breaks"},
  67. })
  68. minetest.register_tool("renew:sledgehammer_mese", {
  69. description = "Mese Sledgehammer",
  70. inventory_image = "renew-sledgehammer_mese.png",
  71. tool_capabilities = {
  72. full_punch_interval = 0.9,
  73. max_drop_level=3,
  74. groupcaps={
  75. pulverizeable = {times={[1]=2.4, [2]=1.2, [3]=0.60}, uses=20, maxlevel=3},
  76. },
  77. damage_groups = {fleshy=5},
  78. },
  79. sound = {breaks = "default_tool_breaks"},
  80. })
  81. minetest.register_tool("renew:sledgehammer_diamond", {
  82. description = "Diamond Sledgehammer",
  83. inventory_image = "renew-sledgehammer_diamond.png",
  84. tool_capabilities = {
  85. full_punch_interval = 0.9,
  86. max_drop_level=3,
  87. groupcaps={
  88. pulverizeable = {times={[1]=2.0, [2]=1.0, [3]=0.50}, uses=30, maxlevel=3},
  89. },
  90. damage_groups = {fleshy=5},
  91. },
  92. sound = {breaks = "default_tool_breaks"},
  93. })
  94. -- Recipes
  95. minetest.register_craft({
  96. output = "renew:sledgehammer_wood",
  97. recipe = {
  98. {"group:wood", "group:stick", "group:wood"},
  99. {"" , "group:stick", "" },
  100. {"" , "group:stick", "" },
  101. }
  102. })
  103. minetest.register_craft({
  104. output = "renew:sledgehammer_stone",
  105. recipe = {
  106. {"group:stone", "group:stick", "group:stone"},
  107. {"" , "group:stick", "" },
  108. {"" , "group:stick", "" },
  109. }
  110. })
  111. minetest.register_craft({
  112. output = "renew:sledgehammer_steel",
  113. recipe = {
  114. {"default:steel_ingot", "group:stick", "default:steel_ingot"},
  115. {"" , "group:stick", "" },
  116. {"" , "group:stick", "" },
  117. }
  118. })
  119. minetest.register_craft({
  120. output = "renew:sledgehammer_bronze",
  121. recipe = {
  122. {"default:bronze_ingot", "group:stick", "default:bronze_ingot"},
  123. {"" , "group:stick", "" },
  124. {"" , "group:stick", "" },
  125. }
  126. })
  127. minetest.register_craft({
  128. output = "renew:sledgehammer_mese",
  129. recipe = {
  130. {"default:mese_crystal", "group:stick", "default:mese_crystal"},
  131. {"" , "group:stick", "" },
  132. {"" , "group:stick", "" },
  133. }
  134. })
  135. minetest.register_craft({
  136. output = "renew:sledgehammer_diamond",
  137. recipe = {
  138. {"default:diamond", "group:stick", "default:diamond"},
  139. {"" , "group:stick", "" },
  140. {"" , "group:stick", "" },
  141. }
  142. })
  143. -- Node modifications
  144. minetest.registered_nodes["default:cobble"].groups.pulverizeable = minetest.registered_nodes["default:cobble"].groups.cracky
  145. minetest.override_item("default:cobble", {
  146. on_dig = function(pos, node, digger)
  147. if not minetest.is_protected(pos, digger:get_player_name())
  148. and string.sub(digger:get_wielded_item():get_name(), 1, 19) == "renew:sledgehammer_" then
  149. minetest.set_node(pos, {name="default:sandstone"})
  150. local tool = digger:get_wielded_item()
  151. local groups = minetest.registered_nodes["default:cobble"].groups
  152. tool:add_wear(minetest.get_dig_params(groups, tool:get_tool_capabilities()).wear)
  153. digger:set_wielded_item(tool)
  154. else
  155. minetest.node_dig(pos, node, digger)
  156. end
  157. end,
  158. })
  159. minetest.registered_nodes["default:stone"].groups.pulverizeable = minetest.registered_nodes["default:stone"].groups.cracky
  160. minetest.override_item("default:stone", {
  161. on_dig = function(pos, node, digger)
  162. if not minetest.is_protected(pos, digger:get_player_name())
  163. and string.sub(digger:get_wielded_item():get_name(), 1, 19) == "renew:sledgehammer_" then
  164. minetest.set_node(pos, {name="default:gravel"})
  165. local tool = digger:get_wielded_item()
  166. local groups = minetest.registered_nodes["default:stone"].groups
  167. tool:add_wear(minetest.get_dig_params(groups, tool:get_tool_capabilities()).wear)
  168. digger:set_wielded_item(tool)
  169. else
  170. minetest.node_dig(pos, node, digger)
  171. end
  172. end,
  173. })
  174. minetest.registered_nodes["default:desert_cobble"].groups.pulverizeable = minetest.registered_nodes["default:desert_cobble"].groups.cracky
  175. minetest.override_item("default:desert_cobble", {
  176. on_dig = function(pos, node, digger)
  177. if not minetest.is_protected(pos, digger:get_player_name())
  178. and string.sub(digger:get_wielded_item():get_name(), 1, 19) == "renew:sledgehammer_" then
  179. minetest.set_node(pos, {name="default:desert_sand"})
  180. local tool = digger:get_wielded_item()
  181. local groups = minetest.registered_nodes["default:desert_cobble"].groups
  182. tool:add_wear(minetest.get_dig_params(groups, tool:get_tool_capabilities()).wear)
  183. digger:set_wielded_item(tool)
  184. else
  185. minetest.node_dig(pos, node, digger)
  186. end
  187. end,
  188. })
  189. minetest.registered_nodes["default:coral_skeleton"].groups.pulverizeable = minetest.registered_nodes["default:coral_skeleton"].groups.cracky
  190. minetest.override_item("default:coral_skeleton", {
  191. on_dig = function(pos, node, digger)
  192. if not minetest.is_protected(pos, digger:get_player_name())
  193. and string.sub(digger:get_wielded_item():get_name(), 1, 19) == "renew:sledgehammer_" then
  194. minetest.set_node(pos, {name="default:silver_sand"})
  195. local tool = digger:get_wielded_item()
  196. local groups = minetest.registered_nodes["default:coral_skeleton"].groups
  197. tool:add_wear(minetest.get_dig_params(groups, tool:get_tool_capabilities()).wear)
  198. digger:set_wielded_item(tool)
  199. else
  200. minetest.node_dig(pos, node, digger)
  201. end
  202. end,
  203. })