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 | 源码常量 |