amidstest/src/main/java/amidst/mojangapi/file/UnresolvedLauncherProfile.java

70 lines
2.9 KiB
Java

package amidst.mojangapi.file;
import java.io.IOException;
import amidst.documentation.Immutable;
import amidst.gameengineabstraction.file.IUnresolvedLauncherProfile;
import amidst.mojangapi.file.directory.DotMinecraftDirectory;
import amidst.mojangapi.file.directory.ProfileDirectory;
import amidst.mojangapi.file.directory.VersionDirectory;
import amidst.mojangapi.file.json.launcherprofiles.LauncherProfileJson;
import amidst.mojangapi.file.json.version.VersionJson;
import amidst.mojangapi.file.service.DotMinecraftDirectoryService;
import amidst.parsing.FormatException;
import amidst.parsing.json.JsonReader;
@Immutable
public class UnresolvedLauncherProfile implements IUnresolvedLauncherProfile {
private final DotMinecraftDirectoryService dotMinecraftDirectoryService = new DotMinecraftDirectoryService();
private final DotMinecraftDirectory dotMinecraftDirectory;
private final LauncherProfileJson launcherProfileJson;
public UnresolvedLauncherProfile(
DotMinecraftDirectory dotMinecraftDirectory,
LauncherProfileJson launcherProfileJson) {
this.dotMinecraftDirectory = dotMinecraftDirectory;
this.launcherProfileJson = launcherProfileJson;
}
public String getName() {
return launcherProfileJson.getName();
}
public LauncherProfile resolve(VersionList versionList) throws FormatException, IOException {
ProfileDirectory profileDirectory = dotMinecraftDirectoryService
.createValidProfileDirectory(launcherProfileJson, dotMinecraftDirectory);
VersionDirectory versionDirectory = dotMinecraftDirectoryService
.createValidVersionDirectory(launcherProfileJson, versionList, dotMinecraftDirectory);
VersionJson versionJson = JsonReader.readLocation(versionDirectory.getJson(), VersionJson.class);
return new LauncherProfile(
dotMinecraftDirectory,
profileDirectory,
versionDirectory,
versionJson,
true,
launcherProfileJson.getName());
}
public LauncherProfile resolveToVanilla(VersionList versionList) throws FormatException, IOException {
ProfileDirectory profileDirectory = dotMinecraftDirectoryService
.createValidProfileDirectory(launcherProfileJson, dotMinecraftDirectory);
VersionDirectory versionDirectory = dotMinecraftDirectoryService
.createValidVersionDirectory(launcherProfileJson, versionList, dotMinecraftDirectory);
VersionJson versionJson = JsonReader.readLocation(versionDirectory.getJson(), VersionJson.class);
boolean isVersionListedInProfile = true;
while (versionJson.getInheritsFrom() != null) {
versionDirectory = dotMinecraftDirectoryService
.createValidVersionDirectory(dotMinecraftDirectory, versionJson.getInheritsFrom());
versionJson = JsonReader.readLocation(versionDirectory.getJson(), VersionJson.class);
isVersionListedInProfile = false;
}
return new LauncherProfile(
dotMinecraftDirectory,
profileDirectory,
versionDirectory,
versionJson,
isVersionListedInProfile,
launcherProfileJson.getName());
}
}