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;
  }