Ender
基本信息
| 属性 |
值 |
| 类名 |
atomicstryker.infernalmobs.common.modifiers.MM_Ender |
| 注册名 |
InfernalMobs:Ender |
| 显示前缀 |
enderborn / tricky |
| 显示后缀 |
the EnderBorn / the Trickster |
| 触发机制 |
onHurt (受击瞬移 + 反伤) |
| 冷却时间 |
15000 ms |
| 反伤倍率 |
0.75 |
| 最大反伤 |
10.0 |
功能
Ender 词缀让怪物在被攻击时瞬移到攻击者身后约 16 格距离,并对攻击者施加部分反伤。
实现细节:
teleportToEntity:计算与攻击者反向向量,destX/Y/Z 在 ±4 (XZ) / ±8 (Y) 范围内随机偏移,最远距攻击者 16 格
teleportTo:先放到目标坐标,然后向下扫描直到落地;再检查 getCollidingBoundingBoxes / isAnyLiquid / checkBlockCollision 三项是否清空;成功则播放 128 个末影人粒子 + mob.endermen.portal 音效
- 反伤通过
attackEntityFrom(DamageSource.causeMobDamage(mob), min(maxReflectDamage, damage × 0.75)) 施加
- 完整伤害(
super.onHurt 传入 0)被吃掉,所以原攻击对 Ender 怪物不产生伤害
互斥与防护
- 使用
isInfiniteLoop(mob, attacker) 检查避免两个 Ender 怪物互相瞬移-反伤-瞬移的死循环
- 若瞬移失败(无地面/液体/方块阻挡),放弃整次攻击
触发方式
| 触发 |
行为 |
| 怪物受击 |
冷却内瞬移到攻击者身后,反伤 75% 伤害(上限 10),自身吃 0 伤害 |
数值
| 数值 |
默认值 |
配置项 |
| 冷却时间(毫秒) |
15000 |
MM_Ender.coolDownMillis |
| 反伤倍率 |
0.75 |
MM_Ender.enderReflectMultiplier |
| 最大反伤 |
10.0 |
MM_Ender.enderReflectMaxDamage(≤0 不限) |
| 瞬移距离 |
16 格 |
telDist = 16.0D |
| 瞬移 XZ 抖动 |
±4 |
源码常量 |
| 瞬移 Y 抖动 |
±8 |
源码常量 |
相关条目