Unable to launch 13w16a-13w23a because of added launch args
Starting with 13w16a, Minecraft uses JOpt Simple to parse the launch args. Unfortunately, it does not enable allowsUnrecognizedOptions until 13w23b. As a result, all versions between 13w16a and 13w23a crash on launch because of launch args added by Fabric.
Perhaps the main method ought to be patched to enable allowsUnrecognizedOptions?
It appears the JOpt Simple version used (4.4) in those Minecraft versions did not yet have that option. It was added in 4.5, which Minecraft started using in 13w23b.
What launch args are being added? Is it something loader is doing? If so I don't think we should be altering this behaviour, not adding the unrecognised args seems like the proper fix to me.
As far as I can tell, it's about MinecraftGameProvider::processArgumentMap.
not adding the unrecognised args seems like the proper fix to me
The reason I prefer the other solution is that mods may want to parse custom launch args, and there is no way for Loader to know which args would go truly unused.
One example of this is the versionType argument. Minecraft didn't recognize this argument until 16w05b, when it started using it to display modified branding information on the title screen and the debug overlay. There are mods for Ornithe and also Legacy Fabric that backport this feature to older versions.
I recognize that it's just a handful of snapshots that are broken, but if the fix is to not pass unrecognized launch args, features like this will break for a whole lot more versions.
I'd gate our argument additions behind a version check in the MC GameProvider and look into adding a way for mods to add / change the args from preLaunch or earlier.