robocyclone

Turtle Farm 5 (Final)

Feb 18th, 2016
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.58 KB | None | 0 0
  1. local x,y = 0,0
  2. local direction = "north"
  3.  
  4. local success, idtable = turtle.inspectDown()
  5.  
  6. if success and idtable.name == "minecraft:chest" then
  7.     print("Success")
  8. else
  9.     error("Need chest below turtle to start farming!")
  10. end
  11.  
  12. function testForAvailableFuel()
  13.     for i = 1, 16 do
  14.         turtle.select(i)
  15.         if turtle.refuel(0) then
  16.             return true
  17.         end
  18.     end
  19.     return false
  20. end
  21.  
  22. function fuel()
  23.     local fLimit = turtle.getFuelLimit()
  24.     local fCurr = turtle.getFuelLevel()
  25.     local fSucc = testForAvailableFuel()
  26.     if fCurr <= math.floor(fLimit/2) and fSucc == true then
  27.         for i = 1, 16 do
  28.             turtle.select(i)
  29.             if turtle.refuel(0) then
  30.                 local halfStack = math.floor(turtle.getItemCount(i)/2)
  31.                 turtle.refuel(halfStack)
  32.             end
  33.         end
  34.     end
  35. end
  36.  
  37. function forward(dirToGo)
  38.     if dirToGo == "north" then
  39.         y = y + 1
  40.         if direction == "north" then
  41.             turtle.forward()
  42.         elseif direction == "south" then
  43.             turtle.turnLeft()
  44.             turtle.turnLeft()
  45.             turtle.forward()
  46.         elseif direction == "west" then
  47.             turtle.turnRight()
  48.             turtle.forward()
  49.         elseif direction == "east" then
  50.             turtle.turnLeft()
  51.             turtle.forward()
  52.         end
  53.         direction = "north"
  54.     elseif dirToGo == "east" then
  55.         x = x + 1
  56.         if direction == "north" then
  57.             turtle.turnRight()
  58.             turtle.forward()
  59.         elseif direction == "west" then
  60.             turtle.turnLeft()
  61.             turtle.turnLeft()
  62.             turtle.forward()
  63.         elseif direction == "east" then
  64.             turtle.forward()
  65.         elseif direction == "south" then
  66.             turtle.turnLeft()
  67.             turtle.forward()
  68.         end
  69.         direction = "east"
  70.     elseif dirToGo == "south" then
  71.         y = y - 1
  72.         if direction == "south" then
  73.             turtle.forward()
  74.         elseif direction == "north" then
  75.             turtle.turnLeft()
  76.             turtle.turnLeft()
  77.             turtle.forward()
  78.         elseif direction == "east" then
  79.             turtle.turnRight()
  80.             turtle.forward()
  81.         elseif direction == "west" then
  82.             turtle.turnLeft()
  83.             turtle.forward()
  84.         end
  85.         direction = "south"
  86.     elseif dirToGo == "west" then
  87.         x = x - 1
  88.         if direction == "west" then
  89.             turtle.forward()
  90.         elseif direction == "east" then
  91.             turtle.turnLeft()
  92.             turtle.turnLeft()
  93.             turtle.forward()
  94.         elseif direction == "south" then
  95.             turtle.turnRight()
  96.             turtle.forward()
  97.         elseif direction == "north" then
  98.             turtle.turnLeft()
  99.             turtle.forward()
  100.         end
  101.         direction = "west"
  102.     end
  103.     fuel()
  104. end
  105.  
  106. function moveTo(x2, y2)
  107.     if x2 > x then
  108.         local x3 = x2 - x
  109.         for f = 1, x3 do
  110.             forward("east")
  111.         end
  112.     elseif x2 < x then
  113.         local x3 = (math.abs(x2)) - x
  114.         for f = 1, x3 do
  115.             forward("west")
  116.         end
  117.     end
  118.     if y2 > y then
  119.         local y3 = y2 - y
  120.         for g = 1, y3 do
  121.             forward("north")
  122.         end
  123.     elseif y2 < y then
  124.         local y3 = (math.abs(y2)) - y
  125.         for g = 1, y3 do
  126.             forward("south")
  127.         end
  128.     end
  129. end
  130.  
  131. function dropOff()
  132.     moveTo(0,0)
  133.     for i = 1, 16 do
  134.         turtle.select(i)
  135.         turtle.dropDown()
  136.     end
  137.     turtle.suckDown()
  138. end
  139.  
  140. function findSeeds()
  141.     for i = 1, 16 do
  142.         turtle.select(i)
  143.         local idtable = turtle.getItemDetail()
  144.         if idtable.name == "minecraft:wheat_seeds" then
  145.             return i
  146.         end
  147.     end
  148. end
  149.  
  150. function harvestGrownAndPlant()
  151.     local success, idtable = turtle.inspectDown()
  152.     if success then
  153.         if idtable.name == "minecraft:wheat" then
  154.             if idtable.state.age == 7 then
  155.                 local seeds = findSeeds()
  156.                 turtle.digDown()
  157.                 turtle.select(seeds)
  158.                 turtle.placeDown()
  159.             end
  160.         end
  161.     end
  162.     local seeds = findSeeds()
  163.     turtle.select(seeds)
  164.     turtle.placeDown()
  165. end
  166.  
  167. function harvestAll()
  168.     for k = 0, 27 do
  169.         for p = 1, 28 do
  170.             moveTo(k, p)
  171.             harvestGrownAndPlant()
  172.         end
  173.     end
  174.     moveTo(0,0)
  175. end
  176.  
  177. while true do
  178.     dropOff()
  179.     harvestAll()
  180.     sleep(600)
  181. end
Advertisement
Add Comment
Please, Sign In to add comment