灼痕蜘蛛与小恶魔
基本信息
| 属性 | 值 |
|---|---|
| 实体数 | 4 个(灼痕蜘蛛、幼年灼痕蜘蛛、小恶魔、熔木箭) |
| 生成生物群系 | 所有下界群系(BiomeDictionary.Type.NETHER) |
| 共同特性 | 全部 isImmuneToFire = true |
| 开关 | enableHeatscarSpiders / enableImps |
功能
Natura 注册 4 个自定义实体(NContent.java:1967-1996),其中 3 个是下界生物,1 个是投射物。
| 实体 | 注册名 | 实体 ID | 追踪 / 更新 | 类别 |
|---|---|---|---|---|
| 灼痕蜘蛛 | FlameSpider |
1 | 32 / 5 | 怪物(EnumCreatureType.monster) |
| 幼年灼痕蜘蛛 | FlameSpiderBaby |
4 | 32 / 5 | 怪物 |
| 小恶魔 | Imp |
0 | 32 / 5 | 生物(EnumCreatureType.creature) |
| 熔木箭 | FusewoodArrow |
3 | 64 / 3 | 投射物(无生成权重) |
FusewoodArrow 的注册不在 if (PHNatura.anyMobsEnabled) 块内,即无论生物开关如何都会注册(NContent.java:1996)。
生成权重(NContent.java:1985-1990):
| 实体 | 最小 | 默认 | 最大 |
|---|---|---|---|
| 灼痕蜘蛛 | 10 | 4 | 4 |
| 幼年灼痕蜘蛛 | 7 | 4 | 4 |
| 小恶魔 | 10 | 8 | 12 |
生成蛋支持:BlockDispenser.dispenseBehaviorRegistry.putObject(spawnEgg, new DispenserBehaviorSpawnEgg())(NContent.java:1993),使 spawn egg 可被发射器发射。
灼痕蜘蛛
HeatscarSpider 继承 EntitySpider,是一只大型蜘蛛(entity/HeatscarSpider.java:26-31):
| 属性 | 值 | 来源 |
|---|---|---|
| 实体尺寸 | 2.7 × 1.9 | HeatscarSpider.java:27 |
| 客户端缩放 | 2.0F | HeatscarSpider.java:33-36 |
| 生命值 | 50.0 | HeatscarSpider.java:41 |
| 追踪范围 | 24 | HeatscarSpider.java:42 |
| 移动速度 | 1.35 | HeatscarSpider.java:43 |
| 基础攻击伤害 | 4.0 | HeatscarSpider.java:44 |
| 经验值 | 25 | HeatscarSpider.java:30 |
| 火焰免疫 | 是 | HeatscarSpider.java:29 |
跳跃攻击
attackEntity 覆写(HeatscarSpider.java:47-60):当 par2 在 2.0 与 6.0 之间且 rand.nextInt(10) == 0(10% 概率)且着地时,跳过普通攻击,改为向目标方向跃起:
this.motionX = d0 / f2 * 0.5D + this.motionX * 0.20000000298023224D;
this.motionZ = d1 / f2 * 0.5D + this.motionZ * 0.20000000298023224D;
this.motionY = 0.62D;
其他情况走 super.attackEntity。
攻击附带点燃
attackEntityAsMob 覆写(HeatscarSpider.java:122+)在命中 EntityLiving 后按难度施加燃烧:
| 难度 | 燃烧时间(tick) |
|---|---|
| 和平 | 0(不点燃) |
| 简单 | 0(不点燃) |
| 普通 | 5 |
| 困难 | 10 |
跳跃与坠落
jump 覆写(HeatscarSpider.java:63-78):基础 motionY = 0.62D,若激活跳跃药水则额外 (amplifier + 1) × 0.1F;疾跑时额外 motionX -= sin(yaw) × 0.2F、motionZ += cos(yaw) × 0.2F;末尾调用 ForgeHooks.onLivingJump(this)。
fall 覆写(HeatscarSpider.java:81-108)先经 ForgeHooks.onLivingFall,伤害为 ceiling(par1 - 5.0F),并按伤害量播放 damage.fallbig(> 4)或 damage.fallsmall 音效,落地时按方块脚步声以 0.5 音量、0.75 音高播放。
幼年灼痕蜘蛛
BabyHeatscarSpider 同样继承 EntitySpider,是缩小版(entity/BabyHeatscarSpider.java:20-30):
| 属性 | 值 | 来源 |
|---|---|---|
| 实体尺寸 | 1.2 × 0.8 | BabyHeatscarSpider.java:24 |
| 客户端缩放 | 0.85F | BabyHeatscarSpider.java:31-34 |
| 火焰免疫 | 是 | BabyHeatscarSpider.java:25 |
其 attackEntity、jump、fall 覆写与成年版逻辑相同(BabyHeatscarSpider.java:36-80+)。
幼年体的 applyEntityAttributes 未覆写(BabyHeatscarSpider.java 全文 160 行中无该方法定义),故其生命值、追踪范围、攻击伤害等沿用原版 EntitySpider 的数值。这一点与成年版(生命 50、伤害 4.0)形成对比。
幼年体由 createBabyInstance 工厂方法创建(HeatscarSpider.java:175-177),并可用 spawn egg 直接生成(items/SpawnEgg.java:127)。客户端渲染由 FlameSpiderBabyRender 处理(client/NProxyClient.java:41)。
灼痕蜘蛛死亡分裂
幼年体不是通过 onDeath 生成,而是覆写 setDead()(HeatscarSpider.java:179-199):
if (!this.worldObj.isRemote && this.getHealth() <= 0.0f) {
int num = PHNatura.babyHeatscarMaximum - PHNatura.babyHeatscarMinimum + 1;
int amount = rand.nextInt(num) + PHNatura.babyHeatscarMinimum;
for (int i = 0; i < amount; i++) { ... }
}
| 条件 | 行为 |
|---|---|
| 服务端且生命值 ≤ 0 | 生成 rand(最大值 - 最小值 + 1) + 最小值 只幼年蜘蛛 |
| 位置 | posX + rand(0,2)、posY + 0.5、posZ + rand(0,2),朝向 rand × 360° |
因为覆写的是 setDead() 而非 onDeath,该分裂在任何导致死亡的操作后触发(包括 /kill 等直接置空的操作)。
小恶魔
ImpEntity 继承 EntityAnimal(entity/ImpEntity.java:22),是友好生物而非怪物:
| 属性 | 值 | 来源 |
|---|---|---|
| 实体尺寸 | 0.9 × 0.9 | ImpEntity.java:25 |
| 火焰免疫 | 是 | ImpEntity.java:30 |
| 避水 | 是(setAvoidsWater(true)) |
ImpEntity.java:26 |
| 游动速度(AI 参数 f) | 0.25 | ImpEntity.java:31 |
AI 行为(ImpEntity.java:32-40,按优先级):
| 优先级 | AI | 参数 |
|---|---|---|
| 0 | EntityAISwimming |
— |
| 1 | EntityAIPanic |
0.38F |
| 2 | EntityAITempt |
0.3F,诱惑物 NContent.bowlStew(炖菜碗) |
| 3 | EntityAIMate |
0.25F |
| 4 | EntityAIAvoidEntity |
躲避 EntityPlayer,距离 8.0F,避开 0.25F,徘徊 0.3F |
| 5 | EntityAIFollowParent |
0.28F |
| 6 | EntityAIWander |
0.25F |
| 7 | EntityAIWatchClosest |
观察 EntityPlayer,距离 6.0F |
| 8 | EntityAILookIdle |
— |
小恶魔会被炖菜碗吸引(AI 优先级 2),同时主动躲避玩家 8 格(优先级 4)。小恶魔还会被添加跟随母兽行为(优先级 5),说明其繁殖产仔。
熔木箭
FusewoodArrow 注册于 NContent.java:1996(实体 ID 3,追踪 64,更新频率 3),无生成权重,属熔木弓的箭矢实体。
数值
| 数值名 | 值 |
|---|---|
| 灼痕蜘蛛生命值 | 50.0 |
| 灼痕蜘蛛基础伤害 | 4.0 |
| 灼痕蜘蛛移动速度 | 1.35 |
| 灼痕蜘蛛经验值 | 25 |
| 跳跃攻击概率 | 10%(nextInt(10) == 0) |
| 跳跃攻击触发距离 | 2.0 < par2 < 6.0 |
| 普通/困难点燃时间 | 5 / 10 |
| 幼年蜘蛛尺寸 | 1.2 × 0.8 |
| 小恶魔尺寸 | 0.9 × 0.9 |
| 小恶魔躲避距离 | 8.0F |
配置
灼痕蜘蛛被击杀后生成幼体的数量可配置(PHNatura.java:35-38,mob changes 分类):
| 配置项 | 默认值 | 钳制 |
|---|---|---|
Minimum Baby Heatscar Spiders on Spider Death |
2 | 负值钳为 0 |
Maximum Baby Heatscar Spiders on Spider Death |
4 | 负值钳为 0 |
生成数量公式为 rand(最大 - 最小 + 1) + 最小,默认即 2–4 只。