Advertisement
jig487

quarryMiner

Mar 15th, 2024 (edited)
502
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.58 KB | None | 0 0
  1. --#########################################################
  2. --declare and instantiate variables
  3.  
  4. local mineForward
  5.  
  6. local turn1
  7. local turn2
  8.  
  9. local function mineLayer(length,width)
  10.     for x = 1, length do
  11.         mineForward(width)
  12.         if x < length then
  13.             if x%2 == 0 then
  14.                 turn2()
  15.                 mineForward(1)
  16.                 turn2()
  17.             else
  18.                 turn1()
  19.                 mineForward(1)
  20.                 turn1()
  21.             end
  22.         end
  23.     end
  24. end
  25.  
  26.  
  27. local function run(length,width,depth)
  28.  
  29.     --##########################################################
  30.     --setup variables
  31.     --local length = tonumber(tArgs[1])
  32.     --local width  = tonumber(tArgs[2])
  33.     --local depth  = tonumber(tArgs[3])
  34.  
  35.     local dir = "right"
  36.  
  37.     local threeDeepLayers = math.floor(depth/3)
  38.     local remainder = depth%3
  39.     local twoDeepLayers = math.floor(remainder/2)
  40.     local oneDeepLayers = remainder%2
  41.     remainder = nil
  42.  
  43.     turn1 = turtle.turnRight
  44.     turn2 = turtle.turnLeft
  45.  
  46.     --##########################################################
  47.     --main program
  48.     term.clear()
  49.     term.setCursorPos(1,1)
  50.     print("depth:",depth)
  51.     print("oneDeepLayers:",oneDeepLayers)
  52.     print("twoDeepLayers:",twoDeepLayers)
  53.     print("threeDeepLayers:",threeDeepLayers)
  54.     print()
  55.  
  56.     --do 1 deep layers:
  57.     mineForward = function(blocks)
  58.         blocks = blocks or 1
  59.         for i = 1, blocks do
  60.             while not turtle.forward() do
  61.                 turtle.dig()
  62.             end
  63.         end
  64.     end
  65.  
  66.     print("Starting 1 deep layers:")
  67.     for i = 1, oneDeepLayers do
  68.         print("digLayer(forward)")
  69.         mineLayer(length,width-1)
  70.  
  71.         if i == oneDeepLayers then
  72.             if twoDeepLayers > 0 then
  73.                 --prep location for 2 deep layer mining
  74.                 print("goDown(1)")
  75.                 turn1()
  76.                 turn1()
  77.                 turtle.digDown()
  78.                 turtle.down()
  79.             elseif threeDeepLayers > 0 then
  80.                 --prep location for 3 deep layer mining
  81.                 print("goDown(2)")
  82.                 turn1()
  83.                 turn1()
  84.                 turtle.digDown()
  85.                 turtle.down()
  86.                 turtle.digDown()
  87.                 turtle.down()
  88.             end
  89.         else
  90.             print("goDown(1)")
  91.             turn1()
  92.             turn1()
  93.             turtle.digDown()
  94.             turtle.down()
  95.  
  96.         end
  97.         if length%2 == 0 then
  98.             if dir == "right" then
  99.                 dir = "left"
  100.                 turn1 = turtle.turnLeft
  101.                 turn2 = turtle.turnRight
  102.             else
  103.                 dir = "right"
  104.                 turn1 = turtle.turnRight
  105.                 turn2 = turtle.turnLeft
  106.             end
  107.         end
  108.     end
  109.     print("Done with 1 deep layers")
  110.  
  111.     --do 2 deep layers:
  112.     mineForward = function(blocks)
  113.         blocks = blocks or 1
  114.         for i = 1, blocks do
  115.             turtle.digDown()
  116.             while not turtle.forward() do
  117.                 turtle.dig()
  118.             end
  119.         end
  120.         turtle.digDown()
  121.     end
  122.  
  123.     print("Starting 2 deep layers")
  124.     for i = 1, twoDeepLayers do
  125.         print("digLayer(forward,down)")
  126.         mineLayer(length,width-1)
  127.  
  128.         if i == twoDeepLayers then
  129.             if threeDeepLayers > 0 then
  130.                 --prep location for 3 deep layer mining
  131.                 print("goDown(3)")
  132.                 turn1()
  133.                 turn1()
  134.                 turtle.digDown()
  135.                 turtle.down()
  136.                 turtle.digDown()
  137.                 turtle.down()
  138.                 turtle.digDown()
  139.                 turtle.down()
  140.             end
  141.         else
  142.             print("goDown(2)")
  143.             turn1()
  144.             turn1()
  145.             turtle.digDown()
  146.             turtle.down()
  147.             turtle.digDown()
  148.             turtle.down()
  149.         end
  150.  
  151.         if length%2 == 0 then
  152.             if dir == "right" then
  153.                 dir = "left"
  154.                 turn1 = turtle.turnLeft
  155.                 turn2 = turtle.turnRight
  156.             else
  157.                 dir = "right"
  158.                 turn1 = turtle.turnRight
  159.                 turn2 = turtle.turnLeft
  160.             end
  161.         end
  162.     end
  163.     print("Done with 2 deep layers")
  164.  
  165.     --do 3 deep layers:
  166.     mineForward = function(blocks)
  167.         blocks = blocks or 1
  168.         for i = 1, blocks do
  169.             turtle.digUp()
  170.             turtle.digDown()
  171.             while not turtle.forward() do
  172.                 turtle.dig()
  173.             end
  174.         end
  175.         turtle.digUp()
  176.         turtle.digDown()
  177.     end
  178.  
  179.     for i = 1, threeDeepLayers do
  180.         --prep location in case prep hasn't happened yet
  181.         if i == 1 and oneDeepLayers == 0 and twoDeepLayers == 0 then
  182.             turtle.digDown()
  183.             turtle.down()
  184.         end
  185.         print("digLayer(up,forward,down)")
  186.         mineLayer(length,width-1)
  187.  
  188.         if i < threeDeepLayers then
  189.             print("goDown(3)")
  190.             turn1()
  191.             turn1()
  192.             turtle.digDown()
  193.             turtle.down()
  194.             turtle.digDown()
  195.             turtle.down()
  196.             turtle.digDown()
  197.             turtle.down()
  198.         end
  199.  
  200.         if length%2 == 0 then
  201.             if dir == "right" then
  202.                 dir = "left"
  203.                 turn1 = turtle.turnLeft
  204.                 turn2 = turtle.turnRight
  205.             else
  206.                 dir = "right"
  207.                 turn1 = turtle.turnRight
  208.                 turn2 = turtle.turnLeft
  209.             end
  210.         end
  211.     end
  212.  
  213.     print("Finished quarrying!")
  214.     print("Press 'enter' to return to menu")
  215.     read()
  216. end
  217.  
  218. return {
  219.     run = run
  220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement