@SubscribeEvent(priority = EventPriority.LOWEST)
 public void bedrockSave(LivingHurtEvent evt) {
   EntityLivingBase e = evt.entityLiving;
   if (evt.ammount < 1000) {
     if (e instanceof EntityPlayer) {
       if (ItemBedrockArmor.isWearingFullSuitOf(e)) {
         evt.ammount = Math.min(evt.ammount, 5);
         if (evt.ammount <= 1) {
           evt.ammount = 0;
           return;
         } else {
           Entity attacker = evt.source.getSourceOfDamage();
           if (attacker instanceof EntityPlayer) {
             ItemStack held = ((EntityPlayer) attacker).getCurrentEquippedItem();
             if (held != null
                 && held.getItem().getClass().getSimpleName().toLowerCase().contains("rapier")) {
               evt.ammount = 0;
               int dmg = held.getItem().getDamage(held);
               held.getItem().setDamage(held, dmg + 120);
             }
           }
         }
       }
     }
   }
 }
 @SubscribeEvent
 public void onEntityDamage(LivingHurtEvent event) {
   /* Less fire damage */
   if (event.entity instanceof EntityPlayer) {
     EntityPlayer player = (EntityPlayer) event.entity;
     if (ElementManager.hasElement(player, ElementManager.FIRE)) {
       if (event.source == DamageSource.inFire || event.source == DamageSource.onFire) {
         if (player.getRNG().nextInt(3) == 0) {
           event.ammount = 1;
         } else {
           event.ammount = 0;
         }
       }
     }
   }
 }
 @Override
 public boolean applyEffect(
     EntityPlayer player,
     World world,
     ItemStack stack,
     ImbuementApplicationTypes matchedType,
     Object... params) {
   LivingHurtEvent event = (LivingHurtEvent) params[0];
   if (event.source.damageType.equals(dmgType)
       || (dmgType.equals("fire") && event.source.isFireDamage())
       || (dmgType.equals("magic") && event.source.isMagicDamage())
       || (dmgType.equals("explosion") && event.source.isExplosion())) {
     event.ammount *= 0.85f;
     return true;
   }
   return false;
 }
  @SubscribeEvent
  public void onEntityHurt(LivingHurtEvent event) {
    EntityLivingBase entity = event.entityLiving;
    if (entity instanceof EntityPlayer) {
      float curMaxHealth =
          (float)
              ((EntityPlayer) entity)
                  .getEntityAttribute(SharedMonsterAttributes.maxHealth)
                  .getAttributeValue();
      float newMaxHealth = FoodStatsTFC.getMaxHealth((EntityPlayer) entity);
      float h = ((EntityPlayer) entity).getHealth();
      if (newMaxHealth != curMaxHealth)
        ((EntityPlayer) entity)
            .getEntityAttribute(SharedMonsterAttributes.maxHealth)
            .setBaseValue(newMaxHealth);
      if (newMaxHealth < h) ((EntityPlayer) entity).setHealth(newMaxHealth);
    }

    if (event.source == DamageSource.onFire) {
      event.ammount = 50;
    } else if (event.source == DamageSource.fall) {
      float healthMod = TFC_Core.getEntityMaxHealth(entity) / 1000f;
      event.ammount *= 80 * healthMod;
    } else if (event.source == DamageSource.drown) {
      event.ammount = 50;
    } else if (event.source == DamageSource.lava) {
      event.ammount = 100;
    } else if (event.source == DamageSource.inWall) {
      event.ammount = 100;
    } else if (event.source == DamageSource.fallingBlock) {
      event.ammount = 100;
    } else if (event.source.isExplosion()) {
      event.ammount *= 30;
    } else if (event.source == DamageSource.magic && entity.getHealth() > 25) {
      event.ammount = 25;
    } else if ("player".equals(event.source.damageType)
        || "mob".equals(event.source.damageType)
        || "arrow".equals(event.source.damageType)) {
      event.ammount = applyArmorCalculations(entity, event.source, event.ammount);
      if ("arrow".equals(event.source.damageType)) {
        Entity e = ((EntityDamageSourceIndirect) event.source).getSourceOfDamage();
        if (e instanceof EntityJavelin) {
          ((EntityJavelin) e).setDamageTaken((short) (((EntityJavelin) e).damageTaken + 10));
          if (((EntityJavelin) e).damageTaken >= ((EntityJavelin) e).pickupItem.getMaxDamage()) {
            e.setDead();
          }
        }
      }
    }
  }
  @ForgeSubscribe
  public void onEntityLivingAttack(LivingHurtEvent event) // TODO: Balancing!
      {
    if (event.source.getDamageType().equals("player")) {
      EntityPlayer player = (EntityPlayer) event.source.getSourceOfDamage();
      if (player.inventory.getCurrentItem() != null) {
        if (race.getClass(player).equals("Warrior")) {
          if ((player.inventory.getCurrentItem().getItem() instanceof ItemSword)) {
            event.ammount += Math.round(stats.getStrengthPoints(player) / 4);
          }
        }
        if (race.getClass(player).equals("Hunter")) {
          if ((player.inventory.getCurrentItem().getItem() instanceof ItemBow)) {
            event.ammount += Math.round(stats.getDexerityPoints(player) / 4);
          }
        }
        if (race.getClass(player).equals("Mage")) {
          if ((player.inventory.getCurrentItem().getItem() instanceof ItemWand)) {
            event.ammount += Math.round(stats.getIntelligencePoints(player) / 4);
          } else if ((player.inventory.getCurrentItem().getItem() instanceof ItemExcaliburMace)) {
            event.ammount += Math.round(stats.getIntelligencePoints(player) / 4);
          }
        }
        if (race.getClass(player).equals("Thief")) {
          if ((player.inventory.getCurrentItem().getItem() instanceof ItemClaw)) {
            event.ammount += Math.round(stats.getLuckPoints(player) / 4);
          }
        }
      }
    }

    if (event.source.getSourceOfDamage() instanceof EntityArrow) {
      if (((EntityArrow) event.source.getSourceOfDamage()).shootingEntity != null) {
        if (((EntityArrow) event.source.getSourceOfDamage()).shootingEntity
            instanceof EntityPlayer) {
          EntityPlayer player =
              (EntityPlayer) ((EntityArrow) event.source.getSourceOfDamage()).shootingEntity;
          if (race.getClass(player).equals("Hunter")) {
            event.ammount += Math.round(stats.getDexerityPoints(player) / 4);
          }
        }
      }
    }

    if (event.source.getSourceOfDamage() instanceof EntityShuricken) {
      if (((EntityShuricken) event.source.getSourceOfDamage()).getThrower() != null) {
        if (((EntityShuricken) event.source.getSourceOfDamage()).getThrower()
            instanceof EntityPlayer) {
          EntityPlayer player =
              (EntityPlayer) ((EntityShuricken) event.source.getSourceOfDamage()).getThrower();
          if (race.getClass(player).equals("Thief"))
            event.ammount += Math.round(StatKeeper.getLuckPoints(player) / 8);
        }
      }
    }
  }