Advertisement
MagmaLP

Mining Turtle Schnell Farmen

Sep 3rd, 2020 (edited)
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.46 KB | None | 0 0
  1. --Header
  2.  
  3. local tArgs = { ... }
  4. if #tArgs ~= 3 then
  5.     print( "Syntax: adv_excavate <length> <height> <width>" )
  6.     return
  7. end
  8.  
  9. local target = {
  10.     x = math.ceil( tonumber(tArgs[1]) ),
  11.     y = math.ceil( tonumber(tArgs[2]) ),
  12.     z = math.ceil( tonumber(tArgs[3]) )
  13. }
  14.  
  15. if (target.x < 1) or (target.y < 1) or (target.z < 1) then
  16.     print( "Volume must be greater than or equal to 1 block" )
  17.     return
  18. end
  19.  
  20. local volume = target.x * target.y * target.z
  21. local number_of_layers = math.ceil(target.y / 3)
  22. local path_length = (number_of_layers * target.x * target.z) + (target.y - 1) + 1       --full layers + movement between layers + initial move downwards
  23. local fuel =  turtle.getFuelLevel()
  24.  
  25. if (fuel < path_length) then
  26.     print("Not enough fuel. Please refuel first!")
  27.     print("Fuel needed: "..path_length)
  28.     print("Fuel stored: "..fuel)
  29.     return
  30. end
  31.  
  32. --Header Ende
  33.  
  34.  
  35.  
  36. --Funktionen
  37.  
  38. --shortcuts
  39. function downwardsMove()        --auch initaler Move
  40.     if turtle.detectDown() then
  41.         turtle.digDown()
  42.     end
  43.     turtle.down()
  44. end
  45.  
  46. function dig()
  47.     if turtle.detect() then
  48.         turtle.dig()
  49.     end
  50. end
  51.  
  52. function digUp()
  53.     if turtle.detectUp() then
  54.         turtle.digUp()
  55.     end
  56. end
  57.  
  58. function digDown()
  59.     if turtle.detectDown() then
  60.         turtle.digDown()
  61.     end
  62. end
  63. --shortcuts ende
  64.  
  65.  
  66. function singleDig(layer, row, step)
  67.     if not (step == target.x) then
  68.         dig()
  69.     end
  70.     if not ( (layer == number_of_layers) and (target.y%3 == 1) ) then
  71.         digUp()
  72.     end
  73.     if not ( (layer == number_of_layers) and not (target.y%3 == 0) ) then
  74.         digDown()
  75.     end
  76. end
  77.  
  78. function singleStep(layer, row, step)
  79.     singleDig(layer, row, step)
  80.     if not (step == target.x) then
  81.         while not turtle.forward() do
  82.             singleDig(layer, row, step)
  83.         end
  84.     end
  85. end
  86.  
  87. function singleRow(layer, row)
  88.     for step = 1, target.x do
  89.         singleStep(layer, row, step)    
  90.     end
  91. end
  92.  
  93. function turn(layer, row)
  94.     if (target.z%2 == 0) and (layer%2 == 0) then    --Spezialfall Spiegelung wenn z gerade und layer gerade
  95.         if (row%2 == 1) then
  96.             turtle.turnLeft()
  97.         elseif (row%2 == 0) then
  98.             turtle.turnRight()
  99.         end
  100.     else        --z ungerade oder ungerade layer
  101.         if (row%2 == 1) then
  102.             turtle.turnRight()
  103.         elseif (row%2 == 0) then
  104.             turtle.turnLeft()
  105.         end
  106.     end
  107. end
  108.  
  109. function singleLayer(layer)
  110.     for row = 1,  target.z do
  111.         singleRow(layer, row)
  112.         if not (row == target.z) then
  113.             turn(layer, row)
  114.             while not turtle.forward() do
  115.                 turtle.dig()
  116.             end
  117.             turn(layer, row)
  118.         end
  119.     end
  120. end
  121.  
  122. function excavate()
  123.     downwardsMove()
  124.     if not (target.y == 1) then
  125.         downwardsMove()
  126.     end
  127.     for layer = 1, number_of_layers do
  128.         singleLayer(layer)
  129.         if not (layer == number_of_layers - 1) then
  130.             steps = 3
  131.         elseif (layer == number_of_layers - 1) and (target.y%3 == 1) then
  132.             steps = 2
  133.         else
  134.             steps = 3
  135.         end
  136.         if not (layer == number_of_layers) then
  137.             for i = 1, steps do
  138.                 downwardsMove()
  139.             end
  140.             turtle.turnLeft()
  141.             turtle.turnLeft()
  142.         end
  143.     end
  144. end
  145.  
  146. --Funktionen Ende
  147.  
  148.  
  149.  
  150. --Programm
  151. excavate()
  152.  
  153.  
  154.     --Programm Ende
  155.  
  156.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement