summaryrefslogtreecommitdiff
path: root/cottages/nodes_hay.lua
diff options
context:
space:
mode:
Diffstat (limited to 'cottages/nodes_hay.lua')
-rw-r--r--cottages/nodes_hay.lua135
1 files changed, 135 insertions, 0 deletions
diff --git a/cottages/nodes_hay.lua b/cottages/nodes_hay.lua
new file mode 100644
index 0000000..3d1f8b0
--- /dev/null
+++ b/cottages/nodes_hay.lua
@@ -0,0 +1,135 @@
+-- contains hay_mat, hay and hay bale
+-- (gives the pitchfork some work)
+--
+local S = cottages.S
+
+-- If default:dirt_with_grass is digged while wielding a pitchfork, it will
+-- turn into dirt and get some hay placed above it.
+-- The hay will disappear (decay) after a couple of minutes.
+if( minetest.registered_items["default:dirt_with_grass"]
+ and minetest.registered_tools["cottages:pitchfork"]) then
+ minetest.override_item("default:dirt_with_grass", {
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ if( not( pos ) or not( digger )) then
+ return
+ end
+ local wielded = digger:get_wielded_item()
+ if( not( wielded )
+ or not( wielded:get_name() )
+ or (wielded:get_name()~="cottages:pitchfork")) then
+ return
+ end
+
+ local pos_above = {x=pos.x, y=pos.y+1, z=pos.z}
+ local node_above = minetest.get_node_or_nil( pos_above)
+ if( not(node_above) or not(node_above.name) or node_above.name ~= "air" ) then
+ return nil
+ end
+ minetest.swap_node( pos, {name="default:dirt"})
+ minetest.add_node( pos_above, {name="cottages:hay_mat", param2=math.random(2,25)})
+ -- start a node timer so that the hay will decay after some time
+ local timer = minetest.get_node_timer(pos_above)
+ if not timer:is_started() then
+ timer:start(math.random(60, 300))
+ end
+ -- TODO: prevent dirt from beeing multiplied this way (that is: give no dirt!)
+ return
+ end,
+ })
+end
+
+
+
+-- more comparable to the straw mat than to a hay bale
+-- (can be created by digging dirt with grass with the pitchfork)
+minetest.register_node("cottages:hay_mat", {
+ drawtype = "nodebox",
+ paramtype2 = "leveled",
+ description = S("Some hay"),
+ tiles = {cottages.straw_texture.."^[multiply:#88BB88"},
+ groups = {hay=3, snappy=2, oddly_breakable_by_hand=2, flammable=3},
+ sounds = cottages.sounds.leaves,
+ -- the bale is slightly smaller than a full node
+ is_ground_content = false,
+ node_box = {
+ type = "leveled", --"fixed",
+ fixed = {
+ {-0.5,-0.5,-0.5, 0.5, 0.5, 0.5},
+ }
+ },
+ -- make sure a placed hay block looks halfway reasonable
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ minetest.swap_node( pos, {name="cottages:hay_mat", param2=math.random(2,25)})
+ end,
+ on_timer = function(pos, elapsed)
+ local node = minetest.get_node(pos)
+ if( node and node.name=="cottages:hay_mat") then
+ minetest.remove_node(pos)
+ minetest.check_for_falling(pos)
+ end
+ end,
+})
+
+-- hay block, similar to straw block
+minetest.register_node("cottages:hay", {
+ description = S("Hay"),
+ tiles = {cottages.straw_texture.."^[multiply:#88BB88"},
+ groups = {hay=3, snappy=2, oddly_breakable_by_hand=2, flammable=3},
+ sounds = cottages.sounds.leaves,
+ is_ground_content = false,
+})
+
+
+-- hay bales for hungry animals
+minetest.register_node("cottages:hay_bale", {
+ drawtype = "nodebox",
+ description = S("Hay bale"),
+ tiles = {"cottages_darkage_straw_bale.png^[multiply:#88BB88"},
+ paramtype = "light",
+ groups = {hay=3, snappy=2, oddly_breakable_by_hand=2, flammable=3},
+ sounds = cottages.sounds.leaves,
+ -- the bale is slightly smaller than a full node
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.45, -0.5,-0.45, 0.45, 0.45, 0.45},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.45, -0.5,-0.45, 0.45, 0.45, 0.45},
+ }
+ },
+ is_ground_content = false,
+})
+
+
+--
+-- craft recipes
+--
+minetest.register_craft({
+ output = "cottages:hay_mat 9",
+ recipe = {
+ {"cottages:hay"},
+ },
+})
+
+minetest.register_craft({
+ output = "cottages:hay",
+ recipe = {
+ {"cottages:hay_mat", "cottages:hay_mat", "cottages:hay_mat"},
+ {"cottages:hay_mat", "cottages:hay_mat", "cottages:hay_mat"},
+ {"cottages:hay_mat", "cottages:hay_mat", "cottages:hay_mat"},
+ },
+})
+
+minetest.register_craft({
+ output = "cottages:hay",
+ recipe = {{"cottages:hay_bale"}},
+})
+
+minetest.register_craft({
+ output = "cottages:hay_bale",
+ recipe = {{"cottages:hay"}},
+})