Servo Wheat Farms

***UPDATE: Thanks to Broom Stone (see comments below) for noticing that this design won’t work with versions of Factorization after 0.8.29, because servo inventories have been reduced to one slot. This means that the lacerator servo cannot collect both seeds AND wheat. I’ll post a suggested redesign at some point in the near future (probably involving hopper carts). Other than that, I hope the following tutorial is still a helpful example of how to use and program servos.***

There are lots of ways  to automate or semi-automate wheat farming, even with only vanilla resources. A stream of water can be used to harvest, while dispensers can re-plant seeds. Using an elaborate Redstone clock, one can even set a farm to auto-harvest after a given interval (hopefully enough time to let most of the wheat mature). Many different mods offer alternative methods, each with their own strengths and weaknesses. The obvious mods that come to mind are Forestry, Thaumcraft, Steve’s Carts, and MineFactory Reloaded, and these four are strong because they automatically monitor your wheat and harvest it when it has matured. Set up the system and you never have to worry about it again, for the most part.

What each of these mods offer, however, are particular kinds of blocks or entities that are dedicated to harvesting and/or planting. On the other hand, there are some mods that are so open-ended that while they don’t introduce a specific item dedicated to crop farming, they can be used toward that very end with a little in-game creativity. ComputerCraft is a mod I’ve used on a prior occasion to automate wheat harvesting and re-planting, if not the detection of wheat maturity to trigger the harvest/re-plant cycle. Instead, when I saw that the wheat was ready, I ran a program on a computer inside my base that sent a wireless signal to a set of turtles, causing them each to run a program that harvested, re-planted, and dropped the wheat and excess seeds into a deposit system. It was a cool system, if I do say so myself, though my fps took a noticeable hit whenever the 12 turtles did their thing.

A similarly player-initiated system is possible using two Factorization servos, one for harvesting (using a lacerator) and the second for replanting (using a robotic arm), for any size wheat field. In order to demonstrate this concept, I have constructed a 7×7 field, but there is no reason why this field size cannot be altered or expanded indefinitely. The instructions on the servo rail are simple, requiring no serious programming, mainly just directional controls and pulses for the re-planting servo. The servos are triggered into action by a Redstone signal (a button press). Wheat and seeds are harvested, seeds re-planted, then the harvested wheat and seeds are deposited in a sorting system that replenishes the seed inventory of the planter servo and sends excess to storage. I’ll give a step-by-step account of how this setup is constructed.

First of all, lay out your farm land, and set a grid of servo rail two blocks above the farmland (that is, not on the block directly above the farmland). Place a socket control instruction (set to pulse) on the rail above each bit of farmland.

Leave a one block vertical gap between the rail and the farmland.

On two opposing sides of the wheat field, extend the servo rail grid by one block. These overhanging bits of rail are where you put directional instructions to make the servos turn around and go back down the next row of farmland. The idea here is to make an unchanging back and forth path for your servos so that they pass over every bit of farmland.

This is where the servos will enter the grid. Notice the alternating servo direction instructions.

The other side of the grid with alternating servo direction instructions.

An overhead view of the servo rail grid showing instructions. The servos enter from the bottom right of the image and exit on the top left.

If your field has an odd number of rows, your servo will end up on the opposite corner of the field from the one it entered the field. One last row of servo rail can be used to bring the servo back to its original side of the field. On this last row, make sure to use a point top instruction facing up. This will be important when the lacerator servo comes to a stop over its hopper (otherwise it will destroy the hopper). You can also use a speed instruction to set the servo speed to “faster.” We’ll set it back to “slowest” before it re-enters the field.

When the servos exit the grid, point the top up and, optionally, make the servos move faster.

Here’s the complicated part. You need to set up a line of servo rail to connect the exit and entry points. On this line is where the servos are going to stop, the lacerator will deposit its harvest, and the robotic arm will refresh its inventory of seeds. To make this happen, you need a series of instructions on the line: redstone pulse, trap, trap, set speed (slowest), redstone pulse, point top (down), set direction (in the direction you want the servos to go, obviously). Below the second trap instruction place a hopper connected to a chest or something. This hopper is what receives the lacerator harvest inventory. Either another hopper or a parasieve (filtering in only seeds) should sit above the first trap instruction, pointed down (toward where the servo with the robotic arm will sit). We’ll deal with the rest of the item transport system in a bit.

