I notice that even at 300ms ping, lag is not noticeable, everything runs smooth including my player movement and other players. I want to understand how Minecraft does it. I looked at the network protocol https://wiki.vg/Protocol#Entity_Velocity , and noticed that entity velocity is being sent to the client. So I'm guessing aside from interpolating entities, extrapolation is being done to predict whether the entities should be in case not enough packets are coming from the server. What I don't know is how they handle big divergence of server + predicted client positions.
I mostly want to see how they're implementing it. Is there a blogpost/guide that explains this or source-code that i can look at?