public EntityAgeable createChild(EntityAgeable p_90011_1_) {
    EntityHorse entityhorse = (EntityHorse) p_90011_1_;
    EntityHorse entityhorse1 = new EntityHorse(this.worldObj);
    int i = this.getHorseType();
    int j = entityhorse.getHorseType();
    int k = 0;

    if (i == j) {
      k = i;
    } else if (i == 0 && j == 1 || i == 1 && j == 0) {
      k = 2;
    }

    if (k == 0) {
      int i1 = this.rand.nextInt(9);
      int l;

      if (i1 < 4) {
        l = this.getHorseVariant() & 255;
      } else if (i1 < 8) {
        l = entityhorse.getHorseVariant() & 255;
      } else {
        l = this.rand.nextInt(7);
      }

      int j1 = this.rand.nextInt(5);

      if (j1 < 2) {
        l |= this.getHorseVariant() & 65280;
      } else if (j1 < 4) {
        l |= entityhorse.getHorseVariant() & 65280;
      } else {
        l |= this.rand.nextInt(5) << 8 & 65280;
      }

      entityhorse1.setHorseVariant(l);
    }

    entityhorse1.setHorseType(k);
    double d1 =
        this.getEntityAttribute(SharedMonsterAttributes.maxHealth).getBaseValue()
            + p_90011_1_.getEntityAttribute(SharedMonsterAttributes.maxHealth).getBaseValue()
            + (double) this.func_110267_cL();
    entityhorse1.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(d1 / 3.0D);
    double d2 =
        this.getEntityAttribute(horseJumpStrength).getBaseValue()
            + p_90011_1_.getEntityAttribute(horseJumpStrength).getBaseValue()
            + this.func_110245_cM();
    entityhorse1.getEntityAttribute(horseJumpStrength).setBaseValue(d2 / 3.0D);
    double d0 =
        this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getBaseValue()
            + p_90011_1_.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getBaseValue()
            + this.func_110203_cN();
    entityhorse1.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(d0 / 3.0D);
    return entityhorse1;
  }
  private ResourceLocation func_110848_b(EntityHorse par1EntityHorse) {
    String s = par1EntityHorse.getHorseTexture();
    ResourceLocation resourcelocation = (ResourceLocation) field_110852_a.get(s);

    if (resourcelocation == null) {
      resourcelocation = new ResourceLocation(s);
      Minecraft.getMinecraft()
          .getTextureManager()
          .loadTexture(
              resourcelocation, new LayeredTexture(par1EntityHorse.getVariantTexturePaths()));
      field_110852_a.put(s, resourcelocation);
    }

    return resourcelocation;
  }
  /** Returns true if the mob is currently able to mate with the specified mob. */
  public boolean canMateWith(EntityAnimal p_70878_1_) {
    if (p_70878_1_ == this) {
      return false;
    } else if (p_70878_1_.getClass() != this.getClass()) {
      return false;
    } else {
      EntityHorse entityhorse = (EntityHorse) p_70878_1_;

      if (this.canMate() && entityhorse.canMate()) {
        int i = this.getHorseType();
        int j = entityhorse.getHorseType();
        return i == j || i == 0 && j == 1 || i == 1 && j == 0;
      } else {
        return false;
      }
    }
  }
 protected ResourceLocation func_110849_a(EntityHorse par1EntityHorse) {
   if (!par1EntityHorse.func_110239_cn()) {
     switch (par1EntityHorse.getHorseType()) {
       case 0:
       default:
         return whiteHorseTextures;
       case 1:
         return donkeyTextures;
       case 2:
         return muleTextures;
       case 3:
         return zombieHorseTextures;
       case 4:
         return skeletonHorseTextures;
     }
   } else {
     return this.func_110848_b(par1EntityHorse);
   }
 }
  protected void func_110847_a(EntityHorse par1EntityHorse, float par2) {
    float f1 = 1.0F;
    int i = par1EntityHorse.getHorseType();

    if (i == 1) {
      f1 *= 0.87F;
    } else if (i == 2) {
      f1 *= 0.92F;
    }

    GL11.glScalef(f1, f1, f1);
    super.preRenderCallback(par1EntityHorse, par2);
  }
 protected void func_110846_a(
     EntityHorse par1EntityHorse,
     float par2,
     float par3,
     float par4,
     float par5,
     float par6,
     float par7) {
   if (par1EntityHorse.isInvisible()) {
     this.mainModel.setRotationAngles(par2, par3, par4, par5, par6, par7, par1EntityHorse);
   } else {
     this.bindEntityTexture(par1EntityHorse);
     this.mainModel.render(par1EntityHorse, par2, par3, par4, par5, par6, par7);
   }
 }
  public void displayGUIHorse(EntityHorse p_110298_1_, IInventory p_110298_2_) {
    if (this.openContainer != this.inventoryContainer) {
      this.closeScreen();
    }

    this.getNextWindowId();
    this.playerNetServerHandler.sendPacket(
        new S2DPacketOpenWindow(
            this.currentWindowId,
            11,
            p_110298_2_.getInventoryName(),
            p_110298_2_.getSizeInventory(),
            p_110298_2_.isCustomInventoryName(),
            p_110298_1_.getEntityId()));
    this.openContainer = new ContainerHorseInventory(this.inventory, p_110298_2_, p_110298_1_);
    this.openContainer.windowId = this.currentWindowId;
    this.openContainer.onCraftGuiOpened(this);
  }