diff --git a/src/main/java/org/cyclops/evilcraft/enchantment/component/EnchantmentEffectComponentAmplifyDamage.java b/src/main/java/org/cyclops/evilcraft/enchantment/component/EnchantmentEffectComponentAmplifyDamage.java index ed6d7543cb..07ef4d1625 100644 --- a/src/main/java/org/cyclops/evilcraft/enchantment/component/EnchantmentEffectComponentAmplifyDamage.java +++ b/src/main/java/org/cyclops/evilcraft/enchantment/component/EnchantmentEffectComponentAmplifyDamage.java @@ -9,6 +9,7 @@ import net.neoforged.neoforge.event.level.BlockEvent; import org.cyclops.cyclopscore.helper.EnchantmentHelpers; import org.cyclops.evilcraft.RegistryEntries; +import org.cyclops.evilcraft.core.algorithm.Wrapper; import java.util.Random; @@ -18,14 +19,15 @@ public class EnchantmentEffectComponentAmplifyDamage { @SubscribeEvent(priority = EventPriority.NORMAL) - public void breakingEvent(LivingDamageEvent.Post event) { + public void livingDamage(LivingDamageEvent.Post event) { if (!event.getEntity().getCommandSenderWorld().isClientSide() && event.getSource().getEntity() instanceof LivingEntity) { LivingEntity entity = (LivingEntity) event.getSource().getEntity(); InteractionHand hand = entity.getUsedItemHand(); if (hand != null) { ItemStack itemStack = entity.getItemInHand(hand); - amplifyDamage(itemStack); - entity.setItemInHand(hand, itemStack); + if (amplifyDamage(itemStack)) { + entity.setItemInHand(hand, itemStack); + } } } } @@ -36,13 +38,15 @@ public void breakingEvent(BlockEvent.BreakEvent event) { InteractionHand hand = event.getPlayer().getUsedItemHand(); if (hand != null) { ItemStack itemStack = event.getPlayer().getItemInHand(hand); - amplifyDamage(itemStack); - event.getPlayer().setItemInHand(hand, itemStack); + if (amplifyDamage(itemStack)) { + event.getPlayer().setItemInHand(hand, itemStack); + } } } } - public void amplifyDamage(ItemStack itemStack) { + public boolean amplifyDamage(ItemStack itemStack) { + Wrapper applied = new Wrapper<>(false); EnchantmentHelpers.runIterationOnItem(itemStack, (enchantment, level) -> { int modifier = enchantment.value().effects().getOrDefault(RegistryEntries.ENCHANTMENTEFFECT_COMPONENT_AMPLIFY_DAMAGE.get(), 0); if (modifier > 0) { @@ -51,9 +55,11 @@ public void amplifyDamage(ItemStack itemStack) { if(random.nextFloat() < 0.6F ? false : random.nextInt(level + 1) > 0 && newDamage <= itemStack.getMaxDamage()) { itemStack.setDamageValue(newDamage); + applied.set(true); } } }); + return applied.get(); } }