Advertisement
Bmorr

farmland.lua

Dec 20th, 2020 (edited)
1,054
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.84 KB | None | 0 0
  1. local dist, width = arg[1], arg[2]
  2. local spacing, row_num = 6, 1
  3.  
  4. local function tryRefuel()
  5.         for n = 1, 16 do
  6.         print("yo", n)
  7.             if turtle.getItemCount(n) > 0 then
  8.                 turtle.select(n)
  9.                 if turtle.refuel(1) then
  10.                     turtle.select(1)
  11.                     return true
  12.                 end
  13.             end
  14.         end
  15.         turtle.select(1)
  16.         return false
  17.     end
  18.  
  19. local function refuel()
  20.     local fuelLevel = turtle.getFuelLevel()
  21.     if fuelLevel == "unlimited" or fuelLevel > 0 then
  22.         return
  23.     end
  24.  
  25.     if not tryRefuel() then
  26.         print("Add more fuel to continue.")
  27.         while not tryRefuel() do
  28.             os.pullEvent("turtle_inventory")
  29.         end
  30.         print("Resuming Tunnel.")
  31.     end
  32. end
  33.  
  34. function tryDig()
  35.     while turtle.detect() do
  36.         if turtle.dig() then
  37.             sleep(0.5)
  38.         else
  39.             return false
  40.         end
  41.     end
  42.     return true
  43. end
  44.  
  45. function tryDigUp()
  46.     while turtle.detectUp() do
  47.         if turtle.digUp() then
  48.             sleep(0.5)
  49.         else
  50.             return false
  51.         end
  52.     end
  53.     return true
  54. end
  55.  
  56. function tryDigDown()
  57.     while turtle.detectDown() do
  58.         if turtle.digDown() then
  59.             sleep(0.5)
  60.         else
  61.             return false
  62.         end
  63.     end
  64.     return true
  65. end
  66.  
  67. function tryUp()
  68.     refuel()
  69.     while not turtle.up() do
  70.         if turtle.detectUp() then
  71.             if not tryDigUp() then
  72.                 return false
  73.             end
  74.         else
  75.             sleep(0.5)
  76.         end
  77.     end
  78.     return true
  79. end
  80.  
  81. function tryDown()
  82.     refuel()
  83.     while not turtle.down() do
  84.         if turtle.detectDown() then
  85.             if not tryDigDown() then
  86.                 return false
  87.             end
  88.         else
  89.             sleep(0.5)
  90.         end
  91.     end
  92.     return true
  93. end
  94.  
  95. function tryForward()
  96.     refuel()
  97.     while not turtle.forward() do
  98.         if turtle.detect() then
  99.             if not tryDig() then
  100.                 return false
  101.             end
  102.         else
  103.             sleep(0.5)
  104.         end
  105.     end
  106.     return true
  107. end
  108.  
  109. function tryBack()
  110.     refuel()
  111.     if not turtle.back() then
  112.         turnLeft(2)
  113.         local ret = tryForward()
  114.         turnLeft(2)
  115.         return ret
  116.     end
  117.     return true
  118. end
  119.  
  120. function checkIfSlotIsItem(slot, name)
  121.     local item = turtle.getItemDetail(slot)
  122.     if item ~= nil then
  123.         return item["name"] == name
  124.     end
  125.     return false
  126. end
  127.  
  128. function findItem(name)
  129.     for slot = 1, 16 do
  130.         if checkIfSlotIsItem(slot, name) then
  131.             return slot
  132.         end
  133.     end
  134.     return -1
  135. end
  136.  
  137. function checkIfHaveItem(name)
  138.     return findItem(name) ~= -1
  139. end
  140.  
  141. function findEmpty()
  142.     for index = 1, 16 do
  143.         if turtle.getItemCount(index) == 0 then
  144.             return index
  145.         end
  146.     end
  147.     return -1
  148. end
  149.  
  150. function countItems()
  151.     local total = 0
  152.     for index = 1, 16 do
  153.         total = turtle.getItemCount(index) + total
  154.     end
  155. end
  156.  
  157.  
  158. for w = 1, width do
  159.   if checkIfHaveItem("minecraft:diamond_pickaxe") then
  160.     turtle.select(findItem("minecraft:diamond_pickaxe"))
  161.     turtle.equipRight()
  162.   end
  163.   for i = 1, dist do
  164.     local count = 0
  165.     while turtle.detect() do
  166.       turtle.dig()
  167.       tryUp()
  168.       count = count + 1
  169.     end
  170.     for n = 1, count do
  171.       tryDown()
  172.     end
  173.     tryForward()
  174.     if w % spacing == row_num then
  175.       turtle.digDown()
  176.       local bucket = findItem("minecraft:bucket")
  177.       if bucket == -1 then
  178.         turtle.select(findItem("minecraft:water_bucket"))
  179.         turtle.placeDown()
  180.         bucket = findItem("minecraft:bucket")
  181.       end
  182.       local isbelow, data = turtle.inspectDown()
  183.       if (data["name"] ~= "minecraft:water" and bucket ~= -1) or (data["name"] == "minecraft:water" and data["state"]["level"] ~= 0) then
  184.         turtle.select(bucket)
  185.         tryBack()
  186.         tryBack()
  187.         turtle.placeDown()
  188.         tryForward()
  189.         tryForward()
  190.         turtle.placeDown()
  191.       end
  192.       tryDown()
  193.     end
  194.     local dirt = findItem("minecraft:dirt")
  195.     if dirt ~= -1 then
  196.     local isbelow, data = turtle.inspectDown()
  197.     if isbelow and data["name"] ~= "minecraft:dirt" then
  198.         turtle.digDown()
  199.     end
  200.     turtle.select(dirt)
  201.     turtle.placeDown()
  202.     if w % spacing == row_num then
  203.         tryUp()
  204.     end
  205.     end
  206.   end
  207.   turtle.equipRight()
  208.   while not checkIfHaveItem("minecraft:diamond_hoe") do
  209.     term.clear()
  210.     term.setCursorPos(1, 1)
  211.     print("Give me diamond hoe, hoe")
  212.   end
  213.   turtle.select(findItem("minecraft:diamond_hoe"))
  214.   turtle.equipRight()
  215.   for i = 1, dist do
  216.     tryBack()
  217.     turtle.dig()
  218.   end
  219.   if w ~= width then
  220.     turtle.turnLeft()
  221.     tryForward()
  222.     turtle.turnRight()
  223.   end
  224. end
  225. turtle.equipRight()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement