Morpheus1099

Lumber_Turtle

Feb 22nd, 2022 (edited)
832
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.53 KB | None | 0 0
  1. local Oak = "minecraft:oak_log"
  2. local Birch = "minecraft:birch_log"
  3. local Spruce = "minecraft:spruce_log"
  4. local Jungle = "minecraft:jungle_log"
  5.  
  6. local OakSap = "minecraft:oak_sapling"
  7.  
  8. rednet.open("left")
  9.  
  10. -- Section Funtions --
  11.  
  12. function Startup()
  13.         Start()
  14.         Circle()
  15.         End()
  16.         Reload()
  17. end
  18.  
  19. --check if there are enough sapplings to set
  20. function CheckSaplings()
  21.     turtle.select(1)
  22.     amount = turtle.getItemCount()
  23.    
  24.     turtle.suck(64 - amount)
  25. end
  26.  
  27. -- check if block is a log
  28. function CheckFrontBlock()
  29.     local success, data = turtle.inspect()
  30.    
  31.     if success then
  32.         if data.name == Oak or data.name == Birch or data.name == Spruce or data.name == Jungle then
  33.             ChopTree()
  34.         end
  35.     else
  36.         SetSapling()
  37.     end
  38.     turn()
  39. end
  40.  
  41. -- chop rest of the tree
  42. function ChopTree()
  43.     turtle.dig()
  44.     turtle.forward()
  45.     for i = 0, 5, 1 do
  46.         turtle.digUp()
  47.         turtle.up()
  48.     end
  49.  
  50.     for i = 0, 5, 1 do
  51.         turtle.digDown()
  52.         turtle.down();
  53.     end
  54.  
  55.     turn()
  56.     turtle.forward()
  57.     turn()
  58.  
  59.     SetSapling()
  60. end
  61.  
  62. function SetSapling()
  63.     turtle.select(1)
  64.    
  65.     if turtle.getItemCount() > 0 then
  66.         if turtle.getItemDetail().name == OakSap then
  67.             turtle.place()
  68.         end
  69.     end
  70. end
  71.  
  72. -- get Sapplings and fuel
  73. function Reload()
  74.     turtle.turnLeft()
  75.     turtle.forward()
  76.     turtle.turnRight()
  77.  
  78.     CheckSaplings()
  79.  
  80.     turtle.turnRight()
  81.     turtle.forward()
  82.     turtle.forward()
  83.     turtle.turnLeft()
  84.  
  85.     Refuel()
  86.    
  87.     turtle.turnLeft()
  88.     turtle.forward()
  89.     turtle.turnLeft()
  90. end
  91.  
  92. -- move to startlocation
  93. function Start()
  94.     turtle.forward()
  95.     turtle.forward()
  96.     turtle.turnLeft()
  97.     for i = 0, 5, 1 do
  98.         turtle.forward()
  99.     end
  100.     turtle.turnRight()
  101. end
  102.  
  103. -- end circle
  104. function End()
  105.     turtle.forward()
  106.     turtle.forward()
  107.     Empty()
  108. end
  109.  
  110. -- start circle
  111. function Circle()
  112.     MoveLine()
  113.  
  114.     turtle.turnRight()
  115.     turtle.forward()
  116.     turtle.forward()
  117.     turtle.forward()
  118.     turtle.turnRight()
  119.    
  120.     MoveLine()
  121.  
  122.     turtle.turnLeft()
  123.     turtle.forward()
  124.     turtle.forward()
  125.     turtle.forward()
  126.     turtle.turnLeft()
  127.  
  128.     MoveLine()
  129.  
  130.     turtle.turnRight()
  131.     turtle.forward()
  132.     turtle.forward()
  133.     turtle.forward()
  134.     turtle.turnRight()
  135.  
  136.     MoveLine()
  137.  
  138.     turtle.turnLeft()
  139.     turtle.forward()
  140.     turtle.forward()
  141.     turtle.forward()
  142.     turtle.turnLeft()
  143.  
  144.     MoveLine()
  145.  
  146.     turtle.turnLeft()
  147.  
  148.     for i = 0, 5, 1 do
  149.         turtle.forward()
  150.     end
  151.  
  152.     turtle.turnLeft()
  153.    
  154.     for i = 0, 14, 1 do
  155.         turtle.forward()
  156.     end
  157. end
  158.  
  159. -- move line forward
  160. function MoveLine()
  161.     for i = 0, 14, 1 do
  162.         turtle.dig()
  163.         turtle.forward()
  164.         turtle.turnRight()
  165.         CheckFrontBlock()
  166.         -- turn()
  167.         CheckFrontBlock()
  168.         turtle.turnLeft()
  169.     end
  170. end
  171.  
  172. -- empty inventory when full
  173. function Empty()
  174.     for i = 1, 16, 1 do
  175.         turtle.select(i)
  176.         turtle.drop()
  177.     end
  178. end
  179.  
  180. -- turn 180°
  181. function turn()
  182.     turtle.turnLeft()
  183.     turtle.turnLeft()
  184. end
  185.  
  186. -- refuel or wait if there is not enough
  187. function Refuel()
  188.     repeat
  189.         turtle.select(2)
  190.         turtle.suck(64)
  191.         turtle.refuel()
  192.     until(turtle.getFuelLevel() > 10000)
  193. end
  194.  
  195. -- program loop
  196.  
  197. while true do
  198.     local id, msg = rednet.receive(1)
  199.     if msg == "Wood" then
  200.         Startup()
  201.         rednet.send(id, "CuttingComplete")
  202.     end
  203. end
Add Comment
Please, Sign In to add comment