Skip to content

Block References

CD4017BE edited this page Jan 12, 2020 · 3 revisions

There are several machines that interact with blocks but instead of being placed adjacent to their target block, they are connected via what is called Block References.

These are provided and used by devices via Block Reference ports which are connected to each other using Block Reference Wire.

You can think of a Block Reference as basically being a signal that describes a dimension, a block location in that dimension and a side to access that block from. However the possibilities to create and manipulate Block References are quite limited compared to Redstone Signals. And they also have a limited life span of 16 ticks (default config. setting) which makes it impossible to permanently store a Block Reference in some kind of memory. But they are quite powerful nonetheless.

Sources

If you don't connect anything to a Block Reference input port, it will point to the void reference which devices can't interacted with, so it's not very useful. And machines can't interact with blocks in unloaded chunks either.

The simple way to create a valid Block Reference is using a Block Access Socket. It is placed on the side of a block like Redstone Sockets are and outputs a constant Block Reference pointing to exactly that block accessed from that side.

The other highly advanced option is the 3D Block Selector. It uses three regular numeric input signals to specify the (X, Y, Z) coordinates within a limited region relative to the device to create a Block Reference for. Its access side depends on the placement orientation of the device.

The region in which blocks can be selected is defined by 3D Block Frame blocks that have to be placed in the 8 corners of a cuboid. The 3D Block Selector then has to be placed either also as a corner or along an edge of the cuboid. The maximum size is 64x64x64 (default config. setting):
If you click "scan" while feeding non zero values into the coordinate inputs, it will attempt to find a frame of that size and show you the locations of missing Frame blocks. This may help in building the frame structure.

The coordinate value for each axis must be in range 0 <= x < size, otherwise the block selector will output the void reference. By default the axes are aligned with the minecraft world coordinate system but you can mirror each axis using the +/- buttons on the block and combined with swapping input wires you can effectively re-orient the coordinate system to any possible configuration.

Operators

  • Block Reference Splitter: Creates 4 exact copies of the incoming Block Reference. This lets you use the same Block Reference in multiple devices.
  • Block Reference Multiplexer: Chooses one of the 4 incoming Block References as output based on a numeric signal. This lets you dynamically switch which block a device is connected to.
  • Block Reference Delay Line: Contains 4 tunnels that each delay a Block Reference by one tick. Delaying Block References is useful if you have a rapidly changing source (3D Block Selector or Block Reference Multiplexer) and need to adjust timing between source and consumer device.

Remember that since Block References have a limited life-span, you can't stack Block Reference Multiplexers or Delay Lines indefinitely or loop a signal inside them. Because after 16 ticks delay it will become the void reference.

Consumers

  • Block Mirror Socket: Mirrors inventory and fluid storage of the block face the connected Block Reference is pointing to. So if a machine for example tries to pull items out of the socket, it will actually extract from the linked block.
  • clocked Comparator: Reads different properties of the block the connected Block Reference is pointing to as numeric value. The property read (stored items/fluid/energy, block hardness, ...) depends on the applied augment, without augment it will just read the vanilla comparator value. So it's basically a universal block sensor.
  • controlled Fluid Translocator: Moves fluid from one block to another, either directly as fluid block or as tank content. The blocks to interact with are provided as Block References. In other words, this is pump.
  • controlled Item Translocator: Moves items from one block's inventory to another which are again provided as Block References. The machine can also transfer between individual specified inventory slots.
  • controlled Block Breaker: Breaks the block the connected Block Reference is pointing to, collecting harvested items into an adjacent inventory. When combined with the 3D Block Selector (and some control circuitry) you can also use this to quarry out large areas of blocks or build automated farms.
  • controlled Item User: Can perform block placement and other right-click interactions with the block the connected Block Reference is pointing to. Very useful for automated farms or 3D-printing buildings or whatever you can think of. It offers you precise enough control over the placement that it can even do things like connecting wires between device ports automatically.
Clone this wiki locally