Advertisement
MrDubbyWubby

3x5 Turtle Miner ComputerCraft 1.8 Gravel Proof

Jun 25th, 2020 (edited)
2,172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.25 KB | None | 0 0
  1. --Version 1.8
  2. dArgs = {...}
  3. distance = 0
  4. close = false
  5. home = false
  6. --Improved movements for less gravel issues
  7. function turtleForward()
  8.   if not turtle.forward() then
  9.     repeat
  10.       turtle.dig() 
  11.       sleep(.5)
  12.     until turtle.forward()
  13.   end
  14. end
  15. function turtleUp()
  16.   if not turtle.up() then
  17.     repeat
  18.       turtle.digUp()
  19.     until turtle.up()
  20.   end
  21. end
  22. function turtleDown()
  23.   if not turtle.down() then
  24.     turtle.digDown()
  25.   end
  26. end
  27. function turtleDig()
  28.   if turtle.detect() then
  29.     repeat
  30.       turtle.dig()
  31.       sleep(.5)
  32.     until not turtle.detect()
  33.   end
  34. end
  35. --Technical Functions
  36. function closeProgram()
  37.   close = true
  38.   return
  39. end
  40. function distanceForward()
  41.   turtleForward()
  42.   distance = distance + 1
  43. end
  44. function goHome()
  45.   turtle.turnLeft()--/Turning back
  46.   turtle.turnLeft()
  47.   for i=1,distance do
  48.     turtleForward()
  49.   end
  50.   depositInv()
  51.   turtle.turnRight()--/Facing origin
  52.   turtle.turnRight()
  53.   home = true
  54. end
  55. function depositInv()
  56.   for i=1,16 do
  57.     turtle.select(i)
  58.     turtle.drop()
  59.   end
  60.   turtle.select(1)
  61. end
  62. function checkFuel()
  63.   if turtle.getFuelLevel() - 15 <= distance then
  64.     if not home then
  65.       goHome()
  66.     end
  67.     if distance == tonumber(dArgs[1]) then
  68.       term.setTextColor(colors.green)
  69.       print("Done!")
  70.     end
  71.     if turtle.getFuelLevel() == 0 then
  72.       term.setTextColor(colors.red)
  73.       print("Out of fuel. Program Canceled.")
  74.       closeProgram()
  75.     else
  76.       term.setTextColor(colors.red)
  77.       print("Fuel too low. Program Canceled.")
  78.       print("Current fuel level: "..turtle.getFuelLevel())
  79.       closeProgram()
  80.     end
  81.   end
  82. end
  83. function checkInv()
  84.   if turtle.getItemCount(16) >= 1 then
  85.     print("Inventory full! Dumping items where I started.")
  86.     goHome()
  87.     checkFuel()
  88.     if distance == tonumber(dArgs[1]) then --Fixes error where if inventory detected full at dArgs it will travel to and back
  89.       term.setTextColor(colors.green)
  90.       print("Done!")
  91.       closeProgram()
  92.     end
  93.     if not close then
  94.       for i=1,distance do
  95.         turtleForward()
  96.       end
  97.       home = false
  98.     end
  99.   end
  100. end
  101. function returnHome()
  102.   if home then
  103.     return
  104.   end
  105.   goHome()
  106.   sleep(.6)
  107.   term.setTextColor(colors.green)
  108.   print("Done!")
  109. end
  110. --Input and Returns
  111. if turtle.getFuelLevel() <= 15 then
  112.   print("Need at least 16 fuel.")
  113.   print("Current fuel level: "..turtle.getFuelLevel())
  114.   return
  115. end
  116. if tonumber(dArgs[1]) == nil then
  117.   print("miner <distance>")
  118.   return
  119. elseif tonumber(dArgs[1]) == 0 then
  120.   print("Distance must be greater than 0")
  121.   return
  122. elseif tonumber(dArgs[1]) == 1 then
  123.   print("Mining "..dArgs[1].." block out")
  124. else
  125.   print("Mining "..dArgs[1].." blocks out")
  126. end
  127. --Mining Function
  128. repeat
  129.     distanceForward()
  130.     turtle.turnLeft()
  131.     turtleForward()
  132.     turtleUp()
  133.     turtleUp()
  134.     turtleDig()
  135.     turtleDown()
  136.     turtleDig()
  137.     turtleDown()
  138.     turtleDig()
  139.     turtle.turnRight()
  140.     turtle.turnRight()
  141.     turtleForward()
  142.     turtleForward()
  143.     turtleUp()
  144.     turtleUp()
  145.     turtleDig()
  146.     turtle.turnLeft()
  147.     turtle.turnLeft()
  148.     turtleDig()
  149.     turtleDown()
  150.     turtleDig()
  151.     turtle.turnRight()
  152.     turtle.turnRight()
  153.     turtleDig()
  154.     turtleDown()
  155.     turtleDig()
  156.     turtle.turnLeft()
  157.     turtle.turnLeft()
  158.     turtleForward()
  159.     turtle.turnRight()
  160.     checkFuel()
  161.     checkInv()
  162.     if close then
  163.       break
  164.     end
  165. until distance == tonumber(dArgs[1])
  166. returnHome()
  167. --Code by MrDubbyWubby
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement