Guest User

Untitled

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