Skip to content

Commit 4cd1aaa

Browse files
committed
Save which partner mods were installed when essential was installed.
1 parent 9d91ab8 commit 4cd1aaa

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

src/main/java/gg/essential/partnermod/EssentialUtil.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,18 @@
1111

1212
package gg.essential.partnermod;
1313

14+
import com.google.gson.JsonArray;
15+
import com.google.gson.JsonObject;
16+
import com.google.gson.JsonPrimitive;
17+
import gg.essential.partnermod.data.PartnerModData;
1418
import net.minecraft.client.Minecraft;
1519

1620
import java.io.InputStream;
21+
import java.nio.charset.StandardCharsets;
1722
import java.nio.file.Files;
1823
import java.nio.file.Path;
1924
import java.nio.file.Paths;
25+
import java.util.List;
2026

2127
public class EssentialUtil {
2228

@@ -50,7 +56,7 @@ public static boolean installationCompleted() {
5056
return installationCompleted;
5157
}
5258

53-
public static boolean installContainer() {
59+
public static boolean installContainer(List<PartnerModData.PartnerMod> partnerMods) {
5460
try {
5561
Path destination = Paths.get("mods", "essential-container.jar");
5662
if (Files.exists(destination)) {
@@ -66,13 +72,31 @@ public static boolean installContainer() {
6672
}
6773
EssentialPartner.LOGGER.info("Successfully installed essential container to {}", destination.toRealPath());
6874
installationCompleted = true;
75+
writeMetadataFile(partnerMods);
6976
return true;
7077
} catch (Exception e) {
7178
EssentialPartner.LOGGER.error("Failed to install essential container", e);
7279
return false;
7380
}
7481
}
7582

83+
private static void writeMetadataFile(List<PartnerModData.PartnerMod> partnerMods) {
84+
Path metadataDestination = Paths.get("essential", "integration-mod-metadata.json");
85+
try {
86+
Files.createDirectories(metadataDestination.getParent());
87+
JsonObject metadata = new JsonObject();
88+
JsonArray partnerArray = new JsonArray();
89+
for (PartnerModData.PartnerMod partnerMod : partnerMods) {
90+
partnerArray.add(new JsonPrimitive(partnerMod.getId()));
91+
}
92+
metadata.add("partnerMods", partnerArray);
93+
Files.write(metadataDestination, metadata.toString().getBytes(StandardCharsets.UTF_8));
94+
EssentialPartner.LOGGER.info("Successfully saved telemetry file to {}", metadataDestination.toRealPath());
95+
} catch (Exception e) {
96+
EssentialPartner.LOGGER.warn("Failed to store telemetry file to {}", metadataDestination.toAbsolutePath(), e);
97+
}
98+
}
99+
76100
public static void shutdown() {
77101
Minecraft.getMinecraft().shutdown();
78102
}

src/main/java/gg/essential/partnermod/modal/AdModal.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,15 @@ public class AdModal extends Modal {
4040
private final Map<FeatureEntry, ResourceLocation> iconTextures = new HashMap<>();
4141

4242
private final ModalData modalData;
43+
private final List<PartnerModData.PartnerMod> partnerMods;
4344
private final String parterModsTooltip;
4445
private final List<FeatureEntry> features = new ArrayList<>();
4546

4647
private int featuresOffset;
4748

4849
public AdModal(ModalData modalData, List<PartnerModData.PartnerMod> partnerMods) {
4950
this.modalData = modalData;
51+
this.partnerMods = partnerMods;
5052
this.parterModsTooltip = getTooltip(partnerMods);
5153

5254
for (ModalData.Feature feature : modalData.getFeatures()) {
@@ -76,7 +78,7 @@ public void init() {
7678
}));
7779

7880
buttonList.add(new InstallButton(centreX - 70, startY + installOffset, () -> {
79-
boolean success = EssentialUtil.installContainer();
81+
boolean success = EssentialUtil.installContainer(partnerMods);
8082
if (success) {
8183
ModalManager.INSTANCE.setModal(TwoButtonModal.postInstall());
8284
} else {

0 commit comments

Comments
 (0)