cottages/nodes_pitchfork.lua

115 lines
3.7 KiB
Lua

local S = cottages.S
-- fast tool for digging nodes with the group "hay";
-- can also be placed as a node
-- the straw node from default and similar nodes can be digged with the pitchfork as well
local add_hay_group = {"farming:straw", "dryplants:reed", "darkage:straw_bale"}
for i, v in ipairs(add_hay_group) do
if( minetest.registered_items[v]) then
new_groups = minetest.registered_items[v].groups
new_groups.hay = 3
minetest.override_item(v, {groups = new_groups})
end
end
-- creates hay when digging dirt_with_grass (thanks to the override above);
-- useful for digging hay and straw
-- can be placed as a node
minetest.register_tool("cottages:pitchfork", {
description = S("pitchfork (dig dirt with grass to get hay, place with right-click)"),
groups = {},
inventory_image = "cottages_pitchfork.png",
wield_image = "cottages_pitchfork.png^[transformFYR180",
wield_scale = {x=1.5,y=1.5,z=0.5},
stack_max = 1,
liquids_pointable = false,
-- very useful for digging hay, straw and bales of those materials
tool_capabilities = {
full_punch_interval = 1.0,
max_drop_level=1,
groupcaps={
fleshy={times={[2]=0.80, [3]=0.40}, maxlevel=1, uses=1/0.002 },
snappy={times={[2]=0.80, [3]=0.40}, maxlevel=1, uses=1/0.002 },
hay ={times={[2]=0.10, [3]=0.10}, maxlevel=1, uses=1/0.002 },
},
damage_groups = {fleshy=5}, -- slightly stronger than a stone sword
},
sound = {breaks = "default_tool_breaks"},
-- place the pitchfork somewhere
on_place = function(itemstack, placer, pointed_thing)
if( placer == nil or pointed_thing == nil or pointed_thing.type ~= "node") then
return nil
end
local pos = minetest.get_pointed_thing_position( pointed_thing, 1 )
local node = minetest.get_node_or_nil( pos )
if( node == nil or not(node.name) or node.name ~= "air") then
return nil
end
if minetest.is_protected(pos, placer:get_player_name()) then
return nil
end
minetest.rotate_and_place(ItemStack("cottages:pitchfork_placed"), placer, pointed_thing)
-- did the placing succeed?
local nnode = minetest.get_node(pos)
if( not(nnode) or not(nnode.name) or nnode.name ~= "cottages:pitchfork_placed") then
return nil
end
local meta = minetest.get_meta(pos)
meta:set_int( "wear", itemstack:get_wear())
meta:set_string("infotext", S("pitchfork (for hay and straw)"))
-- the tool has been placed; consume it
return ItemStack("")
end,
})
-- a ptichfork placed somewhere
minetest.register_node("cottages:pitchfork_placed", {
description = S("pitchfork (for hay and straw)"),
tiles = {"default_wood.png^[transformR90"}, --default_tree.png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
groups = {snappy = 2, dig_immediate = 3, falling_node = 1, attached_node = 1, not_in_creative_inventory=1},
sounds = cottages.sounds.wood,
node_box = {
type = "fixed",
fixed = {
-- handle (goes a bit into the ground)
{ -(1/32), -(11/16), -(1/32), (1/32), 16/16, (1/32)},
-- middle connection
{ -(7/32), -(4/16), -(1/32), (7/32), -(2/16), (1/32)},
-- thongs
{ -(7/32), -(11/16), -(1/32), -(5/32), -(4/16), (1/32)},
{ (5/32), -(11/16), -(1/32), (7/32), -(4/16), (1/32)},
},
},
selection_box = {
type = "fixed",
fixed = { -0.3, -0.5, -0.1, 0.3, 1.0, 0.1 }
},
drop = "cottages:pitchfork",
-- perserve wear
preserve_metadata = function(pos, oldnode, oldmeta, drops)
if(oldmeta["wear"]) then
-- the first drop is the pitchfork
drops[1]:set_wear(oldmeta["wear"])
end
end,
})
--
-- craft recipes
--
minetest.register_craft({
output = 'cottages:pitchfork',
recipe = {
{ 'default:stick','default:stick','default:stick' },
{ '','default:stick', '' },
{ '','default:stick','' },
}
})