also catch PlayerPortalEvent with null locations

no idea why they exist, but it definitely happened more than just once