磁带实体
基本信息
| 属性 | 值 |
|---|---|
| 实体名 | computronics:itemTape |
| 实体类 | pl.asie.computronics.item.entity.EntityItemIndestructable(继承 EntityItem) |
| Entity ID | 1(CommonProxy.java:31-32) |
| 跟踪范围 / 更新频率 | 64 / 20 tick(CommonProxy.java:34-35) |
| 可被追踪 | true(CommonProxy.java:36) |
| 中文名 | entity.computronics.itemTape.name = 损坏的磁带(zh_CN.lang) |
注册条件(本条的重点)
CommonProxy.registerEntities() 在 Computronics.java:289 被调用,而该调用位于 if (Mods.isLoaded(Mods.GregTech)) 内部(Computronics.java:285-289):
if (isEnabled("tape", true)) { // Computronics.java:281
itemTape = new ItemTape(Config.TAPE_LENGTHS);
GameRegistry.registerItem(itemTape, "computronics.tape");
if (Mods.isLoaded(Mods.GregTech)) { // :285
itemPartsGreg = new ItemPartsGreg();
GameRegistry.registerItem(itemPartsGreg, "computronics.gt_parts");
proxy.registerEntities(); // :289
}
...
}
因此没有 GregTech 时,computronics.itemTape 实体根本不会注册。而 ItemTape.hasCustomEntity 对所有 meta 都返回 true(ItemTape.java:246-248)——它不区分 meta 9 或其它 meta。
这构成一个真实的条件缺陷:
| 条件 | 结果 |
|---|---|
有录音带(enable.tape)且有 GregTech |
实体已注册,createEntity 正常工作 |
| 有录音带但无 GregTech | 实体未注册,但 hasCustomEntity 仍返回 true,createEntity(ItemTape.java:252-264)仍会构造 EntityItemIndestructable 并返回 |
在没有注册的情况下,Forge 无法为该实体分配网络 ID,掉落物实体在客户端不会被识别——表现为磁带掉落物不可见 / 无法拾取。实践后果:任何不装 GregTech 的 1.7.10 环境启用 Computronics 都会命中这个问题。
EntityItemIndestructable 唯一的使用者就是 ItemTape.createEntity(ItemTape.java:253),全文再无第二处引用。
功能
把被丢弃的磁带变成不可销毁的掉落物实体,避免磁带数据在掉落 / 移动中丢失。
createEntity 中除构造实体外还做两件事(ItemTape.java:259-262):
| 操作 | 值 | 作用 |
|---|---|---|
delayBeforeCanPickup |
40 tick | 拾取延迟,防止刚丢出就被吸回 |
motionX/Y/Z |
继承原实体 | 保留抛出速度 |
类本身没有重写任何方法——4 个构造器(EntityItemIndestructable.java:14、:19、:24)之外是继承的 EntityItem 行为。名字里的 “Indestructable”(原文拼写如此)只体现在它不实现任何销毁路径。
交互
| 触发 | 行为 |
|---|---|
| 丢弃任意 meta 磁带 | 变为 EntityItemIndestructable |
| 2 秒后 | 可被拾取 |
相关条目
- 录音带 - meta 0–9,其中 meta 9 使用
reelChromoxide_GT6贴图 - GT 专用卷轮 - 与本实体同一注册分支
- GregTech 集成 - 该分支的判定来源
- 成就 -
Tape_IG_Dropped依赖磁带 NBT 记录丢弃者