private int getPing(Player player) {
	try {
	    Class<?> entityCraftPlayer = Class.forName(plugin.craftBukkitClassName.concat(".entity.CraftPlayer"));
	    Method getHandle = entityCraftPlayer.getMethod("getHandle", new Class[0]);
	    Object playerHandle = getHandle.invoke(player);
	    Object craftPlayer = craftBukkitEntityField.get(player);
	    return playerHandle.getClass().getField(pingFieldName).getInt(craftPlayer);

	} catch (NoSuchFieldException e) {
	    if (pingFieldName == "ping") {
		pingFieldName = "field_71138_i";
		plugin.getLogger().info("Failed to get ping from field \"ping\", field does not exist! Attempting \"field_71138_i\" as ping field name.");

	    } else if (pingFieldName == "field_71138_i") {
		pingFieldName = "lastPing";
		plugin.getLogger()
			.warning(
				"Failed to find \"field_71138_i\" field! Attempting fallback to \"lastPing\" field name. This field has a drawback and it takes long to update but should always exist.");

	    } else if (pingFieldName == plugin.fallbackField) {
		plugin.getLogger().info("Parsing player: ".concat(player.getName()));
		plugin.getLogger().log(Level.SEVERE, "Unable to determine ping field. Can't continue!", e);
		plugin.getServer().getPluginManager().disablePlugin(plugin);
		;

	    }
	    return 0;

	} catch (Exception e) {
	    plugin.getLogger().info("Parsing player: ".concat(player.getName()));
	    plugin.getLogger()
		    .log(Level.SEVERE,
			    "VG Scoreboard Ping was unable to find the NMS player class. In rought words the bukkit version you use is not supported. Please report this on the tracker so the plugin can be updated!",
			    e);
	    plugin.getServer().getPluginManager().disablePlugin(plugin);
	    ;
	    return 0;
	}
    }