OnPlayerSpawn/OnPlayerRespawned hooks not workingBug
what exactly is the difference between OnPlayerReSpawned or OnPlayerSpawn?

I thought it was something along the lines of --

OnPlayerSpawn -- utilized when your character is created for the first time, and/or when you login+spawn into the server. 

as compared to

OnPlayerReSpawn -- utilized when any player character teleports or dies or has something else happen that causes it to spawn again.

I'm trying to utilize either/or and not getting anywhere.  I'm trying to obtain the person's location / position at the moment that they die.  

Here's my test code.  It does not appear to ever get called.  When I teleported a few times and died, the console showed the teleports and provides the reason "teleport", also the reason "died", but these hook-methods are never called as far as I can tell.

void OnPlayerReSpawned(ClientInfo ci, string reason)
{
    float x, y, z;

    ci.IPlayer.Position( out x, out y, out z );

    NextFrame( () => ci.IPlayer.Message( "Player Spawn... xyz {0},{1},{2} reason - {3}", "", x,y,z,reason ) );
}

object OnPlayerSpawn(ClientInfo ci)
{
    if ( ci != null )
    {
        float x, y, z;

        ci.IPlayer.Position( out x, out y, out z );
        NextFrame( () => ci.IPlayer.Message( "Player Spawn... xyz {0},{1},{2} no reason.. you just spawned.. =D", "", x, y, z ) );
    }
    return false;
}

I assume you are you using a return object of "object" rather than "bool" because it differs between games?

Can you please implement the OnPlayerDeath hook?  =)  It would be nice to have.

Other ideas of how to accomplish what I'm trying to do --

I was thinking of using "OnEntityDeath" and somehow checking whether the entity was a player, but I can't figure out how to accomplish that.  Or barring that, create a recurring method that records all online player locations in an array / collection every second, recording 2 seconds worth and also check if they have died (not sure how to reach an appropriate object such as PlayerManager.allPlayers).  Hence, if they died this second, last second should have recorded a reasonably close location (assuming their position at death may or may not be accurate or reset to their bed location already).  Also I figure every second rather than faster than that (less of a strain on resources).

Thanks!

Rog
Any hooks with *ed at the end are post hooks, which would happen after the hook location has completed. So OnPlayerRespawed = after, OnPlayerSpawn = intended to be first spawn on the server after connection. OnPlayerRespawn = when player is attempting to respawn. Also, should be OnPlayerRespawned, not OnPlayerReSpawned.

As far as new hooks go, there's a lot lacking with 7 Days to Die support as it has been on the backburner for a long time.
font is a little wonky, not sure why... I copied in this message which I typed yesterday but the page had timed out...
------
Thanks for the clarifications..

corrected spelling of OnPlayerRespawned

still didn't do anything.  no text and no failed hook error on the console.

OnPlayerSpawn triggered and failed with the error --

Failed to call hook 'OnPlayerSpawn" on plugin 'Recovers v0.1.1' (NullReferenceException: Object reference not set to an instance of an object)

Image capture of the error message.

https://www.screencast.com/t/oeaT0vh0Gxy

void OnPlayerRespawned(ClientInfo ci, string reason)
{
    float x, y, z;

    ci.IPlayer.Position( out x, out y, out z );

    NextFrame( () => ci.IPlayer.Message( "Player Spawn... xyz {0},{1},{2} reason - {3}", "", x,y,z,reason ) );
}

object OnPlayerSpawn(ClientInfo ci)
{
    if ( ci != null )
    {
        float x, y, z;  

        ci.IPlayer.Position( out x, out y, out z );
        NextFrame( () => ci.IPlayer.Message( "Player Spawn... xyz {0},{1},{2} no reason.. you just spawned.. =D", "", x, y, z ) );
    }
    return b;
}

OnPlayerSpawn -- tried changing types returns above error. 
The font is from copy/pasting large chunks of text; the forums tries to treat them as logs or code snippets.

I'll have to take a look at the hooks as it's been a long time since those have been touched.