| package mods.immibis.redlogic.api.wiring; |
| |
| /** |
| * Interface implemented by tile entities which can connect to wires in specific ways. |
| * |
| * Note: Although wires implement IConnectable, do not use IConnectable to determine if a wire |
| * is connected to you, as IConnectable only exposes possible connections, and there are reasons |
| * for wires to not connect (e.g. if there is a microblock in the way). |
| * Use {@link IWire#wireConnectsInDirection(int, int)} to determine the actual connections of a wire. |
| */ |
| public interface IConnectable { |
| /** |
| * Called to check whether a wire connects to this block. |
| * @param wire The wire being checked. |
| * @param blockFace The face the wire is on in the block containing it. |
| * -1 when checking for jacketed wire connections. |
| * @param fromDirection The direction the wire block is in, relative to this block. |
| * @return True to allow the wire connection. |
| */ |
| public boolean connects(IWire wire, int blockFace, int fromDirection); |
| |
| /** |
| * Called to check whether a wire connects to this block from around a corner (actually an edge) |
| * |
| * Example: |
| * |
| * <pre> |
| * A# |
| * B |
| * </pre> |
| * In this situation, where A is the wire, # is a solid block and B is this block, X is right and Y is down, |
| * blockFace is -Y (up) and fromDirection is -X (left). |
| * |
| * Note this is different from: |
| * <pre> |
| * A |
| * #B |
| * </pre> |
| * where blockFace is -X and fromDirection is -Y. |
| * |
| * @param wire The wire being checked. |
| * @param blockFace The face of *this block* the edge is adjacent to. |
| * @param fromDirection The side the edge is on within that face. |
| * @return True to allow the wire connection. |
| */ |
| public boolean connectsAroundCorner(IWire wire, int blockFace, int fromDirection); |
| } |