diff --git a/door_nodes.lua b/door_nodes.lua index fcf03c9f..32b30ebf 100644 --- a/door_nodes.lua +++ b/door_nodes.lua @@ -174,35 +174,6 @@ for i in ipairs(sides) do end end -function homedecor_node_is_owned(pos, placer) - local ownername = false - if type(IsPlayerNodeOwner) == "function" then -- node_ownership mod - if HasOwner(pos, placer) then -- returns true if the node is owned - if not IsPlayerNodeOwner(pos, placer:get_player_name()) then - if type(getLastOwner) == "function" then -- ...is an old version - ownername = getLastOwner(pos) - elseif type(GetNodeOwnerName) == "function" then -- ...is a recent version - ownername = GetNodeOwnerName(pos) - else - ownername = "someone" - end - end - end - - elseif type(isprotect)=="function" then -- glomie's protection mod - if not isprotect(5, pos, placer) then - ownername = "someone" - end - end - - if ownername ~= false then - minetest.chat_send_player( placer:get_player_name(), "Sorry, "..ownername.." owns that spot." ) - return true - else - return false - end -end - function homedecor_place_door(itemstack, placer, pointed_thing, name, side) local pos = pointed_thing.above if homedecor_node_is_owned(pointed_thing.under, placer) == false then diff --git a/fences.lua b/fences.lua index 574407f5..c02a2dec 100644 --- a/fences.lua +++ b/fences.lua @@ -15,24 +15,28 @@ minetest.register_node("homedecor:fence_brass", { sounds = default.node_sound_wood_defaults(), walkable = true, on_rightclick = function(pos, node, clicker) - local fdir = minetest.dir_to_facedir(clicker:get_look_dir()) - local itemstack = clicker:get_wielded_item() - if itemstack:get_name() == "default:sign_wall" then - minetest.env:add_node(pos, {name = "homedecor:fence_brass_with_sign", param2 = fdir}) - itemstack:take_item() - return itemstack - else - print("want to simply place the wielded item like usual.") - -- What goes here if I want to just place the wielded node (dirt, cobble, etc) normally? + if not homedecor_node_is_owned(pos, clicker) then + local fdir = minetest.dir_to_facedir(clicker:get_look_dir()) + local itemstack = clicker:get_wielded_item() + if itemstack:get_name() == "default:sign_wall" then + minetest.env:add_node(pos, {name = "homedecor:fence_brass_with_sign", param2 = fdir}) + itemstack:take_item() + return itemstack + else + print("want to simply place the wielded item like usual.") + -- What goes here if I want to just place the wielded node (dirt, cobble, etc) normally? + end end end, on_place = function(itemstack, placer, pointed_thing) - local fdir = minetest.dir_to_facedir(placer:get_look_dir()) - minetest.env:add_node(pointed_thing.above, {name = "homedecor:fence_brass", param2 = fdir}) - itemstack:take_item() - placer:set_wielded_item(itemstack) - return itemstack + if not homedecor_node_is_owned(pointed_thing.under, placer) then + local fdir = minetest.dir_to_facedir(placer:get_look_dir()) + minetest.env:add_node(pointed_thing.above, {name = "homedecor:fence_brass", param2 = fdir}) + itemstack:take_item() + placer:set_wielded_item(itemstack) + return itemstack + end end }) @@ -51,25 +55,29 @@ minetest.register_node("homedecor:fence_wrought_iron", { sounds = default.node_sound_wood_defaults(), walkable = true, on_rightclick = function(pos, node, clicker) - local fdir = minetest.dir_to_facedir(clicker:get_look_dir()) - local itemstack = clicker:get_wielded_item() - if itemstack:get_name() == "default:sign_wall" then - minetest.env:add_node(pos, {name = "homedecor:fence_wrought_iron_with_sign", param2 = fdir}) - itemstack:take_item() - clicker:set_wielded_item(itemstack) - return itemstack - else - print("want to simply place the wielded item like usual.") - -- What goes here if I want to just place the wielded node (dirt, cobble, etc) normally? + if not homedecor_node_is_owned(pos, clicker) then + local fdir = minetest.dir_to_facedir(clicker:get_look_dir()) + local itemstack = clicker:get_wielded_item() + if itemstack:get_name() == "default:sign_wall" then + minetest.env:add_node(pos, {name = "homedecor:fence_wrought_iron_with_sign", param2 = fdir}) + itemstack:take_item() + clicker:set_wielded_item(itemstack) + return itemstack + else + print("want to simply place the wielded item like usual.") + -- What goes here if I want to just place the wielded node (dirt, cobble, etc) normally? + end end end, on_place = function(itemstack, placer, pointed_thing) - local fdir = minetest.dir_to_facedir(placer:get_look_dir()) - minetest.env:add_node(pointed_thing.above, {name = "homedecor:fence_wrought_iron", param2 = fdir}) - itemstack:take_item() - placer:set_wielded_item(itemstack) - return itemstack + if not homedecor_node_is_owned(pointed_thing.under, placer) then + local fdir = minetest.dir_to_facedir(placer:get_look_dir()) + minetest.env:add_node(pointed_thing.above, {name = "homedecor:fence_wrought_iron", param2 = fdir}) + itemstack:take_item() + placer:set_wielded_item(itemstack) + return itemstack + end end }) diff --git a/init.lua b/init.lua index 20e91f41..6d3163fc 100644 --- a/init.lua +++ b/init.lua @@ -13,7 +13,7 @@ local DEBUG = 0 --- Local Functions +-- Various Functions local dbg = function(s) if DEBUG == 1 then @@ -21,6 +21,35 @@ local dbg = function(s) end end +function homedecor_node_is_owned(pos, placer) + local ownername = false + if type(IsPlayerNodeOwner) == "function" then -- node_ownership mod + if HasOwner(pos, placer) then -- returns true if the node is owned + if not IsPlayerNodeOwner(pos, placer:get_player_name()) then + if type(getLastOwner) == "function" then -- ...is an old version + ownername = getLastOwner(pos) + elseif type(GetNodeOwnerName) == "function" then -- ...is a recent version + ownername = GetNodeOwnerName(pos) + else + ownername = "someone" + end + end + end + + elseif type(isprotect)=="function" then -- glomie's protection mod + if not isprotect(5, pos, placer) then + ownername = "someone" + end + end + + if ownername ~= false then + minetest.chat_send_player( placer:get_player_name(), "Sorry, "..ownername.." owns that spot." ) + return true + else + return false + end +end + -- Nodes minetest.register_node('homedecor:shingles_wood', {