BrainStone

OreRecursion3

Dec 19th, 2015
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.52 KB | None | 0 0
  1. local blacklist = {
  2. "minecraft:stone",
  3. "minecraft:gravel",
  4. "minecraft:dirt",
  5. "minecraft:grass",
  6. "minecraft:cobblestone",
  7. "minecraft:lava",
  8. "minecraft:flowing_lava",
  9. "minecraft:water",
  10. "minecraft:flowing_water",
  11. "chisel:marble",
  12. "chisel:granite",
  13. "chisel:diorite",
  14. "chisel:andesite",
  15. "ProjRed|Exploration:projectred.exploration.stone"
  16. }
  17.  
  18. function statusScreen(level)
  19.   term.clear()
  20.   term.setCursorPos(1, 1)
  21.   print("Fuel:            " .. (turtle.getFuelLevel() / turtle.getFuelLimit() * 100) .. "%")
  22.   print("Depth of search: " .. level .. "/256")
  23. end
  24.  
  25. function mineOre(level)
  26.   level = level + 1
  27.   statusScreen(level)
  28.  
  29.   local up = mineUp()
  30.   local front = mineFront()
  31.   local down = mineDown()
  32.  
  33.   turtle.turnLeft()
  34.  
  35.   local left = mineFront()
  36.  
  37.   turtle.turnLeft()
  38.  
  39.   local back = mineFront()
  40.  
  41.   turtle.turnLeft()
  42.  
  43.   local right = mineFront()
  44.  
  45.   if right then
  46.     while not turtle.forward() do
  47.       turtle.attack()
  48.       turtle.dig()
  49.     end
  50.    
  51.     mineOre(level)
  52.    
  53.     while not turtle.back() do
  54.       turtle.turnLeft()
  55.       turtle.turnLeft()
  56.      
  57.       turtle.attack()
  58.       turtle.dig()
  59.      
  60.       turtle.turnLeft()
  61.       turtle.turnLeft()
  62.     end
  63.   end
  64.  
  65.   if back then
  66.     turtle.turnRight()
  67.    
  68.     while not turtle.forward() do
  69.       turtle.attack()
  70.       turtle.dig()
  71.     end
  72.    
  73.     mineOre(level)
  74.    
  75.     while not turtle.back() do
  76.       turtle.turnLeft()
  77.       turtle.turnLeft()
  78.      
  79.       turtle.attack()
  80.       turtle.dig()
  81.      
  82.       turtle.turnLeft()
  83.       turtle.turnLeft()
  84.     end
  85.    
  86.     turtle.turnRight()
  87.    
  88.     if left then
  89.       while not turtle.forward() do
  90.         turtle.attack()
  91.         turtle.dig()
  92.       end
  93.      
  94.       mineOre(level)
  95.      
  96.       while not turtle.back() do
  97.         turtle.turnLeft()
  98.         turtle.turnLeft()
  99.        
  100.         turtle.attack()
  101.         turtle.dig()
  102.        
  103.         turtle.turnLeft()
  104.         turtle.turnLeft()
  105.       end
  106.     end
  107.    
  108.     turtle.turnRight()
  109.    
  110.     if front then
  111.       while not turtle.forward() do
  112.         turtle.attack()
  113.         turtle.dig()
  114.       end
  115.      
  116.       mineOre(level)
  117.      
  118.       while not turtle.back() do
  119.         turtle.turnLeft()
  120.         turtle.turnLeft()
  121.        
  122.         turtle.attack()
  123.         turtle.dig()
  124.        
  125.         turtle.turnLeft()
  126.         turtle.turnLeft()
  127.       end
  128.     end
  129.   else
  130.     turtle.turnLeft()
  131.    
  132.     if front then
  133.       while not turtle.forward() do
  134.         turtle.attack()
  135.         turtle.dig()
  136.       end
  137.      
  138.       mineOre(level)
  139.      
  140.       while not turtle.back() do
  141.         turtle.turnLeft()
  142.         turtle.turnLeft()
  143.        
  144.         turtle.attack()
  145.         turtle.dig()
  146.        
  147.         turtle.turnLeft()
  148.         turtle.turnLeft()
  149.       end
  150.     end
  151.    
  152.     if left then
  153.       turtle.turnLeft()
  154.    
  155.       while not turtle.forward() do
  156.         turtle.attack()
  157.         turtle.dig()
  158.       end
  159.      
  160.       mineOre(level)
  161.      
  162.       while not turtle.back() do
  163.         turtle.turnLeft()
  164.         turtle.turnLeft()
  165.        
  166.         turtle.attack()
  167.         turtle.dig()
  168.        
  169.         turtle.turnLeft()
  170.         turtle.turnLeft()
  171.       end
  172.      
  173.       turtle.turnRight()
  174.     end
  175.   end
  176.  
  177.   if up then
  178.     while not turtle.up() do
  179.       turtle.attackUp()
  180.       turtle.digUp()
  181.     end
  182.    
  183.     mineOre(level)
  184.    
  185.     while not turtle.down() do
  186.       turtle.attackDown()
  187.       turtle.digDown()
  188.     end
  189.   end
  190.  
  191.   if down then
  192.     while not turtle.down() do
  193.       turtle.attackDown()
  194.       turtle.digDown()
  195.     end
  196.    
  197.     mineOre(level)
  198.    
  199.     while not turtle.up() do
  200.       turtle.attackUp()
  201.       turtle.digUp()
  202.     end
  203.   end
  204.  
  205.   statusScreen(level)
  206. end
  207.  
  208. function mineFront()
  209.   local success, block = turtle.inspect()
  210.   local shouldMine = success and (blacklist[block.name] == nil)
  211.  
  212.   if shouldMine then
  213.     turtle.dig()
  214.   end
  215.  
  216.   return shouldMine
  217. end
  218.  
  219. function mineDown()
  220.   local success, block = turtle.inspectDown()
  221.   local shouldMine = success and (blacklist[block.name] == nil)
  222.  
  223.   if shouldMine then
  224.     turtle.digDown()
  225.   end
  226.  
  227.   return shouldMine
  228. end
  229.  
  230. function mineUp()
  231.   local success, block = turtle.inspectUp()
  232.   local shouldMine = success and (blacklist[block.name] == nil)
  233.  
  234.   if shouldMine then
  235.     turtle.digUp()
  236.   end
  237.  
  238.   return shouldMine
  239. end
  240.  
  241. function set(list)
  242.   local set = {}
  243.   for _, l in ipairs(list) do set[l] = true end
  244.   return set
  245. end
  246.  
  247. blacklist = set(blacklist)
  248.  
  249. mineOre(0)
Advertisement
Add Comment
Please, Sign In to add comment