Advertisement
bueddl

Untitled

Jun 3rd, 2013
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.68 KB | None | 0 0
  1. MiningTurtle = {
  2.     position = {
  3.         x = 0,
  4.         y = 0,
  5.         z = 0
  6.     },
  7.     direction = 0
  8. }
  9.  
  10. -- Check if the Turtle needs to be refueled ( <= refuelLevel )
  11. -- if yes, try to refuel it taking the contents of the inventory
  12. -- if this is not possible or not enough, go back to base
  13. function MiningTurtle:requiredRefuel( refuelLevel, requiredFuelLevel )
  14.  
  15.     refuelLevel         = refuelLevel or 25
  16.     requiredFuelLevel   = requiredFuelLevel or 500
  17.    
  18.     -- should we refuel?
  19.     if turtle.getFuelLevel() <= refuelLevel then
  20.        
  21.         -- iterate through our inventory
  22.         for slot = 1,16 do
  23.            
  24.             -- select slot
  25.             turtle.select(slot)
  26.            
  27.             -- refuel from active slot...
  28.             if turtle.refuel( turtle.getItemCount( slot ) ) then
  29.                
  30.             end
  31.            
  32.             -- ...and check again
  33.             if turtle.getFuelLevel() >= requiredFuelLevel then
  34.                 return
  35.             end
  36.            
  37.         end
  38.        
  39.         -- check if we did not refueled enough alreay
  40.         if not turtle.getFuelLevel() >= requiredFuelLevel then
  41.             -- if yes, go back to base
  42.            
  43.             MiningTurtle:toBase()
  44.             -- refuel: to be implemented!!!!
  45.         end
  46.     end
  47.    
  48. end
  49.  
  50. -- Go back to the base of the MiningTurtle
  51. function MiningTurtle:toBase( )
  52.  
  53. end
  54.    
  55. -- Go to ground
  56. function MiningTurtle:toGround( )
  57.  
  58.     while not turtle.detectDown() do
  59.         MiningTurtle:down()
  60.     end
  61.    
  62. end
  63.  
  64. -- forward
  65. function MiningTurtle:forward()
  66.     local ret
  67.    
  68.     ret = turtle.forward()
  69.    
  70.     if ret then
  71.        
  72.        
  73.         if self.direction == 0 then
  74.            
  75.             self.position.x = self.position.x + 1
  76.            
  77.         elseif self.direction == 90 then
  78.        
  79.             self.position.y = self.position.y + 1
  80.        
  81.         elseif self.direction == 180 then
  82.        
  83.             self.position.x = self.position.x - 1
  84.        
  85.         elseif self.direction == 270 then
  86.        
  87.             self.position.y = self.position.y - 1
  88.        
  89.         end
  90.        
  91.     end
  92.    
  93.     return ret
  94. end
  95.  
  96. -- back
  97. function MiningTurtle:back()
  98.     local ret
  99.    
  100.     ret = turtle.back()
  101.    
  102.     if ret then
  103.        
  104.         if self.direction == 0 then
  105.            
  106.             self.position.x = self.position.x - 1
  107.            
  108.         elseif self.direction == 90 then
  109.        
  110.             self.position.y = self.position.y - 1
  111.        
  112.         elseif self.direction == 180 then
  113.        
  114.             self.position.x = self.position.x + 1
  115.        
  116.         elseif self.direction == 270 then
  117.        
  118.             self.position.y = self.position.y + 1
  119.        
  120.         end
  121.        
  122.     end
  123.    
  124.     return ret
  125. end
  126.  
  127. -- up
  128. function MiningTurtle:up()
  129.     local ret
  130.    
  131.     ret = turtle.up()
  132.    
  133.     if ret then
  134.         self.position.z = self.position.z + 1
  135.     end
  136.    
  137.     return ret
  138. end
  139.  
  140. -- down
  141. function MiningTurtle:down()
  142.     local ret
  143.    
  144.     ret = turtle.down()
  145.    
  146.     if ret then
  147.         self.position.z = self.position.z - 1
  148.     end
  149.    
  150.     return ret
  151. end
  152.  
  153. -- turn Left
  154. function MiningTurtle:turnLeft()
  155.     local ret
  156.    
  157.     ret = turtle.turnLeft()
  158.    
  159.     if ret then
  160.         self.direction = self.direction + 90
  161.        
  162.         while self.direction >= 360 do
  163.             self.direction = self.direction - 360
  164.         end
  165.     end
  166.    
  167.     return ret
  168. end
  169.  
  170. -- turn Right
  171. function MiningTurtle:turnRight()
  172.     local ret
  173.    
  174.     ret = turtle.turnRight()
  175.    
  176.     if ret then
  177.         self.direction = self.direction - 90
  178.        
  179.         while self.direction < 0 do
  180.             self.direction = self.direction + 360
  181.         end
  182.     end
  183.    
  184.     return ret
  185. end
  186.  
  187. -- Save forward
  188. function MiningTurtle:saveForward()
  189.  
  190.     while not MiningTurtle:forward() do
  191.         turtle.dig()
  192.     end
  193. end
  194.  
  195. -- Save up
  196. function MiningTurtle:saveUp()
  197.  
  198.     while not MiningTurtle:up() do
  199.         turtle.digUp()
  200.     end
  201. end
  202.  
  203. -- Save down
  204. function MiningTurtle:saveDown()
  205.  
  206.     while not MiningTurtle:down() do
  207.         turtle.digDown()
  208.     end
  209. end
  210.  
  211. -- 180 degree turn
  212. function MiningTurtle:turn()
  213.  
  214.     MiningTurtle:turnRight()
  215.     MiningTurtle:turnRight()
  216. end
  217.      
  218. -- Make a tunnel
  219. function MiningTurtle:tunnel( length, height, width, ret )
  220.    
  221.     height = height or 2
  222.     width  = width  or 1
  223.     ret    = ret or false
  224.    
  225.     -- Length loop
  226.    
  227.     for i = 1,length do
  228.  
  229.         MiningTurtle:saveForward()
  230.    
  231.         if i % 2 == 0 then
  232.             -- even
  233.            
  234.             MiningTurtle:turnLeft()
  235.            
  236.             for x = 0,width do
  237.                
  238.                 for y = 0,height do
  239.                
  240.                     if x % 2 == 0 then
  241.                         MiningTurtle:saveUp()                      
  242.                     else                   
  243.                         MiningTurtle:saveDown()                
  244.                     end
  245.                    
  246.                 end
  247.                
  248.                 if x < width then
  249.                     MiningTurtle:saveForward()
  250.                 end
  251.             end
  252.            
  253.             MiningTurtle:turnRight()
  254.        
  255.         else
  256.             -- odd
  257.            
  258.             MiningTurtle:turnRight()
  259.            
  260.             for x = 0,width do
  261.                
  262.                 for y = 0,height do
  263.                
  264.                     if x % 2 == 0 then
  265.                         MiningTurtle:saveUp()                      
  266.                     else                   
  267.                         MiningTurtle:saveDown()                
  268.                     end
  269.                    
  270.                 end
  271.                
  272.                 if x < width then
  273.                     MiningTurtle:saveForward()
  274.                 end
  275.             end
  276.            
  277.             MiningTurtle:turnLeft()
  278.        
  279.         end
  280.    
  281.     end
  282.    
  283.     if ret then
  284.        
  285.         MiningTurtle:turn()
  286.     end
  287.    
  288. end
  289.  
  290.  
  291. --
  292. function MiningTurtle:matrix( rows, cols )
  293.  
  294.    
  295.  
  296. end
  297.  
  298.  
  299. MiningTurtle:requiredRefuel()
  300. MiningTurtle:toGround()
  301. MiningTurtle:tunnel(10)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement