Advertisement
megagemer

Untitled

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