From f3bba0aaacd3fe1791405b27f6a93deb630178f7 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Wed, 18 Dec 2013 20:41:08 -0500 Subject: [PATCH] move inject_items to top of file (so that it's above the abm that calls it) --- technic/machines/other/injector.lua | 87 +++++++++++++++-------------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/technic/machines/other/injector.lua b/technic/machines/other/injector.lua index 205b8b4..14bc984 100644 --- a/technic/machines/other/injector.lua +++ b/technic/machines/other/injector.lua @@ -1,6 +1,50 @@ local S = technic.getter +local function inject_items (pos) + local meta=minetest.env:get_meta(pos) + local inv = meta:get_inventory() + local mode=meta:get_string("mode") + if mode=="single items" then + local i=0 + for _,stack in ipairs(inv:get_list("main")) do + i=i+1 + if stack then + local item0=stack:to_table() + if item0 then + item0["count"]="1" + local item1=pipeworks.tube_item({x=pos.x,y=pos.y,z=pos.z},item0) + item1:get_luaentity().start_pos = {x=pos.x,y=pos.y,z=pos.z} + item1:setvelocity({x=0, y=-1, z=0}) + item1:setacceleration({x=0, y=0, z=0}) + stack:take_item(1); + inv:set_stack("main", i, stack) + return + end + end + end + end + if mode=="whole stacks" then + local i=0 + for _,stack in ipairs(inv:get_list("main")) do + i=i+1 + if stack then + local item0=stack:to_table() + if item0 then + local item1=pipeworks.tube_item({x=pos.x,y=pos.y,z=pos.z},item0) + item1:get_luaentity().start_pos = {x=pos.x,y=pos.y,z=pos.z} + item1:setvelocity({x=0, y=-1, z=0}) + item1:setacceleration({x=0, y=0, z=0}) + stack:clear() + inv:set_stack("main", i, stack) + return + end + end + end + end + +end + minetest.register_craft({ output = 'technic:injector 1', recipe = { @@ -74,46 +118,3 @@ minetest.register_abm({ end, }) -local function inject_items (pos) - local meta=minetest.env:get_meta(pos) - local inv = meta:get_inventory() - local mode=meta:get_string("mode") - if mode=="single items" then - local i=0 - for _,stack in ipairs(inv:get_list("main")) do - i=i+1 - if stack then - local item0=stack:to_table() - if item0 then - item0["count"]="1" - local item1=pipeworks.tube_item({x=pos.x,y=pos.y,z=pos.z},item0) - item1:get_luaentity().start_pos = {x=pos.x,y=pos.y,z=pos.z} - item1:setvelocity({x=0, y=-1, z=0}) - item1:setacceleration({x=0, y=0, z=0}) - stack:take_item(1); - inv:set_stack("main", i, stack) - return - end - end - end - end - if mode=="whole stacks" then - local i=0 - for _,stack in ipairs(inv:get_list("main")) do - i=i+1 - if stack then - local item0=stack:to_table() - if item0 then - local item1=pipeworks.tube_item({x=pos.x,y=pos.y,z=pos.z},item0) - item1:get_luaentity().start_pos = {x=pos.x,y=pos.y,z=pos.z} - item1:setvelocity({x=0, y=-1, z=0}) - item1:setacceleration({x=0, y=0, z=0}) - stack:clear() - inv:set_stack("main", i, stack) - return - end - end - end - end - -end