BioPrince

lava refuel

May 22nd, 2015 (edited)
455
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.03 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()
  153.     turtle.refuel(1)
  154.     print(turtle.getFuelLevel())
Advertisement
Add Comment
Please, Sign In to add comment