amsarge

Mine with storage

Jan 12th, 2021 (edited)
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.35 KB | None | 0 0
  1. local SLOT_COUNT = 16
  2. local d = "north"
  3. local width, depth, height = 10, 10, 1
  4.  
  5. if (#arg == 2) then
  6. width = tonumber(arg[1])
  7. depth = tonumber(arg[2])
  8. else
  9. print('No arguments given using defaults 10 x 10') -- asks for number input
  10. end
  11.  
  12.  
  13.  
  14. DROPPED_ITEMS = { -- Gets items to drop
  15. "minecraft:stone",
  16. "minecraft:dirt",
  17. "minecraft:cobblestone",
  18. "minecraft:diorite",
  19. "minecraft:andesite",
  20. "minecraft:granite",
  21. "minecraft:sand",
  22. "minecraft:gravel",
  23. "minecraft:flint",
  24. "railcraft:ore_metal",
  25. "extrautils2:ingredients",
  26. "minecraft:dye",
  27. "thaumcraft:nugget",
  28. "thaumcraft:crystal_essence",
  29. "thermalfoundation:material",
  30. "projectred-core:resource_item",
  31. "thaumcraft:ore_cinnabar",
  32. "deepresonance:resonating_ore",
  33. "forestry:apatite",
  34. "quark:jasper",
  35. "quark:cobbled_deepslate",
  36. "create:gabbro_cobblestone",
  37. "create:scoria",
  38. "create:scoria_cobblestone",
  39. "quark:slate",
  40. "undergarden:deepsoil",
  41. "undergarden:depthrock",
  42. "quark:marble",
  43. "astralsorcery:marble_raw",
  44. "create:limestone_cobblestone",
  45. "create:weathered_limestone_cobblestone",
  46. "emendatusenigmatica:fluorite_gem",
  47. "extcaves:lavastone",
  48. "thermal:cinnabar",
  49. "mana-and-artifice:vinteum_ore"
  50.  
  51.  
  52.  
  53.  
  54. }
  55. function dropItems() -- drops items
  56. print("Purging Inventory...")
  57. for slot = 1, SLOT_COUNT, 1 do
  58. local item = turtle.getItemDetail(slot) --gets details on item, if it's = to items to drop it will drop items
  59. if(item ~= nil) then
  60. for filterIndex = 1, #DROPPED_ITEMS, 1 do
  61. if(item["name"] == DROPPED_ITEMS[filterIndex]) then
  62. print("Dropping - " .. item["name"])
  63. turtle.select(slot)
  64. turtle.dropDown()
  65. end
  66. end
  67. end
  68. end
  69. end
  70.  
  71. function getEnderIndex()
  72. for slot = 1, SLOT_COUNT, 1 do
  73. local item = turtle.getItemDetail(slot)
  74. if(item ~= nil) then
  75. if(item["name"] == "enderstorage:ender_storage") then
  76. return slot
  77. end
  78. end
  79. end
  80. end
  81.  
  82. function manageInventory()
  83. dropItems()
  84. index = 2
  85. if(index ~= nil) then
  86. turtle.select(index)
  87. turtle.digUp()
  88. turtle.placeUp()
  89. end
  90. -- Chest is now deployed
  91. for slot = 1, SLOT_COUNT, 1 do
  92. local item = turtle.getItemDetail(slot)
  93. if(item ~= nil) then
  94. if(item["name"] ~= "minecraft:coal") then
  95. turtle.select(slot)
  96. turtle.dropUp()
  97. end
  98. end
  99. end
  100. -- Items are now stored
  101. turtle.select(2)
  102. turtle.digUp()
  103. end
  104.  
  105. function reFuel()
  106. index = getEnderIndex()
  107. if(index ~= nil)then
  108. turtle.select(index)
  109. turtle.digUp()
  110. turtle.placeUp()
  111. end
  112. turtle.select(1)
  113. turtle.suckUp()
  114. turtle.digUp()
  115. end
  116.  
  117. function checkFuel()
  118. turtle.select(1)
  119.  
  120. if(turtle.getFuelLevel() < 50) then
  121. print("Attempting Refuel...")
  122. for slot = 1, SLOT_COUNT, 1 do
  123. turtle.select(slot)
  124. if(turtle.refuel(1)) then
  125. return true
  126. else
  127. reFuel()
  128. return true
  129. end
  130. end
  131. return false
  132. else
  133. return true
  134. end
  135.  
  136. end
  137.  
  138.  
  139. function DigUp()
  140. while(turtle.detectUp()) do
  141. turtle.digUp()
  142. turtle.digDown()
  143. turtle.dig()
  144.  
  145. end
  146. end
  147.  
  148. function DigDown()
  149. while(turtle.detectDown()) do
  150. turtle.digUp()
  151. turtle.digDown()
  152. turtle.dig()
  153.  
  154. end
  155. end
  156.  
  157. function Dig()
  158. while(turtle.detect()) do
  159. turtle.digUp()
  160. turtle.digDown()
  161. turtle.dig()
  162.  
  163. end
  164. end
  165.  
  166. function detectAndDig()
  167. Dig()
  168. DigDown()
  169. DigUp()
  170. end
  171.  
  172.  
  173. function forward()
  174. detectAndDig()
  175. turtle.forward()
  176. end
  177.  
  178.  
  179. function rightTurn()
  180. turtle.turnRight()
  181. detectAndDig()
  182. turtle.forward()
  183. turtle.turnRight()
  184. detectAndDig()
  185. end
  186.  
  187.  
  188. function leftTurn()
  189. turtle.turnLeft()
  190. detectAndDig()
  191. turtle.forward()
  192. turtle.turnLeft()
  193. detectAndDig()
  194. end
  195.  
  196. function flipDirection()
  197. if(d == "north") then
  198. d = "south"
  199. elseif(d == "south") then
  200. d = "north"
  201. elseif(d == "west") then
  202. d = "east"
  203. elseif(d == "east") then
  204. d = "west"
  205. end
  206.  
  207. end
  208.  
  209. function turnAround(tier)
  210. if(tier % 2 == 1) then
  211. if(d == "north" or d == "east") then
  212. rightTurn()
  213. elseif(d == "south" or d == "west") then
  214. leftTurn()
  215. end
  216. else
  217. if(d == "north" or d == "east") then
  218. leftTurn()
  219. elseif(d == "south" or d == "west") then
  220. rightTurn()
  221. end
  222. end
  223. flipDirection()
  224. end
  225.  
  226. function start()
  227. for tier = 1, height, 1 do
  228. for col = 1, width, 1 do
  229. for row = 1, depth - 1, 1 do
  230. if(not checkFuel()) then
  231. print("Turtle is out of fuel, Powering Down...")
  232. return
  233. end
  234. forward()
  235. print(string.format("Row: %d Col: %d", row, col))
  236. end
  237. if(col ~= width) then
  238. turnAround(tier)
  239. end
  240. manageInventory()
  241. end
  242.  
  243. end
  244.  
  245. end
  246.  
  247.  
  248. start()
  249.  
Add Comment
Please, Sign In to add comment