ME 售货机上行接口

基本信息

属性 值
注册名 hatch.vendinguplink.me(GTNH MTE 名,非 vendingmachine: 命名空间)
显示名 hatch.vendinguplink.me.name = ME Vending Uplink Hatch
MTE ID 2742(VendingMachine.ME_UPLINK_MTE_ID)
类 MTEVendingUplinkHatch extends MTEHatch
Tier mTier = 3
大小 单方块机器
附腔 无(super(aID, aName, aNameRegional, mTier, 0, ...) 槽位数 0)
物品形态 1 个

功能

AE2 侧的可选仓背接口。装进 自动售货机 结构后, 售货机可以直接从 ME 网络 抽取交易所需的物品与硬币,绕过机器自身的 8 个输入格与 100 个输出格。

源码:blocks/MTEVendingUplinkHatch.java(510 行)。

网络接入

行为 源码依据
节点标志 gridProxy.setFlags(GridFlags.REQUIRE_CHANNEL) — 必须有频道
所有者 设为方块 getOwnerName() 对应的玩家
电缆类型 输出面 AECableType.SMART,其余 AECableType.NONE
连接面 默认只有正面;潜行右键扳手切换为六面(onWireCutterRightClick → additionalConnection)
权限 isAccessAllowed() 恒为 true,无任何玩家权限检查
朝向 isFacingValid() 恒为 true,六个面都能装

缓存与刷新

  • 每 20 tick(tick % 20 == 0)刷新一次存储缓存 refreshStorageCache(),并把网络内所有硬币折算进内部 meWallet
  • refreshCache 标志由售货机的 onPostTick 通过 uplinkHatch.setRefreshCache() 置位(GUI 刷新时触发)
  • 售货机查询某币种数量走 getCurrencyAmount(CurrencyType) → meWallet.getCount(type)

产出回注

交易成功后的物品不会落在机器里,而是排队进 pendingItemInject(LinkedList<IAEItemStack>):

  • 合并逻辑:同物品同 NBT 的堆会累加数量
  • 每超过 40 tick(tick - lastOutputTick > 40)尝试 flushInjectBuffer 一次
  • 注入走 Platform.poweredInsert(...),按 AE2 实际可插入量部分回注
  • NBT 键 pendingInject(NBTTagList)

数值

数值 值
Tier 3
MTE ID 2742
缓存刷新周期 20 tick
回注最小间隔 40 tick
存档键 pendingInject

交互

触发 行为
潜行 + 右键扳手 切换额外连接面(单面 ↔ 六面),聊天栏提示 GT5U.hatch.additionalConnection.*
AE2 电缆接入 建立 ME 网格代理节点

WAILA

getWailaNBTData 写入 stackCount(待回注堆数)与 stacks(按堆叠数降序取前 10 个)。 高级提示栏显示缓存堆数量与逐项列表,超出部分显示「还有 N 项」。

限制

  • 无附腔,机器内部不能塞任何东西
  • 结构中最多 1 个(ofHatchAdderOptional(..., 1))
  • securityBreak() 是空实现(AE2 拆除监控无响应)
  • 未设 mTier 以外的电力需求,但需要 AE2 频道供电才能激活

相关条目