法术与工具投射实体(ID 0–17)

基本信息

属性 值
实体数 18
实体 ID 范围 0 – 17(连续无缺)
注册方法 CommonProxy.registerEntityTrackers()(common/CommonProxy.java:57-183)
注册调用点 AlchemicalWizardry.preInit → proxy.registerEntityTrackers()(AlchemicalWizardry.java:741)
跟踪 / 更新频率 ID 0–12:128 / 5;ID 13–17:120 或 128 / 3
本地化名称 无 —— 18 个均无 entity.AWWayofTime.* 语言键

这 18 个实体与 恶魔与元素精灵(ID 20–43)分属两处完全不同的注册代码:registerModEntity 的 24 次调用集中在 AlchemicalWizardry.java,而这 18 个在服务端代理类 CommonProxy 里。registerEntityTrackers() 是真实被调用的(AlchemicalWizardry.java:741),因此这 18 条注册全部存活。

粒度选择:18 个类中有 11 个继承同一个基类 EnergyBlastProjectile,字段与构造签名完全一致,行为差异仅在命中效果。按惯例(betterstorage 8 种木箱材料一页)合并为一页表格,不拆成 18 个文件。

继承结构

18 个类归为 4 支继承树,其中 EnergyBlastProjectile 一支就占 14 个(基类 + 13 子类):

Entity
├── EnergyBlastProjectile (ID 0)          基类,元素/法术弹道通用
│   ├── FireProjectile              (1)
│   ├── IceProjectile               (2)
│   ├── ExplosionProjectile         (3)
│   ├── HolyProjectile              (4)
│   ├── WindGustProjectile          (5)
│   ├── LightningBoltProjectile     (6)
│   ├── WaterProjectile             (7)
│   ├── MudProjectile               (8)
│   ├── TeleportProjectile          (9)
│   ├── EntityEnergyBazookaMainProjectile      (10)
│   ├── EntityEnergyBazookaSecondaryProjectile (11)
│   ├── EntityBloodLightProjectile  (12)
│   └── EntityMeteor                (13)
├── EntitySpellProjectile (ID 14)        法术范式通用弹道
├── EntityParticleBeam     (ID 15)       炼金试剂导管光束
└── EntityItem
    ├── MailOrderEntityItem (ID 16)      邮购目录
    └── BookEntityItem       (ID 17)      邮购书籍

法术弹道(ID 0–13,14 个)

ID 注册名 类 产生者 跟踪 / 频率
0 energyBlastProjectile EnergyBlastProjectile EnergyBlast 法术 128 / 5
1 fireProjectile FireProjectile SpellFireBurst;火属性小恶魔与火属性小恶魔守卫 128 / 5
2 iceProjectile IceProjectile SpellFrozenWater;冰属性小恶魔与冰属性小恶魔守卫 128 / 5
3 explosionProjectile ExplosionProjectile SpellExplosions;土属性小恶魔与土属性小恶魔守卫 128 / 5
4 holyProjectile HolyProjectile SpellHolyBlast;基础型小恶魔与小恶魔守卫 128 / 5
5 windGustProjectile WindGustProjectile SpellWindGust;风属性小恶魔与风属性小恶魔守卫 128 / 5
6 lightningBoltProjectile LightningBoltProjectile SpellLightningBolt 128 / 5
7 waterProjectile WaterProjectile SpellWateryGrave 128 / 5
8 mudProjectile MudProjectile SpellEarthBender 128 / 5
9 teleportProjectile TeleportProjectile SpellTeleport 128 / 5
10 energyBazookaMain EntityEnergyBazookaMainProjectile EnergyBazooka 物品 128 / 3
11 energyBazookaSecondary EntityEnergyBazookaSecondaryProjectile 由 ID 10 主弹分裂产生(EntityEnergyBazookaMainProjectile.java:57) 128 / 3
12 bloodLightProjectile EntityBloodLightProjectile SigilBloodLight 印记 128 / 3
13 meteor EntityMeteor RitualEffectSummonMeteor 仪式 120 / 3

