troublesum I spent some time over looking over your code, and I see what you're doing. This is a much more hands on approach the the default multiplayer, and it works quite well in the example, but what you appear to be doing is circumventing a some of the functionality of the multiplayer plugin. Here's how:
You're getting around the problems with desync compensation by just teleporting the object to the location it's supposed to be. While this does fix some of the problems I mentioned above (with the desync compensation leaving the player floating), it however can look jerky at times, especially since it only syncs position when the player stops moving (this includes at the top if they're jump!).
You fix the problem of the player not seeing the correct events happen by letting the player decide where they are and send it to the host. I like this in that it's the player who needs to see what they're doing, in order to make informed decisions about what to do next. I don't like however, That this means the host doesn't have an accurate representation of where you are, and thus it's just transferring the problem from the player to the host. This might be fine in a cooperative game like I'm hoping to make, but I never would want to do it in a competitive game where this would make it possible to hack.
It doesn't appear to do too well with lag. Sure no multiplayer options do too well with lag, but without a smooth desync compensation it looks to me to be just a little jerkier then the basic multiplayer plugin's sync option.
So in conclusion, thank you for the example, I may take some ideas from it and implement it, for example I do like how you force-teleported without desync compensation sometimes, so I might use that. But I don't think I'll do this for everything in the game.