trainworld_computercraft/computer/13/machines.lua
2025-05-23 18:50:16 +02:00

128 lines
No EOL
2.4 KiB
Lua

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
}