dxbydt

Miner

Jun 10th, 2013
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.86 KB | None | 0 0
  1.  
  2. --SETTINGS DEFAULTS
  3. local stop=false
  4. local settings={}
  5. settings["miningTime"]=3
  6. settings["digDelay"]=1
  7. settings["reserveFuelLevel"]=10
  8. settings["chargeTime"]=30
  9. settings["debug"]=false
  10. local nextStep=nil
  11.  
  12. function checkStatus()
  13. if turtle.getItemCount(1)>0 then
  14. print("Ender Chest OK")
  15. else
  16. print("Please insert an Ender Chest into slot 1")
  17. while turtle.getItemCount(1)==0 do
  18. turtle.select(1)
  19. sleep(0.1)
  20. end
  21. end
  22. if turtle.getItemCount(2)>0 then
  23. print("Mining Well OK")
  24. else
  25. print("Please insert Mining Well into slot 2")
  26. while turtle.getItemCount(2)==0 do
  27. turtle.select(2)
  28. sleep(0.1)
  29. end
  30. end
  31. if turtle.getFuelLevel()~="unlimited" then
  32. if turtle.getItemCount(3)>0 then
  33. print("Charge Station OK")
  34. else
  35. print("Please insert Advanced Charge Station (or higher) into slot 3")
  36. while turtle.getItemCount(3)==0 do
  37. turtle.select(3)
  38. sleep(0.1)
  39. end
  40. end
  41. end
  42. if turtle.getItemCount(4)>0 then
  43. print("Solar Panel OK")
  44. else
  45. print("Please insert Ultimate Hybrid Solar Panel into slot 4")
  46. while turtle.getItemCount(4)==0 do
  47. turtle.select(4)
  48. sleep(0.1)
  49. end
  50. end
  51. if turtle.getItemCount(5)>0 then
  52. print("IC2 Consumer OK")
  53. else
  54. print("Please insert IC2 HV Consumer into slot 5")
  55. while turtle.getItemCount(5)==0 do
  56. turtle.select(5)
  57. sleep(0.1)
  58. end
  59. end
  60. if turtle.getItemCount(6)>0 then
  61. print("Energy Bridge OK")
  62. else
  63. print("Please insert Energy Bridge into slot 6")
  64. while turtle.getItemCount(6)==0 do
  65. turtle.select(6)
  66. sleep(0.1)
  67. end
  68. end
  69. if turtle.getItemCount(7)>0 then
  70. print("BC Producer OK")
  71. else
  72. print("Please insert BC Producer into slot 7")
  73. while turtle.getItemCount(7)==0 do
  74. turtle.select(7)
  75. sleep(0.1)
  76. end
  77. end
  78. if needsFuel() then
  79. if turtle.getItemCount(16)>0 then
  80. print("Fuel Level OK")
  81. else
  82. print("Please insert fuel in slot 16")
  83. while turtle.getItemCount(16)==0 do
  84. turtle.select(16)
  85. sleep(0.1)
  86. end
  87. end
  88. end
  89.  
  90. end
  91.  
  92. function needsFuel()
  93. local level=turtle.getFuelLevel()
  94. if level=="unlimited" or level>settings["reserveFuelLevel"] then
  95. return false
  96. else
  97. return true
  98. end
  99. end
  100.  
  101. function moveForward()
  102. while turtle.detect() do
  103. turtle.dig()
  104. sleep(settings["digDelay"])
  105. end
  106. while turtle.forward()==false do
  107. turtle.dig()
  108. sleep(settings["digDelay"])
  109. turtle.attack()
  110. end
  111. end
  112.  
  113. function topOff()
  114. if needsFuel()==true then
  115. setNextStep("chargeplacecharge")
  116. else
  117. setNextStep("placeminingwell")
  118. end
  119. end
  120.  
  121. function placeCharge()
  122. turtle.select(4)
  123. while turtle.placeDown()==false do
  124. turtle.digDown()
  125. sleep(settings["digDelay"])
  126. turtle.attackDown()
  127. end
  128. turtle.back()
  129. turtle.select(5)
  130. while turtle.placeDown()==false do
  131. turtle.digDown()
  132. sleep(settings["digDelay"])
  133. turtle.attackDown()
  134. end
  135. turtle.up()
  136. turtle.select(6)
  137. while turtle.placeDown()==false do
  138. turtle.digDown()
  139. sleep(settings["digDelay"])
  140. turtle.attackDown()
  141. end
  142. turtle.up()
  143. turtle.select(7)
  144. while turtle.placeDown()==false do
  145. turtle.digDown()
  146. sleep(settings["digDelay"])
  147. turtle.attackDown()
  148. end
  149. turtle.up()
  150. turtle.select(3)
  151. while turtle.placeDown()==false do
  152. turtle.digDown()
  153. sleep(settings["digDelay"])
  154. turtle.attackDown()
  155. end
  156. end
  157.  
  158. function digCharge()
  159. turtle.select(3)
  160. turtle.digDown()
  161. turtle.down()
  162. turtle.select(7)
  163. turtle.digDown()
  164. turtle.down()
  165. turtle.select(6)
  166. turtle.digDown()
  167. turtle.down()
  168. turtle.select(5)
  169. turtle.digDown()
  170. turtle.forward()
  171. turtle.select(4)
  172. turtle.digDown()
  173. end
  174.  
  175. function placeChest()
  176. turtle.select(1)
  177. turtle.back()
  178. while turtle.place()==false do
  179. turtle.attack()
  180. turtle.dig()
  181. sleep(settings["digDelay"])
  182. end
  183. end
  184.  
  185. function digChest()
  186. turtle.select(1)
  187. if turtle.getItemCount(1) > 0 then
  188. turtle.drop()
  189. end
  190. turtle.dig()
  191. turtle.forward()
  192. end
  193.  
  194. function placeMiningWell()
  195. turtle.select(2)
  196. while turtle.placeDown()==false do
  197. turtle.digDown()
  198. sleep(settings["digDelay"])
  199. turtle.attackDown()
  200. end
  201. end
  202.  
  203. function digMiningWell()
  204. turtle.select(2)
  205. if turtle.getItemCount(2) > 0 then
  206. turtle.drop()
  207. end
  208. turtle.digDown()
  209. end
  210.  
  211. function setNextStep(next)
  212. if debug==true then
  213. print("Set next step "..next)
  214. end
  215. local file=nil
  216. while file==nil do
  217. file=fs.open("SnapBoxStepTracker","w")
  218. end
  219. file.write(next)
  220. file.close()
  221. nextStep=next
  222. end
  223.  
  224. function getNextStep()
  225. local file=fs.open("SnapBoxStepTracker","r")
  226. if file==nil then
  227. setNextStep("topoff")
  228. else
  229. local returnValue=file.readAll()
  230. file.close()
  231. setNextStep(returnValue)
  232. end
  233. end
  234.  
  235. function powerUp()
  236. turtle.select(4)
  237. turtle.digDown()
  238. turtle.down()
  239. turtle.select(5)
  240. turtle.digDown()
  241. turtle.down()
  242. turtle.select(6)
  243. turtle.digDown()
  244. turtle.down()
  245. turtle.select(7)
  246. turtle.digDown()
  247. end
  248.  
  249. function powerDown()
  250. turtle.select(7)
  251. while turtle.placeDown()==false and turtle.getItemCount(7)>0 do
  252. turtle.digDown()
  253. sleep(settings["digDelay"])
  254. turtle.attackDown()
  255. sleep(0.1)
  256. end
  257. turtle.up()
  258. turtle.select(6)
  259. while turtle.placeDown()==false and turtle.getItemCount(6)>0 do
  260. turtle.digDown()
  261. sleep(settings["digDelay"])
  262. turtle.attackDown()
  263. sleep(0.1)
  264. end
  265. turtle.up()
  266. turtle.select(5)
  267. while turtle.placeDown()==false and turtle.getItemCount(5)>0 do
  268. turtle.digDown()
  269. sleep(settings["digDelay"])
  270. turtle.attackDown()
  271. sleep(0.1)
  272. end
  273. turtle.up()
  274. turtle.select(4)
  275. while turtle.placeDown()==false and turtle.getItemCount(4)>0 do
  276. turtle.digDown()
  277. sleep(settings["digDelay"])
  278. turtle.attackDown()
  279. sleep(0.1)
  280. end
  281. end
  282.  
  283. function doNextStep()
  284. --is there a better way to do this?
  285. if nextStep=="topoff" then
  286. topOff()
  287. elseif nextStep=="chargeplacecharge" then
  288. placeCharge()
  289. setNextStep("chargewaitforrefuel")
  290. elseif nextStep=="chargewaitforrefuel" then
  291. sleep(settings["chargeTime"])
  292. setNextStep("chargedigcharge")
  293. elseif nextStep=="chargedigcharge" then
  294. digCharge()
  295. setNextStep("placeminingwell")
  296. elseif nextStep=="placeminingwell" then
  297. placeMiningWell()
  298. setNextStep("placechest")
  299. elseif nextStep=="placechest" then
  300. placeChest()
  301. setNextStep("powerdown")
  302. elseif nextStep=="powerdown" then
  303. powerDown()
  304. setNextStep("powerup")
  305. sleep(settings["miningTime"])
  306. elseif nextStep=="powerup" then
  307. powerUp()
  308. setNextStep("digchest")
  309. elseif nextStep=="digchest" then
  310. digChest()
  311. setNextStep("digminingwell")
  312. elseif nextStep=="digminingwell" then
  313. digMiningWell()
  314. setNextStep("moveforward")
  315. elseif nextStep=="moveforward" then
  316. moveForward()
  317. setNextStep("topoff")
  318. else
  319. print("Unknown Step - Something Went Wrong. Giving Up "..nextStep)
  320. return
  321. end
  322. end
  323.  
  324. function clearScreen()
  325. term.clear()
  326. term.setCursorPos(1,1)
  327. end
  328.  
  329. --------MAIN PROGRAM
  330. clearScreen()
  331.  
  332. --check to make sure it has all the items it needs
  333. checkStatus()
  334.  
  335. --initial refuel
  336. turtle.select(16)
  337. turtle.refuel()
  338. turtle.select(1)
  339.  
  340. nextStep="topoff"
  341.  
  342. --main loop
  343. while stop==false do
  344. doNextStep()
  345. sleep(0.2)
  346. end
Advertisement
Add Comment
Please, Sign In to add comment