Probably the most complex addition by Railcraft is the concept of Signalling. Signals are powerful. They give us the ability to route minecart traffic using advanced logic and wireless connections. This guide will attempt to explain how to setup your own basic signalling system.
We will start with a list of terms. To those of you familiar with railroads, you may recognize some of these terms:
Signal Block - The length of track between two paired Block Signals. Can be quite long, they can even extend beyond the chunk loading boundary. Currently you can only define straight sections of track as a Signal Block. Any deviations or breaks in the line between two signals will render the Signal Block invalid. Slopes are valid, but there are some considerations that need to be taken into account. More on that later.
Signal Aspect - Basically the current state of a Signal. Possible states in order of least restrictive to most restrictive are Green, Blink Yellow, Yellow, Blink Red, Red. Blink states are currently only used to indicate Signal Block pairing state (pairing and unpaired respectively). Green indicates that no minecart is in the Signal Block. Yellow that the minecart is moving away from the Signal, and Red means that a minecart has either stopped in the block or is moving towards the signal.
Controller - A device capable of transmitting a Signal Aspect to a Receiver. All Block Signals function as Controllers.
Receiver - A device that can be paired to a Controller in order to trigger different behavior on different Signal Aspects. These would be Distant Signals, Switch Motors, and Receiver Boxes.
Block Signal - A Signal that can paired with another Block Signal to define a Signal Block. It also functions as a Controller. They only function is pairs, and every 4 minutes check the validity of the Signal Block they define. In the case of a failure, it will wait another 4 minutes before checking the Signal Block again. If the Signal Block is still invalid, the pairing will be cleared and they will revert to the Red Blink state.
Distant Signal - A Signal that functions as a Receiver to display the state of the paired Controller. This can be used to display the status of Block Signals you could not normally see, such as the status of a Diverging Line or the status of the Signal Block after the current one.
Main Line - The primary track, for our uses it will usually refer to a straight section of track.
Diverging Line - A track that splits from the main line and travels in a new direction.
Now we will move onto the two items that are needed to create a functional Signal System. Both function by right-clicking on one block and moving to the block you wish to pair with and right-clicking on it. Its a simple system to pair devices. You will receive various messages indicating the success or failure of any pairing attempt.
Signal Block Surveyor - This surveying tool is used to pair two Block Signals to create a Signal Block.
Signal Tuner - An electronic frequency scanner used to pair a Controller with a Receiver.
And now we have the real meat of the Signalling System, the Signals and devices operated by them.
Block Signal - The most basic Signal, both a Block Signal and a Controller. This signal will form the heart of your Signalling System. It must be placed near a rail in order to form a valid Signal Block. The exact distance it can be from the rail is somewhat hard to define, but it must be within two tiles horizontally, and four tiles vertically. You need not place the signal on both ends in the same configuration relative to the rail, all that matters is that the rail forms a straight line between the two signals. When searching for a rail, it will look below it first, then one tile to either side, and then finally two tiles to either side. If two rails are equidistant to the signal, the exact rail picked will vary on the implementation of the search algorithm and will not be defined here. Best to avoid such configurations as there is no guarantee they will remain valid between updates.
Distant Signal - A simple Receiver that can be paired to a Controller. When paired it will display the same Aspect as the paired Controller. As stated before, this is used to display the aspect of another signal. Useful for indicating the status of the next Signal Block or a Diverging Line. Can also be used in Stations or CTC centers if you are creative.
Dual-Head Block Signal - Combining a Block Signal and a Distant Signal, it possess two lights. The top light is a Block Signal and can be paired with any other Block Signal and functions as the Controller. The bottom light is basically a Receiver that can be paired to any Controller.
Switch Motor - Powered by either Redstone or a Controller, this block is placed across the main line from the diverging line (replacing the traditional lever).
Powered or unpowered carts from the top of the main line or from the diverging line always travel towards the "open" side of the switch.
When unpowered the Main Line allows the cart to travel straight.
When powered the cart will shift onto the Diverging Line.
Once the switch is on the ground the direction of the switch can be adjusted with a Crowbar.
Signal Receiver Box - This box can be paired with any Controller. When paired, you can open a GUI to pick which Aspects should emit a Redstone current from the Box. If placed next to a Signal Controller Box it will transmit the Aspect to it as well.
Signal Controller Box - This box can be placed next to a Signal Receiver Box and will then send the Signal Aspect from the Receiver Box to a paired Receiver. Multiple Controller Boxes can be placed next to a single Receiver Box. This enables a single Block Signal to control multiple Switch Motors or Distant Signals. Placing two Receiver Boxes next to a Controller Box will cause the Controller Box to send the most restrictive Signal Aspect between the two. Additionally it can be powered via Redstone to emit an Aspect chosen via a GUI. It will not activate on the Redstone current emitted directly from a Signal Receiver Box. It will however always emit the most restrictive Aspect between the one chosen in the GUI and one received from a Receiver Box.
More On Signal BlocksEdit
In order to better help explain Signal Blocks we will provide some examples.
In this example the minecart is moving toward the signal on the right and away from the minecart on the left. As you can see the right signal is red and the left one is yellow.
Here we have the reverse of the previous situation. As you can see the signal aspects have also switched.
This is what happens when a minecart stops in a Signal Block. As you can see, both signals are red.
Here there is no minecart. Both signals display the all clear, green.
Keep in mind that linking three signals is an impossibility. You may only link two together so you will have to be creative with your design. As in the example above, linking the far right with the middle, then linking the middle to the left will only cause the far right to blink red.
This particular example is different from the others. In this case we have two perpendicular rails. The bottom rail has a stationary minecart stopped exactly on the point that the two rails cross each other. The upper rail traverses a slope who's lower end is below the bottom rail and who's upper end is above it. You may notice that both signals are red. This is because they actually define a detection box that uses the signals as corner points (technically its the closest rail to the signal that defines the detection box). In this example that box extends across the lower rail and is currently detecting the stationary minecart. The lesson that you should take away here is that you must be careful when defining Signal Blocks that possess slopes. If another rail intersects the detection box, minecarts on that rail will also trigger the signals.
Example #7 - Side TrackEdit
Here we have an example of an automatic siding that will shunt any approaching minecarts to the side until the Signal Block ahead is clear. The blue lines represent Controller-Receiver pairings. The Block Signal is paired with a Receiver Box, which is connected via redstone to a Holding Rail. The Receiver Box is set to emit a redstone current when the Signal is green or yellow. Adjacent to the Receiver Box is a Controller Box. The Receiver Box will pass the Signal's Aspect along to the Controller Box. The Controller Box is paired with a Switch Motor. The Switch Motor is set to align the Switch Rail to the Diverging Line when the Signal is red. This basic setup will only work for minecarts traveling left, but it could be expanded to be bi-directional with a bit of tinkering.
Example #8 - Grand JunctionEdit
Using only what Railcraft and Minecraft provide, you can create a fully functional Grand Junction from these basic parts. What makes this possible is the ability to link Controller/Receiver boxes together. When multiple Receiver boxes are placed next to a Controller box, the Controller box will pass along the most restrictive Aspect it sees from the Receiver boxes. However, it must be noted that this particular design can have issues if two carts arrive at exactly the same moment, but other than that it works perfectly well most of the time. A potential solution is to move the Signals farther back from the Junction (on the other side of the Boarding Tracks), but then you would need to implement some kind of track priority system or deadlock could occur.