Você não está setando o "Pitch" e nem o "Yaw" na Location
Tente assim
float Pitch = (float)settings.getData().getDouble("spawn.pitch");
float Yaw = (float)settings.getData().getDouble("spawn.yaw");
Location spawn = new Location(world,x, y, z);
spawn.setPitch(Pitch);
spawn.setYaw(Yaw);
p.teleport(spawn);