Length Wire

基本信息

属性 值
注册名 TMechworks:lengthwire
类 LengthWire(继承 Item)
堆叠上限 64(this.maxStackSize = 64)
subtype 无(setHasSubtypes(false))
贴图 tmechworks:logic/lengthwire
纹理数组 textureNames = {"lengthwire"}(长度 1)
容器 / GUI / TileEntity 无
配方产出 8 个 / 次(铝黄铜锭竖排 3 格)
创意标签 TMechworksRegistry.Mechworks

功能

Length Wire 是 Signal Bus 与 Spool of Wire 的唯一配方原料。它本身没有任何独立功能 —— 不通电、不连接、不放置方块。

它的定位是「有线」:Signal Bus 用线材 + 石半砖合成(有线传输),而 Spool of Wire 用线材 + 石棒合成(无线跨维度传输)。有线便宜、无线昂贵,这是本 mod 的核心设计对比。

数值

数值 值
注册名 TMechworks:lengthwire
堆叠上限 64
subtype 数 0
贴图路径 tmechworks:logic/lengthwire
配方产出 8
消耗方 Signal Bus(3 个)、Spool of Wire(8 个)
修复配方 无(不可损坏,setMaxDamage 未调用)

配方

common/MechRecipes.java:130-137,1 条:

a
a
a
符号 材料 数量
a ingotAluminumBrass 3

产出 TMechworks:lengthwire × 8。

交互

触发 行为
拾取 / 丢弃 标准 Item 行为
合成 作为 Signal Bus / Spool of Wire 的材料
右键 无(未覆写任何 Item 方法)

源码缺陷

  • getIconFromDamage 的 clamp 越界(items/LengthWire.java:31-34):
    int arr = MathHelper.clamp_int(meta, 0, unlocalizedNames.length);
    return icons[arr];
    
    clamp_int 的上界是数组长度(1)而非最后合法索引(0)。当 meta >= 1 时 arr == 1,icons[1] 越界 → ArrayIndexOutOfBoundsException。因本物品 setHasSubtypes(false) 正常游戏流程不会产生 meta ≥ 1,但任何带 damage 的栈(如被其他 mod 改写)都会导致客户端渲染崩溃。
  • getSubItems 未加 @SideOnly(Side.CLIENT)(:47-50):与本仓其他物品(SpoolOfWire.getSubItems 同样未加,但 addInformation 等都加了)不一致,服务端也会执行。1.7.10 的 CreativeTabs 只在客户端调用,故当前无害。
  • setCreativeTab 直接改 this.creativeTab:同 SpoolOfWire,未用 Forge 推荐写法。1.7.10 下可用。
  • 未调用 setUnlocalizedName 而覆写 getUnlocalizedName:SpoolOfWire 同样做法(return "item." + unlocalizedName)。MechContent 中 new LengthWire().setUnlocalizedName("lengthwire") 与覆写方法重复(common/MechContent.java:54),覆写使 setter 的效果失效。
  • 物品本体无功能:作为「纯配方料」存在,玩家没有任何使用它的理由,只能看到它被消耗。

相关条目