public static void onAttackEntityFrom(DamageSource damage, EntityLiving living) { if (living.getHealth() > 0 && living.hurtTime <= 0) { float f = 0.41F; if (living.canBleed() && living.canBleedByDamage(damage)) { Entity entity = damage.getEntity(); if (GoreRegistry.containsFarDamage(damage.damageType)) { produceBlood(MathHelper.floor_double(GoreRegistry.AMOUT_PARTICLES * f), false, living); } else if (entity instanceof EntityPlayer) { ItemStack is = ((EntityPlayer) entity).getCurrentEquippedItem(); if (living.canHurtByItem(is)) { f = 1.0F; living.isBleeding = true; living.ticksActuallyBleeding = 0; living.ticksNoBlood = 0; produceBlood(MathHelper.floor_double(GoreRegistry.AMOUT_PARTICLES * f), false, living); } } else { produceBlood(MathHelper.floor_double(GoreRegistry.AMOUT_PARTICLES * f), false, living); } } } }
public static boolean defaultCanHurtByItem(ItemStack is) { return is != null && GoreRegistry.containsItemDamage(is.itemID); }
public static boolean defaultCanBleedByDamage(DamageSource damagesource) { String damageType = damagesource.damageType; return GoreRegistry.containsNearDamage(damageType) || GoreRegistry.containsFarDamage(damageType); }