jseely

mineshaft

Nov 15th, 2012
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1. wood = {}
  2. nextColDir = "up"
  3. nextRowDir = "right"
  4.  
  5. function digTunnel(length)
  6. for i = 1, length, 1 do
  7. for k = 1, 4, 1 do
  8. if not digSide(nextColDir) then
  9. return false
  10. end
  11. invFull("back", 2)
  12. nextColDir = swapColDir(nextColDir)
  13. turn(nextRowDir)
  14. nextRowDir = swapRowDir(nextRowDir)
  15. for j = 1, 3, 1 do
  16. if not digCenter(nextColDir) then
  17. return false
  18. end
  19. invFull("back", 2)
  20. nextColDir = swapColDir(nextColDir)
  21. end
  22. if not digSide(nextColDir) then
  23. return false
  24. end
  25. invFull("back", 2)
  26. nextColDir = swapColDir(nextColDir)
  27. turn(nextRowDir)
  28. end
  29. if not addSupports() then
  30. return false
  31. end
  32. invFull(nextRowDir, 2)
  33. end
  34. return true
  35. end
  36.  
  37. function addSupports()
  38. turn(nextRowDir)
  39. forward()
  40. turn(nextRowDir)
  41. forward()
  42. turn(nextRowDir)
  43. if not placeBeams(nextColDir) then
  44. return false
  45. end
  46. nextColDir = swapColDir(nextColDir)
  47. turn(nextRowDir)
  48. turn(nextRowDir)
  49. nextRowDir = swapRowDir(nextRowDir)
  50. forward()
  51. if nextColDir == "up" then
  52. digDown()
  53. if not placeWood("down") then
  54. return false
  55. end
  56. up()
  57. up()
  58. if not placeWood("up") then
  59. return false
  60. end
  61. elseif nextColDir == "down" then
  62. if not placeWood("up") then
  63. return false
  64. end
  65. down()
  66. down()
  67. digDown()
  68. if not placeWood("down") then
  69. return false
  70. end
  71. end
  72. nextColDir = swapColDir(nextColDir)
  73. forward()
  74. if not placeBeams(nextColDir) then
  75. return false
  76. end
  77. nextColDir = swapColDir(nextColDir)
  78. turn(nextRowDir)
  79. nextRowDir = swapRowDir(nextRowDir)
  80. forward()
  81. turn(nextRowDir)
  82. forward()
  83. nextRowDir = swapRowDir(nextRowDir)
  84. turn(nextRowDir)
  85. return true
  86. end
  87.  
  88. function placeBeams(direction)
  89. success = true
  90. if direction == "up" then
  91. digDown()
  92. sucess = placeWood("down")
  93. sucess = placeWood("front")
  94. up()
  95. sucess = placeWood("front")
  96. up()
  97. sucess = placeWood("front")
  98. sucess = placeWood("up")
  99. elseif direction == "down" then
  100. sucess = placeWood("up")
  101. sucess = placeWood("front")
  102. down()
  103. sucess = placeWood("front")
  104. down()
  105. digDown()
  106. sucess = placeWood("front")
  107. sucess = placeWood("down")
  108. end
  109. return success
  110. end
  111.  
  112. function digSide(direction)
  113. local success = true
  114. dig()
  115. forward()
  116. if direction == "up" then
  117. digDown()
  118. success = placeWood("down")
  119. for i = 1, 2, 1 do
  120. digUp()
  121. up()
  122. end
  123. digUp()
  124. success = placeWood("up")
  125. else
  126. digUp()
  127. success = placeWood("up")
  128. for i = 1, 2, 1 do
  129. digDown()
  130. down()
  131. end
  132. digDown()
  133. success = placeWood("down")
  134. end
  135. return success
  136. end
  137.  
  138. function digCenter(direction)
  139. local success = true
  140. dig()
  141. forward()
  142. if direction == "up" then
  143. digUp()
  144. up()
  145. digUp()
  146. up()
  147. digUp()
  148. else
  149. digUp()
  150. for i = 1, 2, 1 do
  151. digDown()
  152. down()
  153. end
  154. end
  155. return success
  156. end
  157.  
  158. function placeWood(dir)
  159. hasWood = true
  160. if (wood == nil) or (sum(wood) == 0) then
  161. hasWood = findWood()
  162. end
  163. if not hasWood then
  164. return false
  165. end
  166.  
  167. woodSlot = 1
  168. for i = 1, 14, 1 do
  169. if wood[i] > 0 then
  170. woodSlot = i
  171. end
  172. end
  173. turtle.select(woodSlot)
  174. success = true
  175. if dir == "front" then
  176. success = turtle.place()
  177. elseif dir == "up" then
  178. success = turtle.placeUp()
  179. elseif dir == "down" then
  180. success = turtle.placeDown()
  181. end
  182. wood[woodSlot] = turtle.getItemCount(woodSlot)
  183. return success
  184. end
  185.  
  186. function findWood()
  187. for i = 1, 14, 1 do
  188. turtle.select(i)
  189. wood[i] = turtle.getItemCount(i)
  190. end
  191. if not (sum(wood) == 0) then
  192. return true
  193. else
  194. return false
  195. end
  196. end
Advertisement
Add Comment
Please, Sign In to add comment