1111
1212package 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 ;
1418import net .minecraft .client .Minecraft ;
1519
1620import java .io .InputStream ;
21+ import java .nio .charset .StandardCharsets ;
1722import java .nio .file .Files ;
1823import java .nio .file .Path ;
1924import java .nio .file .Paths ;
25+ import java .util .List ;
2026
2127public 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 }
0 commit comments