09glich

Turtle_Mine

Jun 11th, 2024 (edited)
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.88 KB | None | 0 0
  1. local x,y,z = 0,0,0
  2. local Dir = 0
  3. local State = "mine"
  4.  
  5. local function move(dir)
  6. if string.lower(dir) == "up" then
  7. if turtle.detectUp() == false and turtle.getFuelLevel ~= 0 then
  8. y = y + 1
  9. turtle.up()
  10. else
  11. return false
  12. end
  13. return true;
  14. end
  15. if string.lower(dir) == "down" then
  16. if turtle.detectDown() == false and turtle.getFuelLevel ~= 0 then
  17. y = y - 1
  18. turtle.down()
  19. else
  20. return false
  21. end
  22. return true;
  23. end
  24. if string.lower(dir) == "forward" then
  25. if turtle.detect() == false and turtle.getFuelLevel ~= 0 then
  26. if Dir % 4 == 0 then
  27. x = x + 1
  28. elseif Dir % 4 == 1 then
  29. z = z + 1
  30. elseif Dir % 4 == 2 then
  31. x = x -1
  32. elseif Dir % 34 == 3 then
  33. z = z - 1
  34. end
  35. turtle.forward()
  36. else
  37. return false
  38. end
  39. return true;
  40. end
  41. end
  42.  
  43. local function Turn(dir)
  44. if string.lower(dir) == "left" then
  45. turtle.turnLeft()
  46. Dir = Dir + 1
  47. end
  48. if string.lower(dir) == "right" then
  49. turtle.turnRight()
  50. Dir = Dir - 1
  51. end
  52. end
  53.  
  54. local function mine()
  55. repeat
  56. --print("Dig")
  57. turtle.dig()
  58. turtle.digUp()
  59. sleep(.5)
  60. until turtle.detect() == false
  61. --print("No Block Found")
  62. end
  63.  
  64. local function doFuleCheck()
  65. local TotalDist = math.abs(x) + math.abs(y) + math.abs(z)
  66. if (TotalDist >= turtle.getFuelLevel()) then
  67. State = "return"
  68. return true
  69. else
  70. return false
  71. end
  72. end
  73.  
  74. local Block = nil
  75. repeat
  76. move("forward")
  77. Block = turtle.detect()
  78. until Block or doFuleCheck()
  79.  
  80. print("Mining")
  81.  
  82. while true do
  83. print(State)
  84. if State == "mine" then
  85. for i = 1,3 do
  86. if doFuleCheck() then break end
  87. mine()
  88. move("forward")
  89. end
  90. Turn("left")
  91. if turtle.detect() then
  92. for i = 1,5 do
  93. if doFuleCheck() then break end
  94. mine()
  95. move("forward")
  96. end
  97.  
  98. for i = 1,2 do
  99. if doFuleCheck() then break end
  100. Turn("left")
  101. end
  102.  
  103. for i = 1,5 do
  104. if doFuleCheck() then break end
  105. mine()
  106. move("forward")
  107. end
  108. Turn("left")
  109. else
  110. Turn("right")
  111. end
  112.  
  113. Turn("right")
  114. if turtle.detect() then
  115. for i = 1,5 do
  116. if doFuleCheck() then break end
  117. mine()
  118. move("forward")
  119. end
  120. for i = 1,2 do
  121. if doFuleCheck() then break end
  122. Turn("left")
  123. end
  124. for i = 1,5 do
  125. if doFuleCheck() then break end
  126. mine()
  127. move("forward")
  128. end
  129. Turn("right")
  130. else
  131. Turn("left")
  132. end
  133.  
  134. elseif State == "return" then
  135. if Dir == 2 or Dir == 4 then
  136. if Dir % 4 == 2 and z < 0 or Dir % 4 == 4 and z > 0 then
  137. for i = 1,2 do
  138. Turn("left")
  139. end
  140. end
  141.  
  142. for i = 1,math.abs(z) do
  143. move("forward")
  144. end
  145. Turn("left")
  146.  
  147. if Dir == 1 then
  148. for i = 1,2 do
  149. Turn("left")
  150. end
  151. end
  152. end
  153.  
  154. if z ~= 0 then
  155. error("Was not able to return to z0")
  156. end
  157.  
  158. repeat
  159. move("forward")
  160. until x == 0
  161.  
  162. for i = 1,2 do
  163. Turn("left")
  164. end
  165. end
  166. end
  167.  
Advertisement
Add Comment
Please, Sign In to add comment