package net.mcreator.superbwarfare.mixins; import net.mcreator.superbwarfare.init.TargetModDamageTypes; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.LivingEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(LivingEntity.class) public class LivingEntityMixin { @Unique private DamageSource target$source; @Inject(method = "hurt", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;knockback(DDD)V")) private void capture(DamageSource source, float amount, CallbackInfoReturnable cir) { this.target$source = source; } @ModifyArg(method = "hurt", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;knockback(DDD)V"), index = 0) private double modifyApplyKnockbackArgs(double original) { if (this.target$source.is(TargetModDamageTypes.GUN_FIRE) || this.target$source.is(TargetModDamageTypes.GUN_FIRE_HEADSHOT) || this.target$source.is(TargetModDamageTypes.ARROW_IN_KNEE) || this.target$source.is(TargetModDamageTypes.ARROW_IN_BRAIN) || this.target$source.is(TargetModDamageTypes.SHOCK)) { return 0.1 * original; } return original; } }