What would you do?

So my bf and I have been dating for 3 years. We go to different colleges and long distance. The only way to get to each other is flying which is very convenient for both us (airports nearby, flights relative under $100 round trip). Last year my bf promised he was visiting me at college over my bday weekend. Well i was home a week prior and at that point he still didn't book the flight I kinda was upset but blew it off and figured he would come another weekend. I also mentioned how I wanted to go out to dinner with him to celebrate my bday early which we didn't do at all!! I found it weird that since he knew he wasn't going to visit and I was with him a week before he did nothing "special".Well my birthday comes and my bf does absolutely nothing for no bday post on fb, no card, no gift nothing!! I found this super weird since after having 2 previous bday with gifts, flowers and him making dinner for me it seemed the norm. Well I got super weirded out by this and honestly thought we were over since it seemed like he didn't care about me at all. I brought up a few times after and his excuse is "he just was stupid". Ironically the day of my bday he got super sick so it worked out that he didn't fly but you that wouldn't have impacted him posting on fb, mailing a card etc. I'm not needy or materialistic but feel like he should do something no matter how small (I would have been perfectly happy with a card). During this time I had some family issues and other things that he knew about so him disappointing me when he promised to visit broke my heart. He stressed me out a lot over my birthday because I didn't understand why he stopped caring about me. Now fast forward 8 months later we are good with no arguments. Well here's the issue now his birthday is in 2 weeks and he wants me to fly up the weekend before finals to celebrate (he's gonna be 21). I truly want to be there with him to celebrate but honestly a part of me thinks I shouldn't go out of my way when he didn't do that for me. As the good gf I am I was gonna make him a beer can "cake tower" and take him out to a nice dinner but I feel like that's stupid since he put absolutely no effort into my bday. What do y'all think??? I told him this and he gets all mad at me but I feel it is fair. Since he didn't take the time or effort for me in this sense why should I? Keep in mind guys that he kept telling me he was gonna come and got my hopes up so much. Overall though I'm upset that he put no effort into bday (didn't even send a card) but I already got him a gift. Do I just drop it forever and put on fake smile to enjoy his bday?