11package i18nupdatemod .modlauncher ;
22
3+ import com .google .gson .JsonObject ;
34import cpw .mods .modlauncher .Launcher ;
45import cpw .mods .modlauncher .api .IEnvironment ;
56import cpw .mods .modlauncher .api .ITransformationService ;
1011import i18nupdatemod .util .Reflection ;
1112import org .jetbrains .annotations .NotNull ;
1213
14+ import java .io .InputStream ;
15+ import java .io .InputStreamReader ;
1316import java .nio .file .Path ;
1417import java .util .Collections ;
1518import java .util .List ;
1619import java .util .Optional ;
1720import java .util .Set ;
1821
22+ import static i18nupdatemod .I18nUpdateMod .GSON ;
23+
1924//1.13-latest
2025public class ModLauncherService implements ITransformationService {
2126 @ Override
@@ -55,6 +60,8 @@ public void onLoad(IEnvironment env, Set<String> otherServices) throws Incompati
5560 }
5661
5762 private String getMinecraftVersion () {
63+ // MinecraftForge 1.13~1.20.2
64+ // NeoForge 1.20.1~
5865 try {
5966 String [] args = (String []) Reflection .clazz (Launcher .INSTANCE ).get ("argumentHandler" ).get ("args" ).get ();
6067 for (int i = 0 ; i < args .length - 1 ; ++i ) {
@@ -63,7 +70,18 @@ private String getMinecraftVersion() {
6370 }
6471 }
6572 } catch (Exception e ) {
66- Log .warning (String .format ("Error getting minecraft version: %s" , e ));
73+ Log .warning ("Error getting minecraft version: %s" , e );
74+ }
75+
76+ // MinecraftForge 1.20.3~
77+ // 1.20.3: https://github.com/MinecraftForge/MinecraftForge/blob/1.20.x/fmlloader/src/main/java/net/minecraftforge/fml/loading/VersionInfo.java
78+ try {
79+ Class <?> clazz = Class .forName ("net.minecraftforge.fml.loading.FMLLoader" );
80+ try (InputStream is = clazz .getResourceAsStream ("/forge_version.json" )) {
81+ return GSON .fromJson (new InputStreamReader (is ), JsonObject .class ).get ("mc" ).getAsString ();
82+ }
83+ } catch (Exception e ) {
84+ Log .warning ("Error getting minecraft version: %s" , e );
6785 }
6886 return null ;
6987 }
0 commit comments