Forum post rip from https://www.computercraft.info/forums2/index.php?/topic/5681-variable-size-quarry/ When computercraft.info shuts down I want to have a copy of my favorite turtle program.
Posted 03 November 2012 - 12:48 PM
So, many moons ago I decided to code a bit and I decided Hey! I should build a quarry. Now, this may sound simple but I was very new to coding and programming in general so it took a very long time. I finally finished my quarry program, and I impressed myself with how reliably it worked. So I decided to share it.
; View Level: OVAR 9000!!!
Yay! The thread has broken 200,000 views!!
Thanks to everyone who looked at this program. You are all awesome.
Update 1/20/2021. I am blown away. I leave for a few years and come back to 465,000 views! I don't know who is still looking at this thread, but you are as awesome as ever
:Attention: The program now supports "Ore Quarry" functionality. Use "-oreQuarry true" to use it, or type "-help" to find out more
If you are having trouble in new versions of Computercraft:
http://www.computerc...post__p__246955
Basically, there is a line in your CC config to "disable_lua51_features" Set that to false, because I use old environment functions and concepts.
A year ago, this program had a really BIG update. I basically rewrote the whole program from scratch. It is now much more efficient, modular, and is also easier to adjust from a coding standpoint.
As of version 3.5.0, the turtle also has oreQuarry support built in.
Note: If you don't know how to access any of the features: Type "quarry help" where "quarry" is whatever you named the program.
Features:
Huge Sized Quarries possible, the only restriction is how much fuel you can stuff in the turtle (and chunk loading)
Will always move to the proper position, will even attack mobs that get in the way!
Great for digging out rooms underground
Great for demolishing houses (use invert)
Great for digging holes down to bedrock
Deposits blocks into a chest when finished
Checks often to see if inventory is full
If inventory full, will go to a home chest to deposit blocks, then go right back where it was and continue mining
Ender Chest enabled! Feel free to use them
Session Persistence! Quarries will live through crashes and SSP
Ore Quarry capable! Check the help section for instructions
Turtle can mine down a certain number of blocks before starting. Good for getting to diamonds quickly.
If it runs into bedrock, it will come back to start and tell you where bedrock was found.
Automatically checks if you have fuel disabled
Keeps a (somewhat) detailed record of what it mines
Will log mining runs for posterity when done (If you want)
While running, displays percent to completion and total blocks mined.
Very modular, many different things can be changed by config and arguments
Now can be fully automated from parent programs. Everything can be set from arguments
Intelligently tells you settings you have changed
Now has a companion program to place ladders all the way to the bottom.
Now has a companion rednet program to give status updates when running. See below for current version
Will intelligently request fuel before mining, so it won't run out half way through.
Refuels quickly! You will fueled up and ready to go in no time!
Supports GPS networks. Is able to accurately get its position every time (If wanted)
Coming Soon:
Shell to control turtle
Maybe start quarries through rednet
Drawbacks:
Help Section: (just in case you want it here as well)
Spoiler
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
-autoResume / autoRestore: Turtle will automatically resume if stopped. Replaces startup
-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.
-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.
-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.
-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
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
"quarry -dim 40x20x9 -invert false -startDown 45 -rednet true -enderChest 12 -restore"
BAM. Now you can just let that turtle do it's thing
Tips:
The order of the parameters doesn't matter. "quarry -invert false -rednet true" is the same as "quarry -rednet true -invert false"
Capitalization doesn't matter. "quarry -iNVErt FALSe" does the same thing as "quarry -invert false"
Tips [cont.]:
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
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.
Use:
Now that everything is configurable by argument, there is more to the use section that you should know.
Spoiler
Usage for Ore Quarry:
Spoiler
Usage:
Just run with parameter "-oreQuarry true" and it will automatically mine everything but items in its blacklist.
If you have other items you don't want to mine, you can make your own blacklist in the file "oreQuarryBlacklist.txt"
Example blacklist file:
minecraft:stone, minecraft:gravel, ThermalExpansion:Machine
If you have bspkrsCore installed, there is a file in your config folder called "UniqueNames.txt" where you can see all blocks in your game.
If you have a better config file for me, please let me know.
1. Download the program(s)
2. Now, while you can run it straight out of the box, there are a few configs if you want. Type edit quarry, and change these values
3. Check "quarry -help" or "quarryReceiver -help" for usage
4. In the quarry, you can make parameter files! See the below example for details.
How to make Parameter Files:
Example Parameter File (named "basic")
type
edit basic
Spoiler
# Starting a line with a single pound sign (hashtag) denotes a comment# You can have comments anywhere, but they don't work at the end of parameter lines#This file will be a "basic" file that holds all the things I like to change as default#I want my turtles to always refuel themselves when done, but only to about half maxdoRefuel truemaxFuel 100000#I prefer to always have a chest belowchest bottom#I always want maxTries to be really large, I don't like logging mining runs, and I want more than twice the fuel necessary#I can do multiple parameters on one line if I use dashes-maxTries 100000 -logging false -fuelMultiplier 2.2#I also want to prompt whether to do an oreQuarry or notforcePrompt oreQuarry#Now when you run this it will ask you "Ore Quarry?" just like it asks you "Invert?" or "Length?"
You can then load this by itself:
quarry -file basic
or with other (situational) arguments (which override ones in the file):
quarry -file basic -dim 16 16 64 -flatBedrock true -default
When the shell is done, there will be a cool gui to load and make your own config files /[/spoiler]
Download:
Version 3.6.4 (this goes on the turtle):
http://pastebin.com/rpXRAZs4
Version 3.6.5 Rednet Companion Program (this goes on computer, compatible with 3.5.2 - current):
https://pastebin.com/7Ksx4qUJ
Version 1.0.3 Rednet Repeater Program (goes on computer, compatible with 3.5.4 - current)
http://pastebin.com/Te359WA2
Ladder Placing:
http://pastebin.com/GbWZhXCC
Version Made by Renari compatible with the "Miny Chunky Module" peripheral. (Version 3.5.5)
http://pastebin.com/4y9W8i9i
Showcase Video by utybo. Goes over basics, rednet, oreQuarry, and enderChests (Version 3.6.3)
Full Demonstration Video for (almost) all features of the program (Version 3.0.7)
Demonstration video of the newer Rednet Program (Version 3.5.4)
How to oreQuarry (Version 3.5.5):
Demonstration of using Quadracopters (Version 3.6.1)
Pictures of the new Rednet Program
http://imgur.com/a/AgPR5
My Github: https://github.com/c...ogs/tree/LuaDev
This is where all the new and in-development features of my programs will be. Not all programs are guaranteed to actually run at the time you download them.
Edited by civilwargeeky, 21 January 2021 - 12:27 AM.
Posted 03 November 2012 - 03:43 PM
Why not dig three blocks per move, that's pretty standard and speeds things up a good bit.
Posted 04 November 2012 - 02:54 PM
Updated to 2.1.5
ChunLing I took your advice (somewhat), and it now mines two at time when height is even, otherwise 1 at a time.
Posted 09 December 2012 - 07:44 AM
Fueling partition doesn't work, I just noted it all, and then it was fine! Brilliant program BTW
Posted 10 December 2012 - 06:02 AM
This is excellent, if I am on a serve though I am probably going to have to enter that line by line hunh....
Posted 11 December 2012 - 05:42 AM
https://www.computercraft.info/forums2/index.php?app=forums&module=forums§ion=findpost&pid=58117Koncrete, on 10 December 2012 - 06:02 AM, said:
This is excellent, if I am on a serve though I am probably going to have to enter that line by line hunh....
Pastebin get u3CTvenK Quarry :=)
Posted 03 January 2013 - 03:10 AM
How to get this to work properly, it keeps saying it needs more fuel and I've already put a stack of coal in there and it used it all.
Posted 04 January 2013 - 06:31 AM
https://www.computercraft.info/forums2/index.php?app=forums&module=forums§ion=findpost&pid=67963Blackbeared, on 03 January 2013 - 03:10 AM, said:
How to get this to work properly, it keeps saying it needs more fuel and I've already put a stack of coal in there and it used it all.
You made the quarry so big it needs that much fuel to go.
Posted 06 January 2013 - 06:18 PM
I tried this out and I got an error on line 167 saying "attempt to compare nil with number"
Any idea why? (I don't know much about programming)
Posted 07 January 2013 - 09:06 AM
https://www.computercraft.info/forums2/index.php?app=forums&module=forums§ion=findpost&pid=57838tpmrpg, on 09 December 2012 - 07:44 AM, said:
Fueling partition doesn't work, I just noted it all, and then it was fine! Brilliant program BTW
Thanks! The fueling portion does work (unless you're playing 1.2.5), however it is somewhat odd. There is a small quirk, but I think I'll change it now that I know better.
https://www.computercraft.info/forums2/index.php?app=forums&module=forums§ion=findpost&pid=67963Blackbeared, on 03 January 2013 - 03:10 AM, said:
How to get this to work properly, it keeps saying it needs more fuel and I've already put a stack of coal in there and it used it all.
Yeah, unless your quarry is really big (20x20x20 or something), then it shouldn't use that much fuel. Also make sure to do
label set somename
to stop the turtle from losing fuel when you pick it up.
https://www.computercraft.info/forums2/index.php?app=forums&module=forums§ion=findpost&pid=70042crazygoattoe, on 06 January 2013 - 06:18 PM, said:
I tried this out and I got an error on line 167 saying "attempt to compare nil with number"
Any idea why? (I don't know much about programming)
That is a line a line that checks the config to make sure you don't screw up its auto-empty feature. If it dosent work, type
edit quarry
then
maxslots=13
Posted 08 January 2013 - 05:18 AM
Oké I have another question. I removed the fuel part (also make it so fuel isn't needed, I'm lazy like that ). But for some reason the program randomly stops and it gives no error. When I start I give in length: 15, width: 15 and height: 120 is this like a build in stopping system that I am missing, it mines for a while when I start it again but just randomly stops and I have no idea what's causing it.
Any ideas?
Posted 08 January 2013 - 02:26 PM
https://www.computercraft.info/forums2/index.php?app=forums&module=forums§ion=findpost&pid=70688Blackbeared, on 08 January 2013 - 05:18 AM, said:
Oké I have another question. I removed the fuel part (also make it so fuel isn't needed, I'm lazy like that ). But for some reason the program randomly stops and it gives no error. When I start I give in length: 15, width: 15 and height: 120 is this like a build in stopping system that I am missing, it mines for a while when I start it again but just randomly stops and I have no idea what's causing it.
Any ideas?
Ok. I haven't ever tried putting the height more than 60 so I would have no experience with that bug (although it should still work). I don't know. Maybe it ran out of fuel (but you said you turned that off...), otherwise it should continue to work. The way it works is through three different loops, and those dimensions would call its dig function 13,500 times separate times. I don't think that would cause it, so I don't know what could have happened. I will post a new version tomorrow with some more of these bug fixes and features (and include a config section for disabling fuel check ).
26 posts
LocationDebrecen
Posted 09 January 2013 - 10:16 AM
Yup i like that quarry but i need inverted quarry for forest clearing.. hard work to reconfig for me?
Posted 09 January 2013 - 12:21 PM
https://www.computercraft.info/forums2/index.php?app=forums&module=forums§ion=findpost&pid=71269MrHohenheim, on 09 January 2013 - 10:16 AM, said:
Yup i like that quarry but i need inverted quarry for forest clearing.. hard work to reconfig for me?
Sure! I could do that pretty quickly. I'll post it here when done.
Posted 09 January 2013 - 02:46 PM
Ok, version 2.2.6 is up.
Changes: Better Counting System, Fixed some bugs, smarter fueling system, now you can add an argument to say which side the chest is on (e.g. top, right, left, bottom)
Oh, I also put in some manual-edit config at the top for people who use softcore or do not like the space restrictions and autoempty
Any other suggestions?
Posted 09 January 2013 - 07:19 PM
Hey I have a problem, when I type in quarry or quarry [direction] I get this "bios:338: [string "quarry"]:278: unexpected symbol".
26 posts
LocationDebrecen
Posted 09 January 2013 - 08:43 PM
yeah something wrong line 278 = neededFuel \= math.ceil((volume + xyz)/2 + subHeight))
26 posts
LocationDebrecen
Posted 09 January 2013 - 11:42 PM
here the working fixed code pastebin get uGBP137c quarry
Posted 10 January 2013 - 02:21 AM
There's a hotfix. Should work (didnt test yet)
You see while simplifying my equation, I forgot that xyz isn't x*y*z, its an undefined variable...
That's what I get for posting it without testing.
26 posts
LocationDebrecen
Posted 10 January 2013 - 02:56 AM
and + " ( "
no problem i fixed this