daily pastebin goal
39%
SHARE
TWEET

Untitled

EphemeralKap Dec 7th, 2017 52 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local status = 0
  2. -- 0 = Returning, 1 = Maintenance, 2 = Farming, 3 = Critical
  3. local n = 0
  4. local j = 0
  5.  
  6. --todo fix return, fix farm
  7.  
  8. -- Refuels the turtle if fuel levels are low
  9. function Refuel() --fin?
  10.     print("Refueling..")
  11.     turtle.select(1)
  12.     if not turtle.refuel(3) then
  13.         print("Fuel reserves low.. Returning home")
  14.         status = 0
  15.     end
  16. end
  17.  
  18. -- Grabs fuel from fuelchest above the turtle, drops anything in slot 1 if it's not coal
  19. function GrabFuel() --fin?
  20.     if turtle.getItemCount(1) > 0 then
  21.         if turtle.getItemDetail(1).name ~= "minecraft:coal" then
  22.             print("That's not fuel.. Ew!")
  23.             turtle.select(1)
  24.             turtle.drop()
  25.         end
  26.     end
  27.     if turtle.getItemCount(1) < 16 and status == 1 then
  28.         print("Grabbing Fuel..")
  29.         turtle.select(1)
  30.         turtle.suckUp()
  31.     end
  32. end
  33.  
  34. -- Makes sure it has seeds in inventory, then dumps everything else
  35. function DropOff() --fin?
  36.     for i = 2, 16 do
  37.         if turtle.getItemCount(i) > 0 and turtle.getItemDetail(i).name ~= "minecraft:seed" then
  38.             turtle.select(i)
  39.             turtle.dropDown()
  40.         end
  41.     end
  42.    
  43.     turtle.turnLeft()
  44.    
  45.     for i = 2, 16 do
  46.         if turtle.getItemCount(i) > 0 then
  47.             turtle.select(i)
  48.             turtle.drop()
  49.         end
  50.     end
  51.     sleep(1)
  52.    
  53.     turtle.select(2)
  54.     turtle.suck()
  55.     turtle.select(3)
  56.     turtle.suck()
  57.     turtle.turnRight()
  58. end
  59.  
  60. -- Inspects the block infront, above or below the turtle.
  61. function GetBlock(side) -- fin
  62.     if side == 1 then
  63.         local s, d = turtle.inspect()
  64.         if s then return d else return false end
  65.     elseif side == 2 then
  66.         local s, d = turtle.inspectUp()
  67.         if s then return d else return false end
  68.     elseif side == 3 then
  69.         local s, d = turtle.inspectDown()
  70.         if s then return d else return false end
  71.     end
  72. end
  73.  
  74. -- Returns the turtle to the station
  75. function Return() --fin?
  76.     if status == 0 then
  77.         local front = GetBlock(1)
  78.         if front and front.name == "immersiveengineering:metal_decoration1" then
  79.             turtle.turnLeft()
  80.         elseif front and front.name == "minecraft:hardened_clay" then
  81.                 turtle.turnLeft()
  82.                 turtle.forward()
  83.         elseif front and front.name == "minecraft:chest" then
  84.             turtle.turnLeft()
  85.             turtle.forward()
  86.             turtle.turnRight()
  87.             turtle.forward()
  88.             turtle.turnLeft()
  89.             turtle.down()
  90.             turtle.back()
  91.             status = 1
  92.         else
  93.             turtle.forward()
  94.         end
  95.     end
  96. end
  97.  
  98. function GetSeedCount()
  99.     local seed1 = turtle.getItemCount(2)
  100.     local seed2 = turtle.getItemCount(3)
  101.     if seed1 > 0 and turtle.getItemDetail(2).name ~= "minecraft:seed" then seed1 = 0 end
  102.     if seed2 > 0 and turtle.getItemDetail(3).name ~= "minecraft:seed" then seed2 = 0 end
  103.     return seed1, seed2
  104. end
  105.  
  106. function Replant()
  107.     local seed1, seed2 = GetSeedCount()
  108.     for i=2,3 do
  109.         if seed1 > 0 then
  110.             print("Found seed1")
  111.             turtle.select(2)
  112.             turtle.placeDown()
  113.         elseif seed2 > 0 then
  114.             print("Found seed2")
  115.             turtle.select(3)
  116.             turtle.placeDown()
  117.         end
  118.     end
  119. end
  120.  
  121. -- Checks if plant is ready to be harvested, or if soil needs retilling/replanting
  122. function CheckPlant()
  123.     print("Inspecting farmland..")
  124.     local under = GetBlock(3)
  125.     if not under then
  126.         print("Retilling..")
  127.         turtle.digDown()
  128.         Replant()
  129.     elseif under.name == "minecraft:wheat" and under.metadata == 7 then
  130.         print("Found mature plant, harvesting..")
  131.         turtle.placeDown()
  132.     end
  133. end
  134.  
  135. function Farm()
  136.     -- Are we full yet?
  137.     local front = GetBlock(1)
  138.     if turtle.getItemCount(16) > 0 then
  139.         status = 0
  140.     elseif not front then
  141.         turtle.forward()
  142.         sleep(0.1)
  143.         turtle.suckDown()
  144.         CheckPlant()
  145.     elseif front.name == "immersiveengineering:metal_decoration1"
  146.                             or front.name == "minecraft:hardened_clay" then
  147.         CheckPlant()
  148.         if j == 0 then
  149.             j = 1
  150.             turtle.turnLeft()
  151.             turtle.forward()
  152.             CheckPlant()
  153.             sleep(0.1)
  154.             turtle.suckDown()
  155.             turtle.turnLeft()
  156.         elseif j == 1 then
  157.             j = 0
  158.             turtle.turnRight()
  159.             local front2 = GetBlock(1)
  160.             if not front2 then
  161.                 turtle.forward()
  162.                 CheckPlant()
  163.                 sleep(0.1)
  164.                 turtle.suckDown()
  165.                 turtle.turnRight()
  166.             elseif  front2.name == "immersiveengineering:metal_decoration1"
  167.                                 or front2.name == "minecraft:hardened_clay" then
  168.                 status = 0
  169.                 n = n + 1
  170.             end
  171.         end
  172.     end
  173. end
  174.  
  175. -- Main Loop
  176. while true do
  177.     if turtle.getFuelLevel() < 10 then
  178.         Refuel()
  179.     end
  180.     if status == 0 then
  181.         print("Finding home..")
  182.         Return()
  183.     end
  184.     if status == 1 then
  185.         print("Refueling.. Storing.. Polishing..")
  186.         DropOff()
  187.         GrabFuel()
  188.         print("Maintenance completed!")
  189.         turtle.forward()
  190.         turtle.up()
  191.         status = 2
  192.         if n % 2 == 0 and n > 0 then
  193.             for i = 1,5 do
  194.                 print("Waiting: " .. 5-i .. " seconds for the plants to grow..")
  195.                 sleep(1)
  196.             end
  197.             n = 1
  198.         end
  199.     end
  200.     if status == 2 then
  201.         print("Farming..")
  202.         Farm()
  203.     end
  204. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top