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。
相关条目
- Infinity Booster Card - 插槽式增强卡,解除距离限制
- Magnet Card - 插槽式磁力卡
- Hidden Icon Items
- Achievements
- WCT Config - 容量、掉率、模式开关
- Applied Energistics 2 - 前向引用(分类已登记、尚未成文)