Advertisement
SirMongoose

xdig

Jan 13th, 2014
2,871
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 11.98 KB | None | 1 0
  1. local mode = 1
  2. torchP = 0
  3. chestR = 0
  4. chestMode = 0
  5. backT = 0
  6. bTrack = 0
  7. fFuel = turtle.getFuelLevel()
  8.  
  9. function detectUp()
  10. while turtle.detectUp() == true do
  11.   turtle.digUp()
  12.   os.sleep(0.4)
  13.  
  14.   blocks = blocks + 1
  15.   end
  16. end
  17.  
  18. function detect()
  19. while turtle.detect() == true do
  20.   turtle.dig()
  21.   os.sleep(0.4)
  22.  
  23.   blocks = blocks + 1
  24.   end
  25. end
  26.  
  27. function yFourLoop()
  28. blocks = 0
  29.  
  30.   while layers ~= 0 do
  31.     bMined = turtle.getItemCount(3) + turtle.getItemCount(4) + turtle.getItemCount(5) + turtle.getItemCount(6) + turtle.getItemCount(7) + turtle.getItemCount(8) + turtle.getItemCount(9) + turtle.getItemCount(10) + turtle.getItemCount(11) + turtle.getItemCount(12) + turtle.getItemCount(13) + turtle.getItemCount(14) + turtle.getItemCount(15) + turtle.getItemCount(16)
  32.     fFuel = turtle.getFuelLevel()
  33.     term.clear()
  34.     term.setCursorPos(1,1)
  35.     term.write("MINING IN PROGRESS...")
  36.     print("")
  37.     print("Fuel Left: "..fFuel)
  38.     print("Blocks Mined: "..blocks)
  39.     print("Total Items: "..bMined)
  40.     print("Layers left: "..layers)
  41.  
  42.   if fFuel <= 20 then
  43.     turtle.select(1)
  44.     turtle.refuel(1)
  45.   end
  46.  
  47.   if cMode == 1 then
  48.     returnChestY()
  49.   end
  50.  
  51.   turtle.digDown()
  52.   turtle.down()
  53.   detect()
  54.   turtle.forward()
  55.   detect()
  56.   turtle.forward()
  57.   detect()
  58.   turtle.forward()
  59.  
  60.   turtle.turnRight()
  61.   detect()
  62.   turtle.forward()
  63.   turtle.turnRight()
  64.  
  65.   detect()
  66.   turtle.forward()
  67.   detect()
  68.   turtle.forward()
  69.   detect()
  70.   turtle.forward()
  71.  
  72.   turtle.turnLeft()
  73.   detect()
  74.   turtle.forward()
  75.   turtle.turnLeft()
  76.  
  77.   detect()
  78.   turtle.forward()
  79.   detect()
  80.   turtle.forward()
  81.   detect()
  82.   turtle.forward()
  83.  
  84.   turtle.turnRight()
  85.   detect()
  86.   turtle.forward()
  87.   turtle.turnRight()
  88.  
  89.   detect()
  90.   turtle.forward()
  91.   detect()
  92.   turtle.forward()
  93.   detect()
  94.  
  95.   turtle.turnRight()
  96.   turtle.forward()
  97.  
  98.   if torchP == 10 then
  99.     turtle.turnLeft()
  100.     turtle.select(2)
  101.     turtle.place()
  102.     turtle.turnRight()
  103.  
  104.     torchP = 0
  105.   end
  106.  
  107.   turtle.forward()
  108.   turtle.turnLeft()
  109.   turtle.select(4)
  110.   turtle.place()
  111.   turtle.select(3)
  112.   turtle.turnRight()
  113.   turtle.forward()
  114.   turtle.turnLeft()
  115.   turtle.forward()
  116.   turtle.turnRight()
  117.   turtle.turnRight()
  118.  
  119.   layers = layers - 1
  120.   torchP = torchP + 1
  121.   backT = backT + 1
  122.  
  123.    end
  124. end
  125.  
  126. function returnChestY()
  127.   if turtle.getItemCount(3) and turtle.getItemCount(4) and turtle.getItemCount(5) and turtle.getItemCount(6) and turtle.getItemCount(7) and turtle.getItemCount(8) and turtle.getItemCount(9) and turtle.getItemCount(10) and turtle.getItemCount(11) and turtle.getItemCount(12) and turtle.getItemCount(13) and turtle.getItemCount(14) and turtle.getItemCount(15) and turtle.getItemCount(16) >= 1 then
  128.  
  129.     if fFuel <= backT * 2 then
  130.       turtle.select(1)
  131.       turtle.refuel(10)
  132.     end
  133.    
  134.   bTrack = backT
  135.  
  136.   while bTrack ~= 0 do
  137.     bTrack = bTrack - 1
  138.     turtle.up()
  139.   end
  140.  
  141.   turtle.turnLeft()
  142.  
  143.   turtle.select(3)
  144.   turtle.drop(64)
  145.  
  146.   for i = 5, 16 do
  147.     turtle.select(i)
  148.     turtle.drop(64)          
  149.   end
  150.  
  151.   turtle.select(3)
  152.  
  153.   turtle.turnRight()
  154.   bTrack = backT
  155.  
  156.   while bTrack ~= 0 do
  157.     bTrack = bTrack - 1
  158.     turtle.down()
  159.   end    
  160.    
  161.    end
  162. end
  163.  
  164. function returnChest()
  165.   if turtle.getItemCount(3) and turtle.getItemCount(4) and turtle.getItemCount(5) and turtle.getItemCount(6) and turtle.getItemCount(7) and turtle.getItemCount(8) and turtle.getItemCount(9) and turtle.getItemCount(10) and turtle.getItemCount(11) and turtle.getItemCount(12) and turtle.getItemCount(13) and turtle.getItemCount(14) and turtle.getItemCount(15) and turtle.getItemCount(16) >= 1 then
  166.  
  167.     if fFuel <= backT * 2 then
  168.       turtle.select(1)
  169.       turtle.refuel(10)
  170.     end
  171.    
  172.     turtle.select(3)
  173.    
  174.     bTrack = backT
  175.     turtle.turnLeft()
  176.     turtle.turnLeft()
  177.     turtle.up()
  178.  
  179.       while bTrack ~= 0 do
  180.         bTrack = bTrack - 1
  181.         turtle.forward()
  182.       end
  183.  
  184.     turtle.turnRight()
  185.     turtle.down()
  186.  
  187.     for i = 3, 16 do
  188.       turtle.select(i)
  189.       turtle.drop(64)
  190.     end
  191.  
  192.       turtle.select(3)
  193.     turtle.turnRight()
  194.     turtle.up()
  195.  
  196.       while bTrack ~= backT do
  197.         bTrack = bTrack + 1
  198.         turtle.forward()
  199.       end
  200.     turtle.down()
  201.   end
  202. end
  203.  
  204. function cMode()
  205.   chestIn = io.read()
  206.  
  207.   if chestIn == "y" then
  208.     cMode = 1
  209.     step2()
  210.  
  211.   elseif chestIn == "n" then
  212.     cMode = 0
  213.     step2()
  214.  
  215.   else
  216.   stepChest()
  217.  
  218.   end
  219. end
  220.  
  221. function stepChest()
  222.   term.clear()
  223.   term.setCursorPos(1,1)
  224.   term.write("( y/n - if yes then put a double chest")
  225.   print("")
  226.   print("to the left of the turtle's start pos.)")
  227.   print("")
  228.   print("DO YOU WANT TURTLE TO RETURN TO CHEST WHEN FULL?")
  229.  
  230.   cMode()
  231. end
  232.  
  233. function step1()
  234.   term.clear()
  235.   term.setCursorPos(1,1)
  236.   term.write("(Type 1x2, 2x2, 3x3, y4x4, and exit)")
  237.   print("")
  238.   print("SELECT MODE:")
  239.  
  240.   mode()
  241.  
  242. end
  243.  
  244.  
  245. function mode()
  246.   modein = io.read()
  247.  
  248.   if modein == "exit" then
  249.   os.reboot()
  250.  
  251.   elseif modein == "1x2" then
  252.   mode = 2
  253.   stepChest()
  254.  
  255.   elseif modein == "2x2" then
  256.   mode = 4
  257.   stepChest()
  258.  
  259.   elseif modein == "3x3" then
  260.   mode = 9
  261.   stepChest()
  262.  
  263.   elseif modein == "y4x4" then
  264.   mode = 16
  265.   stepChest()
  266.  
  267.   else
  268.   step1()
  269.  
  270.   end
  271. end
  272.  
  273. function step2()
  274.   term.clear()
  275.   term.setCursorPos(1,1)
  276.   term.write("Turtle should be in the correct pos.")
  277.   print("")
  278.   print("@ = turtle, X = block")
  279.   print("")
  280.   print("X   XX   XXX  XXXX")
  281.   print("@   @X   XXX  XXXX")
  282.   print("         X@X  @XXX")
  283.   print("")
  284.   print("(Only numbers please 1+)")
  285.   print("")
  286.   print("MINE HOW MANY LAYERS:")
  287.   layers = io.read()
  288.  
  289.   step3()
  290.  
  291. end
  292.  
  293. function step3()
  294.  
  295. torch = tonumber(layers) / 11
  296. totalB = tonumber(layers) * mode
  297. fuelLevel = turtle.getFuelLevel()
  298.  
  299.   term.clear()
  300.   term.setCursorPos(1,1)
  301.   term.write("Torches needed: "..torch)
  302.   print("")
  303.   print("Current fuel: "..fuelLevel)
  304.   print("ChestReturn: "..cMode)
  305.   print("Expected blocks to be mined: "..totalB)
  306.   if totalB > 896 then
  307.     print("!Warn. blocks mined > turtle inv. space!")
  308.   end
  309.   print("Layers: "..layers)
  310.   print("mode: "..mode)
  311.   print("")
  312.   print("Make sure coal is in the first slot, torches in the second, and ladders in the fourth!")
  313.   print("")
  314.   print("TYPE ANYTHING TO START MINING:")
  315.  
  316. anyth = io.read()
  317.  
  318. step4()
  319. end
  320.  
  321. function step4()
  322.   if mode == 2 then
  323.   oneLoop()
  324.  
  325.   elseif mode == 4 then
  326.   twoLoop()
  327.  
  328.   elseif mode == 9 then
  329.   threeLoop()
  330.  
  331.   elseif mode == 16 then
  332.   yFourLoop()
  333.  
  334.   else
  335.  
  336.   end
  337. end
  338.  
  339. function oneLoop()
  340. blocks = 0
  341.  
  342.   while layers ~= 0 do
  343.     bMined = turtle.getItemCount(3) + turtle.getItemCount(4) + turtle.getItemCount(5) + turtle.getItemCount(6) + turtle.getItemCount(7) + turtle.getItemCount(8) + turtle.getItemCount(9) + turtle.getItemCount(10) + turtle.getItemCount(11) + turtle.getItemCount(12) + turtle.getItemCount(13) + turtle.getItemCount(14) + turtle.getItemCount(15) + turtle.getItemCount(16)
  344.     fFuel = turtle.getFuelLevel()
  345.     term.clear()
  346.     term.setCursorPos(1,1)
  347.     term.write("MINING IN PROGRESS...")
  348.     print("")
  349.     print("Fuel Left: "..fFuel)
  350.     print("Blocks Mined: "..blocks)
  351.     print("Total Items: "..bMined)
  352.     print("Layers left: "..layers)
  353.  
  354.   if fFuel <= 1 then
  355.     turtle.select(1)
  356.     turtle.refuel(1)
  357.   end
  358.  
  359.   if cMode == 1 then
  360.     returnChest()
  361.   end
  362.  
  363.  
  364.     while turtle.detect() == true do
  365.       turtle.dig()
  366.       blocks = blocks + 1
  367.       os.sleep(0.4)
  368.     end
  369.  
  370.   turtle.forward()
  371.  
  372.     while turtle.detectUp() == true do
  373.       turtle.digUp()
  374.       blocks = blocks + 1
  375.       sleep(0.4)
  376.     end
  377.  
  378.   if turtle.detectDown() == false then
  379.     turtle.select(3)
  380.     turtle.placeDown()
  381.   end
  382.  
  383.   if torchP == 10 then
  384.     turtle.turnLeft()
  385.     turtle.turnLeft()
  386.     turtle.select(2)
  387.     turtle.place()
  388.     turtle.turnLeft()
  389.     turtle.turnLeft()
  390.     torchP = 0
  391.   end
  392.  
  393.   layers = layers - 1
  394.   torchP = torchP + 1
  395.   backT = backT + 1
  396.  
  397.   end
  398. end
  399.  
  400. function twoLoop()
  401. blocks = 0
  402.  
  403.   while layers ~= 0 do
  404.     bMined = turtle.getItemCount(3) + turtle.getItemCount(4) + turtle.getItemCount(5) + turtle.getItemCount(6) + turtle.getItemCount(7) + turtle.getItemCount(8) + turtle.getItemCount(9) + turtle.getItemCount(10) + turtle.getItemCount(11) + turtle.getItemCount(12) + turtle.getItemCount(13) + turtle.getItemCount(14) + turtle.getItemCount(15) + turtle.getItemCount(16)
  405.     fFuel = turtle.getFuelLevel()
  406.     term.clear()
  407.     term.setCursorPos(1,1)
  408.     term.write("MINING IN PROGRESS...")
  409.     print("")
  410.     print("Fuel Left: "..fFuel)
  411.     print("Blocks Mined: "..blocks)
  412.     print("Total Items: "..bMined)
  413.     print("Layers left: "..layers)
  414.  
  415.   if fFuel <= 3 then
  416.     turtle.select(1)
  417.     turtle.refuel(1)
  418.   end
  419.  
  420.   if cMode == 1 then
  421.     returnChest()
  422.   end
  423.  
  424.   while turtle.detect() == true do
  425.     turtle.dig()
  426.     blocks = blocks + 1
  427.     sleep(0.4)
  428.   end
  429.  
  430.   turtle.forward()
  431.  
  432.   while turtle.detectUp() == true do
  433.     turtle.digUp()
  434.     blocks = blocks + 1
  435.     os.sleep(0.4)
  436.   end
  437.  
  438.   turtle.up()
  439.   turtle.turnRight()
  440.  
  441.   while turtle.detect() == true do
  442.     turtle.dig()
  443.     blocks = blocks + 1
  444.     os.sleep(0.4)
  445.   end
  446.  
  447.   turtle.down()
  448.  
  449.   while turtle.detect() == true do
  450.     turtle.dig()
  451.     blocks = blocks + 1
  452.     os.sleep(0.4)
  453.   end
  454.  
  455.   turtle.turnLeft()
  456.  
  457.   if turtle.detectDown() == false then
  458.     turtle.select(3)
  459.     turtle.placeDown()
  460.   end
  461.  
  462.   if torchP == 10 then
  463.     turtle.turnLeft()
  464.     turtle.turnLeft()
  465.     turtle.select(2)
  466.     turtle.place()
  467.     turtle.turnLeft()
  468.     turtle.turnLeft()
  469.     torchP = 0
  470.   end
  471.  
  472.   layers = layers - 1
  473.   torchP = torchP + 1
  474.   backT = backT + 1
  475.  
  476.   end
  477. end
  478.  
  479. function threeLoop()
  480. blocks = 0
  481.  
  482.   while layers ~= 0 do
  483.     bMined = turtle.getItemCount(3) + turtle.getItemCount(4) + turtle.getItemCount(5) + turtle.getItemCount(6) + turtle.getItemCount(7) + turtle.getItemCount(8) + turtle.getItemCount(9) + turtle.getItemCount(10) + turtle.getItemCount(11) + turtle.getItemCount(12) + turtle.getItemCount(13) + turtle.getItemCount(14) + turtle.getItemCount(15) + turtle.getItemCount(16)
  484.     fFuel = turtle.getFuelLevel()
  485.     term.clear()
  486.     term.setCursorPos(1,1)
  487.     term.write("MINING IN PROGRESS...")
  488.     print("")
  489.     print("Fuel Left: "..fFuel)
  490.     print("Blocks Mined: "..blocks)
  491.     print("Total Items: "..bMined)
  492.     print("Layers left: "..layers)
  493.  
  494.   if fFuel <= 6 then
  495.     turtle.select(1)
  496.     turtle.refuel(1)
  497.   end
  498.  
  499.   if cMode == 1 then
  500.     returnChest()
  501.   end
  502.  
  503.   while turtle.detect() == true do
  504.     turtle.dig()
  505.     blocks = blocks + 1
  506.     os.sleep(0.4)
  507.   end
  508.  
  509.   turtle.forward()
  510.  
  511.   while turtle.detectUp() == true do
  512.     turtle.digUp()
  513.     blocks = blocks + 1
  514.     os.sleep(0.4)
  515.   end
  516.  
  517.   turtle.up()
  518.  
  519.   while turtle.detectUp() == true do
  520.     turtle.digUp()
  521.     blocks = blocks + 1
  522.     os.sleep(0.4)
  523.   end
  524.  
  525.   turtle.up()
  526.   turtle.turnRight()
  527.  
  528.   while turtle.detect() == true do
  529.     turtle.dig()
  530.     blocks = blocks + 1
  531.     os.sleep(0.4)
  532.   end
  533.  
  534.   turtle.turnLeft()
  535.   turtle.turnLeft()
  536.  
  537.   while turtle.detect() == true do
  538.     turtle.dig()
  539.     blocks = blocks + 1
  540.     os.sleep(0.4)
  541.   end
  542.  
  543.   turtle.down()
  544.  
  545.   while turtle.detect() == true do
  546.     turtle.dig()
  547.     blocks = blocks + 1
  548.     os.sleep(0.4)
  549.   end
  550.  
  551.   turtle.turnRight()
  552.   turtle.turnRight()
  553.  
  554.   while turtle.detect() == true do
  555.     turtle.dig()
  556.     blocks = blocks + 1
  557.     os.sleep(0.4)
  558.   end
  559.  
  560.   turtle.down()
  561.  
  562.   while turtle.detect() == true do
  563.     turtle.dig()
  564.     blocks = blocks + 1
  565.     os.sleep(0.4)
  566.   end
  567.  
  568.   turtle.turnLeft()
  569.   turtle.turnLeft()
  570.  
  571.   while turtle.detect() == true do
  572.     turtle.dig()
  573.     blocks = blocks + 1
  574.     os.sleep(0.4)
  575.   end
  576.  
  577.   turtle.turnRight()
  578.  
  579.   if turtle.detectDown() == false then
  580.     turtle.select(3)
  581.     turtle.placeDown()
  582.   end
  583.  
  584.   if torchP == 10 then
  585.     turtle.turnLeft()
  586.     turtle.turnLeft()
  587.     turtle.select(2)
  588.     turtle.place()
  589.     turtle.turnLeft()
  590.     turtle.turnLeft()
  591.     torchP = 0
  592.   end
  593.  
  594.   layers = layers - 1
  595.   torchP = torchP + 1
  596.   backT = backT + 1
  597.  
  598.   end
  599. end
  600.  
  601. step1()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement