Advertisement
amsarge

Untitled

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