public void GhostEnterBody()
    {
        PlayerScript body = playerScript.mind.body;

        if (playerScript.mind.IsSpectator)
        {
            return;
        }

        if (!playerScript.IsGhost)
        {
            Logger.LogWarningFormat("Either player {0} is not dead or not currently a ghost, ignoring EnterBody", Category.Health, body);
            return;
        }

        //body might be in a container, reentering should still be allowed in that case
        if (body.pushPull.parentContainer == null && body.WorldPos == TransformState.HiddenPos)
        {
            Logger.LogFormat("There's nothing left of {0}'s body, not entering it", Category.Health, body);
            return;
        }
        playerScript.mind.StopGhosting();
        PlayerSpawn.ServerGhostReenterBody(connectionToClient, gameObject, playerScript.mind);
        return;
    }
    public void CmdGhostEnterBody()
    {
        PlayerScript body = playerScript.mind.body;

        if (!playerScript.IsGhost || !body.playerHealth.IsDead)
        {
            Logger.LogWarningFormat("Either player {0} is not dead or not currently a ghost, ignoring EnterBody", Category.Health, body);
            return;
        }
        if (body.WorldPos == TransformState.HiddenPos)
        {
            Logger.LogFormat("There's nothing left of {0}'s body, not entering it", Category.Health, body);
            return;
        }
        playerScript.mind.StopGhosting();
        PlayerSpawn.ServerGhostReenterBody(connectionToClient, gameObject, playerScript.mind);
    }