diff --git a/src/main/java/wayoftime/bloodmagic/util/handler/event/GenericHandler.java b/src/main/java/wayoftime/bloodmagic/util/handler/event/GenericHandler.java index 893a01bffc..26c5a86236 100644 --- a/src/main/java/wayoftime/bloodmagic/util/handler/event/GenericHandler.java +++ b/src/main/java/wayoftime/bloodmagic/util/handler/event/GenericHandler.java @@ -219,8 +219,14 @@ public void onLivingHurt(LivingHurtEvent event) PlayerEntity player = (PlayerEntity) living; if (LivingUtil.hasFullSet(player)) { + event.setAmount((float) LivingUtil.getDamageReceivedForArmour(player, event.getSource(), event.getAmount())); + float trackedDamage = event.getAmount(); + + if (trackedDamage > player.getHealth()) + trackedDamage = player.getHealth(); + // The factor of 1.6 is due to taking into account iron armour's protection at // ~11 damage double factor = 1.6; @@ -228,15 +234,15 @@ public void onLivingHurt(LivingHurtEvent event) { // LivingStats stats = LivingStats.fromPlayer(player); // stats.addExperience(LivingArmorRegistrar.TEST_UPGRADE.get().getKey(), 10); - LivingUtil.applyNewExperience(player, LivingArmorRegistrar.UPGRADE_ARROW_PROTECT.get(), event.getAmount() / factor); + LivingUtil.applyNewExperience(player, LivingArmorRegistrar.UPGRADE_ARROW_PROTECT.get(), trackedDamage / factor); } else { - LivingUtil.applyNewExperience(player, LivingArmorRegistrar.UPGRADE_PHYSICAL_PROTECT.get(), event.getAmount() / factor); + LivingUtil.applyNewExperience(player, LivingArmorRegistrar.UPGRADE_PHYSICAL_PROTECT.get(), trackedDamage / factor); } if (event.getSource() == DamageSource.FALL) { - LivingUtil.applyNewExperience(player, LivingArmorRegistrar.UPGRADE_FALL_PROTECT.get(), event.getAmount() / factor); + LivingUtil.applyNewExperience(player, LivingArmorRegistrar.UPGRADE_FALL_PROTECT.get(), trackedDamage / factor); } } }