From 3a0fd39bf670a9210c962381455bb42cd3893fc0 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Sun, 23 Jun 2013 21:36:13 -0400 Subject: rewrote autoplacement code to make it more aware of filters, autocrafter, nodebreaker, deployer, and made sure each item will only initiate a connection to those sides which can accept such. Fixed various autorouting bugs as I ran across them. Autorouting for various devices is now: filters: left and right sides only nodebreaker, deployer: back only autocrafter: all six sides chests: top, bottom, left, right, back (not front) furnace: bottom, left, right, back (not the top or front) --- compat.lua | 140 ++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 73 insertions(+), 67 deletions(-) (limited to 'compat.lua') diff --git a/compat.lua b/compat.lua index 6f555d0..55d207a 100644 --- a/compat.lua +++ b/compat.lua @@ -10,9 +10,9 @@ function clone_node(name) end furnace=clone_node("default:furnace") -furnace.groups.tubedevice=1 -furnace.groups.tubedevice_receiver=1 -furnace.tube={insert_object=function(pos,node,stack,direction) + furnace.groups.tubedevice=1 + furnace.groups.tubedevice_receiver=1 + furnace.tube={insert_object = function(pos,node,stack,direction) local meta=minetest.env:get_meta(pos) local inv=meta:get_inventory() if direction.y==1 then @@ -21,73 +21,79 @@ furnace.tube={insert_object=function(pos,node,stack,direction) return inv:add_item("src",stack) end end, - can_insert=function(pos,node,stack,direction) - local meta=minetest.env:get_meta(pos) - local inv=meta:get_inventory() - if direction.y==1 then - return inv:room_for_item("fuel",stack) - elseif direction.y==-1 then - return inv:room_for_item("src",stack) - else - return 0 - end - end, - input_inventory="dst"} -furnace.after_place_node= function(pos) - tube_scanforobjects(pos) - end -furnace.after_dig_node = function(pos) - tube_scanforobjects(pos) - end -minetest.register_node(":default:furnace",furnace) + can_insert=function(pos,node,stack,direction) + local meta=minetest.env:get_meta(pos) + local inv=meta:get_inventory() + if direction.y==1 then + return inv:room_for_item("fuel",stack) + elseif direction.y==-1 then + return inv:room_for_item("src",stack) + else + return 0 + end + end, + input_inventory="dst"} + furnace.after_place_node= function(pos) + tube_scanforobjects(pos) + end + furnace.after_dig_node = function(pos) + tube_scanforobjects(pos) + end +minetest.register_node(":default:furnace",furnace) furnace=clone_node("default:furnace_active") -furnace.groups.tubedevice=1 -furnace.groups.tubedevice_receiver=1 -furnace.tube={insert_object=function(pos,node,stack,direction) - local meta=minetest.env:get_meta(pos) - local inv=meta:get_inventory() - if direction.y==1 then - return inv:add_item("fuel",stack) - else - return inv:add_item("src",stack) - end - end, - can_insert=function(pos,node,stack,direction) - local meta=minetest.env:get_meta(pos) - local inv=meta:get_inventory() - if direction.y==1 then - return inv:room_for_item("fuel",stack) - elseif direction.y==-1 then - return inv:room_for_item("src",stack) - else - return 0 - end - end, - input_inventory="dst"} -furnace.after_place_node= function(pos) - tube_scanforobjects(pos) - end -furnace.after_dig_node = function(pos) - tube_scanforobjects(pos) - end -minetest.register_node(":default:furnace_active",furnace) + furnace.groups.tubedevice=1 + furnace.groups.tubedevice_receiver=1 + furnace.tube={insert_object=function(pos,node,stack,direction) + local meta=minetest.env:get_meta(pos) + local inv=meta:get_inventory() + if direction.y==1 then + return inv:add_item("fuel",stack) + else + return inv:add_item("src",stack) + end + end, + can_insert=function(pos,node,stack,direction) + local meta=minetest.env:get_meta(pos) + local inv=meta:get_inventory() + if direction.y==1 then + return inv:room_for_item("fuel",stack) + elseif direction.y==-1 then + return inv:room_for_item("src",stack) + else + return 0 + end + end, + input_inventory="dst"} + furnace.after_place_node= function(pos) + tube_scanforobjects(pos) + end + furnace.after_dig_node = function(pos) + tube_scanforobjects(pos) + end + minetest.register_node(":default:furnace_active",furnace) + chest=clone_node("default:chest") -chest.groups.tubedevice=1 -chest.groups.tubedevice_receiver=1 -chest.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, - input_inventory="main"} -chest.after_place_node = tube_scanforobjects(pos) -chest.after_dig_node = tube_scanforobjects + chest.groups.tubedevice=1 + chest.groups.tubedevice_receiver=1 + chest.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, + input_inventory="main"} + chest.after_place_node = function(pos) + tube_scanforobjects(pos) + end + chest.after_dig_node = function(pos) + tube_scanforobjects(pos) + end + minetest.register_node(":default:chest",chest) -- cgit v1.2.3