¨args={...} -- Basicaly write *yourprogram* CubeDepth CubeWidth CubeHeight - for example | mine 2 2 | mines out cube 2x2x1 x=tonumber(args[1]) -- Takes negative dimensions in all directions too! if x == nil then x=1 end y=tonumber(args[2]) if y == nil then y=1 end z=tonumber(args[3]) if z == nil then z=1 end moves=0 -- Few functions so that the code is "easier" to code (this mainly includes weird exceptions and failsafes) function midPrint(text,color) term.setBackgroundColor(color) term.clear() r,t=term.getSize() t=t/2+1 r=(r/2)-(string.len(text)/2)+1 term.setCursorPos(r,t) print(text) end function Forward() while not turtle.detect() and not turtle.forward() do midPrint("Blocked!",colors.red) end end function Dig() while turtle.detect() do turtle.dig() end end function Up() while not turtle.detectUp() and not turtle.up() do midPrint("Blocked!",colors.red) end end function DigUp() while turtle.detectUp() do turtle.digUp() end end function Down() while not turtle.detectDown() and not turtle.down() do midPrint("Blocked!",colors.red) end end function DigDown() while turtle.detectDown() do turtle.digDown() end end local yOdd=false -- Negative coords logic conversion if z<0 then Zneg=true z=z*(-1) end if y<0 and x>0 then turtle.turnLeft() Ymem=y y=x x=Ymem*(-1) elseif y<0 and x<0 then turtle.turnLeft(2) yOdd=true Ymem=y y=x*(-1) x=Ymem*(-1) elseif y>0 and x<0 then turtle.turnRight() Ymem=y y=x*(-1) x=Ymem end -- Main loop if turtle.getFuelLevel()<(x*y*z) then local z=16 x=turtle.getItemDetail() while turtle.select(z) do if turtle.getItemDetail() then if (tostring(turtle.getItemDetail().name)=="minecraft:coal") then break end end z=z-1 if z==0 then z=16 end end while (turtle.getItemCount())<(((x*y*z)//100)+1) do midPrint("Not enough Fuel!",colors.green) end turtle.refuel(((x*y*z)//100)+1) end local l=false for i=z-1,0,-1 do for m=y-1,1,-1 do for n=x-1,1,-1 do Dig() Forward() moves=moves+1 midPrint((tostring((moves/(x*y*z))*100).."%"),colors.green) end if not yOdd then if not l then yOdd=true turtle.turnRight() end if x==1 and not l then yOdd=false l=true end Dig() Forward() moves=moves+1 midPrint((tostring((moves/(x*y*z))*100).."%"),colors.green) if not l then turtle.turnRight() end else yOdd=false turtle.turnLeft() Dig() Forward() moves=moves+1 midPrint((tostring((moves/(x*y*z))*100).."%"),colors.green) turtle.turnLeft() end end for n=x-1,1,-1 do Dig() Forward() moves=moves+1 midPrint((tostring((moves/(x*y*z))*100).."%"),colors.green) end if i>0 then if Zneg then DigDown() Down() moves=moves+1 midPrint((tostring((moves/(x*y*z))*100).."%"),colors.green) if x>1 or y>1 then turtle.turnLeft() turtle.turnLeft() end else DigUp() Up() moves=moves+1 midPrint((tostring((moves/(x*y*z))*100).."%"),colors.green) if x>1 or y>1 then turtle.turnLeft() turtle.turnLeft() end end end end midPrint("Complete",colors.blue) term.setCursorPos(1,1)