@Override
    public void handleClientRequest(User user, ISFSObject data)
    {
    	trace("Received new player request: " + user.getId());
		World world = RoomHelper.getWorld(this);
		ActivePlayer player = world.addPlayer(user);
		
		UserVariable uv_dbId = new SFSUserVariable("dbid", 
				user.getSession().getProperty(ZoaraExtension.DATABASE_ID), true);
		player.setDBID(uv_dbId.getIntValue());
		
		player.setName(data.getUtfString("name"));
		player.setLevel(data.getInt("level"));
		player.setEXP(data.getLong("EXP"));
		player.transform.setPosition(data.getFloat("px"), data.getFloat("py"), data.getFloat("pz"));
		player.transform.setRotation(data.getFloat("rx"), data.getFloat("ry"), data.getFloat("rz"));
		if (data.getUtfString("config") != null) { player.setConfig(data.getUtfString("config")); }
		if (data.getInt("clan") != null) { player.setClanID(data.getInt("clan")); }
		if (data.getUtfString("clanName") != null) { player.setClanName(data.getUtfString("clanName")); }
		if (data.getInt("skill") != null) { player.setSkill(data.getInt("skill")); }
		
		if (user.containsVariable("useUDP")) {
			player.useUDP = user.getVariable("useUDP").getBoolValue();
		}
		
		ISFSObject blank = new SFSObject();
		this.send("playerCreateAccepted", blank, user, player.useUDP);
		updateOthers(user, player);
		
		sendWorldData(user, world, player.useUDP);
		
		ItemDBHandler.getPlayerInventory(getParentExtension(), player);
		sendInventory(user, player, player.useUDP);
		
		QuestDBHandler.getPlayerQuests(getParentExtension(), player);
		sendQuestLog(user, player, player.useUDP);
    }