So the first week of our third phase, finally came to an end. Almost the entire week was dedicated to the package manager, and it's still far from being complete. But the launcher no longer crashes or freezes while starting up with it, and that's a relieving thing to see.

Package Manager API

I'm trying my best not to infect the PackageManager codebase with our old TerasologyGameVersion mechanics while allowing satisfactory interaction between them. The launcher now starts up successfully, while loading and caching using the Package Manager.

Screenshot

There's still a lot more stuff to do, but at least we have a visible output now. The new loadGameVersionsFromPackageManager method now helps in integrating TerasologyGameVersions with the PackageManager, with good use of streams and null-safety.

for (GameJob job : GameJob.values()) {
    final List<TerasologyGameVersion> gameVersionList =
            packageManager.getPackageVersions(GamePackageType.byJobName(job.name()))
                        .stream()
                        .map(build -> getGameVersion(build, job, cacheDirectory))
                        .collect(Collectors.toList());
    
    gameVersionLists.put(job, gameVersionList);
}

Be sure to check out this post on my weekly GSoC forum thread.