Moving right-to-left, the instructions are: redstone pulse, trap, trap, servo speed, redstone pulse, point top. The positions of the servo speed and the second redstone pulse instructions can be swapped.

A parasieve above the first trap and a hopper below the second. If you are using TE to pull items out of the chest, place the chest below the hopper instead of to the side. I’ve noticed a bug with itemducts where they interfere with redstone signals.

Now you need a bit of redstone to connect the two redstone pulse instructions to the trap instructions. A setup like this works just fine. I am using a button to start the system.

A button is needed to start the whole system.

The other side of the redstone setup. Redstone pulse instructions need to be one y-level higher than the redstone it activates, while trap instructions need to be on the same y-level as the redstone that activates it.

Because the lacerator will need time to spin up before is reaches the first bit of wheat, and because it will need to keep spinning while it is turning each corner at the end of a row, I recommend surrounding your wheat farm with fencing. The lacerator will not have time to destroy any part of the fence as it passes over (wheat breaks much more easily than fencing does), but the presence of the fence will keep the lacerator spinning. For this reason, you may want to have a block of cobblestone or something sitting above your water block(s).

A fence surrounds the field and a block of cobblestone sits above the water source block.

Finally, you’ll need to power the servo rail from your Factorization power grid. If you put two servos onto the rail (without the lacerator or robotic arm, just yet), whichever way they go initially, they will eventually begin going in the correct direction and wind up sitting on the two trap commands, facing up. At this point, place a lacerator on the foremost servo (the one sitting over the hopper) and a robotic arm on the other (the one sitting under a hopper or parasieve).

Lacerator above the hopper, robotic arm below the parasieve or hopper.

Hit the button we set up earlier just to check that everything works smoothly. If everything has been set up correctly, both servos will turn over and face down, pass over every bit of farmland (slowly), speed up when it exits the field, turn back over so that it faces up, and come to a stop over the two trap instructions. If they do this, pat yourself on the back. It’s all over but the details. If you haven’t already, go ahead and use a hoe on your farmland and plant your initial seeds.

The last bit has to do with sending the wheat and seeds from the lacerator servo into your sorting system or storage and making sure the seeds replenish the robotic arm servo’s inventory first before heading into storage. There are lots of ways to do this. Pictured here is one way you can use BuildCraft pipes to do this.

Item removal and seed-replenishment can be done however you want. Here’s an example Buildcraft setup.

You can also use Thermal Expansion itemducts. This is probably the easiest way to do it and it gives you a chance to use another Factorization block: the parasieve. In this setup, make the block sitting above the robotic arm servo be a parasieve rather than a hopper (or a parasieve above a hopper). Make sure the large hole on the parasieve faces the servo (or the hopper). The grate will be facing up. Right click on the parasieve and put a seed in the GUI’s filter grid to tell it to allow through only seeds (when you apply a redstone signal to a parasieve, it reverses this and blacklists the items in its filter). Using either a redstone signal or a pneumatic servo make the itemduct connected to the chest actively pull out items. First of all, connect the pipe to the parasieve, then on to wherever else you want it to go (you may even want to use the TE wrench to make put the pip connected to the parasieve in green mode). This will make sure that seeds go to the robotic arm servo first before going anywhere else.

The GUI of the parasieve. Items in this grid are whitelisted unless the parasieve receives a redstone signal. Then the items are blacklisted.

An example TE itemduct transport system.

And that’s that. With  two servos, some powered servo rail, some instruction plates, and the item transport system of your choice (including, potentially, more servos!!!), we have a pretty sweet wheat farm powered by Factorization. What’s more, as you’ve probably already reasoned out, you can use this same setup for potatoes or carrots, The only thing is, it has to be manually initiated. To fully automate this farm, what you would need is either some kind of timer or something like an advanced BUD (Block Update Detector) from Extra Utilities that reads wheat metadata in order to detect when one of the squares containing wheat has reached maturity. But those are problems for another post.