From 931a16803e108d07ac7922e4cf8649b8a9480ed3 Mon Sep 17 00:00:00 2001 From: wsor4035 <24964441+wsor4035@users.noreply.github.com> Date: Fri, 6 Sep 2024 16:40:36 -0400 Subject: [PATCH] sapling on place function (#40) --- src/functions.lua | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/functions.lua b/src/functions.lua index 52a1b16..51700b9 100644 --- a/src/functions.lua +++ b/src/functions.lua @@ -16,4 +16,40 @@ function functions.can_interact_with_node(player, pos) return false end +function functions.sapling_on_place( + itemstack, player, pointed_thing, sapling_name, minp_relative, maxp_relative, interval +) + if default then + return default.sapling_on_place( + itemstack, player, pointed_thing, sapling_name, minp_relative, maxp_relative, interval + ) + end + + local pos = pointed_thing.above + local pname = player and player:get_player_name() or "" + local below_node = minetest.get_node_or_nil(pointed_thing.under) + + if below_node and minetest.registered_items[below_node.name] and + minetest.registered_items[below_node.name].buildable_to then + + pos = pointed_thing.under + end + + --check protection + if minetest.is_protected(pos, pname) then + minetest.record_protection_violation(pos, pname) + return itemstack + end + + --actually place sapling + minetest.set_node(pos, {name = sapling_name}) + + --handle survival + if not minetest.is_creative_enabled(pname) then + itemstack:take_item() + end + + return itemstack +end + return functions \ No newline at end of file