superb-warfare/src/main/java/net/mcreator/superbwarfare/mixins/LivingEntityMixin.java
2024-07-27 02:20:09 +08:00

32 lines
No EOL
1.5 KiB
Java

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<Boolean> 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;
}
}