Exemplo n.º 1
0
  /**
   * Only used in Vanilla. The Forge version is much different. Basically, this accepts the various
   * "objects" needed to work for an armor piece to be "damaged".
   *
   * <p>This is also where we can likely throw a damage item event.
   *
   * @param entity
   * @param damageSource
   * @param modifier
   * @param damage
   */
  public static void acceptArmorModifier(
      EntityLivingBase entity, DamageSource damageSource, DamageModifier modifier, double damage) {
    Optional<DamageObject> property = modifier.getCause().first(DamageObject.class);
    final net.minecraft.item.ItemStack[] inventory =
        entity instanceof EntityPlayer
            ? ((EntityPlayer) entity).inventory.armorInventory
            : entity.getInventory();
    if (property.isPresent()) {
      damage = Math.abs(damage) * 25;
      net.minecraft.item.ItemStack stack = inventory[property.get().slot];
      int itemDamage = (int) (damage / 25D < 1 ? 1 : damage / 25D);
      stack.damageItem(itemDamage, entity);

      if (stack.stackSize <= 0) {
        inventory[property.get().slot] = null;
      }
    }
  }