Epic Fight

Epic Fight

18M Downloads

[Bug|Crash]: BYPASS_DODGE attack trigger DodgeLeft onDodgeSuccess

PraiseSuffering opened this issue ยท 0 comments

commented

Please check if a similar issue has already been reported.

  • I checked this type of issue has never been reported.

Please check you're using proper versions.

  • I checked all of them in the right version.

Please check if this issue's from out of our area

  • I understood the problem.

The name of the mod

No response

After all of these, please check if you're just pressing the ok buttons to skip this process.

  • I read the checklist and I promise I'll provide all the information that is needed to fix the issue

Minecraft Version

1.20.1

The Issue

onDodgeSuccess can be triggered by DodgeLeft, BYPASS_DODGE attack

Because DodgeLeft Hurt () is not running LivingAttackEvent, DamageSource not be replaced

I think this can be fixed:

public boolean hurt(DamageSource damageSourceSource, float amount) {
if (this.level().isClientSide()) {
return false;
}

    Entity attacker=damageSourceSource.getEntity();
    DamageSource damageSource = null;

    LivingEntityPatch<?> attackerPatch = EpicFightCapabilities.getEntityPatch(attacker, LivingEntityPatch.class);

    if (damageSourceSource instanceof EpicFightDamageSource efDamageSource) {
        damageSource = efDamageSource;
    } else if (damageSourceSource.isIndirect() && damageSourceSource.getDirectEntity() != null) {
        ProjectilePatch<?> projectilepatch = EpicFightCapabilities.getEntityPatch(damageSourceSource.getDirectEntity(), ProjectilePatch.class);

        if (projectilepatch != null) {
            damageSource = projectilepatch.getEpicFightDamageSource(damageSourceSource);
        }
    } else if (attackerPatch != null && attackerPatch.getEpicFightDamageSource() != null) {
        damageSource = attackerPatch.getEpicFightDamageSource();
    }

    if (damageSource == null) {
        damageSource = damageSourceSource;
    }



    if (!DodgeAnimation.DODGEABLE_SOURCE_VALIDATOR.apply(damageSource).dealtDamage()) {
        this.entitypatch.onDodgeSuccess(damageSource);
    }

    this.discard();
    return false;
}

Steps to Reproduce

onDodgeSuccess can be triggered by DodgeLeft, BYPASS_DODGE attack