diff --git a/autoplace.lua b/autoplace.lua index f049665..a15d598 100644 --- a/autoplace.lua +++ b/autoplace.lua @@ -218,7 +218,50 @@ function tube_autoroute(pos) -- does not scan for the front side of the node. ---chests +--locked chests + + -- check for left/right connects + + if string.find(nxm.name, "default:chest_locked") ~= nil + and (nxm.param2 == 0 or nxm.param2 == 2) then + pxm=1 end + if string.find(nxp.name, "default:chest_locked") ~= nil + and (nxp.param2 == 0 or nxp.param2 == 2) then + pxp=1 end + + if string.find(nzm.name, "default:chest_locked") ~= nil + and (nzm.param2 == 1 or nzm.param2 == 3) then + pzm=1 end + if string.find(nzp.name, "default:chest_locked") ~= nil + and (nzp.param2 == 1 or nzp.param2 == 3) then + pzp=1 end + + -- check for backside connects + + if string.find(nxm.name, "default:chest_locked") ~= nil + and nxm.param2 == 1 then + pxm = 1 end + + if string.find(nxp.name, "default:chest_locked") ~= nil + and nxp.param2 == 3 then + pxp = 1 end + + if string.find(nzm.name, "default:chest_locked") ~= nil + and nzm.param2 == 0 then + pzm = 1 end + + if string.find(nzp.name, "default:chest_locked") ~= nil + and nzp.param2 == 2 then + pzp = 1 end + + -- check for top/bottom connections + + if string.find(nym.name, "default:chest_locked") ~= nil then pym = 1 end + if string.find(nyp.name, "default:chest_locked") ~= nil then pyp = 1 end + + -- does not scan for the front side of the node. + +--furnaces -- check for left/right connects diff --git a/compat.lua b/compat.lua index da3cac9..6113815 100644 --- a/compat.lua +++ b/compat.lua @@ -97,3 +97,28 @@ chest=clone_node("default:chest") end minetest.register_node(":default:chest",chest) + + +chest_locked=clone_node("default:chest_locked") + chest_locked.groups.tubedevice=1 + chest_locked.groups.tubedevice_receiver=1 + chest_locked.tube={insert_object = function(pos,node,stack,direction) + local meta=minetest.env:get_meta(pos) + local inv=meta:get_inventory() + return inv:add_item("main",stack) + end, + can_insert=function(pos,node,stack,direction) + local meta=minetest.env:get_meta(pos) + local inv=meta:get_inventory() + return inv:room_for_item("main",stack) + end} + local old_after_place = minetest.registered_nodes["default:chest_locked"].after_place_node; + chest_locked.after_place_node = function(pos, placer) + tube_scanforobjects(pos) + old_after_place(pos, placer) + end + chest_locked.after_dig_node = function(pos) + tube_scanforobjects(pos) + end + +minetest.register_node(":default:chest_locked",chest_locked)