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