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