Difference between revisions of "Cobble Generator"

From ComputerCraft Wiki
Jump to: navigation, search
m (Colors)
m (Coding)
Line 28: Line 28:
 
  <span style="color:blue">end</span>
 
  <span style="color:blue">end</span>
 
This detects if a block is present, and then mines it.
 
This detects if a block is present, and then mines it.
However, when all the 9 block spaces are filled with blocks (9*64=576 blocks), they must be dropped to collect new blocks:
+
However, when all the 16 block spaces are filled with blocks, they must be dropped to collect new blocks:
 
  <span style="color:blue">while true do</span>
 
  <span style="color:blue">while true do</span>
 
   <span style="color:green">if turtle.detect() then</span>
 
   <span style="color:green">if turtle.detect() then</span>
 
   <span style="color:red">turtle.dig()</span>
 
   <span style="color:red">turtle.dig()</span>
 
   <span style="color:green">end</span>
 
   <span style="color:green">end</span>
   <span style="color:DarkViolet">itemcount = turtle.getItemCount(9)</span>
+
   <span style="color:DarkViolet">itemcount = turtle.getItemCount(16)</span>
 
   <span style="color:green">if itemcount == 64 then</span>
 
   <span style="color:green">if itemcount == 64 then</span>
 
   ''''Drop all stacks
 
   ''''Drop all stacks
Line 46: Line 46:
 
   <span style="color:DarkViolet">itemcount = turtle.getItemCount(9)</span>
 
   <span style="color:DarkViolet">itemcount = turtle.getItemCount(9)</span>
 
   <span style="color:green">if itemcount == 64 then</span>
 
   <span style="color:green">if itemcount == 64 then</span>
   <span style="color:DarkCyan">for i=1,9 do</span>
+
   <span style="color:DarkCyan">for i=1,16 do</span>
 
   ''''Select each stack and then drops it
 
   ''''Select each stack and then drops it
 
   <span style="color:DarkCyan">end</span>
 
   <span style="color:DarkCyan">end</span>
Line 56: Line 56:
 
   <span style="color:red">turtle.dig()</span>
 
   <span style="color:red">turtle.dig()</span>
 
   <span style="color:green">end</span>
 
   <span style="color:green">end</span>
   <span style="color:DarkViolet">itemcount = turtle.getItemCount(9)</span>
+
   <span style="color:DarkViolet">itemcount = turtle.getItemCount(16)</span>
 
   <span style="color:green">if itemcount == 64 then</span>
 
   <span style="color:green">if itemcount == 64 then</span>
   <span style="color:DarkCyan">for i=1,9 do</span>
+
   <span style="color:DarkCyan">for i=1,16 do</span>
 
     <span style="color:red">turtle.select(i)<span>
 
     <span style="color:red">turtle.select(i)<span>
 
     <span style="color:red">turtle.drop()<span>
 
     <span style="color:red">turtle.drop()<span>

Revision as of 19:30, 26 January 2013

Colors

Run Loop: while true do
If: if a==b then
Action: turtle.dig()
Var: a = turtle.getItemCount(1)
Print: Print("Cobble Farm")
For: for i=1,16 do

Image

SmallGen.png

Coding

First, you have to make a loop so the machine keeps running:

while true do
 'Command
end

Now, inside of the loop, you have to add something to detect the block:

while true do
 if turtle.detect() then
 'Command
 end
end

After that, the block must be mined:

while true do
 if turtle.detect() then
  turtle.dig()
 end
end

This detects if a block is present, and then mines it. However, when all the 16 block spaces are filled with blocks, they must be dropped to collect new blocks:

while true do
 if turtle.detect() then
  turtle.dig()
 end
 itemcount = turtle.getItemCount(16)
 if itemcount == 64 then
 'Drop all stacks
 end
end

Not that it may not be a good idea to drop all stacks on the ground. To drop all stacks, another loop must be added:

while true do
 if turtle.detect() then
  turtle.dig()
 end
 itemcount = turtle.getItemCount(9)
 if itemcount == 64 then
  for i=1,16 do
  'Select each stack and then drops it
  end
 end
end

To select each stack and drop it, a turtle.select() and a turtle.drop() must be added:

while true do
 if turtle.detect() then
  turtle.dig()
 end
 itemcount = turtle.getItemCount(16)
 if itemcount == 64 then
  for i=1,16 do
   turtle.select(i)
   turtle.drop()
  end
  turtle.select(1)
 end
end

Advanced Generator

This is the generator I created (for use with (height:4 width:2) monitor):

function counter()
 local i = 0
 return function() i = i + 1 return i end
end
function modStr(num)
 if num < 10 then
   return "0" .. num
 else
   return num
 end
end
while true do
 if turtle.detect() then
  turtle.dig()
  term.clear()
  term.setCursorPos(1,1)
  local total = 0
  for i=1,9,1 do
   total = total + turtle.getItemCount(i)
  end
  for i=1,9,1 do
   print("Row " .. i .. ": " .. turtle.getItemCount(i) .. " (" .. math.floor((turtle.getItemCount(i)/total)*100) .. "%)")
  end
  print("Total: " .. total)
  print("-----------------")
  local iterator = counter()
  print(" ___ ___ ___ ")
  print("|" .. modStr(turtle.getItemCount(iterator())) .. " |" .. modStr(turtle.getItemCount(iterator())) .. " |" .. modStr(turtle.getItemCount(iterator())) .. " |")
  print("|___|___|___|")
  print("|" .. modStr(turtle.getItemCount(iterator())) .. " |" .. modStr(turtle.getItemCount(iterator())) .. " |" .. modStr(turtle.getItemCount(iterator())) .. " |")
  print("|---|---|---|")
  print("|" .. modStr(turtle.getItemCount(iterator())) .. " |" .. modStr(turtle.getItemCount(iterator())) .. " |" .. modStr(turtle.getItemCount(iterator())) .. " |")
  print("|___|___|___|")
  print(" ")
  print("-----------------")
  print("Cobble Farmer")
 end
 totalcount = turtle.getItemCount(9)
 if totalcount == 64 then
  term.clear()
  term.setCursorPos(1,1)
  print("Dropping Stacks")
  print("...Please wait.")
  sleep(1)
  for i=1,9 do
   turtle.select(i)
   turtle.drop()
  end
  turtle.select(1)
 end
end

Images:
MyCob.png

MyGen.png