Upper Goblin Knight(上半身哥布林骑士)

事实基准:/Users/evlos/a/mirror/twilightforest(minecraftVersion = 1.7.10)逐行读源码。

基本信息

属性 值 来源
注册实体名 TwilightForest:Upper Goblin Knight TwilightForestMod.java:670-673
实体 ID 常量 idMobGoblinKnightUpper = 221 TwilightForestMod.java:1123
注册形式 TFCreatures.registerTFCreature(Class, String, int) 3 参重载 TwilightForestMod.java:673 → TFCreatures.java:44-50
蛋色 未指定 —— 3 参重载最终以 TFEntityEggInfo(id, 0, 0) 入表 TFCreatures.java:49
类 twilightforest.entity.EntityTFGoblinKnightUpper entity/EntityTFGoblinKnightUpper.java(437 行)
父类 net.minecraft.entity.monster.EntityMob 同上 :33
尺寸 setSize(1.1F, 1.3F) 同上 :47
所属结构 骑士要塞(Knight Stronghold,tfStronghold 特性 ID 15) 见下「生成方式」

数值

属性 值 来源
maxHealth 30.0 EntityTFGoblinKnightUpper.java:80
movementSpeed 0.28 同上 :81
attackDamage 4.0 同上 :82
攻击力 getAttackStrength 常态 8 同上 :218
攻击力 getAttackStrength 重矛期间 20 同上 :216
护甲加成 +20 点,上限 20 同上 :419-425
盾牌承伤阈值 10(超过即判定破盾) 同上 :35 SHIELD_DAMAGE_THRESHOLD
盾牌耐久 累计 3 次 shieldHits 后碎裂 同上 :408-410
每区块生成上限 源码中未覆写(走 EntityMob 默认) —

AI 行为 / 特殊机制

载具关系:Upper 永远骑在 Lower Goblin Knight 身上,由 Lower 在 onSpawnWithEgg / onSpawnWithEggLoot 中生成并 mountEntity(this)(EntityTFGoblinKnightLower.java:112-116、 :126-130)。Upper 在 onUpdate 中把 Lower 的攻击目标同步给自己(EntityTFGoblinKnightUpper.java:147-150), 并把自己的 renderYawOffset 跟随 Lower(:231-233)。

重矛攻击:AI 任务 0 为 EntityAITFHeavySpearAttack(:49)。触发条件是 attackEntityAsMob 中 50% 概率(:256-261),置 heavySpearTimer = 60(:274)并向客户端广播状态字节 4; 客户端 handleHealthUpdate 收到字节 4 后同样把计时器设为 60(:236-244)。 计时器剩 25 时执行 landHeavySpearAttack(:156-160):在身前 dist = 1.25 处、 minY - 0.75 处放出 50 个 largesmoke 粒子(:182-193),并对 半径 radius = 1.5D 的 AABB(:196-199)内所有实体造成 super.attackEntityAsMob 伤害(:203-207)。

盾牌判定:attackEntityFrom 计算攻击者方位角差 difference(:301-305), 差值落在 >150 && <230(正后方)时由盾牌完全吸收并 takeHitOnShield(:310-313); 其余方向每次受击有 50% 概率累积破盾进度(:316-318)。盾牌状态下从骑乘体上落地会立即碎裂(:164-166)。

护甲判定:difference > 300 || difference < 60(正面来袭)时直接 breakArmor(:322-324), 渲染层按 3 段 Items.iron_chestplate 碎片表现(:342-348)。

免疫:骑乘状态下不受 DamageSource.inWall 窒息伤害(:284-286)。 挡下攻击时对骑乘体施加轻微击退并设置复仇目标(:376-395)。

掉落:getDropItem() 返回 TFItems.armor_shard(:433-435)—— 对应 Armor Shard(装甲碎片)。源码中未覆写 dropFewItems, 故除 armor_shard 外不掉落其它物品,也不掉 trophy。

生成方式:本类没有 TFFeature.addMonster 条目;它只能通过 Lower 搭载或刷怪蛋出现。

相关条目