There's no way an April baby would be 300 grams. They normally don't eat until after their first shed and the OP said it hasn't ate for 3 weeks, so that would pretty much mean the snake has never eaten.....
Anyway, 90 degrees is a fine hot spot. They are weird snakes sometimes. My babies and subadults have always done weird things. One of mine insisted on laying on top of his hide and all I have is belly heatI wouldn't worry too much about where he's laying as long as your enclosure is set up properly, 2 identical snug hides is a must. That enclosure is a bit large for a yearling but if he was eating before no problems you don't need to change it. It's one of those "if it ain't broke don't fix it" things (assuming he's been in that enclosure for awhile).
Give him some time, I'm sure he'll start eating soon. Once in a while they like to take breaks. 300 grams is a tad small for a yearling though, has he been eating regularly for you, before this?
Also, hides can rarely be too small, they like to be really snug inside of them.