Advertisement
Bunny_bt

Felling

Mar 14th, 2022 (edited)
516
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.56 KB | None | 0 0
  1. function Deposit(list)
  2.     for i = 1, 16, 1 do
  3.         turtle.select(i)
  4.         local selectedDetail = turtle.getItemDetail()
  5.         if list == nil then --Deposit all
  6.             turtle.drop() --Deposit
  7.         else
  8.             for l = 1, table.getn(list), 1 do
  9.                 --WhiteList
  10.                 if selectedDetail and string.find(selectedDetail.name, list[l]) and turtle.inspect() then
  11.                     os.setComputerLabel(selectedDetail.name, 'deposited')
  12.                     if turtle.drop() == false then --Deposit
  13.                         shell.run("/rom/programs/turtle/unequip", "right")
  14.                         return
  15.                     end
  16.                 elseif not turtle.inspect() then
  17.                     shell.run("/rom/programs/turtle/unequip", "right")
  18.                     return
  19.                 end
  20.  
  21.                 --BlackList
  22.                 -- if selectedDetail and string.find(selectedDetail.name, list[l]) then --Discard
  23.                 --     turtle.dropUp()
  24.                 -- elseif selectedDetail and l == table.getn(list) then --Deposit
  25.                 --     if turtle.drop() == false and turtle.getItemDetail(i) ~= nil then --Chest full
  26.                 --         return false
  27.                 --     end
  28.                 -- end
  29.             end
  30.         end
  31.     end
  32. end
  33.  
  34. function Plant(itemName)
  35.     for i = 1, 16, 1 do
  36.         turtle.select(i)
  37.         local selectedDetail = turtle.getItemDetail()
  38.         if selectedDetail and string.find(selectedDetail.name, itemName) then
  39.             turtle.place()
  40.             os.setComputerLabel('^-^')
  41.         end
  42.     end
  43. end
  44.  
  45. function PullEvent()
  46.     os.startTimer(60)
  47.     local evt = {os.pullEvent()}
  48.     local inspected = {turtle.inspect()}
  49.     if evt[1] == 'timer' and inspected[2].name ~= nil and string.find(inspected[2].name, 'log') then
  50.         os.setComputerLabel('Tree! :O')
  51.         return true
  52.     elseif evt[1] == 'timer' then
  53.         term.clear()
  54.         term.setCursorPos(1,1)
  55.         os.setComputerLabel('Where tree? ;-;')
  56.         return false
  57.     end
  58. end
  59.  
  60. function Refuel(requiredFuel, fuelType, ratio)
  61.     for i = 1, 16, 1 do
  62.         if turtle.getFuelLevel() >= requiredFuel then --When refueled
  63.             print('Fuel checked')
  64.             return true
  65.         elseif turtle.getItemDetail(i) and string.find(turtle.getItemDetail(i).name, fuelType) then --Continue refill
  66.             turtle.select(i)
  67.             turtle.refuel(math.ceil(((requiredFuel - turtle.getFuelLevel()) / ratio)))
  68.             if turtle.getFuelLevel() >= requiredFuel then --When refueled
  69.                 print('Fuel checked')
  70.                 return true
  71.             end
  72.         end
  73.     end
  74.     if turtle.getFuelLevel() < requiredFuel then --When failed
  75.         os.setComputerLabel('Give log plz')
  76.         return false
  77.     end
  78. end
  79.  
  80. while true do
  81.     turtle.select(1)
  82.     if PullEvent() and Refuel(30, 'log', 15) then
  83.         turtle.dig()
  84.         turtle.forward()
  85.         local inspected = {turtle.inspectUp()}
  86.         local h = 0
  87.         while inspected[2].name ~= nil and string.find(inspected[2].name, 'log') do
  88.             inspected = {turtle.inspectUp()}
  89.             turtle.digUp()
  90.             turtle.up()
  91.             h = h + 1
  92.         end
  93.         for i = 1, h, 1 do
  94.             turtle.down()
  95.         end
  96.         turtle.turnLeft()
  97.         turtle.turnLeft()
  98.         turtle.forward()
  99.         --TODO: Refuel with wood before deposit
  100.         Deposit({'log'})
  101.         turtle.turnLeft()
  102.         turtle.turnLeft()
  103.         turtle.suckDown(1)
  104.         Plant('sapling')
  105.     end
  106. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement