Is there a way to prevent TNT offset?
I also used the "four trick," by putting a ring of 4 blocks around the block that the TNT is summoned. If I use a blast-weak block, like wool, I have to replace the ring every time I fire it. If I use a blast-resistant one, the power of the shot is much weaker, due to the ring absorbing most of the blast.
Do that, but add a piston underneath the TNT that pushes it upwards out of the four blocks (and presumably into a stream of water).