mirror of
https://github.com/Sokomine/cottages.git
synced 2024-09-27 06:50:33 +02:00
115 lines
3.7 KiB
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','' },
|
|
}
|
|
})
|