diff --git a/src/main/java/arcaratus/bloodarsenal/item/tool/ItemGlassSacrificialDagger.java b/src/main/java/arcaratus/bloodarsenal/item/tool/ItemGlassSacrificialDagger.java index 96c9a23..3d6c61b 100644 --- a/src/main/java/arcaratus/bloodarsenal/item/tool/ItemGlassSacrificialDagger.java +++ b/src/main/java/arcaratus/bloodarsenal/item/tool/ItemGlassSacrificialDagger.java @@ -89,16 +89,20 @@ public ActionResult onItemRightClick(World world, EntityPlayer player if (evt.shouldDrainHealth) { player.hurtResistantTime = 0; - player.attackEntityFrom(DamageSourceGlass.INSTANCE, 0.001F); - player.setHealth(Math.max(player.getHealth() - (float) (ConfigHandler.values.glassSacrificialDaggerHealth + itemRand.nextInt(3)), 0.0001F)); - - if (!player.isPotionActive(RegistrarBloodArsenal.BLEEDING) && itemRand.nextBoolean()) - player.addPotionEffect(new PotionEffect(RegistrarBloodArsenal.BLEEDING, 40 + (itemRand.nextInt(4) * 20), itemRand.nextInt(2))); - - if (player.getHealth() <= 0.001F) + float nextHitDmg = (float)(ConfigHandler.values.glassSacrificialDaggerHealth + itemRand.nextInt(3)); + if (Math.ceil(player.getHealth() - nextHitDmg) <= 0) { - player.onDeath(DamageSourceGlass.INSTANCE); - player.setHealth(0); + player.attackEntityFrom(DamageSourceGlass.INSTANCE, Float.MAX_VALUE); + } else + { + player.attackEntityFrom(DamageSourceGlass.INSTANCE, 0.001F); + float damageAmount = net.minecraftforge.common.ForgeHooks.onLivingDamage(player, DamageSourceGlass.INSTANCE, nextHitDmg); + player.getCombatTracker().trackDamage(DamageSourceGlass.INSTANCE, player.getHealth(), damageAmount); + player.setHealth(Math.max(player.getHealth() - nextHitDmg, 0.001F)); + + if (!player.isPotionActive(RegistrarBloodArsenal.BLEEDING) && itemRand.nextBoolean()) + player.addPotionEffect(new PotionEffect(RegistrarBloodArsenal.BLEEDING, 40 + (itemRand.nextInt(4) * 20), itemRand.nextInt(2))); + } }