Advertisement
nadkarnik

AUTO_MINE_KN

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