Advertisement
EphemeralKap

Untitled

Dec 6th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  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.turnRight()
  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.  
  52. turtle.suck()
  53. turtle.suck()
  54. turtle.turnLeft()
  55. end
  56.  
  57. -- Inspects the block infront, above or below the turtle.
  58. function GetBlock(side) -- fin
  59. if side == 1 then
  60. local s, d = turtle.inspect()
  61. if s then return d.name else return false end
  62. elseif side == 2 then
  63. local s, d = turtle.inspectUp()
  64. if s then return d.name else return false end
  65. elseif side == 3 then
  66. local s, d = turtle.inspectDown()
  67. if s then return d.name else return false end
  68. end
  69. end
  70.  
  71. -- Returns the turtle to the station
  72. function Return() --fin?
  73. if status == 0 then
  74. front = GetBlock(1)
  75. if front == "immersiveengineering:metal_decoration1" then
  76. turtle.turnLeft()
  77. elseif front == "minecraft:hardened_clay" then
  78. turtle.turnLeft()
  79. turtle.forward()
  80. elseif front == "minecraft:chest" then
  81. turtle.turnLeft()
  82. turtle.forward()
  83. turtle.turnRight()
  84. turtle.forward()
  85. turtle.turnLeft()
  86. turtle.down()
  87. turtle.back()
  88. status = 1
  89. else
  90. turtle.forward()
  91. end
  92. end
  93. end
  94.  
  95. function GetSeedCount()
  96. return turtle.getItemCount(2), turtle.getItemCount(3)
  97. end
  98.  
  99. function Replant()
  100. local seed1, seed2 = GetSeedCount()
  101. for i=2,3 do
  102. if seed1 > 0 then
  103. select(2)
  104. Replant()
  105. elseif seed2 > 0 then
  106. select(3)
  107. Replant()
  108. end
  109. end
  110. end
  111.  
  112. -- Checks if plant is ready to be harvested, or if soil needs retilling/replanting
  113. function CheckPlant()
  114. print("Inspecting farmland..")
  115. local under = GetBlock(3)
  116. if not under then
  117. print("Retilling..")
  118. turtle.digDown()
  119. Replant()
  120. elseif under.name == "minecraft:wheat" and under.metadata == 7 then
  121. print("Found mature plant, harvesting..")
  122. turtle.digDown()
  123. Replant()
  124. end
  125. end
  126.  
  127. function Farm()
  128. -- Are we full yet?
  129. if turtle.getItemCount(16) > 0 then
  130. status = 0
  131. elseif GetBlock(1) == "immersiveengineering:metal_decoration1"
  132. or GetBlock(1) == "minecraft:hardened_clay" then
  133. CheckPlant()
  134. if j == 0 then
  135. j = 1
  136. turtle.turnLeft()
  137. turtle.forward()
  138. CheckPlant()
  139. turtle.turnLeft()
  140. elseif j == 1 then
  141. j = 0
  142. turtle.turnRight()
  143. local front = GetBlock(1)
  144. if front == "immersiveengineering:metal_decoration1"
  145. or front == "minecraft:hardened_clay" then
  146. status = 0
  147. n = n + 1
  148. else
  149. turtle.forward()
  150. CheckPlant()
  151. turtle.turnRight()
  152. end
  153. end
  154. else
  155. turtle.forward()
  156. CheckPlant()
  157. end
  158. end
  159.  
  160. -- Main Loop
  161. while true do
  162. if turtle.getFuelLevel() < 10 then
  163. Refuel()
  164. end
  165. if status == 0 then
  166. print("Finding home..")
  167. Return()
  168. end
  169. if status == 1 then
  170. print("Refueling.. Storing.. Polishing..")
  171. DropOff()
  172. GrabFuel()
  173. print("Maintenance completed!")
  174. turtle.forward()
  175. turtle.up()
  176. status = 2
  177. if n % 2 == 0 and n > 0 then
  178. for i = 1,5 do
  179. print("Waiting: " .. 5-i .. " seconds for the plants to grow..")
  180. sleep(1)
  181. end
  182. n = 1
  183. end
  184. end
  185. if status == 2 then
  186. print("Farming..")
  187. Farm()
  188. end
  189. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement