diff --git a/src/main/java/gg/essential/partnermod/EssentialUtil.java b/src/main/java/gg/essential/partnermod/EssentialUtil.java index 83ff268..4ffc270 100644 --- a/src/main/java/gg/essential/partnermod/EssentialUtil.java +++ b/src/main/java/gg/essential/partnermod/EssentialUtil.java @@ -11,12 +11,18 @@ package gg.essential.partnermod; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import gg.essential.partnermod.data.PartnerModData; import net.minecraft.client.Minecraft; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.List; public class EssentialUtil { @@ -50,7 +56,7 @@ public static boolean installationCompleted() { return installationCompleted; } - public static boolean installContainer() { + public static boolean installContainer(List partnerMods) { try { Path destination = Paths.get("mods", "essential-container.jar"); if (Files.exists(destination)) { @@ -66,6 +72,7 @@ public static boolean installContainer() { } EssentialPartner.LOGGER.info("Successfully installed essential container to {}", destination.toRealPath()); installationCompleted = true; + writeMetadataFile(partnerMods); return true; } catch (Exception e) { EssentialPartner.LOGGER.error("Failed to install essential container", e); @@ -73,6 +80,23 @@ public static boolean installContainer() { } } + private static void writeMetadataFile(List partnerMods) { + Path metadataDestination = Paths.get("essential", "partner-integration-mod-metadata.json"); + try { + Files.createDirectories(metadataDestination.getParent()); + JsonObject metadata = new JsonObject(); + JsonArray partnerArray = new JsonArray(); + for (PartnerModData.PartnerMod partnerMod : partnerMods) { + partnerArray.add(new JsonPrimitive(partnerMod.getId())); + } + metadata.add("partnerMods", partnerArray); + Files.write(metadataDestination, metadata.toString().getBytes(StandardCharsets.UTF_8)); + EssentialPartner.LOGGER.info("Successfully saved telemetry file to {}", metadataDestination.toRealPath()); + } catch (Exception e) { + EssentialPartner.LOGGER.warn("Failed to store telemetry file to {}", metadataDestination.toAbsolutePath(), e); + } + } + public static void shutdown() { Minecraft.getMinecraft().shutdown(); } diff --git a/src/main/java/gg/essential/partnermod/modal/AdModal.java b/src/main/java/gg/essential/partnermod/modal/AdModal.java index d932fff..0187457 100644 --- a/src/main/java/gg/essential/partnermod/modal/AdModal.java +++ b/src/main/java/gg/essential/partnermod/modal/AdModal.java @@ -40,6 +40,7 @@ public class AdModal extends Modal { private final Map iconTextures = new HashMap<>(); private final ModalData modalData; + private final List partnerMods; private final String parterModsTooltip; private final List features = new ArrayList<>(); @@ -47,6 +48,7 @@ public class AdModal extends Modal { public AdModal(ModalData modalData, List partnerMods) { this.modalData = modalData; + this.partnerMods = partnerMods; this.parterModsTooltip = getTooltip(partnerMods); for (ModalData.Feature feature : modalData.getFeatures()) { @@ -76,7 +78,7 @@ public void init() { })); buttonList.add(new InstallButton(centreX - 70, startY + installOffset, () -> { - boolean success = EssentialUtil.installContainer(); + boolean success = EssentialUtil.installContainer(partnerMods); if (success) { ModalManager.INSTANCE.setModal(TwoButtonModal.postInstall()); } else {