hammer.lua 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. local USES = 200
  2. local mode = {}
  3. local count = 0
  4. local function parti(pos)
  5. minetest.add_particlespawner(25, 0.3,
  6. pos, pos,
  7. {x=2, y=0.2, z=2}, {x=-2, y=2, z=-2},
  8. {x=0, y=-6, z=0}, {x=0, y=-10, z=0},
  9. 0.2, 1,
  10. 0.2, 2,
  11. true, "mymasonhammer_parti.png")
  12. end
  13. mode = "1"
  14. minetest.register_tool( "mymasonhammer:hammer",{
  15. description = "Mason Hammer",
  16. inventory_image = "mymasonhammer_hammer.png",
  17. wield_image = "mymasonhammer_hammer.png",
  18. wield_scale = {x=1,y=1,z=3},
  19. on_use = function(itemstack, user, pointed_thing)
  20. if pointed_thing.type ~= "node" then
  21. return
  22. end
  23. local pos = pointed_thing.under
  24. local node = minetest.get_node(pos)
  25. local default_material = {
  26. {"default:cobble", "default_cobble", "Cobble","stairs:stair_cobble"},
  27. {"default:desert_cobble","default_desert_cobble", "Desert Cobble","stairs:stair_desert_cobble"},
  28. {"default:stone","default_stone", "Stone","stairs:stair_stone"},
  29. {"default:desert_stone","default_desert_stone", "Desert Stone","stairs:stair_desert_stone"},
  30. {"default:stonebrick","default_stone_brick", "Stone Brick","stairs:stair_stonebrick"},
  31. {"default:desert_stonebrick","default_desert_stone_brick", "Desert Stone Brick","stairs:stair_desert_stonebrick"},
  32. }
  33. for i in ipairs (default_material) do
  34. local item = default_material [i][1]
  35. local mat = default_material [i][2]
  36. local desc = default_material [i][3]
  37. local stair = default_material [i][4]
  38. if pointed_thing.type ~= "node" then
  39. return
  40. end
  41. if minetest.is_protected(pos, user:get_player_name()) then
  42. minetest.record_protection_violation(pos, user:get_player_name())
  43. return
  44. end
  45. if mode == "1" then
  46. if node.name == item then
  47. count = count + 1
  48. parti(pos)
  49. if count >= 3 then
  50. minetest.set_node(pos,{name = stair, param2=minetest.dir_to_facedir(user:get_look_dir())})
  51. count = 0
  52. end
  53. end
  54. end
  55. if mode == "2" then
  56. if node.name == item then
  57. minetest.set_node(pos,{name = "mymasonhammer:"..mat.."_ladder2", param2=minetest.dir_to_facedir(user:get_look_dir())})
  58. parti(pos)
  59. elseif node.name == "mymasonhammer:"..mat.."_ladder2" then
  60. minetest.set_node(pos,{name = "mymasonhammer:"..mat.."_ladder3", param2=minetest.dir_to_facedir(user:get_look_dir())})
  61. parti(pos)
  62. elseif node.name == "mymasonhammer:"..mat.."_ladder3" then
  63. minetest.set_node(pos,{name = "mymasonhammer:"..mat.."_ladder", param2=minetest.dir_to_facedir(user:get_look_dir())})
  64. parti(pos)
  65. end
  66. end
  67. if mode == "3" then
  68. if node.name == item then
  69. minetest.set_node(pos,{name = "mymasonhammer:"..mat.."_foot", param2=minetest.dir_to_facedir(user:get_look_dir())})
  70. parti(pos)
  71. end
  72. end
  73. end
  74. if not minetest.setting_getbool("creative_mode") then
  75. itemstack:add_wear(65535 / (USES - 1))
  76. end
  77. return itemstack
  78. end,
  79. on_place = function(itemstack, user, pointed_thing)
  80. local usr = user:get_player_name()
  81. if mode == "1" then
  82. mode = "2"
  83. minetest.chat_send_player(usr,"Ladder Hammer")
  84. elseif mode == "2" then
  85. mode = "3"
  86. minetest.chat_send_player(usr,"Foot Hold Hammer")
  87. elseif mode == "3" then
  88. mode = "1"
  89. minetest.chat_send_player(usr,"Stair Hammer")
  90. end
  91. if not minetest.setting_getbool("creative_mode") then
  92. itemstack:add_wear(65535 / (USES - 1))
  93. end
  94. return itemstack
  95. end
  96. })
  97. minetest.register_craft({
  98. output = "mymasonhammer:hammer",
  99. recipe = {
  100. {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
  101. {"default:steel_ingot", "wool:blue", "default:steel_ingot"},
  102. {"", "wool:blue", ""},
  103. },
  104. })
  105. minetest.register_craft({
  106. output = "mymasonhammer:hammer",
  107. recipe = {
  108. {"mymasonhammer:hammer", "default:steel_ingot"},
  109. },
  110. })