summaryrefslogtreecommitdiff
path: root/cottages/nodes_pitchfork.lua
diff options
context:
space:
mode:
Diffstat (limited to 'cottages/nodes_pitchfork.lua')
-rw-r--r--cottages/nodes_pitchfork.lua114
1 files changed, 114 insertions, 0 deletions
diff --git a/cottages/nodes_pitchfork.lua b/cottages/nodes_pitchfork.lua
new file mode 100644
index 0000000..666393a
--- /dev/null
+++ b/cottages/nodes_pitchfork.lua
@@ -0,0 +1,114 @@
+
+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}, maxwear=0.05, maxlevel=1, uses=40},
+ snappy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1, uses=40},
+ hay ={times={[2]=0.10, [3]=0.10}, maxwear=0.05, maxlevel=1, uses=40},
+ },
+ 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},
+ 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','' },
+ }
+})