Advertisement
Guest User

Untitled

a guest
Mar 17th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.82 KB | None | 0 0
  1. local tArgs = { ... }
  2. if #tArgs ~= 1 then
  3. print( "Usage: tunnel <length>" )
  4. return
  5. end
  6.  
  7. -- Mine in a quarry pattern until we hit something we can't dig
  8. local length = tonumber( tArgs[1] )
  9. if length < 1 then
  10. print( "Tunnel length must be positive" )
  11. return
  12. end
  13.  
  14. local depth = 0
  15. local collected = 0
  16.  
  17. local function collect()
  18. collected = collected + 1
  19. if math.fmod(collected, 25) == 0 then
  20. print( "Mined "..collected.." items." )
  21. end
  22. end
  23.  
  24. local function tryDig()
  25. while turtle.detect() do
  26. if turtle.dig() then
  27. collect()
  28. sleep(0.5)
  29. else
  30. return false
  31. end
  32. end
  33. return true
  34. end
  35.  
  36. local function tryDigUp()
  37. while turtle.detectUp() do
  38. if turtle.digUp() then
  39. collect()
  40. sleep(0.5)
  41. else
  42. return false
  43. end
  44. end
  45. return true
  46. end
  47.  
  48. local function tryDigDown()
  49. while turtle.detectDown() do
  50. if turtle.digDown() then
  51. collect()
  52. sleep(0.5)
  53. else
  54. return false
  55. end
  56. end
  57. return true
  58. end
  59.  
  60. local function refuel()
  61. local fuelLevel = turtle.getFuelLevel()
  62. if fuelLevel == "unlimited" or fuelLevel > 0 then
  63. return
  64. end
  65.  
  66. local function tryRefuel()
  67. for n=1,16 do
  68. if turtle.getItemCount(n) > 0 then
  69. turtle.select(n)
  70. if turtle.refuel(1) then
  71. turtle.select(1)
  72. return true
  73. end
  74. end
  75. end
  76. turtle.select(1)
  77. return false
  78. end
  79.  
  80. if not tryRefuel() then
  81. print( "Add more fuel to continue." )
  82. while not tryRefuel() do
  83. os.pullEvent( "turtle_inventory" )
  84. end
  85. print( "Resuming Tunnel." )
  86. end
  87. end
  88.  
  89. local function tryUp()
  90. refuel()
  91. while not turtle.up() do
  92. if turtle.detectUp() then
  93. if not tryDigUp() then
  94. return false
  95. end
  96. elseif turtle.attackUp() then
  97. collect()
  98. else
  99. sleep( 0.5 )
  100. end
  101. end
  102. return true
  103. end
  104.  
  105. local function tryDown()
  106. refuel()
  107. while not turtle.down() do
  108. if turtle.detectDown() then
  109. if not tryDigDown() then
  110. return false
  111. end
  112. elseif turtle.attackDown() then
  113. collect()
  114. else
  115. sleep( 0.5 )
  116. end
  117. end
  118. return true
  119. end
  120.  
  121. local function tryForward()
  122. refuel()
  123. while not turtle.forward() do
  124. if turtle.detect() then
  125. if not tryDig() then
  126. return false
  127. end
  128. elseif turtle.attack() then
  129. collect()
  130. else
  131. sleep( 0.5 )
  132. end
  133. end
  134. return true
  135. end
  136.  
  137. print( "Tunnelling..." )
  138.  
  139. for n=1,length do
  140. turtle.placeDown()
  141. tryDigUp()
  142. turtle.turnLeft()
  143. tryDig()
  144. tryUp()
  145. tryDig()
  146. tryDigUp()
  147. tryUp()
  148. tryDigUp()
  149. tryDig()
  150. tryUp()
  151. tryDig()
  152. turtle.turnRight()
  153. turtle.turnRight()
  154. tryDig()
  155. tryDown()
  156. tryDig()
  157. tryDown()
  158. tryDig()
  159. tryDown()
  160. tryDig()
  161. turtle.turnLeft()
  162.  
  163. if n<length then
  164. tryDig()
  165. if not tryForward() then
  166. print( "Aborting Tunnel." )
  167. break
  168. end
  169. else
  170. print( "Tunnel complete." )
  171. end
  172.  
  173. end
  174.  
  175. --[[
  176. print( "Returning to start..." )
  177. -- Return to where we started
  178. turtle.turnLeft()
  179. turtle.turnLeft()
  180. while depth > 0 do
  181. if turtle.forward() then
  182. depth = depth - 1
  183. else
  184. turtle.dig()
  185. end
  186. end
  187. turtle.turnRight()
  188. turtle.turnRight()
  189. ]]
  190.  
  191. print( "Tunnel complete." )
  192. print( "Mined "..collected.." items total." )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement