make self-contained injector directional

This commit is contained in:
OgelGames 2020-05-20 20:24:49 +10:00
parent f83ad4f6c1
commit f99148f2c4
1 changed files with 12 additions and 5 deletions

View File

@ -5,7 +5,13 @@ local fs_helpers = pipeworks.fs_helpers
local tube_entry = "^pipeworks_tube_connection_metallic.png" local tube_entry = "^pipeworks_tube_connection_metallic.png"
local function inject_items (pos) local param2_to_under = {
[0] = {x= 0,y=-1,z= 0}, [1] = {x= 0,y= 0,z=-1},
[2] = {x= 0,y= 0,z= 1}, [3] = {x=-1,y= 0,z= 0},
[4] = {x= 1,y= 0,z= 0}, [5] = {x= 0,y= 1,z= 0}
}
local function inject_items(pos, dir)
local meta=minetest.get_meta(pos) local meta=minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
local mode=meta:get_string("mode") local mode=meta:get_string("mode")
@ -17,7 +23,7 @@ local function inject_items (pos)
local item0=stack:to_table() local item0=stack:to_table()
if item0 then if item0 then
item0["count"] = 1 item0["count"] = 1
technic.tube_inject_item(pos, pos, vector.new(0, -1, 0), item0) technic.tube_inject_item(pos, pos, dir, item0)
stack:take_item(1) stack:take_item(1)
inv:set_stack("main", i, stack) inv:set_stack("main", i, stack)
return return
@ -32,7 +38,7 @@ local function inject_items (pos)
if stack then if stack then
local item0=stack:to_table() local item0=stack:to_table()
if item0 then if item0 then
technic.tube_inject_item(pos, pos, vector.new(0, -1, 0), item0) technic.tube_inject_item(pos, pos, dir, item0)
stack:clear() stack:clear()
inv:set_stack("main", i, stack) inv:set_stack("main", i, stack)
return return
@ -141,10 +147,11 @@ minetest.register_abm({
interval = 1, interval = 1,
chance = 1, chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider) action = function(pos, node, active_object_count, active_object_count_wider)
local pos1 = vector.add(pos, vector.new(0, -1, 0)) local dir = param2_to_under[math.floor(node.param2/4)]
local pos1 = vector.add(pos, dir)
local node1 = minetest.get_node(pos1) local node1 = minetest.get_node(pos1)
if minetest.get_item_group(node1.name, "tubedevice") > 0 then if minetest.get_item_group(node1.name, "tubedevice") > 0 then
inject_items(pos) inject_items(pos, dir)
end end
end, end,
}) })