32 lines
No EOL
1.5 KiB
Java
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;
|
|
}
|
|
} |