diff --git a/src/main/java/net/mcreator/target/mobeffect/ShockMobEffect.java b/src/main/java/net/mcreator/target/mobeffect/ShockMobEffect.java index a54318b41..0af2d1d64 100644 --- a/src/main/java/net/mcreator/target/mobeffect/ShockMobEffect.java +++ b/src/main/java/net/mcreator/target/mobeffect/ShockMobEffect.java @@ -1,6 +1,7 @@ package net.mcreator.target.mobeffect; import net.mcreator.target.TargetMod; +import net.mcreator.target.entity.ClaymoreEntity; import net.mcreator.target.init.TargetModDamageTypes; import net.mcreator.target.init.TargetModMobEffects; import net.mcreator.target.init.TargetModSounds; @@ -10,6 +11,8 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.effect.MobEffectInstance; @@ -18,6 +21,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; +import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingEvent; import net.minecraftforge.event.entity.living.MobEffectEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -116,4 +120,23 @@ public class ShockMobEffect extends MobEffect { living.xRotO = living.getXRot(); } } + + @SubscribeEvent + public static void onEntityAttacked(LivingAttackEvent event) { + if (event == null || event.getEntity() == null) { + return; + } + shockCancelDamage(event); + } + + private static void shockCancelDamage(LivingAttackEvent event) { + DamageSource source = event.getSource(); + Entity sourceentity = source.getDirectEntity(); + if (sourceentity == null) { + return; + } + if (sourceentity instanceof LivingEntity living && living.hasEffect(TargetModMobEffects.SHOCK.get())) { + event.setCanceled(true); + } + } }