Dimensional Transceiver (HyperCube)

The Dimensional Transceiver (commonly called the HyperCube, block: BlockHyperCube, tile: TileHyperCube) is Ender IO’s cross-dimensional I/O system. It transmits power, fluids, and items between multiple HyperCube blocks that share the same channel, across any distance and dimension.

Core Blocks

  • Block: crazypants.enderio.machine.hypercube.BlockHyperCube
  • Tile: crazypants.enderio.machine.hypercube.TileHyperCube
  • ModObject: blockHyperCube

Multiblock Notes

The HyperCube is not a traditional multiblock — each TileHyperCube is an independent tile entity. However, all cubes sharing the same Channel form a logical network that transfers resources between each other. This is managed by HyperCubeRegister (server-side singleton).

Channel System

Each HyperCube belongs to a named Channel (Channel class). All cubes with the same channel name share:

SubChannel IO Modes Function
POWER SEND / RECIEVE / BOTH / NEITHER RF power distribution
FLUID SEND / RECIEVE / BOTH / NEITHER Fluid transfer
ITEM SEND / RECIEVE / BOTH / NEITHER Item transfer

Channel assignment is done via the GUI (GuiHyperCube). Channels are stored in ClientChannelRegister (client) and ServerChannelRegister (server).

Formation Rules

  • No physical formation — each HyperCube is placed independently.
  • Cubes are registered to HyperCubeRegister on onBlockAdded() and deregistered on invalidate() / onChunkUnload().
  • All cubes with the same channel name form a logical network.
  • Minimum for function: 2 cubes on the same channel (one sending, one receiving).
  • Redstone control: Each cube has an independent RedstoneControlMode that can disable its participation in the network.

Energy / Data Flow

Power

  • Internal capacitor: BasicCapacitor(transceiverMaxIoRF, 25000) — stores power for operations.
  • Upkeep cost: Config.transceiverUpkeepCostRF RF/tick (deducted every tick).
  • Transmission cost: Config.transceiverBucketTransmissionCostRF / 1000F RF per millibucket of fluid transferred.
  • Max I/O: Config.transceiverMaxIoRF RF/tick per cube.
  • Energy loss: Config.transceiverEnergyLoss (default 0.1 = 10% loss per hop).
  • Distribution logic (sendEnergyToOtherNodes): Each cube with excess power (> 0) distributes to other cubes in the same channel, subject to per-tick max I/O limits.
  • Connection requirement: A cube must have > 0 energy stored AND at least one other connected cube with > 0 energy to stay “connected” (canMaintainConnection()). If energy runs out, it deregisters from the channel.

Fluids

  • IFluidHandler interface: fill() (send) and drain() (receive).
  • Each cube tracks NetworkFluidHandler objects for all adjacent fluid handlers.
  • Fluid is distributed across all receiving cubes in the channel.
  • Transmission cost is paid in RF per millibucket transferred.

Items

  • ISidedInventory with 8 input + 8 output slots.
  • Items are pulled from local inventory and distributed to receiving cubes’ output slots.
  • Item filters (ItemFilter) control what can be sent/received.
  • ItemRecieveBuffer queues incoming items before inserting into the inventory.

Redstone Control

  • RedstoneControlMode: IGNORE, SIGNAL_OFF, SIGNAL_ON
  • When redstone check fails: cube deregisters from channel, stops all transmission.
  • Per-cube independently controllable.

Energy Loss

The HyperCube has configurable energy loss per transmission:

energy_received = energy_sent × (1 - ENERGY_LOSS)

Default ENERGY_LOSS = Config.transceiverEnergyLoss = 0.1 (10%).

This makes long-distance power transmission expensive and prevents infinite energy loops.

GUI

  • Right-click opens GuiHyperCube.
  • Configure: channel name, per-subchannel IO mode, redstone control.
  • Displays: current power stored, channel members, inventory slots.

Rendering

  • HyperCubeRenderer renders the 3D block.
  • Overlay icons for channel state and connection status.

Configuration

From Config.java:

  • transceiverMaxIoRF: 5000 RF/tick
  • transceiverInternalBuffer: used as max storage in capacitor
  • transceiverEnergyLoss: 0.1 (10%)
  • transceiverUpkeepCostRF: 5 RF/tick
  • transceiverBucketTransmissionCostRF: 100 RF/mB
  • transceiverMaxIoRF: also used for max power transfer per tick

See Also