nick_fisch

Mining Turtle Quarry Program

Jul 30th, 2021 (edited)
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.82 KB | None | 0 0
  1. -- Mining Turtle Quarry Program Version 1.0
  2.  
  3. local distance = 0
  4.  
  5. -- Get quarry size
  6. print ("Height (downwards):")
  7. local height = tonumber(read())
  8. print ("")
  9. print ("Width (to the left):")
  10. local width = tonumber(read())
  11. print ("")
  12. print ("Length (straight ahead):")
  13. local length = tonumber(read())
  14. length = length - 1
  15. print ("")
  16.  
  17. function emptyInventory()
  18.     print("Emptying inventory...")
  19.     for i=1,16 do
  20.         turtle.select(i)
  21.         turtle.drop()
  22.     end
  23.     turtle.select(1)
  24.     print("Finished emptying inventory.")
  25. end
  26.  
  27. function refuel()
  28.     print("Refueling...")
  29.     turtle.select(1)
  30.     while true do
  31.         if turtle.suck() == false then
  32.             turtle.dropUp()
  33.             break
  34.         end
  35.         turtle.refuel()
  36.         turtle.dropUp()
  37.     end
  38.     print("Finished refueling.")
  39.     emptyInventory()
  40. end
  41.  
  42. function resupply(h)
  43.     -- return home
  44.     print("Returning home for resupply...")
  45.     for i=1,h do
  46.         turtle.up()
  47.     end
  48.     -- empty Inventory
  49.     turtle.turnRight()
  50.     turtle.turnRight()
  51.     emptyInventory()
  52.     -- refuel
  53.     turtle.turnRight()
  54.     refuel()
  55.     -- get back
  56.     turtle.turnRight()
  57.     for i=1,h do
  58.         turtle.down()
  59.     end
  60.     print("Finished resupply.")
  61. end
  62.  
  63. -- loop
  64. for h=1,height do
  65.     -- move to layer
  66.     turtle.digDown()
  67.     turtle.down()
  68.     distance = distance + 1
  69.     for w=1,width do
  70.         -- dig line
  71.         for l=1,length do
  72.             turtle.dig()
  73.             if l<length then
  74.                 if turtle.forward() == false then
  75.                     repeat
  76.                     turtle.dig()
  77.                     sleep(0.25)  -- small sleep to allow for gravel/sand to fall.
  78.                     until turtle.forward() == true
  79.                 end
  80.                 distance = distance + 1
  81.             end
  82.             if l==length then
  83.                 if turtle.detect() == true then
  84.                     repeat
  85.                     turtle.dig()
  86.                     sleep(0.25)  -- small sleep to allow for gravel/sand to fall.
  87.                     until turtle.detect() == false
  88.                 end
  89.             end
  90.         end
  91.         -- move backwards
  92.         for i=2,length do
  93.             turtle.back()
  94.             distance = distance - 1
  95.         end
  96.         -- move to next line
  97.         if w<width then
  98.             turtle.turnLeft()
  99.             turtle.dig()
  100.             if turtle.forward() == false then
  101.                 repeat
  102.                 turtle.dig()
  103.                 sleep(0.25)  -- small sleep to allow for gravel/sand to fall.
  104.                 until turtle.forward() == true
  105.             end
  106.             distance = distance + 1
  107.             turtle.turnRight()    
  108.         end
  109.         -- dump unwanted items
  110.         print("Dumping unwanted items...")
  111.         for i=1,16 do
  112.             local data = turtle.getItemDetail(i)
  113.             if data then
  114.                 if data.name == "minecraft:cobblestone" then
  115.                     turtle.select(i)
  116.                     turtle.drop()
  117.                 end
  118.                 if data.name == "minecraft:dirt" then
  119.                     turtle.select(i)
  120.                     turtle.drop()
  121.                 end
  122.                 if data.name == "minecraft:diorite" then
  123.                     turtle.select(i)
  124.                     turtle.drop()
  125.                 end
  126.                 if data.name == "minecraft:granite" then
  127.                     turtle.select(i)
  128.                     turtle.drop()
  129.                 end
  130.                 if data.name == "minecraft:andesite" then
  131.                     turtle.select(i)
  132.                     turtle.drop()
  133.                 end
  134.                 if data.name == "minecraft:gravel" then
  135.                     turtle.select(i)
  136.                     turtle.drop()
  137.                 end
  138.                 if data.name == "byg:scoria_cobblestone" then
  139.                     turtle.select(i)
  140.                     turtle.drop()
  141.                 end
  142.                 if data.name == "blockus:limestone" then
  143.                     turtle.select(i)
  144.                     turtle.drop()
  145.                 end
  146.                 if data.name == "croptosis:potash" then
  147.                     turtle.select(i)
  148.                     turtle.drop()
  149.                 end
  150.                 if data.name == "mysticalagriculture:inferium_essence" then
  151.                     turtle.select(i)
  152.                     turtle.drop()
  153.                 end
  154.                 if data.name == "minecraft:flint" then
  155.                     turtle.select(i)
  156.                     turtle.drop()
  157.                 end
  158.                 if data.name == "promenade:blunite" then
  159.                     turtle.select(i)
  160.                     turtle.drop()
  161.                 end
  162.                 if data.name == "minecraft:cobbled_deepslate" then
  163.                     turtle.select(i)
  164.                     turtle.drop()
  165.                 end
  166.                 if data.name == "minecraft:tuff" then
  167.                     turtle.select(i)
  168.                     turtle.drop()
  169.                 end
  170.             end
  171.         end
  172.         print("Finished dumping unwanted items.")
  173.         turtle.select(1)
  174.         -- check for refuel items
  175.         print("Checking for refuel items...")
  176.         for i=1,16 do
  177.             turtle.select(i)
  178.             if turtle.refuel(0) == true then
  179.                 print("Found refuel item.")
  180.                 turtle.refuel()
  181.             end
  182.         end
  183.         turtle.select(1)
  184.         print("Finished checking for refuel items.")
  185.     end
  186.     -- move to the right
  187.     turtle.turnRight()
  188.     for i=2,width do
  189.         if turtle.forward() == false then
  190.             repeat
  191.             turtle.dig()
  192.             sleep(0.25)  -- small sleep to allow for gravel/sand to fall.
  193.             until turtle.forward() == true
  194.         end
  195.         distance = distance - 1
  196.     end
  197.     turtle.turnLeft()
  198.     -- check fuel
  199.     local fuelForNextLayer = h + width * length + 10
  200.     local currentFuelLevel = turtle.getFuelLevel()
  201.     print("Remaining fuel: " .. currentFuelLevel)
  202.     if currentFuelLevel < fuelForNextLayer then
  203.         resupply(h)
  204.     end
  205.     -- check inventory space
  206.     print("Checking inventory space...")
  207.     local freeSlots = 0
  208.     local inventorySpace = 1024
  209.     for i=1,16 do
  210.         turtle.select(i)
  211.         inventorySpace = inventorySpace - turtle.getItemCount()
  212.         if turtle.getItemCount() == 0 then
  213.             freeSlots = freeSlots + 1
  214.         end
  215.     end
  216.     print("Free slots: " .. freeSlots)
  217.     print("Inventory space: " .. inventorySpace)
  218.     turtle.select(1)
  219.     if freeSlots < 5 then
  220.         resupply(h)
  221.     end
  222.     if inventorySpace < 5 * 64 then
  223.         resupply(h)
  224.     end
  225. end
  226. -- move back to top
  227. for i=1,height do
  228.     turtle.up()
  229.     distance = distance - 1
  230. end
  231. turtle.turnRight()
  232. turtle.turnRight()
  233. emptyInventory()
  234. turtle.turnRight()
  235. turtle.turnRight()
  236. print("Finished digging.")
Add Comment
Please, Sign In to add comment