Variable Size Quarry (now with Super Ore Quarry™)

Started by civilwargeeky, Jul 21, 2024, 03:04 AM

Previous topic - Next topic
Hello, people of the future! I originally posted "Variable Size Quarry" 03 November 2012 at 12:48 PM on the old ComputerCraft forums when I was just learning to code in high school. I've been informed via Youtube comment (shoutout to @Windows1Seven !) that the old CC forums are down and my code is now hard to find. So I have decided to re-post my code here in all of it's janky, 12-year-old glory. It doesn't appear that I can add spoiler boxes, so this may be longer than it once was. Sorry.


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.

:D; 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 :D
Update 2024: As of the last wayback machine archive in Dec 2023, this had 975,989 views! Incredible.

: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:
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:
  • None right now :)

Ore Quarry Usage: Just run with parameter "-oreQuarry true" and it will automatically mine everything but items in its blacklist.

Happy Mining! :)
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

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

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/civilwargeeky/Civils_Progs/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.

Old Versions
So anyway. Here is the program:
http://pastebin.com/ST3Xu6xR
Newer Version:
http://pastebin.com/u3CTvenK
Version 2.2.3 (has a bug, get 2.2.5)
http://pastebin.com/Zy43WP9H
Version 2.2.6 (hotfix)
http://pastebin.com/uGBP137c
Version 2.3.3:
http://pastebin.com/q0kLxLVK
Version 2.3.3 Companion Rednet Program:
http://pastebin.com/rvTqiw9S
Inverted Version (requested by MrHohenheim):
http://pastebin.com/fZS2hXfL
Version 3.0.3:
http://pastebin.com/UC0XehGH
Version 3.0.3 Companion Rednet Program:
http://pastebin.com/xNpdanxp
Version 3.0.3 Companion Rednet Program (FTB Compatible):
http://pastebin.com/A1eWiMf2
Version 3.0.4:
http://pastebin.com/GcqTWZLE
Version 3.0.6:
http://pastebin.com/J8TZkxec
Version 3.0.7:
http://pastebin.com/jkJ61ABn
Version 3.1.0:
http://pastebin.com/Lvcqywpi
Version 3.1.1:
http://pastebin.com/FKr9K20b
Version 3.2.0 beta 3:
http://pastebin.com/KwQy3wDE
Version 3.2.0:
http://pastebin.com/31k5f7yH
Version 3.2.1:
http://pastebin.com/46CJuYuJ
Version 3.2.2 (this goes on the turtle):
http://pastebin.com/GzNQFjRg
Version 3.2.3 (this goes on the turtle):
http://pastebin.com/DsFnVZ8c
Version 3.3.0 (this goes on the turtle):
http://pastebin.com/PG1hZJv6
Ladder Placing 1.0.0:
http://pastebin.com/NLP0nrMd
Version 3.3.1 (this goes on the turtle):
http://pastebin.com/MqdeY3fM
Version 3.3.2
http://pastebin.com/iu9YdinC
Version 3.0.4 Rednet: Compatible with version 3.0.4 - 3.3.3
http://pastebin.com/bckVpUFB
Version 3.0.4 Companion Rednet Program (FTB Compatible):
http://pastebin.com/wCJeMtGF
Version 3.3.3 (this goes on the turtle):
http://pastebin.com/FrHW8x2Q
Version 3.4.0 (this goes on the turtle):
http://pastebin.com/fhdVNUUb
Version 3.4.0 Rednet Companion Program (this goes on computer, compatible with 3.4.0 - 3.5.1):
http://pastebin.com/WG2eQqCb
Version 3.4.1 (this goes on the turtle):
http://pastebin.com/bH1SyyuL
"Ore Quarry Hack" (goes on turtle, based on version 3.4.1):
http://pastebin.com/iFjfPn2K
Version 3.4.3 (this goes on the turtle):
http://pastebin.com/94P4rNg1
Version 3.4.4 (this goes on the turtle):
http://pastebin.com/5ndkMbnG
"Ore Quarry Hack" v2 (just has 3.4.3 fueling system) (goes on turtle, based on version 3.4.1):
http://pastebin.com/y7FMtByw
Version 3.5.0 (this goes on the turtle):
http://pastebin.com/H3yPeBE8
Version 3.5.1 (this goes on the turtle):
http://pastebin.com/t1AsSkrn
Version 3.5.2 (this goes on the turtle):
http://pastebin.com/SyxfDFzn
Version 3.5.2 Rednet Companion Program (this goes on computer, compatible with 3.5.2 - 3.5.3):
http://pastebin.com/EjseXjgM
Version 3.5.3 (this goes on the turtle):
http://pastebin.com/T7gT01S5
Version 3.5.3 With Ore Quarry Hack (only use with Computercraft version 1.64+ in MC 1.7.10)(this goes on the turtle):
http://pastebin.com/4tqPJQRn
Version 3.5.4 (this goes on the turtle):
http://pastebin.com/Vb8gGCbH
Version 3.5.4 Rednet Companion Program (this goes on computer, compatible with 3.5.4 - current (limited functionality in 3.5.2-3.5.3)):
http://pastebin.com/8YnReKvf
Better Repeater Edit by DJF. This has better old minecraft compatibility and auto-adds sending channels (compatible with 3.5.4-current)
Alternate Receiver theme by seaeagle23: http://pastebin.com/NMbhpfAN (compatible with 3.4.0 - 3.5.3)
Version 3.5.5 (this goes on the turtle):
http://pastebin.com/6Pdcb8Ay
Version 3.5.5 Rednet Companion Program (this goes on computer, compatible with 3.5.2 - current):
http://pastebin.com/2unS3htn
Version 3.6.0 (this goes on the turtle):
http://pastebin.com/YTgKCcVy
Version 3.6.0 Rednet Companion Program (this goes on computer, compatible with 3.5.2 - current):
http://pastebin.com/mLYKBZ4Y
Version 3.6.1 (this goes on the turtle):
http://pastebin.com/FLJtCvH9
Version 3.6.1 Rednet Companion Program (this goes on computer, compatible with 3.5.2 - current):
http://pastebin.com/hwaCXdEE
Version 3.6.2 (this goes on the turtle):
http://pastebin.com/vmFJPGdj
Version 3.6.3 (this goes on the turtle):
http://pastebin.com/GALNjiz2
Version 3.6.2 Rednet Companion Program (this goes on computer, compatible with 3.5.2 - current):
http://pastebin.com/0KReBrup
Version 3.6.4 Rednet Companion Program (this goes on computer, compatible with 3.5.2 - current):
http://pastebin.com/6smzHGJY

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 :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
"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 :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.