Wiiplay123

Automation Miner v1.2

Jan 1st, 2018
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.76 KB | None | 0 0
  1. -- Automation Miner v1.2
  2.  
  3. local minFuel = 200
  4.  
  5. function beginning()
  6.     if peripheral.isPresent("bottom") then
  7.         turtle.suckDown()
  8.         turtle.digDown()
  9.         turtle.select(3)
  10.         turtle.drop()
  11.         turtle.select(2)
  12.         turtle.drop()
  13.         turtle.turnLeft()
  14.         turtle.turnLeft()
  15.         turtle.select(1)
  16.     end
  17. end
  18. beginning()
  19.  
  20. function forward()
  21.     checkFuel()
  22.     return turtle.forward()
  23. end
  24.  
  25. function back()
  26.     checkFuel()
  27.     return turtle.back()
  28. end
  29.  
  30. function up()
  31.     checkFuel()
  32.     return turtle.up()
  33. end
  34.  
  35. function down()
  36.     checkFuel()
  37.     return turtle.down()
  38. end
  39.  
  40. function returnToChest(mines,height,start)
  41.     if turtle.getItemCount(16) > 0 then
  42.         for i = 1, height do
  43.             if not up() then
  44.                 repeat
  45.                     turtle.digUp()
  46.                 until up()
  47.             end
  48.         end
  49.         turtle.turnLeft()
  50.         turtle.turnLeft()
  51.         for i = 1, mines * 4  do
  52.             repeat
  53.                 if turtle.detect() then
  54.                     turtle.dig()
  55.                 end
  56.             until forward()
  57.         end
  58.         for i = start, 16 do
  59.             turtle.select(i)
  60.             repeat until ({turtle.drop()})[2] == "No items to drop"
  61.         end
  62.         turtle.turnLeft()
  63.         turtle.turnLeft()
  64.         for i = 1, mines * 4  do
  65.             repeat
  66.                 if turtle.detect() then
  67.                     turtle.dig()
  68.                 end
  69.             until forward()
  70.         end
  71.         for i = 1, height do
  72.             repeat
  73.                 if turtle.detectDown() then
  74.                     turtle.digDown()
  75.                 end
  76.             until down()
  77.         end
  78.         turtle.select(1)
  79.     end
  80. end
  81. function checkFuel()
  82.     if turtle.getFuelLevel() < minFuel and turtle.getFuelLevel() ~= "unlimited"  then
  83.         for p = 1, 16 do
  84.             turtle.select(p)
  85.             repeat
  86.             until turtle.getFuelLevel() >= minFuel or not turtle.refuel(64)
  87.             if turtle.getFuelLevel() >= minFuel then
  88.                 break
  89.             end
  90.             if p == 16 then
  91.                 print("Failed to refuel.")
  92.             end
  93.         end
  94.         turtle.select(1)
  95.     end
  96. end
  97. function verticalMine(mines)
  98.     -- Move back two to get to original position
  99.     -- Move forward four to get to next position
  100.     local i = 0
  101.     while true do
  102.         repeat
  103.             returnToChest(mines,i,1)
  104.         until not turtle.dig()
  105.         if not down() then
  106.             returnToChest(mines,i,1)
  107.             if turtle.digDown() then
  108.                 if down() then
  109.                     i = i + 1
  110.                 else
  111.                     break
  112.                 end
  113.             else
  114.                 break
  115.             end
  116.         else
  117.             i = i + 1
  118.         end
  119.     end
  120.     -- Mining is done at this point
  121.     for o = 1, 2 do
  122.         repeat
  123.             turtle.dig()
  124.             if forward() then
  125.                 break
  126.             end
  127.             if not up() then
  128.                 repeat
  129.                     turtle.digUp()
  130.                 until up()
  131.             end
  132.             i = i - 1
  133.         until forward()
  134.     end
  135.     local r = i + 0
  136.     for o = 1, r do
  137.         if turtle.getItemCount(16) > 0 then
  138.             if not back() then
  139.             turtle.turnLeft()
  140.             turtle.turnLeft()
  141.             for p = 1, 2 do
  142.                 if not forward() then
  143.                     repeat
  144.                         turtle.dig()
  145.                     until forward()
  146.                 end
  147.             end
  148.             turtle.turnLeft()
  149.             turtle.turnLeft()
  150.             else
  151.                 if not back() then
  152.                     turtle.turnLeft()
  153.                     turtle.turnLeft()
  154.                     if not forward() then
  155.                         repeat
  156.                             turtle.dig()
  157.                         until forward()
  158.                     end
  159.                     turtle.turnLeft()
  160.                     turtle.turnLeft()
  161.                 end
  162.             end
  163.             returnToChest(mines,(r + 1) - o,1)
  164.             for p = 1, 2 do
  165.                 if not forward() then
  166.                     repeat
  167.                         turtle.dig()
  168.                     until forward()
  169.                 end
  170.             end
  171.         end
  172.         turtle.dig()
  173.         if not up() then
  174.             repeat
  175.                 turtle.digUp()
  176.             until up()
  177.         end
  178.     end
  179. end
  180. local mines = ((#{...} > 0) and tonumber(({...})[1]) or 0)
  181. while true do
  182.     for i = 1, mines * 4 do
  183.         repeat
  184.             if turtle.detect() then
  185.                 turtle.dig()
  186.             end
  187.         until forward()
  188.     end
  189.     print("Starting vertical miner")
  190.     verticalMine(mines)
  191.     print("Ending vertical miner")
  192.     turtle.turnLeft()
  193.     turtle.turnLeft()
  194.     for i = 1, ((mines + 1) * 4) - 2 do
  195.         if not forward() then
  196.             repeat
  197.                 turtle.dig()
  198.             until forward()
  199.         end
  200.     end
  201.     for i = 1, 16 do
  202.         turtle.select(i)
  203.         repeat until ({turtle.drop()})[2] == "No items to drop"
  204.     end
  205.     turtle.select(1)
  206.     turtle.turnLeft()
  207.     turtle.turnLeft()
  208.     mines = mines + 1
  209. end
Advertisement
Add Comment
Please, Sign In to add comment