ID 1–5 的弹道同时被法术与小恶魔使用:EntityMinorDemonGruntFire / EntityMinorDemonGruntGuardianFire 都 new FireProjectile(...),其余四组同理。因此小恶魔的攻击与同名法术共用同一份弹道实现。

状态效果(源码中直接 addPotionEffect 的部分):

弹道 施加的原版效果
WaterProjectile Potion.drowning(本模组自定义 customPotionDrowning),80 tick,命中 2 级、水中 1 级
IceProjectile Potion.moveSlowdown,200 tick 2 级 / 100 tick 1 级
MudProjectile Potion.blindness 100 tick;Potion.moveSlowdown 100 tick 2 级
EnergyBlastProjectile 命中时 Potion.weakness 60 tick 2 级

法术与炼金设施实体(ID 14–15,2 个)

ID 注册名 类 产生者 跟踪 / 频率
14 spellProjectile EntitySpellProjectile SpellParadigmProjectile(法术范式方块 TESpellParadigmBlock) 128 / 3
15 particleBeam EntityParticleBeam TEReagentConduit(炼金试剂导管) 120 / 3

EntitySpellProjectile 是法术系统的通用弹道载体,与 64 个法术效果类是两层结构:范式方块发射它,具体效果在飞行途中决定命中行为。EntityParticleBeam 则服务炼金系统,把导管两端视觉连通。

邮购实体(ID 16–17,2 个)

ID 注册名 类 产生者 跟踪 / 频率
16 catalogueEntityItem MailOrderEntityItem ItemMailOrderCatalogue 物品 120 / 3
17 bookEntityItem BookEntityItem 由 ID 16 掉落产生(MailOrderEntityItem.java:48) 120 / 3

这两个是 EntityItem 而非 Entity —— 它们是掉在地上的物品实体,邮购目录被击杀后掉出书,两者都可被玩家捡起。它们没有自己的 AI,也不参与生物生成。

与 ID 20–43 的分工

ID 段 注册代码 实体数 是否可自然生成 条目
0 – 17 CommonProxy.registerEntityTrackers() 18 否,全部由法术 / 物品 / 仪式 / 方块生成 本页
18 – 19 — 0 — ID 空缺,未被任何代码占用
20 – 43 AlchemicalWizardry.java 24 是,恶魔村庄维度 恶魔与元素精灵 / 小恶魔

ID 18 与 19 在全仓无 registerModEntity 调用,是两段 ID 区间之间的空隙。

本地化核验:assets/alchemicalwizardry/lang/en_US.lang 中 ^entity\. 开头的键共 24 条,与 ID 20–43 的 24 个实体一一对应;本页 18 个实体没有任何 entity.AWWayofTime.* 键,因此不会在实体选择器或信息框中显示名称 —— 它们是过程性实体,从不作为可命名对象存在。

死代码核验

CommonProxy.registerTileEntities()(:52-55)里有 2 处 GameRegistry.registerTileEntity(TEAltar、TEMasterStone),但该方法全仓无任何调用点 —— 已用 grep 枚举 registerTileEntities 的全部出现位置,只有 CommonProxy.java:52 的定义本身。这 2 条方块实体注册是死代码。好在 TEAltar 与 TEMasterStone 在 AlchemicalWizardry.java:1479-1502 中另有真实注册,因此 24 个方块实体的总数不受影响。

数值

数值名 值
本页实体数 18
ID 范围 0 – 17
继承 EnergyBlastProjectile 的子类 13(ID 1–13;基类本身即 ID 0)
继承 EntityItem 2(ID 16、17)
直接继承 Entity 2(ID 14、15)
有本地化名称的 0
由法术产生的 10(ID 1–9、14)
由物品 / 印记产生的 3(ID 10、12、16)
由仪式产生的 1(ID 13)
由方块 / TileEntity 产生的 1(ID 15)
由其他实体派生的 2(ID 11 由 ID 10 分裂,ID 17 由 ID 16 掉落)

相关条目