* @return a player object
	 */
	public Player loadPlayer(String playerData) {
		String[] attr = playerData.split("#");

		Integer oDBRef = 0, oLocation = 0;
		String oName = "", oFlags = "", oDesc = "", oPassword = "";
		String[] os, om;

		oDBRef = Integer.parseInt(attr[0]);    // 0 - player database reference number
		oName = attr[1];                       // 1 - player name
		oFlags = attr[2];                      // 2 - player flags
		oDesc = attr[3];                       // 3 - player description
		oLocation = Integer.parseInt(attr[4]); // 4 - player location

		oPassword = attr[5];     // 5 - player password
		os = attr[6].split(","); // 6 - player stats
		om = attr[7].split(","); // 7 - player money
		int access;              // 8 - player permissions
		int raceNum;             // 9 - player race number (enum ordinal)
		int classNum;            // 10 - player class number (enum ordinal)

		/*
		 * debug("Database Reference Number: " + oDBRef); debug("Name: " +
		 * oName); debug("Flags: " + oFlags); debug("Description: " + oDesc);
		 * debug("Location: " + oLocation);
		 */

		Integer[] oStats = Utils.stringsToIntegers(os);
		int[] oMoney = Utils.stringsToInts(om);

		final Player player = new Player(oDBRef, oName, ObjectFlag.getFlagsFromString(oFlags), oDesc, oLocation, "", oPassword, "IC", oStats, Coins.fromArray(oMoney));

		/* Set Player Permissions */
		player.setAccess(Utils.toInt(attr[8], Constants.USER));

		/* Set Player Race */
		try {
			raceNum = Integer.parseInt(attr[9]);
			player.setRace(Races.getRace(raceNum));
		}
		catch (NumberFormatException nfe) {
			debug("loadPlayer(): invalid race number (number format exception)");
			System.out.println("--- Stack Trace ---");
			nfe.printStackTrace();
		}
		finally {
			player.setRace(Races.NONE);
		}

		/* Set Player Class */
		try {
			classNum = Integer.parseInt(attr[10]);
			player.setPClass(Classes.getClass(classNum));
		}
		catch (NumberFormatException nfe) {
			debug("loadPlayer(): invalid class number (number format exception)");
			System.out.println("--- Stack Trace ---");
			nfe.printStackTrace();
		}
		finally {
			player.setPClass(Classes.NONE);
		}

		debug("DEBUG (db entry): " + player.toDB());

		return player;
	}