minetest_hades/mods/staffgaia/init.lua

113 lines
2.6 KiB
Lua

-- WTPFL Licenses
staffgaia = {}
local conv = function(pos)
local nodename = minetest.env:get_node(pos).name
if nodename == "default:sand" or nodename == "default:desert_sand" or nodename == "default:desert_stone" or nodename == "default:stone" or nodename == "default:cobble" or nodename == "default:mossystone" or nodename == "default:tuff" or nodename == "default:tuff_baked" or nodename == "default:mossytuff" or nodename == "default:mossycobble" then
-- minetest.env:remove_node(pos)
minetest.set_node(pos, {name="default:dirt"})
nodeupdate(pos)
end
end
cotrig = function(pos)
for dx=-4,4 do
for dz=-4,4 do
for dy=1,-1,-1 do
pos.x = pos.x+dx
pos.y = pos.y+dy
pos.z = pos.z+dz
if math.abs(dx)<4 and math.abs(dy)<1 and math.abs(dz)<4 then
conv(pos)
end
pos.x = pos.x-dx
pos.y = pos.y-dy
pos.z = pos.z-dz
end
end
end
end
function staffgaia.staff_on_use(itemstack, user, pointed_thing, uses)
local pt = pointed_thing
-- check if pointing at a node
if not pt then
return
end
if pt.type ~= "node" then
return
end
local under = minetest.get_node(pt.under)
local p = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
local above = minetest.get_node(p)
-- return if any of the nodes is not registered
if not minetest.registered_nodes[under.name] then
return
end
if not minetest.registered_nodes[above.name] then
return
end
-- check if the node above the pointed thing is air
if above.name ~= "air" then
return
end
cotrig(pt.under)
itemstack:add_wear(65535/(uses-1))
return itemstack
end
minetest.register_tool("staffgaia:staff", {
description = "Staff of Gaia",
inventory_image = "staff_of_gaia.png",
on_use = function(itemstack, user, pointed_thing)
return staffgaia.staff_on_use(itemstack, user, pointed_thing, 99)
end,
})
minetest.register_craftitem("staffgaia:head", {
description = "Head of the Staff of Gaia",
inventory_image = "staffgaia_head.png",
})
minetest.register_craftitem("staffgaia:shaft", {
description = "Shaft of the Staff of Gaia",
inventory_image = "staffgaia_shaft.png",
})
minetest.register_craft({
output = "staffgaia:head",
recipe = {
{"default:sapphire", "default:mese_crystal", "default:sapphire"},
{"default:mese_crystal", "default:diamond", "default:mese_crystal"},
{"default:emerald", "default:mese_crystal", "default:emerald"},
}
})
minetest.register_craft({
output = "staffgaia:shaft",
recipe = {
{"", "default:ruby", ""},
{"", "default:ruby", ""},
{"", "default:tree", ""},
}
})
minetest.register_craft({
output = "staffgaia:staff",
recipe = {
{"", "staffgaia:head", ""},
{"", "staffgaia:shaft", ""},
}
})