-- This program is named 997UUShm in pastebin print("This program cuts a 3 x 3 tunnel. Place the turtle up one block from your feet.") local tArgs = { ... } if #tArgs ~= 1 then print( "Usage: tunnel " ) return end -- Mine in a quarry pattern until we hit something we can't dig local length = tonumber( tArgs[1] ) if length < 1 then print( "Tunnel length must be positive" ) return end local depth = 0 local collected = 0 local function collect() collected = collected + 1 if math.fmod(collected, 25) == 0 then print( "Mined "..collected.." items." ) end end local function tryDig() while turtle.detect() do if turtle.dig() then collect() sleep(0.5) else return false end end return true end local function tryDigUp() while turtle.detectUp() do if turtle.digUp() then collect() sleep(0.5) else return false end end return true end local function tryDigDown() while turtle.detectDown() do if turtle.digDown() then collect() sleep(0.5) else return false end end return true end local function refuel() local fuelLevel = turtle.getFuelLevel() if fuelLevel == "unlimited" or fuelLevel > 0 then return end local function tryRefuel() for n=1,16 do if turtle.getItemCount(n) > 0 then turtle.select(n) if turtle.refuel(1) then turtle.select(1) return true end end end turtle.select(1) return false end if not tryRefuel() then print( "Add more fuel to continue." ) while not tryRefuel() do os.pullEvent( "turtle_inventory" ) end print( "Resuming Tunnel." ) end end local function tryUp() refuel() while not turtle.up() do if turtle.detectUp() then if not tryDigUp() then return false end elseif turtle.attackUp() then collect() else sleep( 0.5 ) end end return true end local function tryDown() refuel() while not turtle.down() do if turtle.detectDown() then if not tryDigDown() then return false end elseif turtle.attackDown() then collect() else sleep( 0.5 ) end end return true end local function tryForward() refuel() while not turtle.forward() do if turtle.detect() then if not tryDig() then return false end elseif turtle.attack() then collect() else sleep( 0.5 ) end end return true end print( "Tunnelling..." ) tryDig() -- if block, dig, collect, sleep tryForward() for n=1,length do -- turtle.placeDown() tryDigUp() -- if block, digUp, collect, sleep tryDigDown() -- if block, digDown, collect, sleep turtle.turnLeft() tryDig() tryForward() tryDigUp() tryDigDown() -- if block, digDown, collect, sleep turtle.back() turtle.turnRight() turtle.turnRight() tryDig() -- if block, dig, collect, sleep tryForward() tryDigDown() -- if block, digDown, collect, sleep tryDigUp() -- if block, digUp, collect, sleep turtle.back() turtle.turnLeft() -- tryUp() -- refuel, up, if ~up, digUp, attackUp if n 0 do if turtle.forward() then depth = depth - 1 else turtle.dig() end end turtle.turnRight() turtle.turnRight() ]] print( "Tunnel complete." ) print( "Mined "..collected.." items total." )