Advertisement
nadkarnik

AUTO_MINE_KN

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