Vaerys_Dawn

Farming Turtle

Nov 19th, 2020 (edited)
1,314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.74 KB | None | 0 0
  1. local args = {...}
  2.  
  3. if #args ~= 1 then
  4.   print("Please give me a range")
  5.   error()
  6. end
  7.  
  8. range = args[1] + 0
  9. maxRange = range -1
  10. print("range selected", range, "x", range)
  11.  
  12. function doMovement()
  13.   local turnedRight = false
  14.   -- do farming
  15.   for j = 1, range, 1 do
  16.     -- begin row
  17.     for i = 1, maxRange, 1 do
  18.       -- check slot
  19.       doFarmCheck()
  20.       turtle.forward()
  21.     end
  22.     -- end of the row
  23.  
  24.     if (j < range) then
  25.       if turnedRight then
  26.         turtle.turnLeft()
  27.         doFarmCheck()
  28.         turtle.forward()
  29.         turtle.turnLeft()
  30.         turnedRight = false
  31.       else
  32.         turtle.turnRight()
  33.         doFarmCheck()
  34.         turtle.forward()
  35.         turtle.turnRight()
  36.         turnedRight = true
  37.       end
  38.     end
  39.   end
  40.   -- return home
  41.   doFarmCheck()
  42.   print("returning home")
  43.   turtle.turnLeft()
  44.   for r = 1, maxRange, 1 do
  45.     turtle.forward()
  46.   end
  47.   turtle.turnLeft()
  48.   for r = 1, maxRange, 1 do
  49.     turtle.forward()
  50.   end
  51.   -- check stuff
  52.   deposit()
  53.   turtle.turnLeft()
  54.   turtle.turnLeft()
  55. end
  56.  
  57. function doFarmCheck()
  58.   local success, data = turtle.inspectDown()
  59.   if isGrown(data) then
  60.     turtle.digDown()
  61.     turtle.select(2)
  62.     turtle.placeDown()
  63.   elseif not success then
  64.     turtle.select(2)
  65.     turtle.placeDown()
  66.   end
  67.   turtle.suckDown()
  68.   turtle.suckDown()
  69. end
  70.  
  71. function manageInv()
  72.   local foundCoal = false
  73.   -- check coal
  74.   if turtle.getItemDetail(1) ~= "minecraft:coal" then
  75.     for c = 1, 16, 1 do
  76.       local data = turtle.getItemDetail(c)
  77.       if data and data.name == "minecraft:coal" then
  78.         turtle.select(c)
  79.         turtle.transferTo(1)
  80.         foundCoal = true
  81.       end
  82.     end
  83.   end
  84.  
  85.   -- check seeds
  86.   if turtle.getItemDetail(2) ~= "minecraft:wheat_seeds" then
  87.     print("no seeds found in slot 2")
  88.     for s = 1, 16, 1 do
  89.       local data = turtle.getItemDetail(s)
  90.       if data and data.name == "minecraft:wheat_seeds" then
  91.         turtle.select(s)
  92.         turtle.transferTo(2)
  93.         foundSeeds = true
  94.       end
  95.     end
  96.   end
  97.   if not foundCoal or not foundSeeds then
  98.     turtle.select(1)
  99.     turtle.suck()
  100.     turtle.select(2)
  101.     turtle.suck()
  102.   end
  103. end
  104.  
  105. function isGrown(data)
  106.    if data.name == "minecraft:wheat" then
  107.      if data.state.age == 7 then
  108.        return true
  109.      end
  110.    end
  111.    return false
  112. end
  113.  
  114. function doFuelCheck()
  115.   if turtle.getFuelLevel() < 100 then
  116.     print("nom da coal")
  117.     turtle.select(1)
  118.     turtle.refuel(2)
  119.   end
  120. end
  121.  
  122. function deposit()
  123.   for n = 3, 16, 1 do
  124.     turtle.select(n)
  125.     turtle.drop()
  126.   end
  127. end
  128.  
  129. function farm()
  130.   manageInv()
  131.   doFuelCheck()
  132.   while (true) do
  133.     doMovement()
  134.     sleep(60)
  135.     manageInv()
  136.     doFuelCheck()
  137.   end
  138. end
  139.  
  140. farm()
Add Comment
Please, Sign In to add comment