Wireless Crafting Terminal

基本信息

属性 值
注册名 ae2wct:wirelessCraftingTerminal(驼峰 T)
源码类 ItemWirelessCraftingTerminal(items/ItemWirelessCraftingTerminal.java)
基类 AERootPoweredItem(AE2 的 appeng.items.tools.powered.powersink.AERootPoweredItem)
实现接口 IWirelessCraftingTerminalItem、IWirelessTermHandler、IBaubleExpanded
最大堆叠 1(:59)
构造容量 super(Reference.WCT_MAX_POWER, Optional.absent())(:57)

无线链接

在 preInit 中向 AE2 无线终端注册表登记(WirelessCraftingTerminal.java:67-68):

AEApi.instance().registries().wireless()
        .registerWirelessHandler((IWirelessTermHandler) ItemEnum.WIRELESS_CRAFTING_TERMINAL.getItem());

这使它能从任意 AE2 无线终端槽中被远程打开,而不必放在玩家背包——这正是「无线」的含义。

NBT 结构

键 用途
internalCurrentPower 内部储能(与 AE2 同名常量)
key 无线链接密钥(LINK_KEY_STRING,:49)
BoosterSlot 增强卡插槽
MagnetSlot 磁力卡插槽

灵魂绑定

public boolean isBookEnchantable(ItemStack a, ItemStack b) {
    return EnderIO.isSoulBound(b);
}

WCT 实现了 EnderIO 的灵魂绑定接口:被灵魂绑定的物品可作为本书(无线终端)附魔。EnderIO 不在本 wiki 收录范围(data/relation.md 无对应行),不建分类链接。

@Optional.Interface(iface = "baubles.api.expanded.IBaubleExpanded", modid = "Baubles|Expanded")(:45)——同时支持 Baubles 2 与 Baubles Expanded,两者均不在收录范围。

⚠️ 源码缺陷:ae2wctMaxPower 配置不生效

ae2wctMaxPower 是配置项,lang 描述为 “Maximum Power in AE units the wireless terminal can hold”,且 ConfigHandler 会把值写回 Reference.WCT_MAX_POWER(ConfigHandler.java:112)。但终端的实际容量并不会因此改变。

根因:AERootPoweredItem 把容量存为不可变字段(Applied-Energistics-2-Unofficial/.../AERootPoweredItem.java:36-44):

private final double powerCapacity;          // :36

public AERootPoweredItem(final double powerCapacity, final Optional<String> subName) {
    ...
    this.powerCapacity = powerCapacity;      // :44 —— 仅在构造时赋值一次
}

时序(WirelessCraftingTerminal.preInit):

行号 动作 后果
:64 proxy.registerItems() 触发 ItemEnum.VALUES → new ItemWirelessCraftingTerminal() → super(1 600 000, …) → powerCapacity 冻结为 1 600 000
:65 ConfigHandler.init(...) 读配置、钳制到 800 000–6 400 000,然后 Reference.WCT_MAX_POWER = ae2wctMaxPower

powerCapacity 是 final 且已赋值,第 65 行对 Reference 的写入无法回溯影响已构造的物品实例。

结论:配置文件里改 ae2wctMaxPower 会被正常读取、被正常钳制、会被正常写回配置文件并保存,但终端的 AE 容量恒为默认的 1 600 000 AE。这是「数值取自错误来源」类陷阱的跨模组版本——只读 ConfigHandler 会得出相反结论。

容量钳制范围

ConfigHandler.java:76-85:

配置值 实际生效(写入配置)
> 6 400 000 钳制为 6 400 000
< 800 000 钳制为 800 000
区间内 原值

源码注释说明了为何手写钳制而非用 Configuration#getInt:“while using Configuration#getInt did enforce the min/max values in-game, it didn’t properly update the config file”。

注意:钳制只影响写入配置文件的值,不影响上述已冻结的 powerCapacity。

相关条目