add basic owner and protection check to constructor

This commit is contained in:
OgelGames 2019-12-31 21:37:27 +11:00
parent bfe876d01c
commit 6710c2875b

View File

@ -88,6 +88,7 @@ minetest.register_craft({
local function make_on(mark, length) local function make_on(mark, length)
return function(pos, node) return function(pos, node)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local owner = meta:get_string("owner")
local inv = meta:get_inventory() local inv = meta:get_inventory()
local dir = vector.new() local dir = vector.new()
if node.param2 == 3 then dir.x = 1 end if node.param2 == 3 then dir.x = 1 end
@ -102,12 +103,14 @@ local function make_on(mark, length)
minetest.check_for_falling(pos) minetest.check_for_falling(pos)
for i = 1, length do for i = 1, length do
place_pos = vector.add(place_pos, dir) place_pos = vector.add(place_pos, dir)
if not minetest.is_protected(place_pos, owner) then
local place_node = minetest.get_node(place_pos) local place_node = minetest.get_node(place_pos)
deploy_node(inv, "slot"..i, place_pos, place_node, node) deploy_node(inv, "slot"..i, place_pos, place_node, node)
end end
end end
end end
end end
end
local function make_off(mark) local function make_off(mark)
return function(pos, node) return function(pos, node)
@ -139,6 +142,9 @@ local function make_constructor(mark, length)
mesecon = 2, technic_constructor = 1}, mesecon = 2, technic_constructor = 1},
mesecons = {effector = {action_on = make_on(mark, length)}}, mesecons = {effector = {action_on = make_on(mark, length)}},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
after_place_node = function (pos, placer)
minetest.get_meta(pos):set_string("owner", placer:get_player_name())
end,
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local formspec = "size[8,9;]".. local formspec = "size[8,9;]"..