diff --git a/init.lua b/init.lua index af54c66..7c330ae 100644 --- a/init.lua +++ b/init.lua @@ -1,43 +1,61 @@ - -minetest.register_craftitem("taillant:taillant", { - description = "The Taillant", - inventory_image = "stone_extractor.png" -}) - -minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) - if puncher:get_wielded_item():get_name() == "taillant:taillant" - and node.name == "default:stone" then - minetest.set_node(pos, {name="default:cobble"}) - puncher:get_inventory():add_item('main', "default:gravel") - end - end -) - - -minetest.register_craftitem("taillant:taillant_reverse", { - description = "The Taillant(in reverse)", - inventory_image = "stone_extractor_reverse.png" -}) - -minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) - if puncher:get_wielded_item():get_name() == "taillant:taillant_reverse" - and node.name == "default:cobble" then - minetest.set_node(pos, {name="default:stone"}) - puncher:get_inventory():remove_item('main', "default:gravel") - end - end -) - -minetest.register_craftitem("taillant:taillant_smash", { - description = "The Taillant Destroyer", - inventory_image = "stone_extractor_blase.png" -}) - -minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) - if puncher:get_wielded_item():get_name() == "taillant:taillant_smash" - and node.name == "default:cobble" then - minetest.remove_node(pos, {name="default:cobble"}) - puncher:get_inventory():add_item('main', "default:gravel") - end - end -) +-- Supporting functions + +local hasitem = function(inventory,itemstring) + for idx,x in pairs(inventory:get_list("main") ) do + if x:get_name() == itemstring then + return true + end + end + return false +end + +local playdig = function(playername) + minetest.sound_play("default_dig_cracky",{ + to_player = playername, + }) +end + +-- Item defintions + +minetest.register_craftitem("taillant:taillant", { + description = "Taillant", + inventory_image = "stone_extractor.png", + stack_max = 1, + on_use = function(itemstack,puncher,pointedthing) + if pointedthing.type ~= "node" then return end + + local pos = pointedthing.under + local node = minetest.get_node(pos) + if node.name == "default:stone" then + minetest.set_node(pos, {name="default:cobble"}) + puncher:get_inventory():add_item('main', "default:gravel") + playdig(puncher:get_player_name()) + elseif node.name == "default:cobble" then + minetest.dig_node(pos) + puncher:get_inventory():add_item('main', "default:gravel") + playdig(puncher:get_player_name()) + end + return + + end +}) + +minetest.register_craftitem("taillant:taillant_reverse", { + description = "Reverse Taillant", + inventory_image = "stone_extractor_reverse.png", + stack_max = 1, + on_use = function(itemstack,puncher,pointedthing) + if pointedthing.type ~= "node" then return end + + local pos = pointedthing.under + local node = minetest.get_node(pos) + if node.name == "default:cobble" + and hasitem(puncher:get_inventory(),"default:gravel") then + playdig(puncher:get_player_name()) + minetest.set_node(pos, {name="default:stone"}) + puncher:get_inventory():remove_item('main', "default:gravel") + end + return + end +}) +