Not saying that doing that type of netcode isn't hard, but couldn't the script wait for authorization from the server that he stepped on it before activating? That's way easier than trying to rewind things that have already happened.
Think about that in the abstract though, especially with stuff like Lua. If complex scripted events have to wait on server confirmation, that means
everything has to wait on that, every time - after all, you'd have to rewind back to when the script SHOULD have triggered if you just kept going until confirmation arrived, and that's the same problem all over again. A script can
stop a series of complex actors just as easily as it can activate them, after all.
Now picture that "stop everything until script activation confirmed" issue being applied to
custom character abilities. After all, a lua-based effect, even one tied to a player double-jumping, can do anything a button in a level can, so it would have to be subject to the same restrictions. Now you have the game stuttering on you constantly, every time you use your special ability... and then having to move forward to catch up with other people who were not frozen at that specific moment, but who none-the-less are
also going through that but at different times...
And, well, that's ignoring that you'd need to rewind everything
anyways unless all the clients were in synch and all halted at the same time to wait for authorization, because of the aforementioned "button can stop complex actors which otherwise have to be rewinded" issue. So now anything that triggers an authorization cycle, done by any player, causes the netgame to pause for
every player.
It would be a clusterfuck.