eniallator

Cube miner

Apr 5th, 2017
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.93 KB | None | 0 0
  1. --[[
  2. Receives 3 arguments;
  3. first argument is how many blocks in front the turtle will go,
  4. second is how high it will go and
  5. third is how many blocks to the right it will go.
  6. ]]
  7.  
  8. function move(direction)
  9.   if direction == "up" then
  10.     while turtle.up() == false do
  11.       turtle.digUp()
  12.       turtle.attackUp()
  13.     end
  14.  
  15.   elseif direction == "forward" then
  16.     while turtle.forward() == false do
  17.       turtle.dig()
  18.       turtle.attack()
  19.     end
  20.  
  21.   elseif direction == "down" then
  22.     while turtle.down() == false do
  23.       turtle.digDown()
  24.       turtle.attackDown()
  25.     end
  26.   end
  27. end
  28.  
  29. cube = function(item)
  30.   if item[1] ~= nil and item[2] ~= nil and item[3] ~= nil and tonumber(item[1]) and tonumber(item[2]) and tonumber(item[3]) and tonumber(item[1]) > 0 and tonumber(item[2]) > 0 and tonumber(item[3]) > 0 then
  31.     for i=1,3 do
  32.       item[i] = tonumber(item[i])
  33.     end
  34.  
  35.     print("Mining out a " .. item[1] .. " x " .. item[2] .. " x " .. item[3] .. " cuboid")
  36.     local xDist = item[1]
  37.     local yDist = item[2]
  38.     local zDist = item[3]
  39.     local i = 0
  40.     local levelsMined = 0
  41.  
  42.     function checkBreak()
  43.       if yDist - levelsMined > 1 then
  44.         turtle.digUp()
  45.       end
  46.  
  47.       if yDist - levelsMined > 2 then
  48.         turtle.digDown()
  49.       end
  50.     end
  51.  
  52.     function line()
  53.       for k=1,xDist-1 do
  54.         move("forward")
  55.         checkBreak()
  56.       end
  57.     end
  58.  
  59.     function nextLine(direction)
  60.       direction()
  61.       move("forward")
  62.       checkBreak()
  63.       direction()
  64.     end
  65.  
  66.     function layer(level)
  67.       if yDist - levelsMined > 2 then
  68.         move("up")
  69.       end
  70.  
  71.       checkBreak()
  72.       line()
  73.  
  74.       if zDist%2 == 1 then
  75.         level = 0
  76.       end
  77.  
  78.       for j=1,zDist-1 do
  79.         if (level+j)%2 == 1 then
  80.           nextLine(turtle.turnRight)
  81.          
  82.         else
  83.           nextLine(turtle.turnLeft)
  84.         end
  85.  
  86.         line()
  87.       end
  88.  
  89.       if yDist - levelsMined > 2 then
  90.         levelsMined = levelsMined + 3
  91.  
  92.       elseif yDist - levelsMined > 1 then
  93.         levelsMined = levelsMined + 2
  94.        
  95.       else
  96.         levelsMined = levelsMined + 1
  97.       end
  98.     end
  99.  
  100.     move("forward")
  101.     layer(0)
  102.     local level = 0
  103.  
  104.     while yDist - levelsMined > 0 do
  105.       for l=1,2 do move("up") end
  106.       for l=1,2 do turtle.turnRight() end
  107.  
  108.       level = level + 1
  109.       layer(level)
  110.     end
  111.  
  112.     local rightTurns = 2
  113.  
  114.     if level%2 == 0 then
  115.       if zDist%2 == 1 then
  116.         for i=1,2 do turtle.turnRight() end
  117.         for i=1,xDist-1 do move("forward") end
  118.       end
  119.  
  120.       turtle.turnRight()
  121.       for i=1,zDist-1 do move("forward") end
  122.       rightTurns = 1
  123.     end
  124.  
  125.     local yOffset = 2
  126.     if yDist % 3 == 1 then yOffset = 1 end
  127.  
  128.     for i=1,yDist-yOffset do move("down") end
  129.     for i=1,rightTurns do turtle.turnRight() end
  130.    
  131.   else
  132.     print("Invalid dimensions, use 3 numbers bigger than 0")
  133.   end
  134. end
  135.  
  136. cube({...})
Advertisement
Add Comment
Please, Sign In to add comment