major rework

master^2
Tai @ Flex 2016-10-13 00:39:39 +01:00
parent cee620ba6f
commit 3023e777b9
1 changed files with 61 additions and 42 deletions

103
init.lua
View File

@ -1,42 +1,61 @@
-- Suporting functions
local hasitem = function(inventory,itemstring)
for idx,x in pairs(inventory:get_list("main") ) do
if x:get_name() == itemstring then
return ture
end
end
return false
end
-- Item defintions
minetest.register_craftitem("taillant:taillant", {
description = "The Taillant",
inventory_image = "stone_extractor.png"
})
minetest.register_craftitem("taillant:taillant_reverse", {
description = "The Reverse Taillant",
inventory_image = "stone_extractor_reverse.png"
})
-- Effects
minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing)
if puncher:get_wielded_item():get_name() == "taillant:taillant" then
if node.name == "default:stone" then
minetest.set_node(pos, {name="default:cobble"})
puncher:get_inventory():add_item('main', "default:gravel")
elseif node.name == "default:cobble" then
minetest.remove_node(pos, {name="default:cobble"})
puncher:get_inventory():add_item('main', "default:gravel")
end
elseif puncher:get_wielded_item():get_name() == "taillant:taillant_reverse"
and node.name == "default:cobble"
and hasitem(puncher:get_inventory(),"default:gravel") then
minetest.set_node(pos, {name="default:stone"})
puncher:get_inventory():remove_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
})