chris-wjn / ImprovedDamageFramework

Other
7 stars 5 forks source link

Incompatibility with DragonSurvival #42

Open MrRain139 opened 9 months ago

MrRain139 commented 9 months ago

When trying to run the game with your mod I found that it is not compatible with Dragon Survival. https://www.curseforge.com/minecraft/mc-mods/dragons-survival Error: [17Dec2023 10:04:48.511] [main/FATAL] [mixin/]: Mixin apply failed dragonsurvival.mixins.json:MixinLivingEntity -> net.minecraft.world.entity.LivingEntity: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException Specified index 0 for @ModifyArg is invalid for args (Lnet/minecraft/world/entity/LivingEntity;DDD), expected D on net/minecraft/world/entity/LivingEntity::disableKnockbackForMagic [INJECT Applicator Phase -> dragonsurvival.mixins.json:MixinLivingEntity -> Apply Injections -> -> Inject -> dragonsurvival.mixins.json:MixinLivingEntity->@ModifyArg::disableKnockbackForMagic(D)D] org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: Specified index 0 for @ModifyArg is invalid for args (Lnet/minecraft/world/entity/LivingEntity;DDD), expected D on net/minecraft/world/entity/LivingEntity::disableKnockbackForMagic [INJECT Applicator Phase -> dragonsurvival.mixins.json:MixinLivingEntity -> Apply Injections -> -> Inject -> dragonsurvival.mixins.json:MixinLivingEntity->@ModifyArg::disableKnockbackForMagic(D)D]

MrRain139 commented 9 months ago

Here's the error plot from the DragonSurvival mod:

@ModifyArg(method = "hurt", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;knockback(DDD)V"), index = 0)
    public double disableKnockbackForMagic(double strength) {
        if (dragonSurvival$damageSource instanceof EntityDamageSource) {
            String id = dragonSurvival$damageSource.msgId;

            if (id.equals("onFire") || id.equals("magic")) {
                return 0;
            }
        }

        return strength;
    } 
          In your mod, index 0 causes an error because that one is not a double, but in your method:  
@Redirect(method = "hurt", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;knockback(DDD)V"))
    private void voidKnockback(LivingEntity instance, double strength, double x, double z) {
    }
chris-wjn commented 8 months ago

Not a priority at the moment but I'll look into it.