Advertisement
nadkarnik

AUTO_MINE_KN

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