Advertisement
Birog

StripMining_28052017

May 28th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.74 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 = length
  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 tryDigDown()
  37. while turtle.detectDown() do
  38. if turtle.digDown() 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 tryDigUp()
  49. while turtle.detectUp() do
  50. if turtle.digUp() 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. sleep(1)
  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 tryFackel()
  122. turtle.select(16)
  123. turtle.turnRight()
  124. print("Fackel 1")
  125. turtle.place()
  126. turtle.turnLeft()
  127. turtle.select(1)
  128. end
  129.  
  130. function tryFackel2()
  131. turtle.select(16)
  132. turtle.placeDown()
  133. turtle.select(1)
  134. end
  135.  
  136.  
  137. local function tryForward()
  138. refuel()
  139. while not turtle.forward() do
  140. if turtle.detect() then
  141. if not tryDig() then
  142. return false
  143. end
  144. elseif turtle.attack() then
  145. collect()
  146. else
  147. sleep( 0.5 )
  148. end
  149. end
  150. return true
  151. end
  152.  
  153. local function tryGaenge()
  154. refuel()
  155. turtle.turnLeft()
  156. tryUp()
  157. tryForward()
  158. FAL = 0
  159. for n=1,20 do
  160. FAL = FAL +1
  161. tryForward()
  162. tryDigUp()
  163. tryDigDown()
  164. if FAL == 5 then
  165. tryFackel2()
  166. FAL = 0
  167. end
  168. end
  169. turtle.turnLeft()
  170. turtle.turnLeft()
  171. for n=1,21 do
  172. tryForward()
  173. end
  174. tryForward()
  175. FAR = 0
  176. for n=1,20 do
  177. FAR = FAR +1
  178. tryForward()
  179. tryDigUp()
  180. tryDigDown()
  181. if FAR == 5 then
  182. tryFackel2()
  183. FAR = 0
  184. end
  185. end
  186. turtle.turnLeft()
  187. turtle.turnLeft()
  188. for n=1,21 do
  189. tryForward()
  190. end
  191. if ki == 2 then
  192. turtle.turnLeft()
  193. turtle.select(15)
  194. turtle.place()
  195. for k=1,14 do
  196. turtle.select(k)
  197. turtle.drop()
  198. end
  199. turtle.turnRight()
  200. ki = 0
  201. end
  202. turtle.turnRight()
  203. tryDown()
  204. end
  205.  
  206. fa = 2
  207. ga = 0
  208. ki = 0
  209. shell.run("clear")
  210. print("")
  211. print("Copyright @ Birog ")
  212. print("")
  213. print(" Fackel bitte ins Fach 16 legen ")
  214. print(" Kisten ins Fach 15 legen ")
  215. print("")
  216. print( "Tunnelling..." )
  217. print()
  218. for n=1,length do
  219. turtle.placeDown()
  220. tryDigUp()
  221. turtle.turnLeft()
  222. tryDig()
  223. tryUp()
  224. tryDig()
  225. tryUp()
  226. tryDig()
  227. turtle.turnRight()
  228. turtle.turnRight()
  229. tryDig()
  230. tryDown()
  231. tryDig()
  232. tryDown()
  233. tryDig()
  234. turtle.turnLeft()
  235. ga = ga +1
  236. fa = fa +1
  237. ki = ki +1
  238. if ga == 3 then
  239. tryGaenge()
  240. ga = 0
  241. end
  242. if fa == 3 then
  243. tryFackel()
  244. fa = 0
  245. end
  246. term.setCursorPos(9,1)
  247. pro = 100/length*n
  248. print(" Es sind bereits "..pro.." Prozent abgeschlossen")
  249. if n<length then
  250. tryDig()
  251. if not tryForward() then
  252. print( "Aborting Tunnel." )
  253. break
  254. end
  255. else
  256. print( "Tunnel complete." )
  257. end
  258.  
  259. end
  260.  
  261.  
  262. print( "Returning to start..." )
  263.  
  264. -- Return to where we started
  265. turtle.turnLeft()
  266. turtle.turnLeft()
  267. tryUp()
  268. j = 0
  269. while depth > 1 do
  270. if tryForward() then
  271. depth = depth - 1
  272. else
  273. turtle.dig()
  274. end
  275. end
  276. tryDown()
  277. turtle.turnRight()
  278. turtle.turnRight()
  279.  
  280.  
  281. print( "Tunnel complete." )
  282. print( "Mined "..collected.." items total." )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement