hhhzzzsss

narrowtunnel.lua

Sep 4th, 2023 (edited)
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.82 KB | None | 0 0
  1. if not turtle then
  2.     printError("Requires a Turtle")
  3.     return
  4. end
  5.  
  6. local tArgs = { ... }
  7. if #tArgs ~= 1 then
  8.     local programName = arg[0] or fs.getName(shell.getRunningProgram())
  9.     print("Usage: " .. programName .. " <length>")
  10.     return
  11. end
  12.  
  13. local length = tonumber(tArgs[1])
  14.  
  15. local function refuel(amount)
  16.     local fuelLevel = turtle.getFuelLevel()
  17.     if fuelLevel == "unlimited" then
  18.         return true
  19.     end
  20.  
  21.     turtle.select(16)
  22.     while turtle.getItemCount(16) > 0 and turtle.getFuelLevel() < amount do
  23.         if not turtle.refuel(1) then
  24.             return false
  25.         end
  26.     end
  27.  
  28.     if turtle.getFuelLevel() < amount then
  29.         return false
  30.     else
  31.         return true
  32.     end
  33. end
  34.  
  35. local function waitForFuel(amount)
  36.     if not refuel(amount) then
  37.         print("Please put fuel in slot 16")
  38.         while not refuel(amount) do
  39.             sleep(0.5)
  40.         end
  41.         print("Received sufficient fuel. Continuing...")
  42.     end
  43. end
  44.  
  45. local function selectItem(name)
  46.     for i=15, 1, -1 do
  47.         itemDetail = turtle.getItemDetail(i)
  48.         if itemDetail and itemDetail.name == name then
  49.             turtle.select(i)
  50.             return true
  51.         end
  52.     end
  53.     return false
  54. end
  55.  
  56. local function countItem(name)
  57.     num = 0
  58.     for i=1, 15 do
  59.         itemDetail = turtle.getItemDetail(i)
  60.         if itemDetail and itemDetail.name == name then
  61.             num = num + itemDetail.count
  62.         end
  63.     end
  64.     return num
  65. end
  66.  
  67. local function waitForItem(name, amount)
  68.     if countItem(name) < amount then
  69.         print("Please provide more " .. name)
  70.         while countItem(name) < amount do
  71.             sleep(0.5)
  72.         end
  73.         print("Received sufficient " .. name .. ". Continuing...")
  74.     end
  75.     selectItem(name)
  76. end
  77.  
  78. local function tryForward()
  79.     waitForFuel(1)
  80.     while not turtle.forward() do
  81.         if turtle.detect() then
  82.             if not turtle.dig() then
  83.                 return false
  84.             end
  85.         elseif not turtle.attack() then
  86.             sleep(0.5)
  87.         end
  88.     end
  89.     if turtle.detectUp() then
  90.         if not turtle.digUp() then
  91.             return false
  92.         end
  93.     end
  94.     message = true
  95.     while not turtle.detectDown() do
  96.         for i=15, 1, -1 do
  97.             if turtle.getItemCount(i) > 0 then
  98.                 turtle.select(i)
  99.                 if turtle.placeDown() then
  100.                     if not message then
  101.                         print("Received sufficient building blocks. Continuing...")
  102.                     end
  103.                     return true
  104.                 end
  105.             end
  106.         end
  107.         if message then
  108.             message = false
  109.             print("Please provide building blocks")
  110.         end
  111.     end
  112.     return true
  113. end
  114.  
  115. for i=1, length do
  116.     assert(tryForward())
  117. end
Advertisement
Add Comment
Please, Sign In to add comment