-- Quick Simple Quarry Script -- Track coordinates relative to start (after 4-block offset) local x, y, z = 0, 0, 0 local dir = 0 -- 0=forward, 1=right, 2=back, 3=left local targetX, targetY, targetZ = 0, 0, 0 -- Prompt for dimensions print("Enter Width (X - Right):") targetX = tonumber(read()) or 32 print("Enter Length (Z - Forward):") targetZ = tonumber(read()) or 32 print("Enter Height (Y - Down):") targetY = tonumber(read()) or 32 -- Fuel and inventory config local FUEL_SLOT = 1 local MIN_FUEL = 200 -- Navigation helpers local function turnRight() turtle.turnRight() dir = (dir + 1) % 4 end local function turnLeft() turtle.turnLeft() dir = (dir - 1) % 4 end local function checkFuel() if turtle.getFuelLevel() == "unlimited" then return true end -- Try auto-refueling from inventory slot 1 if turtle.getFuelLevel() < MIN_FUEL then local currentSlot = turtle.getSelectedSlot() turtle.select(FUEL_SLOT) turtle.refuel(16) turtle.select(currentSlot) end -- Return total distance back to home estimate local distHome = math.abs(x) + math.abs(y) + math.abs(z) + 4 return turtle.getFuelLevel() > (distHome + 50) end local function isInventoryFull() for i = 1, 16 do if turtle.getItemCount(i) == 0 then return false end end return true end -- Return to home to empty items/refuel, then resume position local function returnHomeAndResume() print("Returning home...") -- Remember current state local savedX, savedY, savedZ, savedDir = x, y, z, dir -- Move up to surface while y < 0 do turtle.up() y = y + 1 end -- Turn to face home (backwards from original start) while dir ~= 2 do turnRight() end -- Move back Z lines while z > 0 do turtle.forward() z = z - 1 end -- Turn left to face X line home turnLeft() while x > 0 do turtle.forward() x = x - 1 end -- Move back the initial 4 offset blocks for i = 1, 4 do turtle.forward() end -- Empty inventory into rear chest for i = 2, 16 do turtle.select(i) turtle.drop() end turtle.select(1) -- Pull fuel from bottom chest if empty if turtle.getFuelLevel() < MIN_FUEL then turtle.suckDown() turtle.refuel() end print("Resuming mining...") -- Go back out 4 offset blocks for i = 1, 4 do turtle.back() end -- Path back to saved X while x < savedX do turtle.back() x = x + 1 end turnRight() -- Face original forward again -- Path back to saved Z while z < savedZ do turtle.forward() z = z + 1 end -- Path back down to saved Y while y > savedY do turtle.down() y = y - 1 end -- Restore original direction while dir ~= savedDir do turnRight() end end local function moveForward() if not checkFuel() or isInventoryFull() then returnHomeAndResume() end while turtle.detect() do turtle.dig() os.sleep(0.5) end if turtle.forward() then if dir == 0 then z = z + 1 elseif dir == 1 then x = x + 1 elseif dir == 2 then z = z - 1 elseif dir == 3 then x = x - 1 end return true end return false end -- Main Program Execution -- 1. Initial 4 block home offset print("Moving 4 blocks out...") for i = 1, 4 do while turtle.detect() do turtle.dig() end turtle.forward() end -- 2. Mining Logic loop for layer = 1, targetY do for row = 1, targetX do for col = 1, targetZ - 1 do moveForward() end -- Turn to next row logic if row < targetX then if row % 2 == 1 then if layer % 2 == 1 then turnRight() moveForward() turnRight() else turnLeft() moveForward() turnLeft() end else if layer % 2 == 1 then turnLeft() moveForward() turnLeft() else turnRight() moveForward() turnRight() end end end end -- Move down to next layer if not finished if layer < targetY then while turtle.detectDown() do turtle.digDown() end turtle.down() y = y - 1 -- Turn around to reverse pattern for next layer efficiency turnRight() turnRight() end end -- Return Home permanently when complete print("Mining complete! Returning home.") while y < 0 do turtle.up() y = y + 1 end while dir ~= 2 do turnRight() end while z > 0 do turtle.forward() z = z - 1 end turnLeft() while x > 0 do turtle.forward() x = x - 1 end for i = 1, 4 do turtle.forward() end print("Done!")