Caighan

refuel function

Mar 14th, 2014
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.68 KB | None | 0 0
  1. -- A replacement refuelling function, it can be passed two arguments.
  2. -- "silentVar" is boolean to determine if you want it to tell you what it is doing default true.
  3. -- "check" can be any non nil/false value that will have it only check fuel without actually refuelling.
  4. -- All iterations will set global fuel level variable, working on making it turtle specific.
  5. function refuel(silentVar, check)
  6.     local limit = 1000
  7.     local level = tonumber(turtle.getFuelLevel())
  8.     local doCheck = check
  9.     local silent = silentVar
  10.     local fuelNeeded = math.ceil((limit - turtle.getFuelLevel()) / 80) -- Does some math to determine number of fuel items it needs, expects fuel value of 80 gained via mining.
  11.     if (silent == "false") then silent = false; else silent = true; end
  12.  
  13.     if (doCheck) then -- If you are just checking fuel level wont refuel
  14.         if (not silent) then print("Fuel Level : "..level) end
  15.         fuelLevel = turtle.getFuelLevel() --first set of global fuelLevel variable
  16.         return
  17.     else
  18.         if (level >= limit) then -- If you are already over the limit of fuel will not attempt to get more.
  19.             if (not silent) then print("Fuel level : "..level) end
  20.             fuelLevel = turtle.getFuelLevel()
  21.             return true
  22.         end
  23.         if (not silent) then print("Standby : Beginning refuelling process.") end -- Begins refuelling process.
  24.         for i=1, 16 do
  25.             turtle.select(i)
  26.             if (turtle.refuel(0)) then -- Determines if item in slot is fuel.
  27.                 local slotCount = tonumber(turtle.getItemCount(i)) -- If it is fuel counts how many there are.
  28.                 if (fuelNeeded > slotCount) then -- If it needs more fuel than is in that slot will just consume all fuel available
  29.                     turtle.refuel()
  30.                     if (not silent) then print("Consuming "..slotCount.." fuel.") end
  31.                     fuelNeeded = math.ceil((limit - turtle.getFuelLevel()) / 80)
  32.                     level = turtle.getFuelLevel()
  33.                 elseif (fuelNeeded < slotCount) then -- If there is more fuel in the slot than is needed will only consume needed ammount
  34.                     turtle.refuel(fuelNeeded)
  35.                     if (not silent) then print("Consuming "..fuelNeeded.." fuel.") end
  36.                     level = turtle.getFuelLevel()
  37.                 end
  38.             end
  39.             if (level >= limit) then -- Checks to see if it has reached its limit if so breaks for loop
  40.                 turtle.select(1)
  41.                 if (not silent) then print("Refuelling finished.") end
  42.                 if (not silent) then print("Fuel level : "..level) end
  43.                 fuelLevel = turtle.getFuelLevel()
  44.                 return true
  45.             end
  46.             if (i == 16 and level < limit and not turtle.refuel(0)) then
  47.                 if (not silent) then print("Not enough fuel available.") end
  48.                 if (not silent) then print("Fuel level : "..level) end
  49.                 turtle.select(1)
  50.                 return false
  51.             end
  52.         end
  53.     end
  54. end
  55.  
  56. local args = {...};
  57. refuel(args[1],args[2])
Advertisement
Add Comment
Please, Sign In to add comment