---@diagnostic disable: param-type-mismatch
-- imports
local ul = require("unload")
local dR = require("doRefuel")
local tF = require("tryForwards")
local tD = require("tryDown")
local tu = require("turn")
local gT = require("goTo")
-- init global var
depth = 0
unloaded = 0
collected = 0
xPos, zPos = 0, 0
xDir, zDir = 0, 1
-- init local var
local size
local alternate = 0
local done = false
local reseal = false -- slot 1 needs to be a placeable block if resealing is desired
-- -- -- -- --
-- execute --
-- -- -- -- --
-- Mine in a quarry pattern until we hit something we can't dig
print("Please enter the diameter of the bore. Positive natural numbers only:")
size = tonumber(io.read())
if size < 1 then
print("Excavate diameter must be positive")
return
end
if not dR.doRefuel() then
print("Out of Fuel")
return
end
print("Excavating...")
turtle.select(1)
if turtle.digDown() then
reseal = true
end
while not done do
for n = 1, size do
for m = 1, size - 1 do
if not tF.tryForwards() then
done = true
break
end
end
if done then
break
end
if n < size then
if math.fmod(n + alternate, 2) == 0 then
tu.turnLeft()
if not tF.tryForwards() then
done = true
break
end
tu.turnLeft()
else
tu.turnRight()
if not tF.tryForwards() then
done = true
break
end
tu.turnRight()
end
end
end
if done then
break
end
if size > 1 then
if math.fmod(size, 2) == 0 then
tu.turnRight()
else
if alternate == 0 then
tu.turnLeft()
else
tu.turnRight()
end
alternate = 1 - alternate
end
end
if not tD.tryDown() then
done = true
break
end
end
print("Returning to surface...")
-- Return to where we started
gT.goTo(0, 0, 0, 0, -1)
ul.unload(false)
gT.goTo(0, 0, 0, 0, 1)
-- Seal the hole
if reseal then
turtle.placeDown()
end
print("Mined " .. (collected + unloaded) .. " items total.")
shell.setDir("/")
Comments