package io.gitlab.jfronny.inceptum.launcher.system.exporter; import io.gitlab.jfronny.commons.io.JFiles; import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance; import io.gitlab.jfronny.inceptum.launcher.model.multimc.MMCPackMeta; import io.gitlab.jfronny.inceptum.launcher.system.instance.Mod; import io.gitlab.jfronny.inceptum.launcher.system.source.ModSource; import io.gitlab.jfronny.inceptum.launcher.system.instance.ModPath; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.time.Instant; import java.util.ArrayList; import java.util.Set; public class MultiMCExporter extends Exporter { public MultiMCExporter() { super("MultiMC", "zip", ".minecraft"); } @Override protected MMCPackMeta generateManifests(Path root, Instance instance, String version) throws IOException { { Files.writeString(root.resolve("instance.cfg"), String.format(""" ForgeVersion= InstanceType=OneSix IntendedVersion= JoinServerOnLaunch=false LWJGLVersion= LiteloaderVersion= LogPrePostOutput=true MCLaunchMethod=LauncherPart OverrideCommands=false OverrideConsole=false OverrideGameTime=false OverrideJavaArgs=false OverrideJavaLocation=false OverrideMCLaunchMethod=false OverrideMemory=false OverrideNativeWorkarounds=false OverrideWindow=false iconKey=default lastLaunchTime=%s lastTimePlayed=0 name=%s notes= totalTimePlayed=0 """, Instant.now().toEpochMilli(), instance.getName())); } { MMCPackMeta manifest = new MMCPackMeta(); manifest.formatVersion = 1; manifest.components = new ArrayList<>(); MMCPackMeta.Component lwjgl = new MMCPackMeta.Component(); lwjgl.dependencyOnly = true; lwjgl.uid = "org.lwjgl3"; lwjgl.version = "3.2.2"; //TODO get automatically manifest.components.add(lwjgl); MMCPackMeta.Component minecraft = new MMCPackMeta.Component(); minecraft.important = true; minecraft.uid = "net.minecraft"; minecraft.version = instance.meta().getMinecraftVersion(); manifest.components.add(minecraft); if (instance.isFabric()) { MMCPackMeta.Component intermediary = new MMCPackMeta.Component(); intermediary.dependencyOnly = true; intermediary.uid = "net.fabricmc.intermediary"; intermediary.version = instance.meta().getMinecraftVersion(); manifest.components.add(intermediary); MMCPackMeta.Component fabric = new MMCPackMeta.Component(); fabric.uid = "net.fabricmc.fabric-loader"; fabric.version = instance.meta().getLoaderVersion(); manifest.components.add(fabric); } JFiles.writeObject(root.resolve("mmc-pack.json"), manifest); return manifest; } } @Override protected void addMods(Path root, Instance instance, Iterable mods, MMCPackMeta mmcPackMeta, Path modsOverrides) throws IOException { Files.createDirectories(modsOverrides); for (Mod mod : mods) Files.copy(mod.getJarPath(), modsOverrides.resolve(mod.getJarPath().getFileName().toString())); } }