MikiCZEch

Lava 2 (CC Turtle)

Jun 9th, 2014
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.98 KB | None | 0 0
  1.     ------------------------------------------------------------------
  2.     --              Turtle Automatic Lava Collection                --
  3.     --               By Scott Chamberlain (leftler)                 --
  4.     -- Usage: place bucket in inventory and call with the           --
  5.     --  arguments <blocks> [drop]                                   --
  6.     --                                                              --
  7.     -- The turtle travels 'blocks' forward and sucks all lava as    --
  8.     -- fuel in then makes a U-turn and attempts to retreive lava on --
  9.     -- the way back. The seccond parameter will tell the turtle to  --
  10.     -- drop that many blocks after moving forward once.             --
  11.     --                                                              --
  12.     -- if the turtle is a mining turtle it will break any blocks    --
  13.     -- blocking it's path                                           --
  14.     ------------------------------------------------------------------
  15.      
  16.     local tArgs = { ... }
  17.      
  18.     if #tArgs == 0 then
  19.       print("Usage: <blocks> [drop]")
  20.       return
  21.     end
  22.      
  23.     turtle.refuel()
  24.      
  25.     if turtle.getFuelLevel() == 0 then
  26.       print("The turtle must have at least some fuel to start with.")
  27.       return
  28.     elseif turtle.getFuelLevel() == "unlimited" then
  29.       print("This turtle does not use fuel to move")
  30.       return
  31.     end
  32.      
  33.     --Number of blocks to travel to get the lava
  34.     local maxDistance = tArgs[1]
  35.      
  36.     --How deep to go to gather the lava
  37.     local drop = 0
  38.     if #tArgs >= 2 then
  39.       drop = tonumber(tArgs[2])
  40.     end  
  41.      
  42.     --local counter for how far the turtle has travle
  43.     local traveled = 0
  44.      
  45.     --A helper function to try and move forward, it will attempt to dig if it is blocked.
  46.     local function moveForward()
  47.       if turtle.forward() == false then
  48.         --Failed to move, see if we can dig our way forward
  49.         while turtle.dig() do
  50.               --Keep digging till we can't dig any more, in case gravel is falling.
  51.             end
  52.             if turtle.forward() == false then
  53.               print("I am either blocked or out of fuel.")
  54.               return false
  55.             end
  56.       end
  57.       return true  
  58.     end
  59.      
  60.     --A helper function to try and move down, it will attempt to dig if it is blocked.
  61.     local function moveDown()
  62.       if turtle.down() == false then
  63.         --Failed to move, see if we can dig our way down
  64.         turtle.digDown()
  65.             if turtle.down() == false then
  66.               print("I am either blocked or out of fuel.")
  67.               return false
  68.             end
  69.       end
  70.       return true  
  71.     end
  72.      
  73.     --A helper function to try and move down, it will attempt to dig if it is blocked.
  74.     local function moveUp()
  75.       if turtle.up() == false then
  76.         --Failed to move, see if we can dig our way down
  77.         while turtle.digUp() do
  78.               --Keep digging till we can't dig any more, in case gravel is falling.
  79.             end
  80.             if turtle.up() == false then
  81.               print("I am either blocked or out of fuel.")
  82.               return false
  83.             end
  84.       end
  85.       return true  
  86.     end
  87.      
  88.     dropDone = false
  89.      
  90.     --Attempt to travel to max distance for getting lava
  91.     for i = 1, maxDistance do
  92.       if moveForward() == false then
  93.         print("Could not move forward the full requested distance, starting U-Turn early.")
  94.             break
  95.       end
  96.       traveled = traveled + 1
  97.      
  98.       --drop to the requested depth
  99.       if(dropDone == false) then
  100.         for j = 1, drop do
  101.               if moveDown() == false then
  102.                 print("Could not drop the full distance")
  103.                     drop = j - 1
  104.                     end
  105.             end
  106.             dropDone = true
  107.       end
  108.      
  109.       --grab the fule
  110.       turtle.placeDown()
  111.       if turtle.refuel() == false then
  112.         --Whatever we picked up is invalid for fuel, put it back down
  113.         turtle.placeDown()
  114.       end
  115.     end
  116.      
  117.     --Turn around move a block over and get more lava
  118.     turtle.turnRight()
  119.     moveForward()
  120.     turtle.turnRight()
  121.      
  122.     --Travel back the same number of blocks we came
  123.     for i = 1, traveled do
  124.       turtle.placeDown()
  125.       turtle.refuel()
  126.      
  127.       --Check to see if we need to go up yet
  128.       if i == traveled then
  129.         for j = 1, drop do
  130.               moveUp()
  131.             end
  132.       end
  133.      
  134.       if moveForward() == false then
  135.         --We are stuck, attempt to go up a level to get home
  136.             if drop > 0 then
  137.               repeat
  138.                 moveUp()
  139.                 drop = drop - 1
  140.                     lastMove = moveForward()
  141.               until lastMove == true or drop == 0
  142.              
  143.               if lastMove == false then
  144.                 print("I am stuck!")
  145.               end
  146.             end
  147.       end
  148.     end
  149.      
  150.     turtle.turnRight()
  151.     moveForward()
  152.     turtle.turnRight()
Add Comment
Please, Sign In to add comment