How about you rewrite your program instead? you should never ever trust the client. Validate output, dont send more data than necessary (player positions etc).
The current hacks are aim triggers, aim lock, aim/spray assist, and some close proximity wallhack.
The cheats calculate the recoil spread and auto lock to enemy heads. It’s obviously not as a bad as before with client side bullets, but it is still a problem.
I'm not sure how you could feasibly prevent the remaining hacks server-side as they're nigh-indistinguishable from player skill, if the hacks supply some non-determinism/jitter so you're not instantly snapping to a player's head when they're behind you.