Welcome!: Welcome to quarry help. Below are help entries for all parameters. Examples and tips are at the bottom.

-default: This will force no prompts. If you use this and nothing else, only defaults will be used.

-dim: [length] [width] [height] This sets the dimensions for the quarry

-invert: [t/f] If true, quarry will be inverted (go up instead of down)

-rednet: [t/f] If true and you have a wireless modem on the turtle, will attempt to make a rednet connection for sending important information to a screen

-restore / -resume: If your quarry stopped in the middle of its run, use this to resume at the point where the turtle was. Not guarenteed to work properly. For more accurate location finding, check out the -GPS parameter

-oreQuarry: [t/f] If true, the turtle will use ore quarry mode. It will not mine the blocks that are placed in the turtle initially. So if you put in stone, it will ignore stone blocks and only mine ores.

-oreQuarry: [t/f] If you are using a newer version of CC, you won't have to put in any compare blocks. (CC 1.64+)

-blacklist: [file name] If using oreQuarry, this is the blacklist file it will read. Example --

minecraft:stone

minecraft:sand

ThermalExpansion:Sponge

ThermalFoundation:Storage

If you have bspkrsCore, look for "UniqueNames.txt" in your config

-atChest: [force] This is for use with "-restore," this will tell the restarting turtle that it is at its home chest, so that if it had gotten lost, it now knows where it is.

-doRefuel: [t/f] If true, the turtle will refuel itself with coal and planks it finds on its mining run

-doCheckFuel: [t/f] If you for some reason don't want the program to check fuel usage, set to false. This is honestly a hold-over from when the refueling algorithm was awful...

-uniqueExtras: [number] The expected number of slots filled with low-stacking items like ore. Higher numbers request more fuel.

-maxFuel: [number] How much the turtle will fuel to max (limited by turtle in most cases)

-chest: [side] This specifies what side the chest at the end will be on. You can say "top", "bottom", "front", "left", or "right"

-enderChest: This one is special. If you use "-enderChest true" then it will use an enderChest in the default slot. However, you can also do "-enderChest [slot]" then it will take the ender chest from whatever slot you tell it to. Like 7... or 14... or whatever.

-fuelChest: See the above, but for a fueling chest. Reccommend use with -maxFuel and -doCheckFuel false

-GPS: [force] If you use "-GPS" and there is a GPS network, then the turtle will record its first two positions to precisly calculate its position if it has to restart. This will only take two GPS readings

-sendChannel: [number] This is what channel your turtle will send rednet messages on

-receiveChannel: [number] This is what channel your turtle will receive rednet messages on

-startY: [current Y coord] Randomly encountering bedrock? This is the parameter for you! Just give it what y coordinate you are at right now. If it is not within bedrock range, it will never say it found bedrock

-startupRename: [file name] What to rename any existing startup to.

-startupName: [file name] What the turtle will save its startup file to.

-extraDropItems: [force] If oreQuarry then this will prompt the user for extra items to drop, but not compare to (like cobblestone)

-dumpCompareItems: [t/f] If oreQuarry and this is true, the turtle will dump off compare blocks instead of storing them in a chest

-oldOreQuarry: [t/f] If you are using new CC versions, you can use this to use the old oreQuarry.

-left: [t/f] If true, turtle will quarry to the left instead of the right

-maxTries: [number] This is the number of times the turtle will try to dig before deciding its run into bedrock.

-logging: [t/f] If true, will record information about its mining run in a folder at the end of the mining run

