Advertisement
nadkarnik

AUTO_MINE_KN

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