    public void translate(RespawnPacket packet, GeyserSession session) {
        if (packet.getState() == RespawnPacket.State.CLIENT_READY) {
            // Previously we only sent the respawn packet before the server finished loading
            // The message included was 'Otherwise when immediate respawn is on the client never loads'
            // But I assume the new if statement below fixes that problem
            RespawnPacket respawnPacket = new RespawnPacket();
            respawnPacket.setRuntimeEntityId(0);
            respawnPacket.setPosition(Vector3f.ZERO);
            respawnPacket.setState(RespawnPacket.State.SERVER_READY);
            session.sendUpstreamPacket(respawnPacket);

            if (session.isSpawned()) {
                // Client might be stuck; resend spawn information
                PlayerEntity entity = session.getPlayerEntity();
                if (entity == null) return;
                SetEntityDataPacket entityDataPacket = new SetEntityDataPacket();
                entityDataPacket.setRuntimeEntityId(entity.getGeyserId());
                entityDataPacket.getMetadata().putAll(entity.getMetadata());
                session.sendUpstreamPacket(entityDataPacket);

                MovePlayerPacket movePlayerPacket = new MovePlayerPacket();
                movePlayerPacket.setRuntimeEntityId(entity.getGeyserId());
                movePlayerPacket.setPosition(entity.getPosition());
                movePlayerPacket.setRotation(entity.getBedrockRotation());
                movePlayerPacket.setMode(MovePlayerPacket.Mode.RESPAWN);
                session.sendUpstreamPacket(movePlayerPacket);
            }

            ClientRequestPacket javaRespawnPacket = new ClientRequestPacket(ClientRequest.RESPAWN);
            session.sendDownstreamPacket(javaRespawnPacket);
        }
    }
When an actor claims to have a given identity, the software does not prove or insufficiently proves that the claim is correct.