package io.gitlab.jfronny.inceptum.launcher.system.setup; import io.gitlab.jfronny.inceptum.launcher.api.FabricMetaApi; import io.gitlab.jfronny.inceptum.launcher.api.McApi; import io.gitlab.jfronny.inceptum.launcher.system.instance.LoaderInfo; import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance; import io.gitlab.jfronny.inceptum.launcher.model.mojang.VersionInfo; import io.gitlab.jfronny.inceptum.launcher.model.mojang.VersionsListInfo; import io.gitlab.jfronny.inceptum.launcher.system.setup.steps.*; import io.gitlab.jfronny.inceptum.launcher.util.ProcessState; import java.io.IOException; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; public class Steps { public static Set STEPS = new LinkedHashSet<>(List.of( new SetupDirsStep(), new DownloadJavaStep(), new DownloadClientStep(), new DownloadLibrariesStep(), new DownloadAssetsStep(), new WriteMetadataStep(), new RunMdsStep() )); public static ProcessState createProcessState() { return new ProcessState(STEPS.size(), "Initializing"); } public static void reDownload(Instance instance, ProcessState state) throws IOException { if (instance.isLocked()) return; boolean found = false; for (VersionsListInfo version : McApi.getVersions().versions) { if (version.id.equals(instance.meta().getMinecraftVersion())) { found = true; VersionInfo vi = McApi.getVersionInfo(version); if (instance.isFabric()) vi = FabricMetaApi.addFabric(vi, instance.meta().getLoaderVersion(), FabricMetaApi.FabricVersionInfoType.Both); LoaderInfo li = instance.isFabric() ? new LoaderInfo(LoaderInfo.Type.Fabric, instance.meta().getLoaderVersion()) : LoaderInfo.NONE; SetupStepInfo info = new SetupStepInfo(vi, li, instance.getName(), state); for (Step step : Steps.STEPS) { state.incrementStep("Starting " + step.getClass().getSimpleName()); step.execute(info, new AtomicBoolean(false)); } } } if (!found) throw new IOException("Could not identify minecraft version " + instance.meta().getMinecraftVersion()); } }