Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---@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("/")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement