JonasKrahnDE

Untitled

Nov 22nd, 2020 (edited)
684
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. reservedSlots={15,16};
  2.  
  3. function getFreeSlots()
  4.     local counter=0;
  5.     for i=1,16
  6.     do
  7.         if turtle.getItemCount(i)==0 then
  8.             counter=counter+1;
  9.         end
  10.     end
  11.     return counter;
  12. end
  13.  
  14. function arrayContains(array,value)
  15.     for i=0,table.getn(array)
  16.     do
  17.         if array[i]==value then
  18.             return true;
  19.         end
  20.         return false;
  21.     end
  22. end
  23.  
  24. function storeItemsInChest()
  25.     for i=1,16
  26.     do
  27.         if not arrayContains(reservedSlots,i) then
  28.             turtle.select(i);
  29.             turtle.drop(64);
  30.         end
  31.     end
  32.     turtle.select(1);
  33. end
  34.  
  35. function returnToMiningLocation(x,z)
  36.     turtle.turnRight();
  37.     turtle.turnRight();
  38.     if direction==0 then
  39.         for i=0,x
  40.         do
  41.             turtle.forward();
  42.         end
  43.     else
  44.         for i=0,(xMax-x-1)
  45.         do
  46.             turtle.forward();
  47.         end
  48.     end
  49.     turtle.turnLeft();
  50.     for i=0,z-1
  51.     do
  52.         turtle.forward();
  53.     end
  54.     if direction==0 then
  55.         turtle.turnRight();
  56.     else
  57.         turtle.turnLeft();
  58.     end
  59. end
  60.  
  61. function goToChest(x,z)
  62.     if direction==0 then
  63.         turtle.turnRight();
  64.     else
  65.         turtle.turnLeft();
  66.     end
  67.     for i=0,z
  68.     do
  69.         turtle.forward();
  70.     end
  71.     turtle.turnRight();
  72.     if direction==0 then
  73.         for i=0,x
  74.         do
  75.             turtle.forward();
  76.         end
  77.     else
  78.         for i=0,(xMax-x)
  79.         do
  80.             turtle.forward();
  81.         end
  82.     end
  83. end
  84.  
  85. function storeInChestIfNeeded(x,z)
  86.     if getFreeSlots() <= 3 then
  87.         goToChest(x,z);
  88.         storeItemsInChest();
  89.         returnToMiningLocation(x,z);
  90.     end
  91. end
  92.  
  93. function normalMineStep()
  94.     turtle.refuel(64);
  95.     turtle.dig();
  96.     turtle.forward();
  97.     turtle.digUp();
  98. end
  99.  
  100. function mineGravel()
  101.     local success,data = turtle.inspect();
  102.     while success and data.name=="minecraft:gravel"
  103.     do
  104.         turtle.dig();
  105.         sleep(1);
  106.         success,data = turtle.inspect();
  107.     end
  108. end
  109.  
  110. function mineStep()
  111.     mineGravel();
  112.     normalMineStep();
  113. end
  114.  
  115. function turn()
  116.     if direction == 0 then
  117.         turtle.turnLeft();
  118.     else
  119.         turtle.turnRight();
  120.     end
  121. end
  122.    
  123. function mine()
  124.     -- Anzahl Reihen, welche abgebaut werden
  125.     for z=0,zMax
  126.     do
  127.         -- Blöcke, welche die turtle nach vorne abbaut
  128.         for x=0,xMax
  129.         do
  130.             mineStep();
  131.             storeInChestIfNeeded(x,z);
  132.             print(z);
  133.         end
  134.         -- Wenn die letzte Reihe erreicht ist soll sich die turtle nicht nochmal drehen
  135.         if z~= zMax then
  136.             turn();
  137.             mineStep();
  138.             turn();
  139.             direction = (direction+1) % 2;
  140.         end
  141.     end
  142. end
  143.  
  144. function main()
  145.     mine();
  146. end
  147.  
  148. print ("Wie viele Blöcke soll die Turtle nach vorne minen?")
  149. xMax = tonumber(read())-1;
  150. print("Wie viele Reihen soll die Turtle minen?");
  151. zMax = tonumber(read())-1;
  152.  
  153. direction=0;
  154. main();
RAW Paste Data