Advertisement
officialVoice

Mining Turtle Intelligent Quarry

Apr 22nd, 2025 (edited)
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.02 KB | Gaming | 0 0
  1. io.write("Length of the side example: 5 = 5x5 ")
  2. local size = tonumber(read())
  3.  
  4. io.write("Start Y-Level (e.g. 64): ")
  5. local currentHeight = tonumber(read())
  6. local startY = currentHeight
  7.  
  8. local targetHeight = -30
  9. local areasize = size * size
  10.  
  11.  
  12.  
  13. -- Fläche vorwärts graben
  14. local function digLayerForward()
  15.     for row = 1, size do
  16.         for col = 1, size - 1 do
  17.             turtle.dig()
  18.             turtle.forward()
  19.         end
  20.         if row < size then
  21.             if row % 2 == 1 then
  22.                 turtle.turnRight()
  23.                 turtle.dig()
  24.                 turtle.forward()
  25.                 turtle.turnRight()
  26.             else
  27.                 turtle.turnLeft()
  28.                 turtle.dig()
  29.                 turtle.forward()
  30.                 turtle.turnLeft()
  31.             end
  32.         end
  33.     end
  34. end
  35.  
  36. -- Fläche rückwärts graben
  37. local function digLayerBackward(odd)
  38.   if odd == true then
  39.       for row = 1, size do
  40.           for col = 1, size - 1 do
  41.               turtle.dig()
  42.               turtle.forward()
  43.           end
  44.           if row < size then
  45.               if row % 2 == 1 then
  46.                   turtle.turnRight()
  47.                   turtle.dig()
  48.                   turtle.forward()
  49.                   turtle.turnRight()
  50.               else
  51.                   turtle.turnLeft()
  52.                   turtle.dig()
  53.                   turtle.forward()
  54.                   turtle.turnLeft()
  55.               end
  56.           end
  57.       end
  58.   else
  59.       for row = 1, size do
  60.           for col = 1, size - 1 do
  61.               turtle.dig()
  62.               turtle.forward()
  63.           end
  64.           if row < size then
  65.               if row % 2 == 1 then
  66.                   turtle.turnLeft()
  67.                   turtle.dig()
  68.                   turtle.forward()
  69.                   turtle.turnLeft()
  70.               else
  71.                   turtle.turnRight()
  72.                   turtle.dig()
  73.                   turtle.forward()
  74.                   turtle.turnRight()
  75.               end
  76.           end
  77.       end
  78.   end
  79. end
  80.  
  81. local unwanted = { cobblestone=true, dirt=true, grass=true, cobbled_deepslate=true, gravel=true }
  82. local function cleanupInventory()
  83.   for i=1,16 do
  84.     local d = turtle.getItemDetail(i)
  85.     if d and unwanted[d.name:match(".+:(.+)")] then
  86.       turtle.select(i); turtle.drop()
  87.     end
  88.   end
  89.   turtle.select(1)
  90. end
  91.  
  92.  
  93. local function isInventoryFull()
  94.     cleanupInventory()
  95.  
  96.     local maxvalue = areasize * 2
  97.     if maxvalue > 800 then
  98.         maxvalue = 800
  99.     end
  100.  
  101.  
  102.  
  103.     local cnt=0
  104.     for i=1,16 do cnt=cnt + turtle.getItemCount(i) end
  105.     print("Inventar: " .. cnt)
  106.     return cnt >= maxvalue
  107. end
  108.  
  109. local function goHomeAndBack()
  110.     local layer = (startY - currentHeight) + 1
  111.  
  112.     -- nach oben zur Startposition (bei der Kiste)
  113.     while turtle.detectUp() do turtle.digUp(); sleep(0.2) end
  114.     while currentHeight < startY do
  115.         turtle.up()
  116.         currentHeight = currentHeight + 1
  117.     end
  118.  
  119.     -- Kiste ist direkt hinter der Turtle
  120.     turtle.turnLeft()
  121.     turtle.turnLeft()
  122.  
  123.     -- Items droppen
  124.     for i = 2, 16 do
  125.         turtle.select(i)
  126.         turtle.drop()
  127.     end
  128.     turtle.select(1)
  129.  
  130.     turtle.turnLeft()
  131.     turtle.turnLeft()
  132.  
  133.     -- zurück auf das alte Y-Level
  134.     while turtle.detectDown() do turtle.digDown(); sleep(0.2) end
  135.     while currentHeight > (startY - layer + 1) do
  136.         turtle.down()
  137.         currentHeight = currentHeight - 1
  138.     end
  139. end
  140.  
  141.  
  142.  
  143. local function moveCoalToSlot1()
  144.     turtle.select(1)
  145.     for i=2,16 do
  146.       local it = turtle.getItemDetail(i)
  147.       if it and it.name=="minecraft:coal" then
  148.         turtle.transferTo(1, turtle.getItemCount(i))
  149.         break
  150.       end
  151.     end
  152.     turtle.select(1)
  153. end
  154.  
  155. local function fuelCheck()
  156.     moveCoalToSlot1()
  157.     turtle.select(1)
  158.  
  159.     local coalusage = areasize / 80
  160.     local coalusageround = math.ceil(coalusage)
  161.  
  162.  
  163.  
  164.  
  165.     local d = turtle.getItemDetail()
  166.     if d and d.name=="minecraft:coal" then
  167.       turtle.refuel(coalusageround); return
  168.     else
  169.         print("No Coal")
  170.     end
  171. end
  172.  
  173.  
  174.  
  175. -- Hauptloop
  176. while currentHeight > targetHeight do
  177.     fuelCheck()
  178.     if isInventoryFull() then
  179.         goHomeAndBack()
  180.     end
  181.     digLayerForward()
  182.     turtle.turnLeft()
  183.     turtle.turnLeft()
  184.     while turtle.detectDown() do
  185.       turtle.digDown()
  186.       sleep(0.4)
  187.     end
  188.     if turtle.down() then
  189.       currentHeight = currentHeight - 1
  190.       print("Aktuelle Höhe: " .. currentHeight)
  191.     else
  192.       print("Konnte nicht nach unten.")
  193.       break -- ✅ jetzt korrekt innerhalb der while-Schleife
  194.     end
  195.     digLayerBackward(size % 2 == 1)
  196.     turtle.turnLeft()
  197.     turtle.turnLeft()
  198.     while turtle.detectDown() do
  199.       turtle.digDown()
  200.       sleep(0.4)
  201.     end
  202.     if turtle.down() then
  203.       currentHeight = currentHeight - 1
  204.       print("Aktuelle Höhe: " .. currentHeight)
  205.     else
  206.       print("Konnte nicht nach unten.")
  207.       break -- ✅ jetzt korrekt innerhalb der while-Schleife
  208.     end
  209.  
  210.     -- nach unten graben
  211. end
  212.  
  213. print("Fertig!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement