Open Computers Crop Breeding: Difference between revisions

From GT New Horizons
Content added Content deleted
m (category)
(Complete revamp of the OC code and this page.)
Line 1: Line 1:
[[Category:OpenComputers]][[Category:Guides]][[Category:Useful Crops]]
[[Category:OpenComputers]][[Category:Guides]][[Category:Useful Crops]]
== Introduction ==
== Introduction ==
[https://github.com/DylanTaylor1/ic2-crop-automation These Open Computers (OC) scripts] will automatically tier-up, stat-up, and spread (duplicate) crops for you. Open Computers is a very powerful yet complicated mod using custom scripts written in lua, but fear not. I have made everything here as straight forward as possible to help you get your crop bot running in no time.
[https://github.com/huchenlei/auto-crossbreeding This Open Computers (OC) script] will allow you to use an OC robot to automatically stat up, breed, and spread crops for you.<br>
The description found here will be only for the '''''autoSpread''''' part of the script. This function will "duplicate" a designated crop and put it in a storage farm for collection. <br>
Naturally, with OC there are nuances and this page is meant to help players that don't have the knowledge base to read the code for configuration needed. <br>
I'm not the best with long form explanations but here we go! <br>
(NOTE: The Geolyzer was broken upon the release of version 2.1.2.1, this script will not work until switching to a older '''or''' more recent version) <br>


==Bare Minimum Components==
== Early Gates ==
Obtaining these components will require access to EV circuits and epoxid (late HV). This is because you need an internet card to pull the scripts from GitHub (it is possible to create all the files manually and then copy and paste the code from GitHub, but that is not recommended). The CPU and Graphics Card can be replaced by a single APU if you feel so inclined. Both inventory upgrades are necessary.
When it comes to actually being able to set up a robot with adequate components for this there are two gates that come to mind. <br>
# '''Easy Route (late HV)'''- this entails getting EV circuits '''and''' epoxid. This is because you need an Internet Card to be able to pull the script from GitHub. <br>
# '''Annoying Route (HV)''' - this requires you to manually copy and paste all of the code from the GitHub to work. If you really want to automate crops pre-epoxid this is your only option... <br>
You'll also need to dabble in Thaumcraft - I know, its annoying - this is because the robot needs a transvector dislocator and transvector binder to function properly. <br>


*'''OC Electronics Assembler '''* '''OC Charger'''
== Bare Minimum Components ==
* '''Tier 3 Computer Case'''
Building a robot requires you to make an electronics assembler. The GUI for this block is unlocked by placing a computer case in the top left slot. <br>
*'''Central Processing Unit (Tier 2)'''
To get your robot working you'll need the following components: (it should be assumed that you can use components greater than the tier listed) <br>
*'''Graphics Card (Tier 1)'''
[[File:Basic robo components.png|thumb|Minimum robot components.]]
* '''Central Processing Unit (CPU)(Tier 2)'''*
*'''Redstone Card (Tier 1)'''
* '''Graphics Card (Tier 1)'''*
*'''Internet Card'''
* '''Redstone Card (Tier 1)'''
*'''Memory (Tier 2)'''
* '''Memory (Tier 1.5)'''
*'''EEPROM (Lua BIOS)'''
* '''Screen (Tier 1)'''
*'''Hard Disk Drive (Tier 1)(1MB)'''
* '''EEPROM (Lua BIOS)'''
*'''Inventory Controller Upgrade'''
* '''Hard Disk Drive (Tier 1)(1MB)'''
*'''Inventory Upgrade'''
* '''Inventory Controller Upgrade'''**
*'''Screen (Tier 1)'''
* '''Inventory Upgrade'''**
*'''Keyboard'''
* '''Keyboard'''
*'''Geolyzer'''
* '''Geolyzer'''
*'''Disk Drive'''
*'''OpenOS (Operating System)'''
Optional Upgrades: (read more below)


Lastly, you need a Transvector Binder and Transvector Dislocator which requires some progression in Thaumcraft. However, it is not too deep and completely doable if you are already able to make EV circuits and epoxid. Transvector Dislocator can be found under "Thaumic Tinkerer" and requires the following prerequisites on the same tab: Transvector Interface and Smokey Quartz. You will also need to complete research on Mirror Magic under "Artifice." For more information, visit https://gtnh.miraheze.org/wiki/Thaumcraft_Research_Cheatsheet.
* '''Disk Drive'''
* '''Internet Card'''


==Building the Robot==
(*) these can be replaced by a single APU if you feel so inclined. <br>
1. Insert the computer case into the OC Electronics Assembler which can be powered directly by any GT cable <br>2. Shift-click all of the parts into the computer case except the OpenOS floppy disk <br>3. Click assemble and wait until it completes <br>4. Rename the robot in an anvil <br>5. Place the robot down on the OC Charger which can also be powered directly by any GT cable <br>6. Insert the OpenOS floppy disk in the disk slot of the robot and press the power button <br>7. Follow the commands on the screen "install" --> "Y" --> "Y" (Note: The OpenOS floppy disk is no longer needed in the robot afterwards) <br>8. Copy the following line of code into the robot (middle-click to paste) and hit enter:
(**) yes, you do need both.
''wget https://raw.githubusercontent.com/DylanTaylor1/ic2-crop-automation/main/install.lua''
[[File:Robot_Inventory.png|thumb|Inventory of the robot.]]9. Install the rest of the scripts by entering:
''./install''
10. Edit the config (not recommended, but check it out) by entering:
''edit config.lua''
11. Place the Spade and Transvector Binder into the last and second to last slot of the robot, respectively. Crop sticks will go in the third, but it is not required to put them in yourself. An axe or mattock can also be placed into the tool slot of the robot (optional) to speed up destroying crops. See image to the right.


==Building the Farms==
'''Important''' - if you do use the optional upgrades you will need a '''Tier 3 Computer Case''' to fit all of the components required.<br>
First off, it is recommended to set everything up in a Jungle or Swamp biome at Y=130 as that will give you the highest humidity and air quality stats. This is most easily done in a personal dimension which you earn as a quest reward from reaching the moon. Do not place any solid blocks above the farm as that will reduce the air quality. All of the machines on the surface are waterproof so do not worry about the rain. Use vanilla dirt because that will allow you to grow crops that require a particular block underneath, and boost the nutrient stat of your crops. The whole farm will fit into a single chunk for easy chunk loading. See image below. <br>
As you can see, the internet card is not mentioned. Why? Because, you can install the script onto the hard disk before assembling the robot, but it still requires an internet card if you <br>
chose to go the easy route. If you do not have an extra computer laying around to install the script you'll need to add a disk drive to the robot, this will allow you to insert the OpenOS <br>
floppy disk. Finally, add the internet card to the robot and now you can assemble it.


[[File:Farm_Top.png|Top-View of the farm|center|thumb|779x779px]]
== Configuring your Farm ==
This part is typically what gets lost in translation. Be sure to read carefully. <br>
The below description will be exclusively for the fork of the auto-crossbreeding script linked below in "Setting Up Your Robot".
Pictured to the right is the layout of the actual breeding farm, this is where the magic happens. <br>
For now we will focus on the uppermost row, this include these blocks from left to right: <br>
[[File:WIPCrops.png|thumb|Visual insight into how you should layout the crops.]]
* '''Charger''' - this is the starting position of the robot - the robot is placed on top of this block and faces the direction of the drawer. '''This block also needs to be powered on via redstone.'''
* '''JABBA Barrel (this cannot be a storage drawer)''' - this is the storage for crop(sticks), if this isn't full while the robot is running bad things will happen. '''Ensure that the barrel's face is pointed to the sky.'''
* '''Farmland''' - this is (y - 1) from the other blocks on this row. It is utilized by the storage farm.
* '''Transvector Dislocator''' - this block must be facing the direction of the farmland mentioned above, it facilitates the movement of crops from the breeding farm to the storage farm.*
* '''Air''' - there does not need to be anything in this specific block.**
* '''Storage Chest''' - this chest is where the robot will put anything it picks up - miscellaneous seeds and drops.
(*) you can tell which direction it is facing because the face will be animated (if you play with animated textures set to ON) <br>
(**) I like to put a Crop-Matron here because it will most of the breeding farm and half of the storage (if set to sideLength = 9, more on this later) <br>


------------------ <- line of required blocks (from above)
[P, _, _, P, _, _] |
[_, T, _, _, T, _] |
[_, _, P, _, _, P] | this can also be seen as a 2x2 of 3x3 plots (bad wording)
[P, _, _, P, _, _] | [P, _, _]
[_, T, _, _, T, _] | [_, T, _] <- this is one "plot"
[_, _, P, _, _, P] | [_, _, P]


First note the orientation of the robot sitting atop the OC charger. It must face up towards the right-most column of the working farm. If the crop stick chest is ever empty, the robot will run into errors and the script will crash. In the image, I have a trash can on the other side of the crop stick chest because I do not want any drops beyond the target crop, but this can be a second chest if you do want random drops. The blank farmland is for the transvector dislocator which should be facing it. You can tell which direction the transvector dislocator is facing by the side that is animated. The last spot is for a crop-matron which is optional and one y-level lower than the rest of the blocks. It is just to hydrate most of the crops to help them grow a little faster. <br>
[[File:Storagefarm.png|thumb|Visual insight into how the storage farm works.]]


'''The location of the water MUST be exactly as seen in the photo''' (underneath all five sea lantern slabs). At a minimum, there MUST be a block above the water in the working farm. The block can be literally anything, even a lilypad will work, so long as there is something. However, I recommend using some sort of light source to help crops grow at night. Nothing needs to be above the water blocks on the storage farm, but it is more aesthetic if they all match. <br>
Above is an ASCII depiction of the crop layout <br>
P = highstatted crop that you do not mind losing (usually stickreed) <br>
T = Crop that you want to spread. All T's on a single breeding field need to be the same crop. <br>
_ = is air, nothing needs to go here (as far as crops/cropsticks go), but it does need to be farmland. <br>


'''The starting crops MUST be placed manually in the checkerboard pattern''' seen in the photo. This layout goes for all three programs. If you cannot fill the entire checkerboard to start, the ''absolute'' ''minimum required is two'' (one as the target crop and the other next to it for crossbreeding). It is not necessary to place empty crop sticks to fill the rest of the checkerboard. The target crop is used by autoStat and autoSpread to identify the crop you want to stat-up or spread to the storage farm, respectively. <br>
Now you need to setup your storage farm. (Pictured to the right) <br>
The default config expects that the storage farm will be 13x13 - I will describe how to change this further down. <br>


[[File:Farm_Bottom.png|Bottom-View of the farm.|center|thumb|801x801px]]
== Setting up your Robot ==
[[File:RobotConfig.png|thumb|This is the required configuration for the robots inventory.]]
Congrats! You've made it to the final step! <br>
Pictured to the right is robot inventory configuration. <br>
What follows is the step-by-step instructions to installing the script onto your robot: <br>
# Place your robot on the charger (facing the correct direction mentioned above)
# Place the OpenOS floppy disk into the robots inventory
# Click the power button in the robot GUI
# Once prompted type "install" followed by "Y" and "Y"
# Then type/copy and paste ''wget https://raw.githubusercontent.com/huchenlei/auto-crossbreeding/improve_autocrossbreed/install.lua''
# Followed by ''./install improve_autocrossbreed''


Once you've ensured that you have done everything else properly - including the placement of crops into the breeding farm - you can now type '''''autoSpread''''' in the robot's terminal. <br>


Underneath the farm, you can see that there are three additional dirt blocks below each farmland, each of which add to the nutrient stat of the crop above it. For crops requiring a block underneath, that should be placed at the bottom. In this case, I have diareed planted on top which means I have one farmland --> two dirt --> one diamond block underneath each one. I do not have diamond blocks underneath the working farm because the diareed does not need to be fully grown in order to spread.
== Playing with Configs ==

The default configs that come with this script are pretty good, although I'd recommend tweaking at least one thing. Read some of the comments to see what else my help your use case. <br>

To get to the configs you will need to do the following: <br>
For power, I am using an HV gas turbine and a super tank with some benzene (no transformer needed). This is a little overkill, but the important part is that the charger is always at 100% charging speed which you can see by hovering over it. A set-up such as this will last forever with a few hundred thousand benzene since both machines require very little EU/t. Lastly, a reservoir feeds water into the crop-matron automatically after right-clicking it with a wrench.
# Make sure that the robot is powered on and then type "edit config.lua"

# Navigate to the flag "takeCareOfDrops" and set it to true
==Running the Programs==
'''How to go about changing storage farm size:''' <br>
The first program is autoTier. This will automatically tier-up your crops, terminating once the max breeding round is reached (configurable) or the storage farm is full. A storage chest is recommended for this program. Note that unrecognized crops will be moved to the storage farm first before replacing any of the lower tier crops in the working farm. Statting-up crops during this program is a configurable option. To run, simply enter:
# Make sure that the robot is powered on and then type "edit config.lua"

# Change the value of "storageFarmSize" to whatever value matches the side length of your storage farm.
''autoTier''

The second program is autoStat. This will automatically stat-up your crops, terminating once Gr + Ga - Re is at least 52 (configurable) for all crops on the working farm. A trash can is recommended for this program. Maximum growth and resistance are also configurable options which default to 21 and 2, respectively. To run, simply enter:

''autoStat''

The third program is autoSpread. This will automatically spread (duplicate) your crops if each new Gr + Ga - Re is at least 46 (configurable), terminating once the storage farm is full. A trash can is recommended for this program. Maximum growth and resistance are also configurable options which default to 21 and 2, respectively. To run, simply enter:

''autoSpread''

Fire and Forget. If you have brand new crops (ie. 1/1/1 spruce saplings) and want to automatically stat-up and start spreading:

''autoStat && autoSpread''

==Other Helpful Commands==
To list all of the files installed on the robot, enter

''ls''

To remove any one file installed on the robot, enter

''rm <filename>''

To uninstall all of the files from this repo, enter

''uninstall''

==Recommended Crops==
For starters, I recommend statting-up and spreading the following crops because their outputs are useful and not completely overshadowed by bees. Note that every crop has a higher chance of being discovered with specific parent combinations, but it is often easier to discover a crop from crossbreeding at the same tier. For example, diareed apparently has the highest chance of being discovered when the parents are oilberry and bobsyeruncleranks, BUT I recommend just running autoTier with all Tier 12 crops (or autoSpread with keepMutations on in the config). Crops that require a particular block underneath do not need to be fully grown in order to spread. For a full list of crops and their requirements, visit https://gtnh.miraheze.org/wiki/IC2_Crops_List.

*'''Stickreed for discovering other crops and sticky resin (rubber dust)'''
*'''Spruce Bonsai for all of your benzene and power needs'''
*'''Glowing Earth Coral for sunnarium and glowstone (gold and redstone)'''
*'''Sugarbeet for sugar (oxygen)'''
*'''Rape for seed oil'''
*'''Goldfish plant for fish oil'''
*'''Tearstalks for ghast tears (chlorine and sodium hydroxide)'''
*'''Enderbloom for enderpearls/endereyes'''
*'''Diareed for diamonds'''
*'''Bobsyeruncleranks for emeralds'''

==Thanks==
My repo is a fork from https://github.com/huchenlei/auto-crossbreeding/tree/improve_autocrossbreed which was originally authored by huchenlei and improved by xyqyear. Huge props to them for getting this off the ground and allowing me to take it further.

==Notable Changes==
If you are familiar with the older versions of this code then here are some notable changes that motivated me to develop this fork in the first place.

*Changed general layout to access chests more easily.
*Changed farm layout to facilitate running autoSpread immediately after autoStat.
*Added the option to use regular dirt instead of fertilized dirt for crops requiring a particular block underneath.
*Added configurable maximum growth and maximum resistance stats.
*Added configurable thresholds for autoSpread, autoStat, and autoTier.
*Added configurable option to stat-up crops while running autoTier.
*Added configurable option to cleanup after complete (no longer a flag).
*Added a built-in storage reset to prevent having to break the robot in order to run autoSpread or autoTier more than once.
*Added an uninstall script.
*Code is a LOT cleaner and more organized.
*It is no longer the code's fault if any of the programs crash (probably).
[[File:Giant Sword.png|center|thumb|775x775px|Happy Farming! To report a bug or have a suggestion, please leave a comment on my GitHub repo linked at the top!]]

Revision as of 22:17, 13 May 2023

Introduction

These Open Computers (OC) scripts will automatically tier-up, stat-up, and spread (duplicate) crops for you. Open Computers is a very powerful yet complicated mod using custom scripts written in lua, but fear not. I have made everything here as straight forward as possible to help you get your crop bot running in no time.

Bare Minimum Components

Obtaining these components will require access to EV circuits and epoxid (late HV). This is because you need an internet card to pull the scripts from GitHub (it is possible to create all the files manually and then copy and paste the code from GitHub, but that is not recommended). The CPU and Graphics Card can be replaced by a single APU if you feel so inclined. Both inventory upgrades are necessary.

  • OC Electronics Assembler * OC Charger
  • Tier 3 Computer Case
  • Central Processing Unit (Tier 2)
  • Graphics Card (Tier 1)
  • Redstone Card (Tier 1)
  • Internet Card
  • Memory (Tier 2)
  • EEPROM (Lua BIOS)
  • Hard Disk Drive (Tier 1)(1MB)
  • Inventory Controller Upgrade
  • Inventory Upgrade
  • Screen (Tier 1)
  • Keyboard
  • Geolyzer
  • Disk Drive
  • OpenOS (Operating System)

Lastly, you need a Transvector Binder and Transvector Dislocator which requires some progression in Thaumcraft. However, it is not too deep and completely doable if you are already able to make EV circuits and epoxid. Transvector Dislocator can be found under "Thaumic Tinkerer" and requires the following prerequisites on the same tab: Transvector Interface and Smokey Quartz. You will also need to complete research on Mirror Magic under "Artifice." For more information, visit https://gtnh.miraheze.org/wiki/Thaumcraft_Research_Cheatsheet.

Building the Robot

1. Insert the computer case into the OC Electronics Assembler which can be powered directly by any GT cable
2. Shift-click all of the parts into the computer case except the OpenOS floppy disk
3. Click assemble and wait until it completes
4. Rename the robot in an anvil
5. Place the robot down on the OC Charger which can also be powered directly by any GT cable
6. Insert the OpenOS floppy disk in the disk slot of the robot and press the power button
7. Follow the commands on the screen "install" --> "Y" --> "Y" (Note: The OpenOS floppy disk is no longer needed in the robot afterwards)
8. Copy the following line of code into the robot (middle-click to paste) and hit enter:

 wget https://raw.githubusercontent.com/DylanTaylor1/ic2-crop-automation/main/install.lua
Inventory of the robot.

9. Install the rest of the scripts by entering:

 ./install

10. Edit the config (not recommended, but check it out) by entering:

 edit config.lua

11. Place the Spade and Transvector Binder into the last and second to last slot of the robot, respectively. Crop sticks will go in the third, but it is not required to put them in yourself. An axe or mattock can also be placed into the tool slot of the robot (optional) to speed up destroying crops. See image to the right.

Building the Farms

First off, it is recommended to set everything up in a Jungle or Swamp biome at Y=130 as that will give you the highest humidity and air quality stats. This is most easily done in a personal dimension which you earn as a quest reward from reaching the moon. Do not place any solid blocks above the farm as that will reduce the air quality. All of the machines on the surface are waterproof so do not worry about the rain. Use vanilla dirt because that will allow you to grow crops that require a particular block underneath, and boost the nutrient stat of your crops. The whole farm will fit into a single chunk for easy chunk loading. See image below.

Top-View of the farm


First note the orientation of the robot sitting atop the OC charger. It must face up towards the right-most column of the working farm. If the crop stick chest is ever empty, the robot will run into errors and the script will crash. In the image, I have a trash can on the other side of the crop stick chest because I do not want any drops beyond the target crop, but this can be a second chest if you do want random drops. The blank farmland is for the transvector dislocator which should be facing it. You can tell which direction the transvector dislocator is facing by the side that is animated. The last spot is for a crop-matron which is optional and one y-level lower than the rest of the blocks. It is just to hydrate most of the crops to help them grow a little faster.

The location of the water MUST be exactly as seen in the photo (underneath all five sea lantern slabs). At a minimum, there MUST be a block above the water in the working farm. The block can be literally anything, even a lilypad will work, so long as there is something. However, I recommend using some sort of light source to help crops grow at night. Nothing needs to be above the water blocks on the storage farm, but it is more aesthetic if they all match.

The starting crops MUST be placed manually in the checkerboard pattern seen in the photo. This layout goes for all three programs. If you cannot fill the entire checkerboard to start, the absolute minimum required is two (one as the target crop and the other next to it for crossbreeding). It is not necessary to place empty crop sticks to fill the rest of the checkerboard. The target crop is used by autoStat and autoSpread to identify the crop you want to stat-up or spread to the storage farm, respectively.

Bottom-View of the farm.


Underneath the farm, you can see that there are three additional dirt blocks below each farmland, each of which add to the nutrient stat of the crop above it. For crops requiring a block underneath, that should be placed at the bottom. In this case, I have diareed planted on top which means I have one farmland --> two dirt --> one diamond block underneath each one. I do not have diamond blocks underneath the working farm because the diareed does not need to be fully grown in order to spread.


For power, I am using an HV gas turbine and a super tank with some benzene (no transformer needed). This is a little overkill, but the important part is that the charger is always at 100% charging speed which you can see by hovering over it. A set-up such as this will last forever with a few hundred thousand benzene since both machines require very little EU/t. Lastly, a reservoir feeds water into the crop-matron automatically after right-clicking it with a wrench.

Running the Programs

The first program is autoTier. This will automatically tier-up your crops, terminating once the max breeding round is reached (configurable) or the storage farm is full. A storage chest is recommended for this program. Note that unrecognized crops will be moved to the storage farm first before replacing any of the lower tier crops in the working farm. Statting-up crops during this program is a configurable option. To run, simply enter:

 autoTier

The second program is autoStat. This will automatically stat-up your crops, terminating once Gr + Ga - Re is at least 52 (configurable) for all crops on the working farm. A trash can is recommended for this program. Maximum growth and resistance are also configurable options which default to 21 and 2, respectively. To run, simply enter:

 autoStat

The third program is autoSpread. This will automatically spread (duplicate) your crops if each new Gr + Ga - Re is at least 46 (configurable), terminating once the storage farm is full. A trash can is recommended for this program. Maximum growth and resistance are also configurable options which default to 21 and 2, respectively. To run, simply enter:

 autoSpread

Fire and Forget. If you have brand new crops (ie. 1/1/1 spruce saplings) and want to automatically stat-up and start spreading:

 autoStat && autoSpread

Other Helpful Commands

To list all of the files installed on the robot, enter

 ls

To remove any one file installed on the robot, enter

 rm <filename>

To uninstall all of the files from this repo, enter

 uninstall

Recommended Crops

For starters, I recommend statting-up and spreading the following crops because their outputs are useful and not completely overshadowed by bees. Note that every crop has a higher chance of being discovered with specific parent combinations, but it is often easier to discover a crop from crossbreeding at the same tier. For example, diareed apparently has the highest chance of being discovered when the parents are oilberry and bobsyeruncleranks, BUT I recommend just running autoTier with all Tier 12 crops (or autoSpread with keepMutations on in the config). Crops that require a particular block underneath do not need to be fully grown in order to spread. For a full list of crops and their requirements, visit https://gtnh.miraheze.org/wiki/IC2_Crops_List.

  • Stickreed for discovering other crops and sticky resin (rubber dust)
  • Spruce Bonsai for all of your benzene and power needs
  • Glowing Earth Coral for sunnarium and glowstone (gold and redstone)
  • Sugarbeet for sugar (oxygen)
  • Rape for seed oil
  • Goldfish plant for fish oil
  • Tearstalks for ghast tears (chlorine and sodium hydroxide)
  • Enderbloom for enderpearls/endereyes
  • Diareed for diamonds
  • Bobsyeruncleranks for emeralds

Thanks

My repo is a fork from https://github.com/huchenlei/auto-crossbreeding/tree/improve_autocrossbreed which was originally authored by huchenlei and improved by xyqyear. Huge props to them for getting this off the ground and allowing me to take it further.

Notable Changes

If you are familiar with the older versions of this code then here are some notable changes that motivated me to develop this fork in the first place.

  • Changed general layout to access chests more easily.
  • Changed farm layout to facilitate running autoSpread immediately after autoStat.
  • Added the option to use regular dirt instead of fertilized dirt for crops requiring a particular block underneath.
  • Added configurable maximum growth and maximum resistance stats.
  • Added configurable thresholds for autoSpread, autoStat, and autoTier.
  • Added configurable option to stat-up crops while running autoTier.
  • Added configurable option to cleanup after complete (no longer a flag).
  • Added a built-in storage reset to prevent having to break the robot in order to run autoSpread or autoTier more than once.
  • Added an uninstall script.
  • Code is a LOT cleaner and more organized.
  • It is no longer the code's fault if any of the programs crash (probably).
Happy Farming! To report a bug or have a suggestion, please leave a comment on my GitHub repo linked at the top!