trainworld_computercraft/computer/13/machines.lua
2025-05-23 02:31:02 +02:00

118 lines
No EOL
2.3 KiB
Lua

require("inventory")
require("pathfinding")
function mill(extra_items)
go_to(vector.new(-4,0,0),"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 peripheral.call("front", "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
go_to(vector.new(2,0,0), "south")
insertDepot(1)
goUp()
goUp()
selectItem(extra_items[1].name, nbt)
turtle.dropUp(1)
peripheral.call("front", "pullItem", "top")
goDown()
goDown()
takeDepot()
end
function deploy_tool(extra_items)
deploy(extra_items, true)
goUp()
goUp()
peripheral.call("front", "pushItem", "top")
turtle.suckUp()
end
function furnace(extra_items)
go_to(vector.new(1,0,0), "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
-- peripheral.call("front", "")
-- TODO refuel
sleep(wait_time)
takeForward(3)
end
function press(_)
go_to(vector.new(-1,0,0), "south")
insertDepot(1)
sleep(1)
takeDepot()
end
function compact(extra_items) end
function mix(extra_items)
go_to(vector.new(-3,0,0), "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)
-- for i = 1, 16 do
-- if turtle.getItemCount(i) ~= 0 then
-- turtle.select(i)
-- turtle.drop()
-- end
-- end
local slot = 0
print(len(extra_items), "extra items")
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
}