Advertisement
PhilHibbs

cc_turtle_room

Feb 5th, 2013
1,088
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.76 KB | None | 0 0
  1. local tArgs = { ... }
  2. if #tArgs ~= 1 then
  3.         print( "Usage: makeroom <size>" )
  4.         return
  5. end
  6. -- Mine in a spiral pattern
  7. local size = tonumber( tArgs[1] )
  8. if size < 1 then
  9.         print( "Room size must be positive" )
  10.         return
  11. end
  12.      
  13. local collected = 0
  14. local function collect()
  15.         collected = collected + 1
  16.         if math.fmod(collected, 25) == 0 then
  17.                 print( "Mined "..collected.." items." )
  18.         end
  19. end
  20. local function tryDig()
  21.         while turtle.detect() do
  22.                 if turtle.dig() then
  23.                         collect()
  24.                         sleep(0.5)
  25.                 else
  26.                         return false
  27.                 end
  28.         end
  29.         return true
  30. end
  31. local function tryDigUp()
  32.         while turtle.detectUp() do
  33.                 if turtle.digUp() then
  34.                         collect()
  35.                         sleep(0.5)
  36.                 else
  37.                         return false
  38.                 end
  39.         end
  40.         return true
  41. end
  42. local function tryDigDown()
  43.         while turtle.detectDown() do
  44.                 if turtle.digDown() then
  45.                         collect()
  46.                         sleep(0.5)
  47.                 else
  48.                         return false
  49.                 end
  50.         end
  51.         return true
  52. end
  53. local function refuel()
  54.         local fuelLevel = turtle.getFuelLevel()
  55.         if fuelLevel == "unlimited" or fuelLevel > 0 then
  56.                 return
  57.         end
  58.      
  59.         local function tryRefuel()
  60.                 for n=1,16 do
  61.                         if turtle.getItemCount(n) > 0 then
  62.                                 turtle.select(n)
  63.                                 if turtle.refuel(1) then
  64.                                         turtle.select(1)
  65.                                         return true
  66.                                 end
  67.                         end
  68.                 end
  69.                 turtle.select(1)
  70.                 return false
  71.         end
  72.      
  73.         if not tryRefuel() then
  74.                 print( "Add more fuel to continue." )
  75.                 while not tryRefuel() do
  76.                         sleep(1)
  77.                 end
  78.                 print( "Resuming Room." )
  79.         end
  80. end
  81. local function tryUp()
  82.         refuel()
  83.         while not turtle.up() do
  84.                 if turtle.detectUp() then
  85.                         if not tryDigUp() then
  86.                                 return false
  87.                         end
  88.                 elseif turtle.attackUp() then
  89.                         collect()
  90.                 else
  91.                         sleep( 0.5 )
  92.                 end
  93.         end
  94.         return true
  95. end
  96. local function tryDown()
  97.         refuel()
  98.         while not turtle.down() do
  99.                 if turtle.detectDown() then
  100.                         if not tryDigDown() then
  101.                                 return false
  102.                         end
  103.                 elseif turtle.attackDown() then
  104.                         collect()
  105.                 else
  106.                         sleep( 0.5 )
  107.                 end
  108.         end
  109.         return true
  110. end
  111. local function tryForward()
  112.         refuel()
  113.         while not turtle.forward() do
  114.                 if turtle.detect() then
  115.                         if not tryDig() then
  116.                                 return false
  117.                         end
  118.                 elseif turtle.attack() then
  119.                         collect()
  120.                 else
  121.                         sleep( 0.5 )
  122.                 end
  123.         end
  124.         return true
  125. end
  126. local function channelForward(length)
  127.    refuel()
  128.    for i=1,length do
  129.       tryDigUp()
  130.       tryDigDown()
  131.       tryForward()
  132.   end
  133.   return true
  134. end
  135. print( "Making Room..." )
  136. n=1
  137. while n < size do
  138.         channelForward(n)
  139. turtle.turnRight()
  140.         channelForward(n)
  141. turtle.turnRight()
  142. n=n+1
  143. end
  144. channelForward(n-1)
  145. tryDigUp()
  146. tryDigDown()
  147. print( "Room complete." )
  148. print( "Mined "..collected.." items total." )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement