Advertisement
Guest User

Mining-turtle (Stripmining) V.1.7 Final (XenoEdit3)

a guest
Aug 1st, 2014
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     --This code is developed by me (onix331) and modified by Xenomurks and is availiable under the GNU General Public License (Version 3)
  2.     --See http://opensource.org/licenses/GPL-3.0
  3.     --Have fun
  4.      
  5.     shaftcount = 0--Used later in the program, usually not necessary do modify it
  6.     space = 15--Defines the space of the turtle
  7.     ver = 1.7--For updates
  8.     chest = 0--If the turtle has stopped at a chest
  9.     stop = 0--If the turtle has stopped at a chest
  10.     direction = r
  11.      
  12.     function checkl() --To check if length is valid (>0, not a String), also transforms the string into a number
  13.         length = tonumber(length)
  14.         if length==nil then
  15.             print ("Invalid number!")
  16.             length = read()
  17.             checkl()
  18.         elseif length <= 0 then
  19.             print ("Invalid number!")
  20.             length = read()
  21.             checkl()
  22.         end
  23.     end
  24.      
  25.     function checka()--To check if count is valid (>0, not a String), also transforms the string into a number
  26.         count = tonumber(count)
  27.         if count==nil then
  28.             print ("Invalid number!")
  29.             count = read()
  30.             checka()
  31.         elseif count <= 0 then
  32.             print ("Invalid number!")
  33.             count = read()
  34.             checka()
  35.         end
  36.     end
  37.      
  38.     function checkr()--To check if direction is valid ((r) or (l))
  39.         if direction=="r" then
  40.             print ("")
  41.         elseif direction=="l" then
  42.             print ("")
  43.         else
  44.             print ("Invalid input!")
  45.             direction = io.read()
  46.             checkr()
  47.         end
  48.     end
  49.      
  50.     function checkref()--To check if refuel is valid ((r) or (l))
  51.         if refuel=="y" then
  52.             print ("")
  53.         elseif refuel=="n" then
  54.             print ("")
  55.         else
  56.             print ("Invalid number!")
  57.             refuel = io.read()
  58.             checkref()
  59.         end
  60.     end
  61.    
  62.     function checktor()--To check if torch is valid ((y) or (n))
  63.         if torch=="y" then
  64.             print ("")
  65.         elseif torch=="n" then
  66.             print ("")
  67.         else
  68.             print ("Invalid number!")
  69.             torch = io.read()
  70.             checktor()
  71.         end
  72.     end
  73.      
  74.     function move()--Basic movement funktion
  75.         local debug = 8--Used to avoid gavel, sand, etc.
  76.         for i = 1, length do
  77.         if turtle.detect() then
  78.             for i = 1, debug do
  79.                 turtle.dig()
  80.             end
  81.             turtle.forward()
  82.         else
  83.             turtle.forward()
  84.         end
  85.         if turtle.detectUp() then
  86.             for i = 1, debug do
  87.                 turtle.digUp()
  88.             end
  89.         end
  90.         end
  91.     end
  92.      
  93.     function turnaround()--Turns the turtle at 90 degrees
  94.         turtle.turnRight()
  95.         turtle.turnRight()
  96.     end
  97.      
  98.     function nextshaft()--Next shaft (right)
  99.         turtle.turnLeft()
  100.         turtle.dig()
  101.         turtle.digUp()
  102.         turtle.forward()
  103.         turtle.dig()
  104.         turtle.digUp()
  105.         turtle.turnRight()
  106.         turtle.select(16)
  107.         turtle.placeUp()
  108.         turtle.turnLeft()
  109.         turtle.forward()
  110.         turtle.dig()
  111.         turtle.digUp()
  112.         turtle.forward()
  113.         turtle.digUp()
  114.         turtle.turnRight()
  115.     end
  116.          
  117.     function returnpoint()--Return to initial point
  118.         if direction=="r" then
  119.             turtle.turnRight()
  120.             if shaftcount>=2 then
  121.                 turtle.forward()
  122.             end
  123.             turtle.forward()
  124.             for i = 1, shaftcount do
  125.                 turtle.forward()
  126.                 turtle.forward()
  127.             end
  128.             if stop==1 then
  129.                 turtle.forward()
  130.             end
  131.             --turtle.turnLeft()
  132.             for i = 1, space do
  133.                 turtle.select(i)
  134.                 turtle.drop()
  135.             end
  136.             turtle.select(1)
  137.         end
  138.         turnaround()
  139.         if chest==1 then
  140.             returnmining()
  141.         end
  142.     end
  143.    
  144.     function returnmining()--Beta-feature
  145.         stop = 1
  146.         chest = 0
  147.         if direction=="r" then
  148.             turnaround()
  149.             for i = 1, shaftcount do
  150.                 turtle.forward()
  151.                 turtle.forward()
  152.                 turtle.forward()
  153.             end
  154.             turtle.turnRight()
  155.             for i = 1, count do
  156.                 move()
  157.                 turnaround()
  158.                 move()
  159.                 move()
  160.                 turnaround()
  161.                 move()
  162.                 nextshaft()
  163.                 shaftcount = shaftcount + 1
  164.                 count = count - 1
  165.                 checkspace()               
  166.             end
  167.         end
  168.     end
  169.      
  170.     function checkspace()--Check for space and if necessary, return to initial point to the chest
  171.         local spaceleft = 0
  172.         for i = 1, space do
  173.             if turtle.getItemSpace(i) > 10 then
  174.                 spaceleft = spaceleft + 1
  175.             end
  176.         end
  177.         if spaceleft < 5 then
  178.             chest = 1
  179.             count = count - 1
  180.             returnpoint()
  181.         end
  182.     end
  183.      
  184.     shell.run ("clear")
  185.     print ("Strip-mining-program by onix331")
  186.     print ("Version ", ver)
  187.      
  188.     --Start user input
  189.     print ("Length of the single shaft(s):")
  190.     length = read()
  191.     checkl()
  192.      
  193.     print ("Count of the shafts:")
  194.     count = read()
  195.     checka()
  196.      
  197.    
  198.     print ("Want to put some Torches on the Wall?")
  199.     print ("Now? (Yes (y), No (n):")
  200.     torch = read()
  201.     checktor()
  202.     if torch=="y" then
  203.         print ("Please Put some in Slot 16")
  204.         print ("When done, press ENTER")
  205.         local sEvent, param = os.pullEvent("key")
  206.         if sEvent == "key" then
  207.            
  208.         end
  209.     end
  210.    
  211.    
  212.     --Refueling, a little bit complicated
  213.     print ("Dont forget to refuel!")
  214.     print ("Now? (Yes (y), No (n):")
  215.     refuel = read()
  216.     checkref()
  217.     if refuel=="y" then
  218.         print ("Please insert fuel anywhere")
  219.         print ("When done, press ENTER")
  220.         while true do
  221.                 local sEvent, param = os.pullEvent("key")
  222.                 if sEvent == "key" then
  223.                         if param == 28 then
  224.                     for i = 1, space do
  225.                         for i = 1, 64 do
  226.                             shell.run("refuel", rafzahl)
  227.                         end
  228.                         turtle.select(i)
  229.                     end
  230.                     turtle.select(1)
  231.                     break
  232.                 end
  233.             end
  234.         end
  235.     end
  236.      
  237.     --Print user inputs
  238.     shell.run ("clear")
  239.     print ("Input of Length:")
  240.     print (length)
  241.     print ("Input of count")
  242.     print (count)
  243.     os.sleep(2)
  244.     print ("3")
  245.     os.sleep(1)
  246.     print ("2")
  247.     os.sleep(1)
  248.     print ("1")
  249.     os.sleep(1)
  250.     print("Start!")
  251.      
  252.     --Main Program
  253.      
  254.     if direction=="r" then
  255.         --turtle.turnRight()
  256.         for i = 1, count do
  257.             move()
  258.             turnaround()
  259.             move()
  260.             move()
  261.             turnaround()
  262.             move()
  263.             nextshaft()
  264.             shaftcount = shaftcount + 1
  265.             count = count - 1
  266.             checkspace()
  267.         end
  268.     end
  269.     returnpoint()
  270.     print ("Done!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement