Advertisement
KaosKlaus

PeatFarm

Mar 8th, 2014
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.40 KB | None | 0 0
  1. local waterRow = {false,true,false,false,true,false,false,true,false}
  2.  
  3. local keepFuel = 5
  4.  
  5. -- FUNCTIONS
  6.  
  7. local function refuel()
  8.     local fuelLevel = turtle.getFuelLevel()
  9.     if fuelLevel == "unlimited" or fuelLevel > 0 then
  10.         return
  11.     end
  12.    
  13.     local function tryRefuel()
  14.         for n=1,16 do
  15.             if turtle.getItemCount(n) > 0 then
  16.                 turtle.select(n)
  17.                 if turtle.refuel(1) then
  18.                     turtle.select(1)
  19.                     return true
  20.                 end
  21.             end
  22.         end
  23.         turtle.select(1)
  24.         return false
  25.     end
  26.    
  27.     if not tryRefuel() then
  28.         term.setCursorPos(12,7)
  29.         term.clear()
  30.         print( "Gimme som Fuel!" )
  31.         while not tryRefuel() do
  32.             sleep(1)
  33.         end
  34.         term.setCursorPos(15,7)
  35.         term.clear()
  36.         print("I'm on it...")
  37.     end
  38. end
  39.  
  40. function turnR(n)
  41.     if n == nil then n=1 end
  42.     for i = 1,n do
  43.         turtle.turnRight()
  44.     end
  45. end
  46.  
  47. function turnL(n)
  48.     if n == nil then n=1 end
  49.     for i = 1,n do
  50.         turtle.turnLeft()
  51.     end
  52. end
  53.  
  54. function go(nDistance)
  55.     refuel()
  56.     if not nDistance then nDistance=1 end
  57.     while nDistance > 0 do
  58.         refuel()
  59.         if turtle.forward() then
  60.             nDistance = nDistance - 1
  61.         else
  62.             sleep(0.5)
  63.         end
  64.     end
  65. end
  66.  
  67. local function SelectSlot()
  68.  
  69.     local function trySelect()
  70.         for i = 1,4 do
  71.             if turtle.getItemCount(i) > 0 then
  72.                 turtle.select(i)
  73.                 return true
  74.             end
  75.         end
  76.         turtle.select(1)
  77.         return false
  78.     end
  79.    
  80.     if not trySelect() then
  81.         term.setCursorPos(12,7)
  82.         term.clear()
  83.         print( "Gimme som Bogearth!" )
  84.         while not trySelect() do
  85.             sleep(1)
  86.         end
  87.         term.setCursorPos(15,7)
  88.         term.clear()
  89.         print("I'm on it...")
  90.     end
  91.     return true
  92. end
  93.  
  94. local function digPeat()
  95.     turtle.select(16)
  96.     if turtle.compareDown() then
  97.         turtle.select(5)
  98.         turtle.digDown()
  99.         SelectSlot()
  100.         turtle.placeDown()
  101.     end
  102. end
  103.  
  104. function digRow()
  105.     for i = 1,9 do
  106.         digPeat()
  107.         if i ~= 9 then
  108.             refuel()
  109.             go()
  110.         end
  111.     end
  112. end
  113.  
  114. function digWaterRow()
  115.     for i = 1,9 do
  116.         if not waterRow[i] then
  117.             digPeat()
  118.         end
  119.         if i ~= 9 then
  120.             refuel()
  121.             go()
  122.         end
  123.     end
  124. end
  125.  
  126. function dropStuff()
  127.     turtle.select(5)
  128.     local nTransfer = keepFuel - turtle.getItemCount(15)
  129.     if turtle.getItemCount(5) > 0 and nTransfer > 0 then
  130.         turtle.transferTo(15, nTransfer)
  131.     end
  132.     if turtle.getItemCount(15) > keepFuel then
  133.         turtle.select(15)
  134.         turtle.drop(turtle.getItemCount(15) - keepFuel)
  135.     end
  136.     for i = 5,14 do
  137.         turtle.select(i)
  138.         turtle.drop()
  139.     end
  140. end
  141.  
  142. function getStuff()
  143.     turtle.select(1)
  144.         if (turtle.getItemCount(1) + turtle.getItemCount(2)) < 128 then
  145.             while turtle.suck() do
  146.                 if (turtle.getItemCount(1) + turtle.getItemCount(2)) >= 128 then break end
  147.             end
  148.         end
  149.     if turtle.getItemCount(3) > 0 then
  150.         turtle.select(3)
  151.         turtle.drop()
  152.     end
  153.     turtle.select(1)
  154. end
  155.  
  156. -- MAIN PROGRAMM
  157.  
  158. while true do
  159.     term.setCursorPos(12,7)
  160.     term.clear()
  161.     print("Ready to roll...")
  162.    
  163.     event = os.pullEvent("redstone")
  164.    
  165.     term.setCursorPos(12,7)
  166.     term.clear()
  167.     print("I'm on it...")
  168.     turtle.select(1)
  169.     if (turtle.getItemCount(1) + turtle.getItemCount(2)) < 128 then
  170.         turnL(2)
  171.         go()
  172.         turnL()
  173.         getStuff()
  174.         turnL()
  175.         go()       
  176.     end
  177.     go()
  178.     for i = 1,9 do
  179.         if waterRow[i] then
  180.             digWaterRow()
  181.         else
  182.             digRow()
  183.         end
  184.         if i ~= 9 then
  185.             if i % 2 == 0 then
  186.                 turnR()
  187.                 go()
  188.                 turnR()
  189.             else
  190.                 turnL()
  191.                 go()
  192.                 turnL()
  193.             end
  194.         end
  195.     end
  196.  
  197.     turnR()
  198.     go(8)
  199.     turnR()
  200.     go(11)
  201.     turnL()
  202.     dropStuff()
  203.     turnL()
  204.     go()
  205.     turnR()
  206.     getStuff()
  207.     turnL()
  208.     go()
  209.     sleep(1)
  210. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement