public static void load() {
    	try {
		File f = new File("./Data/data/map_index");
		byte[] buffer = new byte[(int) f.length()];
		DataInputStream dis = new DataInputStream(new FileInputStream(f));
		dis.readFully(buffer);
		dis.close();
        ByteStream in = new ByteStream(buffer);
        int size = in.length() / 7;
        regions = new Region[size];
        int[] regionIds = new int[size];
        int[] mapGroundFileIds = new int[size];
        int[] mapObjectsFileIds = new int[size];
		boolean[] isMembers = new boolean[size];
        for (int i = 0; i < size; i++) {
            regionIds[i] = in.getUShort();
            mapGroundFileIds[i] = in.getUShort();
            mapObjectsFileIds[i] = in.getUShort();
            isMembers[i] = in.getUByte() == 0;
        }
        for (int i = 0; i < size; i++) {
            regions[i] = new Region(regionIds[i], isMembers[i]);
        }
        for (int i = 0; i < size; i++) {
            byte[] file1 = getBuffer(new File("./Data/data/map/" + mapObjectsFileIds[i] + ".gz"));
            byte[] file2 = getBuffer(new File("./Data/data/map/" + mapGroundFileIds[i] + ".gz"));
            if (file1 == null || file2 == null) {
                continue;
            }
			try {
				loadMaps(regionIds[i], new ByteStream(file1), new ByteStream(file2));
			} catch(Exception e) {
				System.out.println("Error loading map region: " + regionIds[i]);
			}
        }
		System.out.println("[Region] DONE LOADING REGION CONFIGURATIONS");
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    }