Thrown Pick(飞镐)
事实基准:
/Users/evlos/a/mirror/twilightforest(minecraftVersion = 1.7.10)逐行读源码。
基本信息
| 属性 | 值 | 来源 |
|---|---|---|
| 注册实体名 | TwilightForest:tfthrownpick(全小写) |
TwilightForestMod.java:857-864 |
| 实体 ID 常量 | idVehicleSpawnThrownPick = 13 |
TwilightForestMod.java:189 |
| 注册形式 | EntityRegistry.registerModEntity 直调(不经 TFCreatures)→ 无刷怪蛋 |
TwilightForestMod.java:857 |
| 追踪距离 / 更新频率 | 80 / 3,sendsVelocityUpdates = true |
同上 :861-863 |
| 类 | twilightforest.entity.boss.EntityTFThrownPick(77 行) |
entity/boss/EntityTFThrownPick.java:9 |
| 父类 | net.minecraft.entity.projectile.EntityThrowable |
同上 :9 |
| 尺寸 | setSize(0.5F, 0.5F)(两个构造函数都设) |
同上 :15、:20 |
| 所属结构 | 不属于任何结构;只由 TileEntityTFKnightPhantomsSpawner 生成的幻影骑士投掷。TFFeature 的刷怪表里没有幻影骑士 |
EntityTFKnightPhantom.java:454、TileEntityTFKnightPhantomsSpawner.java:46 |
数值
| 属性 | 值 | 来源 |
|---|---|---|
直接伤害 PROJECTILE_DAMAGE |
3 | EntityTFThrownPick.java:11 |
初速 func_70182_d |
1.0F | 同上 :67-69 |
重力 getGravityVelocity |
0.015F | 同上 :74-76 |
碰撞边界 getCollisionBorderSize |
1.0F | 同上 :59-62 |
| 撞击粒子 | 8 个 largesmoke |
同上 :39-41 |
| 单次齐射数量 | 8 把,角度 i × π / 4(45° 均分一圈) |
EntityTFKnightPhantom.java:443-444 |
| 发射速度 / 精度 | 0.5F / 1.0F | 同上 :458-460 |
| 发射高度 | height × 0.82,水平偏移 1.0 |
同上 :446-448 |
| 发射频率 | ticksProgress % 4 == 0 |
同上 :330-332 |
| 追踪距离 / 更新频率 | 80 / 3 | TwilightForestMod.java:861-863 |
与同门 Thrown Axe(飞斧) 相比:伤害减半(3 vs 6)、初速翻 10 倍(1.0 vs 0.1)、 重力大 15 倍,因此飞斧是低抛物线近身弹,飞镐是高速平射弹幕。
maxHealth/movementSpeed:本类继承EntityThrowable,是无生命值的投射物, 源码中不存在这些属性设置(EntityTFThrownPick.java全文无applyEntityAttributes)。
AI 行为 / 特殊机制
发射者:EntityTFKnightPhantom.launchPicks() 是全 mod 唯一的构造点
(EntityTFKnightPhantom.java:454)。只有持 TFItems.knightlyPick 的幻影骑士克隆体
会发射 —— 武器由 setNumber(i) 按 i % 3 分配:0 = 骑士剑、1 = 骑士斧、2 = 骑士镐
(EntityTFKnightPhantom.java:817-826)。发射前播 random.bow 音效。
齐射:for (int i = 0; i < 8; i++) 以 i × π/4 环形均分,一次投出 8 把,
每把的 rotationYaw 设为 i × 45F(:439-462)。
穿体不伤:命中 EntityTFKnightPhantom 时 passThru = true,不造成伤害也不消失
(:27-30、:43-45)。
正常命中:其它实体吃 3 点 DamageSource.causeThrownDamage(this, getThrower()) 伤害,
然后 setDead()(:32-45)。
可被玩家攻击 / 反弹:canBeCollidedWith() 返回 true、getCollisionBorderSize()
拉到 1.0F,源码注释写明是为让玩家能攻击并反弹(:48-62)。
不产生爆炸:只播 8 个 largesmoke 粒子,不改地形。
相关条目
- Knight Phantom(幻影骑士) - 唯一发射者
- Thrown Axe(飞斧) - 同一 AI 的另一分支,单发低伤
- Lich Bomb(巫妖炸弹) - 结构相近的另一种可反射投射物