require("inventory") require("pathfinding") press_pos = vector.new(1,0,0) deployer_pos = vector.new(2,0,0) furnace_pos = vector.new(3,0,0) mill_pos = vector.new(4,0,0) mixer_pos = vector.new(-1,0,0) compactor_pos = vector.new(-2,0,0) spout_pos = vector.new(-3,0,0) melter_pos = vector.new(-4,1,-3) casting_table_pos = vector.new(-3,0,-3) -- fluid_tanks = { -- water = vector.new(0,0,-1), -- lava = vector.new(0,0,-1) -- } function mill(extra_items) goTo(mill_pos,"south") item_count = 0 if turtle.getItemCount() ~= 0 then item_count = 1 end insertForward(1, 1) for _,item in pairs(extra_items) do item_count = item_count + item.count selectItem(item.name) insertForward(1, item.count) end print(item_count,"items") while pFront("getItemDetail", 1) do sleep(0.1) end for i = 2, 10 do takeForward(i) end end function deploy(extra_items, nbt) -- extra_items should only be one item goTo(deployer_pos, "south") insertDepot(1) goUp() goUp() selectItem(extra_items[1].name, nbt) turtle.dropUp(1) pFront("pullItem", "top") goDown() goDown() takeDepot() end function deploy_tool(extra_items) deploy(extra_items, true) goUp() goUp() pFront("pushItem", "top") turtle.suckUp() end function furnace(extra_items) goTo(furnace_pos, "south") item_count = 0 if turtle.getItemCount() ~= 0 then item_count = 1 end insertForward(1, 1) for _,item in pairs(extra_items) do item_count = item_count + item.count selectItem(item.name) insertForward(1, item.count) end wait_time = 10 * item_count -- TODO refuel sleep(wait_time) takeForward(3) end function press(_) goTo(press_pos, "south") insertDepot(1) sleep(1) takeDepot() end function compact(extra_items) printError("unimplemented :3") fail() end function mix(extra_items) goTo(mixer_pos, "south") insertForward(1, 1) for _, item in pairs(extra_items) do selectItem(item.name) insertForward(nil, item.count) end goUp() goUp() goDown() goDown() sleep(10) -- todo wait until ingredients are gone takeForward(10) end function craft(extra_items) local slot = 0 for _, item in pairs(extra_items) do slot = slot + 1 if slot == 4 then slot = 5 elseif slot == 8 then slot = 9 end if item.name ~= "nil" then turtle.select(slot) takeItems(item.name, item.count) end end turtle.craft() end return { mill = mill, deploy = deploy, deploy_tool = deploy_tool, furnace = furnace, press = press, compact = compact, mix = mix, craft = craft }