法术与工具投射实体(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 掉落) |