OnSetPlayerData *is* the callback
If you're only overriding TNEventReceiver you don't need to call the base implementation (it's empty), but other than that everything looks good.
There might be a small bug with TNet regarding this callback though: it's called twice if using TNManager.SetPlayerData while connected to a server. Once during the call and another when the server sends its response. When using SetPlayerSave it's only called when the server sends its response.
Additionally, the callback is used for both SetPlayerData and SetPlayerSave which requires some state management on the user's part to properly handle it, but I wouldn't consider that a bug.