Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion src/main/java/gg/essential/partnermod/EssentialUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down Expand Up @@ -50,7 +56,7 @@ public static boolean installationCompleted() {
return installationCompleted;
}

public static boolean installContainer() {
public static boolean installContainer(List<PartnerModData.PartnerMod> partnerMods) {
try {
Path destination = Paths.get("mods", "essential-container.jar");
if (Files.exists(destination)) {
Expand All @@ -66,13 +72,31 @@ 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);
return false;
}
}

private static void writeMetadataFile(List<PartnerModData.PartnerMod> 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();
}
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/gg/essential/partnermod/modal/AdModal.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,15 @@ public class AdModal extends Modal {
private final Map<FeatureEntry, ResourceLocation> iconTextures = new HashMap<>();

private final ModalData modalData;
private final List<PartnerModData.PartnerMod> partnerMods;
private final String parterModsTooltip;
private final List<FeatureEntry> features = new ArrayList<>();

private int featuresOffset;

public AdModal(ModalData modalData, List<PartnerModData.PartnerMod> partnerMods) {
this.modalData = modalData;
this.partnerMods = partnerMods;
this.parterModsTooltip = getTooltip(partnerMods);

for (ModalData.Feature feature : modalData.getFeatures()) {
Expand Down Expand Up @@ -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 {
Expand Down