-
Notifications
You must be signed in to change notification settings - Fork 2
ME Quantum Network_EN
The ME Network Quantum Terminal (item) and ME Network Quantum Node (block) provide a "quantum" remote-access mechanism for AE2 networks:
- Quantum Terminal: Quantizes a formed, powered, active ME controller structure and binds its network; views network status; places Quantum Nodes.
- Quantum Node: A remote access point with no channel limit (DENSE capacity 32 channels/connection) that bridges into the anchored controller's grid via a virtual GridConnection so adjacent devices join directly.
⚠️ Both the Quantum Terminal and Quantum Node have no crafting recipe — obtain via Creative; Quantum Nodes can only be placed by right-clicking ground with a bound terminal.
| Item/Block | How to obtain |
|---|---|
| ME Network Quantum Terminal | Creative inventory / /give command |
| ME Network Quantum Node | Place by right-clicking ground with a bound terminal (the block has no item-form drop; Shift+right-click destroys without returning) |
The Quantum Terminal supports 5 interaction gestures:
| Gesture | Behavior |
|---|---|
| Right-click controller | Quantize the entire structure & bind (rebinds if already quantized) |
| Shift+right-click controller | Dequantize & unbind |
| Right-click ground (bound) | Place a Quantum Node |
| Shift+right-click Quantum Node | Destroy the node (no drops) |
| Shift+right-click air | Open terminal GUI |
First-use tip: Right-clicking a controller performs both quantization and binding; Shift+right-clicking a controller performs both dequantization and unbinding and does not open the GUI (the GUI opens only on Shift+right-click air).
-
Whole-structure flood: Right-clicking a controller floods from it and registers every
TileControllerin the structure as "quantized". - Connection filter whitelist: After quantization, connections between controllers are filtered; dense energy cells (TileEnergyCell / TileCreativeEnergyCell, etc.) are whitelisted to avoid power loss.
- Auto-merge: Newly placed controllers adjacent to a quantized structure are automatically merged into the set.
As of v1.6.9 the GUI is streamlined into a compact layout (120×92) showing only three core items:
| Row | Content | Source |
|---|---|---|
| Title | "ME Network Quantum Terminal" | lang gui.quantum.title
|
| Controller Pos | Anchor X, Y, Z | NBT QT_AnchorX/Y/Z
|
| Dimension | Dimension ID | NBT QT_AnchorDim
|
| Quantum Node Count | Number of Quantum Node blocks in the network | QuantumNetworkData.quantumNodeCount |
| Channels | used / total (pct%) |
usedChannels / totalChannels
|
- Online: Anchor controller reachable, all data shown live.
-
Offline: Anchor unreachable; controller pos + dimension still shown, node count and channels hardcoded to
0 / 0 (0%), last line red "Network offline (anchor unreachable)". - Waiting: First packet not yet arrived, shows "...".
-
totalChannels =
(n × 6 − sharedFaces) × 32-
n= number of quantized controller blocks -
sharedFaces= number of faces shared between adjacent controllers -
32= DENSE cable channel capacity per connection
-
- usedChannels = sum over Quantum Nodes of the max usedChannels of their connections (max is topologically correct; bridged connection usedChannels is always ≥ adjacent connection)
- Polling: Sends a C→S request packet every 10 ticks; the server assembles and replies with an S→C snapshot.
- Cache: If the bound anchor is unchanged, the previous snapshot is retained — reopening shows last data and auto-refreshes within ≤10t.
-
No game pause:
doesGuiPauseGame()overridden to return false (fixed in v1.6.7, single-player no longer freezes).
The Quantum Node TE (TileEntityNetworkQuantumNode) implements IGridProxyable and maintains its connection every 20 ticks:
- Parse anchor coordinates → fetch anchor controller
- Verify anchor is still quantized
-
createGridConnectionto build a virtual bridge into the anchor grid - Adjacent AE2 devices join the network via the node (normal AE connection, over the bridge)
When the anchor is unreachable the node goes offline with a chat hint:
| Reason | Hint |
|---|---|
| Anchor controller unloaded / removed | Node offline (anchor unreachable) |
| Cross-dimension | Cross-dimension bridging not supported, node offline |
| Anchor not quantized | Anchor controller is not quantized |
-
No drop on mining:
getDropsreturns empty,canSilkHarvest=false -
Shift+right-click destroy: Hold Quantum Terminal + Shift+right-click node →
setBlockToAir(no drops) - Hardness: block hardness=1000 (effective mining speed reduced to 1/1000)
Each Quantum Node checks every 20 ticks:
- Fetch anchor grid → compute
totalChannels/usedChannels/ this node'snodeUsed - When
nodeUsed > lastNodeUsed && used × 100 >= total × 95 && used < total, send a chat warning to the node's placer
- When
used > total, every quantized controller issetBlockToAir'd - The anchor position triggers
createExplosion(null, x+0.5, y+0.5, z+0.5, 4.0F, true)— TNT-level explosion -
Explosion dedup: 1.7.10 server is single-threaded; the first node destroying the controller synchronously triggers
TileController.invalidate, severing all node connections; subsequent nodes skip.
| Field | Formula | Notes |
|---|---|---|
| totalChannels | (n × 6 − sharedFaces) × 32 |
n=controller block count, sharedFaces=shared faces, 32=DENSE capacity |
| usedChannels | Σ max(node connection usedChannels) | max semantics, over all Quantum Nodes |
Quantized ME controllers gain equivalent protection:
| Attribute | Value | Implementation |
|---|---|---|
| Equivalent hardness | 1000 |
BreakSpeed event: newSpeed × (hardness/1000)
|
| Equivalent blast resistance | 400000 |
ExplosionEvent.Detonate: remove affected blocks |
| Wrench protection | Shift+right-click still canceled |
QuantumControllerEventHandler intercepts |
| Network tool passthrough | Plain right-click with INetworkToolItem allowed | Opens AE2 native GUI_NETWORK_STATUS
|
With WAILA installed, the Quantum Node shows online status:
- §a Device online: node bridged
- §c Device offline: node not connected
Offline reasons are still provided by right-click chat (
chat.quantum.*keys); WAILA does not show reason details.
| Config | Type / Default | Description |
|---|---|---|
quantumNodeIdlePowerUsage |
double = 10.0 | Quantum Node idle AE/t power (category: ae2) |
| Parameter | Value | Notes |
|---|---|---|
| GUI size | 120 × 92 | v1.6.9 compact layout |
| GUI poll interval | 10 ticks | C→S request frequency |
| Node maintenance interval | 20 ticks | reconnect / overload check |
| DENSE capacity | 32 channels/connection | Quantum Node per-connection limit |
| Node hardness | 1000 | effective mining speed 1/1000 |
| Controller equivalent blast resistance | 400000 | explosion event removal |
| WorldSavedData | gtswn_quantum_controllers |
quantized coordinate set persistence |
| Network packet disc5 | PacketRequestQuantumTerminalData |
C→S request |
| Network packet disc6 | PacketSyncQuantumTerminalData |
S→C snapshot |
| Key | Type | Meaning |
|---|---|---|
QT_Bound |
boolean | Whether bound |
QT_BoundName |
String | Bound network name |
QT_AnchorDim |
int | Anchor dimension ID |
QT_AnchorX |
int | Anchor X coordinate |
QT_AnchorY |
int | Anchor Y coordinate |
QT_AnchorZ |
int | Anchor Z coordinate |
- Anchor coordinates + dimension
- Connection state (
isLinked) - Placer playerID (for 95% warning lookup)
-
lastNodeUsedChannels(tracks this node's channel growth)
- Different terminals can bind to the same controller (terminal NBT only stores anchor coordinates)
- Quantum Nodes placed by different players independently connect to the same anchor controller
- 95% warnings are sent independently to each placer (via
GridNode.getPlayerID()lookup) - The explosion affects all connected Quantum Nodes (controller gone, all bridges severed)
| File | Responsibility |
|---|---|
common/items/ItemNetworkQuantumTerminal.java |
Terminal item: five gestures + NBT |
common/quantum/QuantumControllerRegistry.java |
WorldSavedData: quantized coordinate set + flood |
common/quantum/QuantumControllerEventHandler.java |
5 events: intercept / hardness / blast / recompute / patrol |
common/quantum/QuantumNetworkData.java |
Server-side assembly POJO |
common/block/BlockNetworkQuantumNode.java |
Node block |
common/tile/TileEntityNetworkQuantumNode.java |
Bridge TE + overload check |
client/gui/GuiQuantumTerminal.java |
Terminal GUI |
network/PacketRequestQuantumTerminalData.java |
C→S request packet |
network/PacketSyncQuantumTerminalData.java |
S→C snapshot packet |