Advertisement
Ignius12

grid_farm

Jul 27th, 2021 (edited)
397
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.08 KB | None | 0 0
  1. initalBoot = ...
  2. host = 3
  3. status = "Inactive"
  4. pos = vector.new(gps.locate())
  5. rows = 17
  6. columns = 19
  7. r = 1
  8. c = 1
  9. function save_config()
  10.   sw = fs.open("config.txt", "w")  
  11.   sw.writeLine(r)
  12.   sw.writeLine(c)
  13.   sw.close()
  14. end
  15.  
  16. function load_config()
  17.   sr = fs.open("config.txt", "r")
  18.   r = tonumber(sr.readLine())
  19.   c = tonumber(sr.readLine())
  20.   sr.close()
  21. end
  22. function checkCrop()
  23.     success, data = turtle.inspectDown()
  24.  
  25.     if(success == false or data.state.age == 7) then
  26.         turtle.digDown()
  27.         item = turtle.getItemDetail()
  28.  
  29.         while((item == nil or item.name ~= "minecraft:wheat_seeds") and (index < 16)) do
  30.             index = index + 1
  31.             item = turtle.getItemDetail(index)
  32.         end
  33.        
  34.         if((item == nil or item.name ~= "minecraft:wheat_seeds") and index == 16) then
  35.             index = 1
  36.         end
  37.  
  38.         turtle.select(index)
  39.         turtle.placeDown()
  40.     end
  41. end
  42.  
  43. function farm()
  44.     status = "Farming"
  45.     local modem = peripheral.find("modem")
  46.     rednet.open("left")
  47.     if(initalBoot ~= "Y") then
  48.         load_config()
  49.     end
  50.     while true do
  51.         while (turtle.getFuelLevel() < 1) do
  52.             status =  "Low Fuel"
  53.                 for i=1, 16 do
  54.                     turtle.select(i)
  55.                     turtle.refuel()
  56.                 end
  57.             sleep(3)
  58.         end
  59.         index = 1
  60.         while(r <= rows) do
  61.             while(c <= columns) do
  62.                 checkCrop()
  63.                 pos = vector.new(gps.locate())
  64.                 turtle.forward()
  65.                 c = c + 1
  66.                 save_config()
  67.             end
  68.             c = 1
  69.             checkCrop()
  70.             if(r ~= rows) then
  71.                 print("Lane Change!")
  72.                 if(r % 2 == 1) then
  73.                     turtle.turnRight()
  74.                     turtle.forward()
  75.                     turtle.turnRight()
  76.                 else
  77.                     turtle.turnLeft()
  78.                     turtle.forward()
  79.                     turtle.turnLeft()
  80.                 end
  81.             end              
  82.             r = r + 1
  83.             save_config()
  84.         end
  85.         r = 1
  86.         if(rows % 2 == 1) then
  87.             turtle.turnLeft()
  88.             turtle.turnLeft()
  89.             for i = 1, columns do
  90.                 turtle.forward()
  91.                 save_config()
  92.             end
  93.         end
  94.         turtle.turnRight()
  95.         for i = 1, rows - 1 do
  96.             turtle.forward()
  97.             save_config()
  98.         end
  99.         turtle.turnRight()
  100.         for i=1, 16 do
  101.             turtle.select(i)
  102.             turtle.dropDown()
  103.         end
  104.      end
  105.  end
  106. function rangeCheck()
  107.     while true do
  108.         if rednet.receive("failsafe") == null then
  109.             return
  110.         end
  111.         sleep(1)
  112.     end
  113. end
  114. function transmit()
  115.     while(true) do
  116.     local sender, message, protocol = rednet.receive("ping")
  117.         if(message ~= nil and message == "send") then
  118.             rednet.send(host, os.getComputerLabel() .. " " .. turtle.getFuelLevel() .. " " .. pos.x .. " " .. pos.y .." " .. pos.z .. " " .. status, "miners")
  119.             sleep(0.5)
  120.         end
  121.     end
  122. end
  123. parallel.waitForAny(farm, rangeCheck, transmit)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement