Advertisement
nadkarnik

AUTO_MINE_SPECIFIC

Jun 28th, 2025
12
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.10 KB | None | 0 0
  1. local tArgs = {...}
  2. local size = tonumber(tArgs[1])
  3. local meter = tonumber(tArgs[2])
  4.  
  5. local stepSize = size - 1
  6. local area = size * size
  7. local diggedLevel = 0
  8.  
  9. --To move forward and mine if interupted
  10. function frwd(steps)
  11. for i = 1, steps do
  12. turtle.digUp()
  13. turtle.digDown()
  14.  
  15. while not turtle.forward() do
  16. turtle.dig()
  17. end
  18. -- clearJunk()
  19. end
  20. end
  21.  
  22. function right()
  23. turtle.turnRight()
  24. frwd(1)
  25. turtle.turnRight()
  26. end
  27.  
  28. function left()
  29. turtle.turnLeft()
  30. frwd(1)
  31. turtle.turnLeft()
  32. end
  33.  
  34. --Consumes minimum refuel
  35. function refuel(limit)
  36. local fuel = turtle.getFuelLevel()
  37.  
  38. while turtle.getFuelLevel() <= limit do
  39. local i = 1
  40.  
  41. while i <= 16 do
  42. turtle.select(i)
  43.  
  44. if turtle.getFuelLevel() <= limit then
  45. if turtle.refuel(0) then
  46. print("\nTurtle> Consuming: ".."\""..turtle.getItemDetail().name.."\"")
  47. turtle.refuel(1)
  48. print("Turtle> Fuel: "..turtle.getFuelLevel())
  49. fuel = turtle.getFuelLevel()
  50. i = 0
  51.  
  52. elseif i == 16 then
  53. if fuel == turtle.getFuelLevel() then
  54. turtle.select(1)
  55. return false
  56. end
  57. end
  58. else
  59. turtle.select(1)
  60. return true
  61. end
  62. i = i + 1
  63. end
  64. end
  65. end
  66.  
  67. function emptySlots()
  68. local empty = 16
  69.  
  70. for i = 1, 16 do
  71. if turtle.getItemCount(i) ~= 0 then
  72. empty = empty - 1
  73. end
  74. end
  75. return empty
  76. end
  77.  
  78.  
  79.  
  80. function clearJunk()
  81.  
  82. for i = 1, 16 do
  83. turtle.select(i)
  84. --print("\nITEM INDEX IS", i)
  85. --print("\nITEM NAME IS ", turtle.getItemDetail(i).name)
  86. if turtle.getItemCount(i)==0 then
  87. --print(" ENTERED FIRST CONDITION")
  88.  
  89. elseif string.find(turtle.getItemDetail(i).name, "ore")
  90. or string.find(turtle.getItemDetail(i).name, "coal")
  91. or string.find(turtle.getItemDetail(i).name, "diamond")
  92. or string.find(turtle.getItemDetail(i).name, "raw")
  93. or string.find(turtle.getItemDetail(i).name, "redstone")
  94. or string.find(turtle.getItemDetail(i).name, "emerald")
  95. or string.find(turtle.getItemDetail(i).name, "uranium")
  96. or string.find(turtle.getItemDetail(i).name, "yellorite")
  97. then
  98. --print("ENTERED SECOND CONDITION")
  99.  
  100. else
  101. turtle.drop()
  102. end
  103. end
  104. print("\nTOSSED JUNK!!!")
  105.  
  106. end
  107.  
  108.  
  109.  
  110.  
  111. function placeChest(slot)
  112. turtle.select(slot)
  113.  
  114. turtle.turnLeft()
  115. turtle.turnLeft()
  116.  
  117. --Places 1st chest
  118. turtle.dig()
  119. turtle.place()
  120. turtle.digUp()
  121. turtle.up()
  122. turtle.dig()
  123. turtle.down()
  124.  
  125. turtle.turnLeft()
  126. frwd(1)
  127. turtle.turnRight()
  128.  
  129. --Places 2nd chest
  130. turtle.dig()
  131. turtle.place()
  132. turtle.digUp()
  133. turtle.up()
  134. turtle.dig()
  135. turtle.down()
  136.  
  137. turtle.turnRight()
  138. frwd(1)
  139. turtle.turnRight()
  140.  
  141. print("\nTurtle> Deployed chest")
  142. end
  143.  
  144. function dumpChest(returning)
  145.  
  146.  
  147. refuel((area + diggedLevel) * 2)
  148.  
  149.  
  150.  
  151. if diggedLevel % 2 == 0 and diggedLevel ~= 0 then
  152. if size % 2 ~= 0 then
  153. frwd(stepSize)
  154. turtle.turnRight()
  155. frwd(stepSize)
  156. turtle.turnRight()
  157.  
  158. else
  159. turtle.turnLeft()
  160. frwd(stepSize)
  161. turtle.turnRight()
  162. end
  163. end
  164.  
  165. for i = 1, diggedLevel - 1 do
  166. turtle.digUp()
  167. turtle.up()
  168. end
  169.  
  170. turtle.turnLeft()
  171. turtle.turnLeft()
  172.  
  173. for i = 1, 16 do
  174. turtle.select(i)
  175.  
  176. if not turtle.refuel(0) then
  177. turtle.drop()
  178. end
  179. end
  180. turtle.select(1)
  181.  
  182. print("\nTurtle> Emptyed inventory!")
  183.  
  184. turtle.turnRight()
  185. turtle.turnRight()
  186.  
  187. if returning then
  188. for i = 1, diggedLevel - 1 do
  189. turtle.digDown()
  190. turtle.down()
  191. end
  192.  
  193. if diggedLevel % 2 == 0 and diggedLevel ~= 0 then
  194. if size % 2 ~= 0 then
  195. frwd(stepSize)
  196. turtle.turnRight()
  197. frwd(stepSize)
  198. turtle.turnRight()
  199.  
  200. else
  201. turtle.turnRight()
  202. frwd(stepSize)
  203. turtle.turnLeft()
  204. end
  205. end
  206. end
  207. end
  208.  
  209. --Main program
  210. local chestThere = 0
  211. for i = 1, 16 do
  212. if turtle.getItemCount(i) >= 2 then
  213. if turtle.getItemDetail(i).name == "minecraft:chest" then
  214. chestThere = i
  215. break
  216. end
  217. end
  218. end
  219.  
  220. refuel(6)
  221.  
  222. if chestThere ~= 0 then
  223. placeChest(chestThere)
  224.  
  225. else
  226. print("\nTurtle> Please give me 2 normal")
  227. print("Turtle> minecraft chest")
  228. print("\nTurtle> Enter which slot has the chest")
  229. print("Turtle> or 0 to not deploy\n")
  230. term.write("You> ")
  231. local chestIn = tonumber(read())
  232.  
  233. if chestIn == 0 then
  234. print("\nTurtle> Make sure there is a chest")
  235. print("Turtle> behind the starting point")
  236.  
  237. elseif chestIn ~= 0 then
  238. if turtle.getItemCount(chestIn) >= 2 then
  239. if turtle.getItemDetail(chestIn).name == "minecraft:chest" then
  240. placeChest(chestIn)
  241.  
  242. else
  243. print("\nTurtle> Chest not found")
  244. print("Turtle> Terminating!")
  245. exit()
  246. end
  247. else
  248. print("\nTurtle> Minimum 2 chest are required")
  249. print("Turtle> Terminating!")
  250. exit()
  251. end
  252. else
  253. print("\nTurtle> Enter a value between 0 to 16")
  254. print("Turtle> Terminating!")
  255. exit()
  256. end
  257. end
  258.  
  259. while diggedLevel <= meter - 1 do
  260. if emptySlots() == 0 then
  261. print("\nTurtle> Inventory Full!")
  262. print("Turtle> Emptying inventory")
  263.  
  264. dumpChest(true)
  265. print("\nTurtle> Continuing...")
  266. end
  267.  
  268. if turtle.getFuelLevel() <= area + 3 then
  269. if not refuel(area + 3) then
  270. print("\nTurtle> Fuel: "..turtle.getFuelLevel().." < "..area)
  271. print("Turtle> Terminating! Low fuel")
  272. exit()
  273. end
  274. end
  275.  
  276. if diggedLevel == 0 then
  277. turtle.digDown()
  278. turtle.down()
  279.  
  280. diggedLevel = diggedLevel + 2
  281.  
  282. else
  283. for i = 1, 3 do
  284. turtle.digDown()
  285. turtle.down()
  286. end
  287.  
  288. diggedLevel = diggedLevel + 3
  289. end
  290.  
  291. if size % 2 == 0 then
  292. for i = 1, size do
  293. frwd(stepSize)
  294. clearJunk()
  295. if diggedLevel % 2 ~= 0 then
  296. if i ~= size then
  297. if i % 2 == 0 then
  298. right()
  299. else
  300. left()
  301. end
  302. end
  303.  
  304. else
  305. if i ~= size then
  306. if i % 2 == 0 then
  307. left()
  308. else
  309. right()
  310. end
  311. end
  312. end
  313. end
  314. else
  315. for i = 1, size / 2 do
  316. frwd(stepSize)
  317. right()
  318. frwd(stepSize)
  319. left()
  320. clearJunk()
  321. end
  322.  
  323. frwd(stepSize)
  324. end
  325.  
  326. turtle.turnRight()
  327. turtle.turnRight()
  328. turtle.digUp()
  329. turtle.digDown()
  330. clearJunk()
  331. print("\nTurtle> Digged: "..diggedLevel.."/"..meter.." levels")
  332. end
  333.  
  334. dumpChest(false)
  335. print("\nTurtle> Mining complete! Terminating!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement