I'm having a hard time figuring out a solid way to handle the server applying effects to the predicted player and not getting an absurd amount of desync when the client rolls back. Server side effects are unavoidable since they client can't possibly predict everything. For example a player shoots a raycast at you and that applies some damage on the server. Prediction switching could work but there will be latency between when you predict the clients inputs vs when they sent it. This gets even worse when thinking about the server granting something you don't own and that thing applying effects.
All the ideas I have feel like really bad hacks. I'm wondering if there are some here that have attempted to solve this problem.