Advertisement
nadkarnik

AUTO_MINE_KN

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