The other options could be tappet plate spring bust, nozzle disconnected from tappet plate, misalignment of nozzle with hop unit, mag not seating correctly.
As previously mentioned, split the upper receiver from the lower. Then try pushing in the nozzle. Is there resistance and does it spring back strongly? If so, tappet plate spring should be OK, but to test, try firing it with the upper removed. Does the nozzle move back and forward smoothly? If not, that is your problem. If it does, hold your hand in front of the nozzle as you fire it (not touching). Can you feel a strong blast of air? If so, piston seal is probably good, if not, replace seal.
If all that is OK, remove the inner barrel and hop unit and push it over the nozzle until it seats properly. Now insert a partly loaded mag into the magwell. Does the mag fit properly and line up perfectly with the feed probe of the hop unit with the hop pushed hard back towards the cylinder housing, and feed bbs into the hop? If not, there's your problem. Some hop units can be a poor match for the bottom receiver. I had this with an M15 I built. One metal hop unit didn't seem to line up properly at all, but replacing it with an Element plastic hop solved the problem, whilst the metal hop worked perfectly in an M16.
If all that is good, refit the upper receiver, including inner barrel, then turn over the rifle so that you can see into the magwell. Try dry firing on semi and auto. Can you see the nozzle moving smoothly back and forward in the hop feed hole? If yes, I'm stumped. If not, check the alignment of the upper & lower and that the push back spring is fitted to the top of the hop unit. Missing that out can cause a misalignment & misfeeds.