Advertisement
Aixler

MineChest

Feb 10th, 2013
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.83 KB | None | 0 0
  1. --TODO continue after chunk reload
  2.  
  3. function printUsage()
  4.     print( "Usage:" )
  5.     print( "Mine <forward> <right> <down>" )
  6. end
  7.  
  8. tArgs = { ... }
  9. if #tArgs ~= 3 then
  10.     printUsage()
  11.     return
  12. elseif tonumber(tArgs[1]) == nil or tonumber(tArgs[2]) == nil or tonumber(tArgs[3]) == nil then
  13.     printUsage()
  14.     return
  15. end
  16.  
  17. dropped = 0
  18. attacked = 0
  19. turn = 0
  20. mined = 0
  21. deep = 3
  22. slot = 2
  23. turtle.select(slot)
  24. A = tonumber(tArgs[1])
  25. B = tonumber(tArgs[2])
  26. C = tonumber(tArgs[3])
  27.  
  28. if A < 1 or A > 256 then
  29.     print("forward must be between 1 and 256")
  30.     error()
  31. elseif B < 1 or B > 256 then
  32.     print("right must be between 1 and 256")
  33.     error()
  34. elseif C < 1 or C > 256 then
  35.     print("down must be between 1 and 256")
  36.     error()
  37. end
  38.  
  39. forward = A - 1
  40. right = B - 1
  41. down = math.floor(C / 3) - 1
  42. downRemaining = math.fmod(C,3)
  43.  
  44. if down < 0 then
  45.     down = 0
  46.     downRemaining = 0
  47. end
  48.  
  49. if C < 3 then
  50.     oneLayer = 0
  51. else
  52.     oneLayer = C - 3
  53. end
  54.  
  55. function fuel()
  56.     fuelNeeded = (A * B - 1) * math.ceil(C / 3) + oneLayer
  57.     fuelLevel = turtle.getFuelLevel()
  58.     fuelDifference = fuelNeeded - fuelLevel
  59.     fuelCoal = math.ceil(fuelDifference / 80)
  60.     if fuelLevel >= fuelNeeded then
  61.         print("*Fuel usage: ".. fuelNeeded .." out of ".. fuelLevel .."")
  62.         print("*Enough fuel to proceed")
  63.     else
  64.         print("*Need ".. fuelDifference .." more fuel (".. fuelCoal .." Coal)")
  65.         while fuelNeeded > fuelLevel do
  66.             C = C - 1
  67.             if C < 3 then
  68.                 oneLayer = 0
  69.             else
  70.                 oneLayer = C - 3
  71.             end
  72.         fuelNeeded = (A * B - 1) * math.ceil(C / 3) + oneLayer
  73.         end
  74.         print("*Max area with current fuel: ".. A .." ".. B .." ".. C .."")
  75.         print("*Shutting Down...")
  76.         error()
  77.     end
  78. end
  79.  
  80. fuel()
  81. print("'Put enough chests in slot 1'") --changed
  82. print("'Turtle will mine forward, right, down'")
  83. print("'Type in anything to start'")
  84.  
  85. io.read()
  86.  
  87. function full()
  88.     if turtle.getItemCount(16) > 0 then
  89.         dropOff()
  90.     end
  91. end
  92.  
  93. function dropOff() --changed
  94.     turtle.select(1)
  95.     while turtle.up() == false do
  96.         if turtle.digUp() == false then
  97.             turtle.attackUp()
  98.         end
  99.     end
  100.     while turtle.placeUp() == false do
  101.         if turtle.digUp() == false then
  102.             turtle.attackUp()
  103.         end
  104.     end
  105.     turtle.select(2)
  106.     slot = 2
  107.     for e=1, 15 do
  108.         turtle.select(slot)
  109.         turtle.dropUp()
  110.         slot = slot + 1
  111.     end
  112.     turtle.select(1)
  113.     while turtle.down() == false do
  114.         if turtle.digDown() == false then
  115.             turtle.attackDown()
  116.         end
  117.     end
  118.     dropped = dropped + 1
  119. end
  120.  
  121. function mine()
  122.     full()
  123.     while turtle.forward() == false do
  124.         if turtle.dig() == false then
  125.             turtle.attack()
  126.             mined = mined - 1
  127.             attacked = attacked + 1
  128.         end
  129.         mined = mined + 1
  130.     end
  131.  
  132.     full()
  133.     if turtle.digDown() == true then
  134.         mined = mined + 1
  135.     end
  136.     full()
  137.     if turtle.digUp() == true then
  138.         mined = mined + 1
  139.     end
  140. end
  141.  
  142. function line()
  143.     for x=1, forward do
  144.         mine()
  145.     end
  146. end
  147.  
  148. function square()
  149.     for y=1, right do
  150.         line()
  151.         if turn == 0 then
  152.             turtle.turnRight()
  153.             mine()
  154.             turtle.turnRight()
  155.             turn = turn + 1
  156.         else
  157.             turtle.turnLeft()
  158.             mine()
  159.             turtle.turnLeft()
  160.             turn = turn - 1
  161.         end
  162.     end
  163.     line()
  164. end
  165.  
  166. function cube()
  167.     full()
  168.     if turtle.digDown() == true then
  169.         mined = mined + 1
  170.     end
  171.     full()
  172.     if turtle.digUp() == true then
  173.         mined = mined + 1
  174.     end
  175.  
  176.     square()
  177.     for z=1, down do
  178.         digCube()
  179.     end
  180.     if downRemaining ~= 0 then
  181.         deep = downRemaining
  182.         digCube()
  183.     end
  184. end
  185.  
  186. function digCube()
  187.     for d=1, deep do
  188.         while turtle.down() == false do
  189.             if turtle.digDown() == false then
  190.                 turtle.attackDown()
  191.                 mined = mined - 1
  192.                 attacked = attacked + 1
  193.             end
  194.             mined = mined + 1
  195.         end
  196.     end
  197.     full()
  198.     if turtle.digDown() == true then
  199.         mined = mined + 1
  200.     end
  201.     turtle.turnRight()
  202.     turtle.turnRight()
  203.     square()
  204. end
  205.  
  206. cube()
  207. dropOff()
  208. print ("mined ".. mined .." blocks")
  209. print ("attacked ".. attacked .." times")
  210. print ("dropped off ".. dropped .." times")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement