Advertisement
Guest User

mega_mine

a guest
Mar 28th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. local command_arguments= {...}
  2.  
  3. local command_right_meters= tonumber(command_arguments[1])
  4. local command_forward_meters= tonumber(command_arguments[2])
  5.  
  6. local k_max_depth= 3
  7. local k_refueling_level= 10000
  8.  
  9. function travel_forward(
  10. forward_meters)
  11.  
  12. for index= 1,forward_meters do
  13. repeat
  14. while turtle.dig() do
  15. -- NOTE: We're potentially clearing stuff as it's falling in front of us.
  16. end
  17.  
  18. local moved_forward= turtle.forward() -- NOTE: We might fail if something just now fell in front of us.
  19.  
  20. if not moved_forward then
  21. sleep(0.5) -- Make sure we're not tight-looping the server.
  22. end
  23. until moved_forward
  24. end
  25. end
  26.  
  27. function travel_down(
  28. down_meters)
  29.  
  30. local result_moved_meters= 0
  31.  
  32. for index= 1,down_meters do
  33.  
  34. local below_is_filled, below_data= turtle.inspectDown()
  35.  
  36. if (below_is_filled and (below_data.name == "minecraft:bedrock")) then
  37. print("Found bedrock!")
  38. break
  39. end
  40.  
  41. turtle.digDown()
  42. local moved_down= turtle.down()
  43.  
  44. if (moved_down) then
  45. result_moved_meters= (result_moved_meters + 1)
  46. end
  47. end
  48.  
  49. return result_moved_meters
  50. end
  51.  
  52. function travel_up(
  53. up_meters)
  54.  
  55. for index= 1,up_meters do
  56. repeat
  57. while turtle.digUp() do
  58. -- NOTE: We're potentially clearing stuff as it's falling on our head.
  59. end
  60.  
  61. local moved_up= turtle.up() -- NOTE: We might fail if something just now fell onto us.
  62.  
  63. if not moved_up then
  64. sleep(0.5) -- Make sure we're not tight-looping the server.
  65. end
  66. until moved_up
  67. end
  68. end
  69.  
  70. function mega_mine(
  71. right_meters,
  72. forward_meters)
  73.  
  74. for right_index= 1,right_meters do
  75.  
  76. for bore_index= 1,math.ceil(forward_meters / 2) do
  77.  
  78. local forward_index= (((bore_index - 1) * 2) + 1)
  79.  
  80. -- Move to the bore hole.
  81. do
  82. travel_forward(forward_index-1)
  83. turtle.turnRight()
  84. travel_forward(right_index-1)
  85. turtle.turnLeft()
  86. end
  87.  
  88. -- Bore a two-column tunnel (or just one column if we're at the end).
  89. do
  90. local moved_down_meters= travel_down(k_max_depth)
  91.  
  92. if (forward_index < forward_meters) then
  93. travel_forward(1)
  94. forward_index= (forward_index + 1)
  95. end
  96.  
  97. travel_up(moved_down_meters)
  98. end
  99.  
  100. -- Return to the depot.
  101. do
  102. turtle.turnLeft()
  103. travel_forward(right_index - 1)
  104. turtle.turnLeft()
  105. travel_forward(forward_index - 1)
  106. end
  107.  
  108. -- Empty the entire inventory into the depot.
  109. for slot_index= 1,16 do
  110. turtle.select(slot_index)
  111. turtle.drop()
  112. end
  113.  
  114. turtle.turnRight()
  115.  
  116. -- Refuel.
  117. while (turtle.getFuelLevel() < k_refueling_level) do
  118.  
  119. local original_fuel_level= turtle.getFuelLevel()
  120.  
  121. turtle.suck(1)
  122. local refuel_success= turtle.refuel(1)
  123.  
  124. if refuel_success then
  125. print("Fueling +" .. (turtle.getFuelLevel() - original_fuel_level) .. ", now " .. turtle.getFuelLevel() .. "/" .. k_refueling_level .. ".")
  126. else
  127. print("Failed to refuel, waiting for fuel to arrive.")
  128. sleep(3.0)
  129. end
  130. end
  131.  
  132. turtle.turnRight()
  133. end
  134. end
  135. end
  136.  
  137. mega_mine(command_right_meters, command_forward_meters)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement