cc-utilities/tunnel.lua
2024-10-03 16:32:19 +02:00

69 lines
1.2 KiB
Lua

local function dig(up)
while up and turtle.inspectUp() do
turtle.digUp()
end
while turtle.inspect() do
turtle.dig()
end
end
local function forward()
while not turtle.forward() do
dig(false)
end
end
local function line(length)
for _=2,length do
forward()
end
end
local function fuelCheck(lineWidth)
return turtle.getFuelLevel() >= (lineWidth * 4)
end
local function awaitRefuel(lineWidth)
repeat
for i=1,16 do
if turtle.getItemCount(i) > 0 then
turtle.select(i)
turtle.refuel()
end
end
until fuelCheck(lineWidth)
end
local args = {...}
local width = #args > 0 and tonumber(args[1])
local startLeft = #args > 1 and #args[2] > 0 and string.lower(args[2]):sub(1,1) == 'l'
local turn, otherTurn = turtle.turnLeft, turtle.turnRight
if not startLeft then
turn, otherTurn = otherTurn, turn
end
-- Width 1 means we're just digging a line
if width == 1 then
turn = function() end
otherTurn = function() end
end
if width < 1 then
error("Width must be at least 1")
end
while true do
if not fuelCheck(width) then
print("I need more fuel")
awaitRefuel()
end
forward()
turn()
line(width)
otherTurn()
turn, otherTurn = otherTurn, turn
end