-
Notifications
You must be signed in to change notification settings - Fork 2
ME Quantum Network_CN
MIAOKATZE edited this page Jul 30, 2026
·
1 revision
ME 网络量子终端(物品)与 ME 网络量子节点(方块)为 AE2 网络提供「量子化」远程接入机制:
- 量子终端:将正常运行(成型 + 供能 + 激活)的 ME 控制器整结构量子化并绑定其网络;查看网络状态;放置量子节点。
- 量子节点:无频道上限(DENSE 容量 32 频道/连接)的远程接入点,经虚拟 GridConnection 桥接锚点控制器,相邻设备直接入网。
⚠️ 量子终端与量子节点均无合成配方,通过创造模式获取;量子节点仅能由已绑定终端右击空地放置。
| 物品/方块 | 获取方式 |
|---|---|
| ME 网络量子终端 | 创造模式物品栏 / /give 命令 |
| ME 网络量子节点 | 手持已绑定终端右击空地放置(方块本身无物品形态掉落,Shift+右击销毁不返回) |
量子终端支持 5 种交互手势:
| 手势 | 行为 |
|---|---|
| 右击控制器 | 量子化整结构并绑定(已量子化则改绑到该控制器网络) |
| Shift+右击控制器 | 取消量子化并解绑 |
| 右击空地(已绑定) | 放置量子节点 |
| Shift+右击量子节点 | 销毁节点(无掉落) |
| Shift+右击空气 | 打开终端 GUI |
首次使用提示:右击控制器会同时完成量子化与绑定;Shift+右击控制器会同时取消量子化并解绑,且不会打开 GUI(GUI 有且仅在 Shift+右击空气时打开)。
- 整结构洪泛:右击一个控制器时,从该控制器起做洪泛遍历,将整结构内所有 TileController 入册为「量子化」。
- 连接过滤白名单:量子化后控制器间的连接会过滤掉非白名单方块;致密能源元件(TileEnergyCell / TileCreativeEnergyCell 等)放行,避免断供。
- 自动合并:新放置的控制器若与已量子化结构相连,自动并入量子化集合。
v1.6.9 起精简为紧凑布局(120×92),仅显示三类核心信息:
| 行 | 内容 | 数据来源 |
|---|---|---|
| 标题 | 「ME网络量子终端」 | lang gui.quantum.title
|
| 控制器坐标 | 锚点 X, Y, Z | NBT QT_AnchorX/Y/Z
|
| 维度 | 维度 ID | NBT QT_AnchorDim
|
| 量子节点数 | 网络中量子节点方块数 | QuantumNetworkData.quantumNodeCount |
| 频道 | used / total (pct%) |
usedChannels / totalChannels
|
- 在线态:锚点控制器可达,所有数据实时显示。
-
离线态:锚点不可达时,控制器坐标 + 维度仍显示,节点数与频道数硬编码为
0 / 0 (0%),末行红色「网络离线(锚点不可达)」。 - 等待态:首包未到达时显示「...」。
-
totalChannels(总频道数)=
(n × 6 − sharedFaces) × 32-
n= 量子化控制器方块数 -
sharedFaces= 相邻控制器共享面数 -
32= DENSE 线缆单连接频道容量
-
- usedChannels(已用频道数)= 遍历量子节点取各连接 usedChannels 的 max 求和(max 口径拓扑上正确,桥接连接 usedChannels 恒≥邻接连接)
- 轮询:每 10 tick 发 C→S 请求包,服务端装配后回 S→C 快照
- 缓存:绑定锚点一致则保留上次快照,重开即显,≤10t 自动刷新
-
不暂停游戏:覆写
doesGuiPauseGame()返回 false(v1.6.7 修复,单人模式不再卡死)
量子节点 TE(TileEntityNetworkQuantumNode)实现 IGridProxyable,每 20 tick 维护一次连接:
- 解析锚点坐标 → 取锚点控制器
- 校验锚点仍量子化
-
createGridConnection建立虚拟桥接到锚点 grid - 相邻 AE2 设备经节点邻接入网(普通 AE 连接,走桥接通道)
锚点不可达时节点分级离线,聊天提示:
| 原因 | 提示 |
|---|---|
| 锚点控制器未加载/被拆 | 节点离线(锚点不可达) |
| 跨维度 | 暂不支持跨维度桥接,节点离线 |
| 锚点未量子化 | 锚点控制器未量子化 |
-
挖掘不掉落:
getDrops返回空,canSilkHarvest=false -
Shift+右击销毁:手持量子终端 Shift+右击节点 →
setBlockToAir(无掉落) - 硬度:方块 hardness=1000(挖掘速度等效降至 1/1000)
每个量子节点每 20 tick 检查一次:
- 取锚点 grid → 计算
totalChannels/usedChannels/ 本节点带入的nodeUsed - 当
nodeUsed > lastNodeUsed && used × 100 >= total × 95 && used < total时,向节点放置者发送聊天警告
- 当
used > total时,逐个setBlockToAir销毁所有量子化控制器 - 锚点位置触发
createExplosion(null, x+0.5, y+0.5, z+0.5, 4.0F, true)TNT 级爆炸 -
爆炸去重:1.7.10 服务端单线程,第一个节点销毁控制器后
TileController.invalidate同步触发所有节点连接断开,后续节点跳过
| 字段 | 公式 | 说明 |
|---|---|---|
| totalChannels | (n × 6 − sharedFaces) × 32 |
n=控制器方块数,sharedFaces=共享面数,32=DENSE 容量 |
| usedChannels | Σ max(节点连接 usedChannels) | max 口径,遍历所有量子节点 |
量子化后的 ME 控制器获得等效防护:
| 属性 | 数值 | 实现方式 |
|---|---|---|
| 等效硬度 | 1000 |
BreakSpeed 事件:newSpeed × (hardness/1000)
|
| 等效防爆 | 400000 |
ExplosionEvent.Detonate:移除受影响方块 |
| 扳下保护 | Shift+右击仍 cancel |
QuantumControllerEventHandler 拦截 |
| 网络工具放行 | 持 INetworkToolItem 普通右击放行 | 打开 AE2 原生 GUI_NETWORK_STATUS
|
安装 WAILA 后,量子节点显示在线状态:
- §a 设备在线:节点已桥接
- §c 设备离线:节点未连接
离线原因仍由右键聊天(
chat.quantum.*键系)提供,WAILA 不显示原因细节。
| 配置项 | 类型 / 默认值 | 说明 |
|---|---|---|
quantumNodeIdlePowerUsage |
double = 10.0 | 量子节点待机 AE/t 功耗(category: ae2) |
| 参数 | 数值 | 说明 |
|---|---|---|
| GUI 尺寸 | 120 × 92 | v1.6.9 紧凑布局 |
| GUI 轮询间隔 | 10 tick | C→S 请求频率 |
| 节点维护间隔 | 20 tick | 重连 / 过载检查 |
| DENSE 容量 | 32 频道/连接 | 量子节点单连接上限 |
| 节点硬度 | 1000 | 挖掘速度等效 1/1000 |
| 控制器等效防爆 | 400000 | 爆炸事件移除 |
| WorldSavedData | gtswn_quantum_controllers |
量子化坐标集持久化 |
| 网络包 disc5 | PacketRequestQuantumTerminalData |
C→S 请求 |
| 网络包 disc6 | PacketSyncQuantumTerminalData |
S→C 快照 |
| 键 | 类型 | 含义 |
|---|---|---|
QT_Bound |
boolean | 是否已绑定 |
QT_BoundName |
String | 绑定网络名 |
QT_AnchorDim |
int | 锚点维度 ID |
QT_AnchorX |
int | 锚点 X 坐标 |
QT_AnchorY |
int | 锚点 Y 坐标 |
QT_AnchorZ |
int | 锚点 Z 坐标 |
- 锚点坐标 + 维度
- 连接状态(
isLinked) - 放置者 playerID(用于 95% 预警反查)
-
lastNodeUsedChannels(跟踪本节点频道增长)
- 不同终端可绑定同一个控制器(终端 NBT 只存锚点坐标)
- 不同玩家放置的量子节点独立连接到同一个锚点控制器
- 95% 预警各自独立发给自己 placer(通过
GridNode.getPlayerID()反查) - 爆炸会影响所有连接的量子节点(控制器消失,所有桥接断开)
| 文件 | 职责 |
|---|---|
common/items/ItemNetworkQuantumTerminal.java |
终端物品:五手势 + NBT |
common/quantum/QuantumControllerRegistry.java |
WorldSavedData:量子化坐标集 + 洪泛 |
common/quantum/QuantumControllerEventHandler.java |
5 事件:拦截 / 硬度 / 防爆 / 重算 / 巡检 |
common/quantum/QuantumNetworkData.java |
服务端统计装配 POJO |
common/block/BlockNetworkQuantumNode.java |
节点方块 |
common/tile/TileEntityNetworkQuantumNode.java |
桥接 TE + 过载检查 |
client/gui/GuiQuantumTerminal.java |
终端 GUI |
network/PacketRequestQuantumTerminalData.java |
C→S 请求包 |
network/PacketSyncQuantumTerminalData.java |
S→C 快照包 |