@@ -110,6 +110,7 @@ public NoFramework(Path gameDir, AuthInfos infos, GameFolder folder, List<String
110110
111111 public enum ModLoader
112112 {
113+ OLD_FORGE ((version , modLoaderVersion ) -> version + "-forge" + (modLoaderVersion .startsWith (version ) ? modLoaderVersion : version + "-" + modLoaderVersion ) + ".json" ), // only to 1.12.2-14.23.5.2847
113114 FORGE ((version , modLoaderVersion ) -> version + "-forge-" + modLoaderVersion + ".json" ),
114115 VANILLA (null ),
115116 FABRIC ((version , modLoaderVersion ) -> "fabric-loader-" + modLoaderVersion + "-" + version + ".json" ),
@@ -186,6 +187,12 @@ private List<String> getVmArgsFor(JSONObject object, JSONObject vanilla)
186187
187188 final List <String > sb = new ArrayList <>();
188189
190+ if (object .isNull ("arguments" ))
191+ {
192+ sb .add ("-Djava.library.path=" + this .map ("${natives_directory}" , parameters ));
193+ return sb ;
194+ }
195+
189196 final JSONObject arguments = object .getJSONObject ("arguments" );
190197
191198 if (arguments .isNull ("jvm" )) return sb ;
@@ -230,7 +237,14 @@ private void appendLibraries(List<String> sb, JSONObject object)
230237 final String [] nameParts = libraryObject .getString ("name" ).split (":" );
231238 path = this .libraries .resolve (nameParts [0 ].replace ('.' , '/' )).resolve (nameParts [1 ]).resolve (nameParts [2 ]).resolve (nameParts [1 ] + "-" + nameParts [2 ] + ".jar" );
232239 }
233- else path = this .libraries .resolve (libraryObject .getJSONObject ("downloads" ).getJSONObject ("artifact" ).getString ("path" ));
240+ else
241+ {
242+ final JSONObject downloads = libraryObject .getJSONObject ("downloads" );
243+
244+ if (downloads .isNull ("artifact" ))
245+ return ;
246+ path = this .libraries .resolve (downloads .getJSONObject ("artifact" ).getString ("path" ));
247+ }
234248 final String str = path .toAbsolutePath () + File .pathSeparator ;
235249 if (!sb .contains (str ) && Files .exists (path ))
236250 sb .add (str );
@@ -252,7 +266,18 @@ private List<String> getArgs(JSONObject vanilla, JSONObject modLoader)
252266
253267 private List <String > getArgs (JSONObject object , Parameters parameters )
254268 {
255- final JSONArray array = object .getJSONObject ("arguments" ).getJSONArray ("game" );
269+ if (object .isNull ("arguments" ))
270+ {
271+ if (object .isNull ("minecraftArguments" ) || object == parameters .vanilla )
272+ return new ArrayList <>();
273+
274+ final List <String > sb = new ArrayList <>();
275+ for (final String s : object .getString ("minecraftArguments" ).split (" " ))
276+ sb .add (this .map (s , parameters ));
277+ return sb ;
278+ }
279+ final JSONObject arguments = object .getJSONObject ("arguments" );
280+ final JSONArray array = arguments .getJSONArray ("game" );
256281
257282 final List <String > sb = new ArrayList <>();
258283
0 commit comments