-doBackup: [t/f] If false, will not back up important information and cannot restore, but will not make an annoying file (Actually I don't really know why anyone would use this...)

-saveFile: [word] This is what the backup file will be called

-logFolder: [word] The folder that quarry logs will be stored in

-logExtension: [word] The extension given to each quarry log (e.g. ".txt" or ".notepad" or whatever)

-keepOpen: [number] This is the number of the slots the turtle will make sure are open. It will check every time it mines

-careAboutResources: [t/f] Who cares about the materials! If set to false, it will just keep mining when its inventory is full

-startDown: [number] If you set this, the turtle will go down this many blocks from the start before starting its quarry

=

C _ |

|

|

|

|_ _ _ _ >

-promptAll: This is the opposite of -Default, it prompts for everything

-manualPos: [xPos] [zPos] [yPos] [facing] This is for advanced use. If the server reset when the turtle was in the middle of a 100x100x100 quarry, fear not, you can now manually set the position of the turtle. yPos is always positive. The turtle's starting position is 0, 1, 1, 0. Facing is measured 0 - 3. 0 is forward, and it progresses clockwise. Example- "-manualPos 65 30 30 2"

-help: Thats what this is :D

Examples: Everything below is examples and tips for use

Important Note:

None of the above parameters are necessary. They all have default values, and the above are just if you want to change them.

Examples [1]:

Want to just start a quarry from the interface, without going through menus? It's easy! Just use some parameters. Assume you called the program "quarry." To start a 10x6x3 quarry, you just type in "quarry -dim 10 6 3 -default".

You just told it to start a quarry with dimensions 10x6x3, and "-default" means it won't prompt you about invert or rednet. Wasn't that easy?

Examples [2]:

Okay, so you've got the basics of this now, so if you want, you can type in really long strings of stuff to make the quarry do exactly what you want. Now, say you want a 40x20x9, but you want it to go down to diamond level, and you're on the surface (at y = 64). You also want it to send rednet messages to your computer so you can see how its doing.

Examples [2] [cont.]:

Oh yeah! You also want it to use an ender chest in slot 12 and restart if the server crashes. Yeah, you can do that. You would type

For [t/f] parameters, you can also use "yes" and "no" so "quarry -invert yes"

For [t/f] parameters, it only cares about the first letter. So you can use "quarry -invert t" or "quarry -invert y"

Tips [cont.]:

If you are playing with fuel turned off, the program will automatically change settings for you so you don't have to :D

If you want, you can load this program onto a computer, and use "quarry -help" so you can have help with the parameters whenever you want.

Internal Config:

At the top of this program is an internal configuration file. If there is some setup that you use all the time, you can just change the config value at the top and run "quarry -default" for a quick setup.

You can also use this if there are settings that you don't like the default value of.

]]

--Parsing help for display

--[[The way the help table works:

All help indexes are numbered. There is a help[i].title that contains the title,

and the other lines are in help[i][1] - help[i][#help[i] ]

Different lines (e.g. other than first) start with a space.

As of now, the words are not wrapped, fix that later]]

local help = {}

local i = 0

local titlePattern = ".-%:" --Find the beginning of the line, then characters, then a ":"

local textPattern = "%:.+" --Find a ":", then characters until the end of the line

for a in help_paragraph:gmatch("\n?.-\n") do --Matches in between newlines

function getRep(which, list) --Gets a representative slot of a type. Expectation is a sequential table of types

for a,b in pairs(list) do

if b == which then return a end

end

return false

end

function assignTypes(types, count) --The parameters allow a preexisting table to be used, like a table from the original compareSlots...

types, count = types or {1}, count or 1 --Table of types and current highest type

for i=1, inventoryMax do

if turtle.getItemCount(i) > 0 and not specialSlots[i] then --Not special slots so we don't count ender chests

select(i)

for k=1, count do

if turtle.compareTo(getRep(k, types)) then types[i] = k end

end

if not types[i] then

count = count + 1

types[i] = count

end

if oreQuarry then

if blacklist[turtle.getItemDetail().name] then

dumpSlots[i] = true

else

dumpSlots[i] = false

end

end

end

end

select(1)

return types, count

end

function getTableOfType(which, list) --Returns a table of all the slots of which type

local toRet = {}

for a, b in pairs(list) do

if b == which then

table.insert(toRet, a)

end

end

return toRet

end

--This is so the turtle will properly get types, otherwise getRep of a type might not be a dumpSlot, even though it should be.

if not restoreFoundSwitch then --We only want this to happen once

if oldOreQuarry then --If its not ore quarry, this screws up type assigning

initialTypes, initialCount = assignTypes()

else

initialTypes, initialCount = {1}, 1

end

end

function count(add) --Done any time inventory dropped and at end, true=add, false=nothing, nil=subtract

local mod = -1

if add then mod = 1 end

if add == false then mod = 0 end

slot = {} --1: Filler 2: Fuel 3:Other --[1] is type, [2] is number

for i=1, inventoryMax do

slot[i] = {}

slot[i][2] = turtle.getItemCount(i)

end

local function iterate(toSet , rawTypes, set)

for _, a in pairs(getTableOfType(toSet, rawTypes)) do --Get all slots matching type

slot[a][1] = set --Set official type to "set"

end

end

--This assigns "dumb" types to all slots based on comparing, then based on knowledge of dump type slots, changes all slots matching a dump type to one. Otherwise, if the slot contains fuel, it is 2, else 3

if (select(getRep(i, rawTypes)) or true) and turtle.refuel(0) then --Selects the rep slot, checks if it is fuel

iterate(i, rawTypes, 2) --This type is fuel

elseif dumpSlots[getRep(i,(oreQuarry and rawTypes) or initialTypes)] then --If the rep of this slot is a dump item. This is initial types so that the rep is in dump slots. rawTypes if oreQuarry to get newly assigned dumps