He never does anything nice for anyone else he even refuses now such things as writing cards for relatives. Won't stay in the room if another family member is opening birthday gifts for example.
What does he say if you ask him why? I can understand that it's hard to discipline him about the presents thing or example as you don't want a showdown on someone else's birthday, but if you ask him afterwards, can he explain it? Does he talk about his feelings when he's calmed down? Can he express himself once the emotion has passed, or it is a lot of 'I don't know' about why he did x or y?
My son can tend towards the negative, and I worry about him because he takes after me and I was the classic angsty teen who never felt they could open up and I never felt comfortable talking about my feelings. But I have found that it can help to talk to him, even at him sometimes. I lie on his bed and we both look at the ceiling and I am honest with him. I tell him that I'm worried that he seems unhappy, that I'm worried that I don't know how to help him, that I used to feel like I think he does and that I want to try and help avoid him feeling like that if I can.
I give him examples of how it can make people feel when they are on the receiving end of such behaviour. How even grown-ups can be hurt by things that children say and do but that I would rather know how he feels than him keeping it in. That it's ok to feel sad and angry, but that making other people feel sad and angry to make yourself feel better isn't ok and it doesn't work. Reminding him of how it feels when someone is kind to him, and would he like to make other people feel that way.
We have even gone into what happens when you die and how you live on in people's memories and what we want our legacy to be, whether we want them to remember how kind we were and think about the times we have made them feel good (TBF that one was in context, not really something I introduced in a 'chat' but his responses were interesting and gave me some insight into how he thinks about himself). All that stuff, more, anything that pops into my head and sometimes he doesn't say anything, but I know it goes in and I have seen results when I have referred to something I've said before and noticed that he's acknowledged it and behaved differently.
I write him notes, telling him I'm proud because if I say it in the moment he can be negative about it, but I feel that if he has it in writing, he might look at it another time and it might help him feel better about himself.
I'm not pretending to have any anwers - these are the things I have done and I have seen some results, so I am sharing in the hope that something helps you and your son. I don't think there are any easy answers, and I don't think it's as simple as doing something or not and fixing it all. You know him, you have time to try and let him know that you are trying and that you want to help him. Good luck. 