When the TeleportState of a player changes, Player.OnTeleport fires with that information. As such, when a player teleports, you’d expect it to fire with the following values in the following order:
RequestedFromServer
WaitingForServer
Started / Failed
InProgress / Failed
When you teleport a player though, only the first one is fired. To repro:
Create a place that allows teleporting to another place and prints out OnTeleport data, such as this uncopylocked place
Join on a test account and an account that has access to the developer console
Open the dev console to the server tab
Teleport the test account away
Notice that only RequestedFromServer is printed, and none of the others
Failed is also not returned/printed at all. Using the repro steps in this thread, teleporting to a ReservedServer does not generate Failed. Also, if regularly teleporting fails, Failed is not returned either (repro by re-publishing this place to your account, pressing 4, and noticing that Failed is not printed in the dev console)
I want to bump this because roblox recently updated their wiki page on this, but when I repro this, the exact same thing happens to me. Does anyone have any answers on this?
Issues like this make me wish I took the initiative to start developing on other platforms. 4 years later and this is still undocumented. Even if it was documented, I would consider this to be a bug. The server should always know if a teleport was failed, no matter the reason.
This is still happening, crazy that 7+ years later this bug still exists.
I need to use .OnTeleport to track what state of teleporting a user is in to make sure all cases with a custom server system that I am creating are accounted for. Without this it will be much harder and more inconvenient to make sure everything is working fine. Through my testing, RequestedFromServer state replicates but no other state will replicate, making it impossible to track what state of teleportation a user is in.
I really hope that someone at roblox will see this and fix it.