Advertisement
DabDaddy6223

cabbage_farm_turtle

Jun 3rd, 2025 (edited)
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.25 KB | None | 0 0
  1. ACCEPTABLE_FUEL = {"minecraft:coal", "minecraft:charcoal", "minecraft:oak_planks"}
  2.  
  3. FUEL_COUNT = 0
  4.  
  5. CROP = "farmersdelight:cabbages"
  6. CROP_ITEM = "farmersdelight:cabbage"
  7. SEED = "farmersdelight:cabbage_seeds"
  8. HARVEST_AGE = 7
  9.  
  10. function arrHasValue(arr, val)
  11.     for index, value in ipairs(arr) do
  12.         if value == val then
  13.             return true
  14.         end
  15.     end
  16.  
  17.     return false
  18. end
  19.  
  20. function hasFuel()
  21.     return FUEL_COUNT > 0
  22. end
  23.  
  24. function shouldRefuel()
  25.     return turtle.getFuelLevel() <= 0
  26. end
  27.  
  28. function refuel()
  29.     if shouldRefuel() == true then
  30.         if hasFuel() ~= true then
  31.             return false
  32.         end
  33.  
  34.         turtle.select(1)
  35.         turtle.refuel(1)
  36.         FUEL_COUNT = FUEL_COUNT - 1
  37.     end
  38.  
  39.     return true
  40. end
  41.  
  42. function turnAround()
  43.     turtle.turnLeft()
  44.     turtle.turnLeft()
  45. end
  46.  
  47. function plant()
  48.     for i=2,16 do
  49.         turtle.select(i)
  50.         local slotData = turtle.getItemDetail()
  51.         if slotData ~= nil then
  52.             if slotData["name"] == SEED then
  53.                 turtle.placeDown()
  54.                 return
  55.             end
  56.         end
  57.     end
  58. end
  59.  
  60. function handleCrop()
  61.     local found, block = turtle.inspectDown()
  62.     if found == true then
  63.         if block.name == CROP and block.state.age == HARVEST_AGE then
  64.             turtle.digDown()
  65.             plant()
  66.         end
  67.     else
  68.         plant()
  69.     end
  70. end
  71.  
  72. function doStrip()
  73.     for i=1, 8 do
  74.         if refuel() ~= true then
  75.             print("No Fuel!")
  76.             return
  77.         end
  78.  
  79.         turtle.forward()
  80.         handleCrop()
  81.     end
  82. end
  83.  
  84. function turnLeft()
  85.     if refuel() ~= true then
  86.         print("No Fuel!")
  87.         return
  88.     end
  89.  
  90.     turtle.turnLeft()
  91.     turtle.forward()
  92.     turtle.turnLeft()
  93.     handleCrop()
  94. end
  95.  
  96. function turnRight()
  97.     if refuel() ~= true then
  98.         print("No Fuel!")
  99.         return
  100.     end
  101.  
  102.     turtle.turnRight()
  103.     turtle.forward()
  104.     turtle.turnRight()
  105.     handleCrop()
  106. end
  107.  
  108. function main()
  109.     -- Prepare
  110.     turtle.select(1)
  111.     local slotData = turtle.getItemDetail()
  112.     if slotData ~= nil then
  113.         if arrHasValue(ACCEPTABLE_FUEL, slotData["name"]) == true then
  114.             FUEL_COUNT = slotData["count"]
  115.         end
  116.     end
  117.  
  118.     if refuel() ~= true then
  119.         print("No Fuel!")
  120.         return
  121.     end
  122.  
  123.     -- Move to beginning spot
  124.     if refuel() ~= true then
  125.         print("No Fuel!")
  126.         return
  127.     end
  128.     turtle.forward()
  129.  
  130.     turtle.turnLeft()
  131.  
  132.     for i=1,4 do
  133.         if refuel() ~= true then
  134.             print("No Fuel!")
  135.             return
  136.         end
  137.         turtle.forward()
  138.     end
  139.  
  140.     turtle.turnRight()
  141.  
  142.     if refuel() ~= true then
  143.         print("No Fuel!")
  144.         return
  145.     end
  146.  
  147.     -- Harvest Farm
  148.     handleCrop()
  149.     for i=1,4 do
  150.         doStrip()
  151.         turnRight()
  152.         doStrip()
  153.         turnLeft()
  154.     end
  155.  
  156.     doStrip()
  157.  
  158.     if refuel() ~= true then
  159.         print("No Fuel!")
  160.         return
  161.     end
  162.  
  163.     -- Move to Chests
  164.     turnAround()
  165.  
  166.     for i=1,9 do
  167.         if refuel() ~= true then
  168.             print("No Fuel!")
  169.             return
  170.         end
  171.         turtle.forward()
  172.     end
  173.  
  174.     turtle.turnRight()
  175.  
  176.     for i=1,3 do
  177.         if refuel() ~= true then
  178.             print("No Fuel!")
  179.             return
  180.         end
  181.         turtle.forward()
  182.     end
  183.  
  184.     -- Dump Cabbages
  185.     for i=2,16 do
  186.         turtle.select(i)
  187.         local slotData = turtle.getItemDetail()
  188.         if slotData ~= nil then
  189.             if slotData["name"] == CROP_ITEM then
  190.                 turtle.dropDown(slotData["count"])
  191.             end
  192.         end
  193.     end
  194.  
  195.     for i=1,2 do
  196.         if refuel() ~= true then
  197.             print("No Fuel!")
  198.             return
  199.         end
  200.         turtle.forward()
  201.     end
  202.  
  203.     -- Dump Seeds
  204.     for i=2,16 do
  205.         turtle.select(i)
  206.         local slotData = turtle.getItemDetail()
  207.         if slotData ~= nil then
  208.             if slotData["name"] == SEED then
  209.                 turtle.dropDown(slotData["count"])
  210.             end
  211.         end
  212.     end
  213.  
  214.     -- Return
  215.     turnAround()
  216.  
  217.     if refuel() ~= true then
  218.         print("No Fuel!")
  219.         return
  220.     end
  221.     turtle.forward()
  222.  
  223.     turtle.turnLeft()
  224. end
  225.  
  226. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement